λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
ν”„λ‘œκ·Έλž˜λ°

운영 체제의 λΆ„λ₯˜

by 𝓃𝒢𝓃𝒢q 2015. 3. 3.

1. 일괄 처리 μ‹œμŠ€ν…œ Batch processing system


1950λ…„λŒ€ 초기 운영체제의 ν˜•νƒœ.

μ—¬λŸ¬ 개의 μž‘μ—…μ„ 단일 μž‘μ—…μœΌλ‘œ λ¬Άμ–΄μ„œ 일괄 처리.

자기 ν…Œμ΄ν”„, 자기 λ””μŠ€ν¬μ™€ 같은 보쑰기얡μž₯치λ₯Ό μ΄μš©ν•˜μ—¬ ν”„λ‘œμ„Έμ„œλ₯Ό κ΅¬λ™μ‹œμΌ°μœΌλ‚˜ 속도가 느림.
λ³΄μ™„μ±…μœΌλ‘œ λͺ¨λ‹ˆν„°λ§(monitoring), 버퍼링(buffering), μŠ€ν’€λ§(spooling) λ“±μ˜ κ°œλ… ν™œμš©.


λͺ¨λ‹ˆν„°λ§: CPU의 μœ νœ΄μ‹œκ°„(idle time)을 효율적으둜 μ‚¬μš©ν•˜κΈ° μœ„ν•΄ CPU의 ν”„λ‘œμ„ΈμŠ€λ₯Ό μ§€μ†μ μœΌλ‘œ κ΄€μ°°ν•˜μ—¬ μž‘μ—… μˆœμ„œ μžλ™ λ³€κ²½

버퍼링: CPUκ°€ μ–΄λ–€ μž‘μ—…μ„ μ²˜λ¦¬ν•˜λŠ” λ™μ•ˆ, 버퍼에 λ‹€μŒμ— μ²˜λ¦¬ν•  μž‘μ—…μ„ 미리 읽어 μ €μž₯ν•΄ λ‘ 

μŠ€ν’€λ§: 속도가 λΉ λ₯Έ λ””μŠ€ν¬λ₯Ό λ²„νΌμ²˜λŸΌ μ‚¬μš©ν•΄μ„œ 미리 μž…μΆœλ ₯ μž₯μΉ˜μ—μ„œ 읽음


ex) OMR



2. 닀쀑 ν”„λ‘œκ·Έλž˜λ° μ‹œμŠ€ν…œ Multi-programming system


1960λ…„λŒ€.

일괄 처리 방식이 CPUλ₯Ό λΉ„νš¨μœ¨μ μœΌλ‘œ μ‚¬μš©ν•˜λŠ” 것을 κ°œμ„ , λ°œμ „μ‹œν‚΄.

CPU μœ νœ΄μ‹œκ°„μ— λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€λ₯Ό μ²˜λ¦¬ν•˜μ—¬ μž…μΆœλ ₯ μž₯μΉ˜μ™€μ˜ 속도차이λ₯Ό ν•΄μ†Œ.

μ‹€μ œ CPUμ—μ„œλŠ” ν•œ 개의 ν”„λ‘œκ·Έλž¨λ§Œ μ‹€ν–‰, λ‚˜λ¨Έμ§€ ν”„λ‘œκ·Έλž¨μ€ μž…μΆœλ ₯ μˆ˜ν–‰ λ˜λŠ” λŒ€κΈ°μƒνƒœ

λ©”λͺ¨λ¦¬μ— μ—¬λŸ¬ ν”„λ‘œμ„ΈμŠ€λ₯Ό μˆ˜μš©ν•΄μ•Ό ν•˜λ―€λ‘œ λ©”λͺ¨λ¦¬ 관리가 λ³΅μž‘ν•΄μ§

μ‹€ν–‰ λŒ€κΈ°μ€‘μΈ ν”„λ‘œμ„ΈμŠ€ κ°„ 처리 μˆœμ„œ μŠ€μΌ€μ₯΄λ§ ν•„μš”



3. μ‹€μ‹œκ°„ 처리 μ‹œμŠ€ν…œ Real-time processing system


1960λ…„λŒ€.

μš΄μ˜μ²΄μ œμ— νŠΉμ •ν•œ μž‘μ—…μ„ λ™μž‘μ‹œν‚€λ©΄ 끝날 λ•Œ κΉŒμ§€ 아무것도 ν•  수 μ—†μ—ˆλ˜ μ’…μ „μ˜ μ‹œμŠ€ν…œ κ°œμ„ 

μΌμ •μ‹œκ°„ λ™μ•ˆ 정해진 ν”„λ‘œμ„ΈμŠ€ μ‹€ν–‰ ν›„ λ‹€μŒ ν”„λ‘œμ„ΈμŠ€μ— λŒ€ν•œ λŒ€κΈ°μ™€ μ‹€ν–‰ λ“± μ œμ–΄ κ°€λŠ₯


ex) 곡정 μ œμ–΄ 기계, 의료기 μ‹œμŠ€ν…œ



4. μ‹œλΆ„ν•  처리 μ‹œμŠ€ν…œ Time-sharing system


1960λ…„λŒ€.

ν˜„μž¬ 일반 μš΄μ˜μ²΄μ œμ™€ λΉ„μŠ·ν•΄μ§€κΈ° μ‹œμž‘ν•¨

ν”„λ‘œμ„ΈμŠ€μ˜ μ‚¬μš©μ‹œκ°„μ„ μž‘κ²Œ λ‚˜λˆ„μ–΄ 닀쀑 μ‚¬μš©μž(multi-user)λ‚˜ μ—¬λŸ¬ μž‘μ—…μ„ ν•œ λŒ€μ˜ μ»΄ν“¨ν„°μ—μ„œ ν•  수 있게 됨.



5. λΆ„μ‚° 처리 μ‹œμŠ€ν…œ Distributed data processing system


1980λ…„λŒ€.

ν•˜λ‚˜μ˜ λŒ€ν˜• μ»΄ν“¨ν„°μ—μ„œ μˆ˜ν–‰ν•˜λ˜ κΈ°λŠ₯을 λΆ„μ‚°λœ μ—¬λŸ¬ 컴퓨터에 λΆ„λ‹΄ ν›„ λ„€νŠΈμ›Œν¬λ₯Ό ν†΅ν•˜μ—¬ μ²˜λ¦¬ν•˜λŠ” 방식

ν‘œμ€€: μ½”λ°”(CORBA, Common Object Request Broker Architecture)

λ„€νŠΈμ›Œν¬μ—μ„œ λΆ„μ‚° ν”„λ‘œκ·Έλž¨ 객체λ₯Ό 생성, 배포, κ΄€λ¦¬ν•˜κΈ° μœ„ν•œ ꡬ쑰와 규격

λ„€νŠΈμ›Œν¬μ—μ„œ μ΄κΈ°μ’…κ°„μ˜ μ‹œμŠ€ν…œμ΄ μ„œλ‘œ 톡신할 수 μžˆλ„λ‘ 함.



6. 닀쀑 처리 μ‹œμŠ€ν…œ Multi-processing system


1990λ…„λŒ€.

μ—¬λŸ¬ 개의 μž‘μ—…μ„ ν•˜λ‚˜μ˜ μ‹œμŠ€ν…œμ—μ„œ λ™μ‹œμ— μ²˜λ¦¬ν•  수 있음

각각의 CPUκ°€ μ–Έμ œλ‚˜ 싀행쀑인 ν”„λ‘œμ„ΈμŠ€λ₯Ό 갖도둝 ν•˜μ—¬ CPU의 ν™œμš©μ„ κ·ΉλŒ€ν™”

λŒ€λΆ€λΆ„μ˜ 경우, ν”„λ‘œμ„ΈμŠ€μ˜ μˆ˜κ°€ CPU보닀 많기 λ•Œλ¬Έμ— λ‚˜λ¨Έμ§€ ν”„λ‘œμ„ΈμŠ€λ“€μ€ μ‹€ν–‰λ˜κΈ°κΉŒμ§€ κΈ°λ‹€λ €μ•Ό 함.

ν”„λ‘œμ„ΈμŠ€κ°€ μ‹œμŠ€ν…œ μžμ›μ„ κΈ°λ‹€λ €μ•Ό ν•˜κΈ° μ „κΉŒμ§€λŠ” 계속 μ‹€ν–‰λ˜κ³ , 기닀리닀가 μžμ›μ„ μ–»μœΌλ©΄ μž¬μ‹€ν–‰λ¨.

DOS와 같은 단일 처리(uni-processing) μ‹œμŠ€ν…œμ—μ„œ CPUλŠ” 아무 것도 ν•˜μ§€ μ•Šκ³  λŒ€κΈ°μ‹œκ°„μ„ 낭비함.


λ™μ‹œμ— λ§Žμ€ ν”„λ‘œμ„ΈμŠ€κ°€ λ©”λͺ¨λ¦¬ 내에 μ‘΄μž¬ν•˜λ©°, ν•œ ν”„λ‘œμ„ΈμŠ€κ°€ 무언가λ₯Ό κΈ°λ‹€λ €μ•Ό ν•  λ•Œλ§ˆλ‹€ λ‹€λ₯Έ λŒ€κΈ°μ€‘μΈ ν”„λ‘œμ„ΈμŠ€κ°€ CPUλ₯Ό μ‚¬μš©ν•˜λ„λ‘ 함. κ·Έ μˆœμ„œλŠ” μŠ€μΌ€μ€„λŸ¬μ˜ 역할이며, λ¦¬λˆ…μŠ€μ˜ 경우 κ³΅μ •ν•œ μ—¬λŸ¬κ°€μ§€μ˜ μŠ€μΌ€μ₯΄λ§ 정책을 μ‚¬μš©ν•¨.


ex) λ¦¬λˆ…μŠ€


 

 

 


 

 

 

 

Multi-Processing VS. Multi-Programming VS. Multi-Tasking VS. Multi-Threading

 

λ©€ν‹°ν”„λ‘œμ„Έμ‹±μ΄λž€ μ—¬λŸ¬ 개의 ν”„λ‘œμ„ΈμŠ€(ν”„λ‘œκ·Έλž¨μ΄ μ‹€ν–‰λ˜μ–΄ λ©”λͺ¨λ¦¬μ— μƒμ£Όλœ ν˜•νƒœ)λ₯Ό λ™μ‹œμ— μ‹€ν–‰μ‹œν‚¬ 수 μžˆλŠ” μ‹œμŠ€ν…œμ„ λ§ν•œλ‹€. κ·ΈλŸ¬λ‚˜ μ‹€μ œλ‘œ CPUκ°€ λ™μ‹œμ— μ—¬λŸ¬ 개의 ν”„λ‘œμ„ΈμŠ€λ₯Ό μ‹€ν–‰ν•˜λŠ” 것은 μ•„λ‹ˆλ©°, μ‹œκ°„μ„ μͺΌκ°œμ–΄ λ‹¨μœ„ μ‹œκ°„μ„ μ •ν•˜λŠ” μ‹œλΆ„ν•  방식(time-division)으둜 CPUκ°€ λŒμ•„κ°€λ©° μ—¬λŸ¬ 개의 ν”„λ‘œκ·Έλž¨μ„ ν•˜λ‚˜μ”© μ‹€ν–‰ν•œλ‹€. CPUλŠ” μ–Έμ œλ‚˜ ν•˜λ‚˜μ˜ ν”„λ‘œμ„ΈμŠ€λ§Œμ„ μˆ˜ν–‰ν•˜κ³  μžˆμ§€λ§Œ μ‹œκ°„ 간격이 λ„ˆλ¬΄ 짧아 μ‚¬μš©μžμ˜ λˆˆμ—λŠ” μ—¬λŸ¬ 개의 ν”„λ‘œμ„ΈμŠ€κ°€ λ™μ‹œμ— μ‹€ν–‰λ˜λŠ” κ²ƒμ²˜λŸΌ 보인닀.

ν•˜λ‚˜μ˜ ν”„λ‘œκ·Έλž¨μ€ ν•˜λ‚˜μ˜ ν”„λ‘œμ„ΈμŠ€λ‘œ μ „ν™˜λ˜μ–΄ 싀행될 μˆ˜λ„ μžˆμ§€λ§Œ, μ—¬λŸ¬κ°œμ˜ ν”„λ‘œμ„ΈμŠ€λ‘œ λ‚˜λˆ„μ–΄ λ™μ‹œμ— 싀행될 μˆ˜λ„ μžˆλ‹€. 이 λ•Œ, μ–΄λ–€ ν”„λ‘œκ·Έλž¨μ˜ μ£Ό ν”„λ‘œμ„ΈμŠ€μ™€ ν•¨κ»˜ λ™μ‹œμ— μ‹€ν–‰λ˜λŠ” λΆ€μˆ˜μ μΈ ν”„λ‘œμ„ΈμŠ€λ“€μ„ μŠ€λ ˆλ“œλΌκ³  ν•œλ‹€.

 

λ©€ν‹°ν”„λ‘œκ·Έλž˜λ°: μœ νœ΄μ‹œκ°„μ— λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€λ₯Ό μ‹€ν–‰ν•˜μ—¬ μ‹œκ°„μ„ λ‹¨μΆ•μ‹œν‚΄

λ©€ν‹°νƒœμŠ€ν‚Ή: λ™μ‹œμ— μ—¬λŸ¬ 개의 ν”„λ‘œκ·Έλž¨λ“€μ„ μ‹€ν–‰, μš΄μ˜μ²΄μ œκ°€ μ‹œλΆ„ν•  λ°©μ‹μœΌλ‘œ μ•Œμ•„μ„œ μ²˜λ¦¬ν•΄ 쀌
λ©€ν‹°μŠ€λ ˆλ”©: 각각의 νƒœμŠ€ν¬λ₯Ό μ—¬λŸ¬ 개의 κΈ°λŠ₯으둜 λ‚˜λˆ„μ–΄ 이λ₯Ό λ™μ‹œμ— μ‹€ν–‰, ν”„λ‘œκ·Έλž˜λ¨Έκ°€ ν”„λ‘œκ·Έλž¨ μ„€κ³„μ‹œμ— 직접 κ΅¬ν˜„ν•΄ μ£Όμ–΄μ•Ό 함.


β€» Multi-processing > Multi-programming > Multi-tasking > Multi-threading

 

 

 

 

 

 

References


http://proneer.tistory.com/

http://stackoverflow.com/questions/6022629/difference-between-multitasking-multithreading-and-multiprocessing