๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿš— Major Study (Bachelor)/๐ŸŸง Operating System

[OS / ์šด์˜์ฒด์ œ] Timesharing, Virtual Memory, Dual Mode Operation, Thread, Memory Management

by UKHYUN22 2022. 3. 10.
728x90

Operating System Structure

ํ”„๋กœ๊ทธ๋žจ์„ ๋Œ๋‹ค๊ฐ€ IO๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด CPU๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์ง€๋งŒ ๊ทธ ๋™์‹œ์— ๋‹ค๋ฅธ ์ผ์„ ํ•˜๊ฒŒ ๋งŒ๋“ค๋ฉด ๋” ๋งŽ์€ ์ผ์„ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด ๋™๊ธฐ์ด๋‹ค. Multiprograming์˜ ์ค‘์š”ํ•œ ์„ฑ์งˆ์€ IO๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์ƒํ™ฉ์—์„œ CPU๊ฐ€ ๋”์ด์ƒ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ์ƒํ™ฉ์— Switching์„ ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. Multiprogramming์€ CPU๊ฐ€ IO๋ฅผ ๊ธฐ๋‹ค๋ ค์•ผ ํ•˜๋Š” ์ƒํ™ฉ, ์ฆ‰ ๋ฉˆ์ถฐ์•ผ ํ•˜๋Š” ์ƒํ™ฉ์—์„œ ์Šค์œ„์นญ์„ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

 

Multitasking == TImesharing

์Šค์œ„์นญ์„ ๋นจ๋ฆฌํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. CPU๊ฐ€ ํ•˜๋‚˜ ์žˆ๊ณ  ์นœ๊ตฌ ๋‘๋ช…์ด์„œ ๊ฐ ํ”„๋กœ๊ทธ๋žจ์„ ๋Œ๋ฆฐ๋‹ค๊ณ  ํ•ด๋ณด์ž. ๋ฒˆ๊ฐˆ์•„๊ฐ€๋ฉด์„œ ์Šค์œ„์นญํ•˜๋ฉด์„œ ํ”„๋กœ๊ทธ๋žจ 2๊ฐœ๋ฅผ ๋Œ๋ฆฐ๋‹ค๊ณ  ํ•˜๋ฉด ๋Š๊ธฐ์ง€ ์•Š๊ณ  ๋ณ‘๋ ฌ์ฒ˜๋ฆฌ ํ•˜๋Š” ๊ธฐ๋ถ„์„ ๋“ค๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค. Interactiveํ•œ ์ปดํ“จํŒ…์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•œ๋‹ค. ์ผ๋‹จ ์Šค์œ„์นญ์ด ๋นจ๋ผ์•ผ ํ•œ๋‹ค. ์ผ์ • ์‹œ๊ฐ„๋งˆ๋‹ค ์Šค์œ„์นญ์„ ํ•œ๋‹ค๋Š” ์ฐจ์ด์ ์ด ์กด์žฌํ•œ๋‹ค. ์Šค์ผ€์ค„๋ง์˜ ๊ฐœ๋…์ด ํ•„์š”ํ•˜๊ฒŒ ๋œ๋‹ค. ์ „์ฒด ์‹œ์Šคํ…œ์—๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ”„๋กœ๊ทธ๋žจ์ด ์žˆ๋‹ค. ๋””์Šคํฌ์— ์กด์žฌํ•˜๊ฒŒ ๋˜๋Š”๋ฐ ์ผ๋ถ€๋ฅผ ์„ ํƒํ•ด์„œ ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ๋กœ ๋กœ๋“œํ•˜๊ฒŒ ๋œ๋‹ค. ์„ ํƒํ•˜๋Š” ๋ชจ๋“ˆ์€ ์šด์˜์ฒด์ œ์˜ ์ผ๋ถ€์ด๊ณ  Job scheduler ๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ์ œํ•œ๋œ ๋ฆฌ์†Œ์Šค๋ฅผ ํ›จ์”ฌ ๋” ๋งŽ์€ ํ”„๋กœ๊ทธ๋žจํ•œํ…Œ ๋‚˜๋ˆ ์ฃผ๋Š” ๊ฒƒ์„ ์Šค์ผ€์ค„๋Ÿฌ๋ผ๊ณ  ํ•œ๋‹ค ,์ •๋ง ๊ทธ ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ์Šค์ผ€์ค„๋Ÿฌ์ด๋‹ค. ์„ ํƒํ•˜๋Š” ๋ชจ๋“ˆ์ธ ๊ฒƒ. ๋‘ ๊ฐ€์ง€ ์ข…๋ฅ˜์˜ ์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ์กด์žฌํ•œ๋‹ค. ๋””์Šคํฌ์—์„œ ๋ฉ”๋ชจ๋ฆฌ๋กœ ์˜ฌ๋ฆฌ๋Š” ์Šค์ผ€์ค„๋Ÿฌ == Job scheduler ์ด๊ณ  ๊ฐ€๋” ์‹คํ–‰์ด ๋œ๋‹ค.๊ทธ๋ž˜์„œ Long term scheduler๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ๋‘ ๋ฒˆ์งธ์˜ ์Šค์ผ€์ค„๋Ÿฌ๋Š” CPU scheduler๋ผ๊ณ  ํ•œ๋‹ค. Ready jobs == Ready Queue๋Š” ํ”„๋กœ๊ทธ๋žจ๋“ค์ด ๊ธฐ๋‹ค๋ฆฌ๋Š” ์žฅ์†Œ์ด๋‹ค. 10๊ฐœ์˜ ํ”„๋กœ๊ทธ๋žจ์ด ์žˆ๋‹ค๋ฉด ๊ทธ ์ค‘์— ํ•˜๋‚˜๋ฅผ ๊ณจ๋ผ์„œ ์‹คํ–‰์„ ํ•ด์•ผ ํ•˜๋Š”๋ฐ ๊ทธ๊ฒƒ์„ CPU scheduler์˜ ์—ญํ• ์ด๋‹ค. 1์ดˆ์— 100๋ฒˆ ์ด์ƒ ์‹คํ–‰๋˜๊ฒŒ ๋œ๋‹ค. shorterm scheduler๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. 

 

 

Virtual Memory 9์žฅ์— ๋‚˜์˜ค๋Š” ๋‚ด์šฉ

์‹œ์Šคํ…œ์˜ Utilization์„ ์œ„ํ•ด์„œ ๋ฉ”๋ชจ๋ฆฌ์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ”„๋กœ๊ทธ๋žจ์„ ๋กœ๋“œํ•œ๋‹ค๊ณ  ๋งํ–ˆ๋‹ค. 

๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ์— 4๊ฐœ์˜ job์„ ์˜ฌ๋ ธ๋‹ค๊ณ  ํ•˜์ž. ํ•˜์ง€๋งŒ ์šฉ๋Ÿ‰์ด ๋„ˆ๋ฌด ๋ถ€์กฑํ•˜๋‹ค. ๊ทธ๋Ÿผ 5๋ฒˆ์งธ Job์„ ๋กœ๋“œํ•  ์ˆ˜ ์—†๋Š”๋ฐ ๊ทธ๋Ÿด ๋•Œ๋Š” ์•ˆ์“ฐ๊ณ  ์žˆ๋Š” job์„ ๋””์Šคํฌ ์ชฝ์œผ๋กœ ๋‚ด๋ ค๋ฒ„๋ฆฌ๊ฒŒ ๋œ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ์˜ ๋ถ€์กฑ์„ ๋ณด์ถฉํ•˜๊ธฐ ์œ„ํ•ด์„œ content๋ฅผ ๋””์Šคํฌ๋กœ ๋ณด๋‚ด๋Š” ์ž‘์—…์„ swapping์ด๋ผ๊ณ  ํ•œ๋‹ค. ์ ์€ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋Œ๋ ค์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

Virtual Memeory๋Š” swapping ์—๋‹ค๊ฐ€ ๋” ๋ณต์žกํ•œ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•œ ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. (์•„๋ž˜์„œ ๊ณ„์† ์„ค๋ช…)

 

 

Virtual Memory

๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ ์šฉ๋Ÿ‰๋ณด๋‹ค ํฐ ํ”„๋กœ๊ทธ๋žจ์„ ๋Œ๋ฆด ์ˆ˜ ์žˆ๋Š”๊ฐ€? ํ•˜๋“œ๋””์Šคํฌ์—๋Š” ๋” ํฐ ์šฉ๋Ÿ‰์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค. ์–ดํ”Œ์„ ์‚ฌ์šฉํ•  ๋•Œ ๊ต‰์žฅํžˆ ํฐ ๋ฉ”๋ชจ๋ฆฌ์˜ ์šฉ๋Ÿ‰์„ ์“ฐ๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ํšจ๊ณผ๋ฅผ ๋‚ผ ์ˆ˜ ์žˆ๋‹ค. Physical ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ฉ”์ธ๋ฉ”๋ชจ๋ฆฌ์— ์ œํ•œ์ด ๋œ๋‹ค๊ณ  ํ•˜๋”๋ผ๋„ ๋””์Šคํฌ๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฉด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋Š๋‚Œ์„ ์ค„ ์ˆ˜ ์žˆ๋‹ค. Multiprogram๊ณผ Multitask๋ฅผ ํ•˜๋ฉด ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ๋ฐ ์ด๋•Œ ๋””์Šคํฌ๋ฅผ ํ™œ์šฉํ•ด์„œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์•Œ๊ณ  ์žˆ์œผ๋ฉด ๋œ๋‹ค.

 

 

Operating System Operations

์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ”„๋กœ๊ทธ๋žจ์ด ๊ณต์œ ๋œ Resource๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ. ๋…ธ๋ž˜๋ฐฉ์—์„œ ๋…ธ๋ž˜๋ฅผ ๋ถ€๋ฅผ ๋•Œ ๋ˆ„๊ฐ€ stop์„ ๋ˆ„๋ฅด๋Š” ๊ฒฝ์šฐ. ๋งˆ์ดํฌ๋ฅผ ๋…์ ํ•˜๋Š” ๊ฒฝ์šฐ. ๋‘ ๊ฐ€์ง€์˜ Issue๊ฐ€ ์ƒ๊ธด๋‹ค. ๋ฆฌ๋ชจ์ฝ˜์„ ํŠน์ •ํ•œ ์‚ฌ๋žŒ์ด ์•ˆ์ „ํ•˜๊ฒŒ ์ง€ํ‚ค๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค. ๊ทธ ์ง€ํ‚ค๋Š” ์—ญํ• ์„ ํ•˜๋Š” ๊ฒƒ์ด Kernel์ด ๋œ๋‹ค. kernel๋งŒ์ด stop ๋ฒ„ํŠผ๊ณผ ๋ฒˆํ˜ธ๋ฅผ ๋ˆ„๋ฅผ ์ˆ˜ ์žˆ๋‹ค. Kernel์ด ๋ฆฌ๋ชจ์ฝ˜์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•œ๋ฐ, ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ๊ทธ ๋ฆฌ๋ชจ์ฝ˜์„ ๋ˆ„๋ฅผ ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์ด ์ œ์ผ ์ค‘์š”ํ•œ ์‚ฌ์‹ค์ด๋‹ค. ๋‘ ๋ฒˆ์งธ์˜ ๊ฒฝ์šฐ๋Š” ์ผ์ •ํ•œ ์‹œ๊ฐ„๋งˆ๋‹ค ์†์„ ๋“ค์–ด์ฃผ๋Š” ์žฅ๋น„ == ํƒ€์ด๋จธ๊ฐ€ ์กด์žฌํ•œ๋‹ค. 

์œ„ํ—˜ํ•œ Instruction == dual mode operation์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ์ผ์ • ์‹œ๊ฐ„๋งˆ๋‹ค term์„ ๋ฐ”๊พธ๋Š” ๊ฒƒ์„ ํƒ€์ด๋จธ๊ฐ€ ํ•œ๋‹ค.

 

 

Dual Mode Operation

ํ•˜๋‚˜๋Š” User mode์ด๊ณ  ํ•˜๋‚˜๋Š” Kernel mode์ด๋‹ค. 

๋ฆฌ๋ชจ์ฝ˜์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉด kernel mode์ด๊ณ  ๋งˆ์ดํฌ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉด User mode์ด๋‹ค. Privileged Instruction์ด๋ผ๋Š” ๊ฒƒ์ด ์กด์žฌํ•œ๋‹ค. ํƒ€์ด๋จธ๋ฅผ ๊ฑด๋“œ๋ฆด ์ˆ˜ ์žˆ๋Š” ๋ช…๋ น์€ ์•„๋ฌดํ•œํ…Œ๋‚˜ ์ฃผ์–ด์ง€๋ฉด ์•ˆ๋€๋‹ค. ๊ทธ๋Ÿฐ ๋ช…๋ น๋“ค์„ ์˜๋ฏธํ•œ๋‹ค. user mode์—์„œ๋Š” ๊ถŒํ•œ์ด ์—†๋‹ค. 

 User mode์—์„œ ๋Œ๊ณ  ์žˆ๊ณ , Priviledged Instruction์˜ ๊ถŒํ•œ์ด ์—†์œผ๋ฏ€๋กœ IO Device๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์œผ๋ฉด OS์˜ kernelํ•œํ…Œ ๋ถ€ํƒ์„ ํ•˜๊ฒŒ ๋œ๋‹ค. kernel mode๋กœ ์‹คํ–‰์„ ํ•ด์„œ Priviledged Instruction์„ ์‚ฌ์šฉํ•ด์„œ IO Instruction์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค. mode_bit๊ฐ€ 0์ด๋ฉด Priviledged Instruction๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. Kernel mode๋กœ ๊ฐ€๊ฒŒ ๋˜๋ฉด Priviledged Instruction๊ฐ€ 0์œผ๋กœ ๋ณ€ํ™˜๋œ๋‹ค. Priviledged Instruction๊ฐ€ 1๋กœ ๋ณ€ํ™˜๋˜๋ฉด user mode๋กœ ์•ˆ์ „ํ•œ ๋ชจ๋“œ์—์„œ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋‹ค. 

 

 

Advantage of dual mode operation

ํ•˜๋‚˜์˜ ํ”„๋กœ๊ทธ๋žจ์ด ์ด์ƒํ•œ ์ง“์„ ํ•˜๋”๋ผ๋„ ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ์€ ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š๊ฒŒ ๋œ๋‹ค. Mode๋ฅผ Violateํ•˜๋ฉด ์–ด๋–ป๊ฒŒ ๋˜๋Š”๊ฐ€. ๊ทธ๋•Œ Exception์ด ๋ฐœ์ƒํ•˜๊ฒŒ ๋œ๋‹ค. divide by 0์™€ ๊ฐ™์€ ๊ฒฝ์šฐ๋ฅผ Exception์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ๊ทธ Exception์ด interrupt์ธ๋ฐ Interrupt๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด kernel์ด Interrupt Handler๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค. Interrupt Handler๋Š” Kernel์˜ ์ผ๋ถ€์ด๋‹ค. Kernel mode์—์„œ ์ž‘๋™ํ•œ๋‹ค. Exception -> Kernel -> Interrupt Handler (Abnormal Termination == ํ•ด๋‹น ํ”„๋กœ๊ทธ๋žจ๋งŒ ์ฃฝ์ธ๋‹ค). ์ด๋ ‡๊ฒŒ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๊ฒŒ ๋œ๋‹ค.

 

 

Timer

ํ•˜๋‚˜์˜ ํ”„๋กœ๊ทธ๋žจ์ด CPU๋ฅผ ์˜ค๋ž˜ ์žก๊ณ ์žˆ๋Š” ๊ฒƒ์„ ๋ง‰๊ธฐ ์œ„ํ•œ ํ…Œํฌ๋‹‰์ด๋‹ค. CPU scheduler๊ฐ€ User process๋ฅผ ์„ ํƒํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ์ผ์ • ์‹œ๊ฐ„ ์ดํ›„์— Interrupt๊ฐ€ ๋‚ ๋ผ๊ฐ€๋„๋ก Timer๋ฅผ ์„ค์ •ํ•œ๋‹ค. ์ผ์ • ์‹œ๊ฐ„๋ณด๋‹ค ๋” CPU๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด Interrupt Handler๊ฐ€ Scheduler๋ฅผ ์‹คํ–‰์‹œ์ผœ์„œ Switching์„ ์‹œํ‚จ๋‹ค. 

 

 

Multi-Mode Operation

 

 

Process Management

 

 

Process

ํ”„๋กœ๊ทธ๋žจ์„ ๋ˆŒ๋ €์„ ๋•Œ ์‹คํ–‰๋˜๋Š” ๊ฒƒ์„ ํ”„๋กœ์„ธ์Šค๋ผ๊ณ  ํ•œ๋‹ค. (์‹คํ–‰๋˜๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค) ๊ธฐ๋ณธ์ ์ธ Job์˜ ๋‹จ์œ„๋ฅผ ๋งํ•œ๋‹ค. Acitve ํ•œ entity๋ฅผ ์˜๋ฏธํ•œ๋‹ค. Resource๋ฅผ ํฌํ•จํ•œ ๊ฐœ๋…์ด๋‹ค. ๋ณ€์ˆ˜๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ์ผ๋ถ€๊ฐ€ ์•„๋‹ˆ๋ผ ๋ฐ์ดํ„ฐ๊ฐ€ ๋œ๋‹ค. ์ฆ‰, ๋ฐ์ดํ„ฐ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ฐจ์ง€ํ•˜๋Š”๋ฐ ๊ทธ๊ฒƒ ๋ชจ๋‘ ํ”„๋กœ์„ธ์Šค์— ํ•ด๋‹นํ•˜๊ฒŒ ๋œ๋‹ค., Dynamic Block๋„ ํ”„๋กœ์„ธ์Šค์˜ ์ผ๋ถ€๊ฐ€ ๋œ๋‹ค๋ผ๋Š” ๊ฒƒ์ด๋‹ค. 

 ์‹ฑ๊ธ€ ํ”„๋กœ์„ธ์Šค ํ”„๋กœ๊ทธ๋žจ์€ ํ”„๋กœ๊ทธ๋žจ ์นด์šดํ„ฐ๊ฐ€ ํ•˜๋‚˜์ด๋‹ค. 10๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๋‹ค๋ฉด ์œ„์น˜๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋Š” Address๊ฐ€ ๋”ฐ๋กœ ์ €์žฅ๋˜์–ด์•ผ ํ•œ๋‹ค. ์ด๋Ÿฐ ๊ฒฝ์šฐ PC๋Š” 10๊ฐœ๊ฐ€ ์กด์žฌํ•ด์•ผ ํ•œ๋‹ค. ๋ž˜์ง€์Šคํ„ฐ, ๊ฐ ์ฃผ์†Œ๋ฅผ ๋‹ด๊ณ ์žˆ๋Š” ์ถ”์ƒ์  ์„ค๋ช…์ด ๋œ๋‹ค. ์Šค์œ„์นญ์„ ํ•  ๋•Œ ๋‹ค์Œ ํ”„๋กœ์„ธ์Šค์˜ ์‹คํ–‰ ์ฃผ์†Œ๋ฅผ PC์— ๋„ฃ์–ด์„œ ์‹คํ–‰์„ ํ•˜๊ฒŒ ๋œ๋‹ค. 

 ์ผ์„ ํ•˜๋Š” Unit์œผ๋กœ Job์ด๋ผ๊ณ  ๋ถˆ๋ฆฐ๋‹ค. ํ”„๋กœ์„ธ์Šค๋“ค์€ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋“ค๋กœ ๋ถ€ํ„ฐ ๋…๋ฆฝ๋˜๋„๋ก ์„ค์ •ํ•œ๋‹ค. 

 

 

Thread

์›Œ๋“œ๋ฅผ ๋‘ ๊ฐœ ๋„์šด ๊ฒฝ์šฐ ํ”„๋กœ์„ธ์Šค๋Š” 2๊ฐœ๊ฐ€ ๋Œ์•„๊ฐ„๋‹ค. ์›Œ๋“œ ํ•˜๋‚˜๋ฅผ ํ”„๋ฆฐํŠธ ํ•˜๋Š” ์ค‘ ์ˆ˜์ •์ด ๊ฐ€๋Šฅํ•œ๊ฐ€? ๊ฐ€๋Šฅํ•˜๋‹ค. ๋‘ ๊ฐœ์˜ ํ๋ฆ„์ด ์กด์žฌํ•˜๊ณ  ์žˆ๋‹ค. VSCode์˜ ๊ฒฝ์šฐ ๋‚ด๊ฐ€ ์ฝ”๋”ฉ์„ ์ž‘์„ฑํ•  ๋•Œ ๊ณ„์† ๋‚ด ์ฝ”๋“œ์— ์—๋Ÿฌ๊ฐ€ ์žˆ๋Š” ์ง€ ํ™•์ธํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ํ•˜๋‚˜๊ฐ€ ๊ณ„์† ๋Œ์•„๊ฐ€๊ณ  ์žˆ๋‹ค. ํ๋ฆ„์ด ์—ฌ๋Ÿฌ ๊ฐœ ์กด์žฌํ•œ๋‹ค. ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค ์•ˆ์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ Thread๊ฐ€ ์กด์žฌํ•  ์ˆ˜ ์žˆ๋‹ค. Thread๋Š” ํ”„๋กœ์„ธ์Šค๋ณด๋‹ค ์ž‘์€ ๋‹จ์œ„์ด๋‹ค. Thread์™€ Process์˜ ์ฐจ์ด์ ์€ Resource๊ฐ€ ๊ณต์œ ๋˜๋Š”๊ฐ€ ์•„๋‹Œ๊ฐ€์˜ ์ฐจ์ด์ ์ด๋‹ค. ์›Œ๋“œ๋ฅผ ๋ณด๊ฒŒ ๋˜๋ฉด ํ•˜๋‚˜์˜ ํŒŒ์ผ์€ ๋‹ค๋ฅธ ํŒŒ์ผ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š๋Š”๋‹ค. ํ”„๋ฆฐํŠธ๋ฅผ ํ•  ๊ฒฝ์šฐ ๋‘ ํŒŒ์ผ ๋ชจ๋‘ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ ์ด๋Š” ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค ์•ˆ์—์„œ ๋‘ ๊ฐœ์˜ ํŒŒ์ผ์ด ๊ณต์œ ๋˜๊ณ  ์žˆ๋Š” ์ž์›์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. Thread ์˜ ID๋Š” TID๋ผ๊ณ  ๋ถˆ๋ฆฐ๋‹ค. word ํ•˜๋‚˜์— Editing Thread์™€ Printing Thread ๋‘ ๊ฐœ ์žˆ์œผ๋ฉด PC๊ฐ€ 2๊ฐœ ์กด์žฌํ•œ๋‹ค.

Task

Linux์˜ ๊ฒฝ์šฐ ์ƒˆ๋กœ์šด THread์™€ Process๋ฅผ ๋งŒ๋“ค ๋•Œ ๊ณต์œ  ์ž์›์„ ๋ถ€๋ถ„์  ํ• ๋‹น์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ Task๋ผ๊ณ  ํ‰์ณ์„œ ๋ถ€๋ฅธ๋‹ค. Linux์—์„œ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ๋ง์ด๋‹ค. 

 

Process Management

์ œ์ผ ์ค‘์š”ํ•œ ๊ฒƒ์€ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋งŒ๋“ค์–ด ๋‚ด๋Š” ๊ฒƒ์ด๋‹ค. ํ•˜๋‚˜๋งŒ ๋นผ๊ณ  ๋ชจ๋“  ํ”„๋กœ๊ทธ๋žจ์„ Kernel์ด ์ƒํ–‰์„ ํ•œ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ ๋นˆ ๊ณต๊ฐ„์„ ํ™•๋ณดํ•˜๊ณ  ํ”„๋กœ๊ทธ๋žจ์„ ๋กœ๋“œํ•˜๋Š” ๊ฒƒ์ด ํ”„๋กœ๊ทธ๋žจ์„ ์‹œ์ž‘ํ•  ๋•Œ ํ•„์š”ํ•˜๋‹ค. ํ”„๋กœ์„ธ์Šค๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ PID๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋งŒ๋“ค์–ด์กŒ์„ ๋•Œ ํ”„๋กœ์„ธ์Šค ์ •๋ณด๋ฅผ ๋‹ค ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ํ‘œ๊ฐ€ ์žˆ์–ด์•ผ ํ•œ๋‹ค. Process Control Block์ด๋ผ๊ณ  ํ•œ๋‹ค. 

Ready Queue ์‹คํ–‰ํ•  ์ค€๋น„๊ฐ€ ๋œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰์„ ํ•˜๊ธฐ ์‹œ์ž‘ํ•˜๊ณ  Delete Process๊นŒ์ง€ ์ง„ํ–‰๋˜๊ฒŒ ๋œ๋‹ค. ์ข…๋ฃŒ๋ฅผ ํ•  ๊ฒฝ์šฐ kernel์ด Interrupt Handler๋กœ Ready Queue์—์„œ ๊ฑฐ๊พธ๋กœ ๊บผ๋‚ด๊ณ  ์ „๋ถ€ ํ•ด์ œํ•˜๋Š” ์ž‘์—…์„ ํ•ด์•ผ ํ•œ๋‹ค. 

Suspend๋ผ๋Š” ๊ฒƒ์€ ์ •์ง€ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. pause ๋ฒ„ํŠผ์ด suspend์— ํ•ด๋‹นํ•œ๋‹ค. (์ผ์‹œ์ •์ง€ ๋ฒ„ํŠผ์— ํ•ด๋‹นํ•œ๋‹ค๊ณ  ์ดํ•ดํ•˜๋ฉด ๋จ)

Process Sychronization์ด๋ผ๋Š” ๊ฒƒ์€ Shared Resource๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ, ๋…์ ์ ์ธ ์‚ฌ์šฉ์ด ์•„๋‹ˆ๋ฏ€๋กœ ํ•ด๋‹น ์ •๋ณด๋ฅผ ๋งž์ถ”๋Š” ์ž‘์—…์„ ์˜๋ฏธํ•œ๋‹ค. 

 

 

Process management 

๊ฐ€๋” 2๊ฐœ ์ด์ƒ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ•˜๋‚˜ ์ด์ƒ์˜ ๋ฏธ์…˜์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. ๋‘ ํ”„๋กœ์„ธ์Šค๋Š” ํ˜‘๋ ฅ์„ ํ•ด์•ผ ํ•œ๋‹ค. ํ”„๋กœ์„ธ์Šค๋Š” ์™„๋ฒฝํ•˜๊ฒŒ ๋…๋ฆฝ๋œ ์กด์žฌ๋ผ๊ณ  ํ–ˆ๋Š”๋ฐ ์„œ๋กœ ์นจ๋ฒ”ํ•  ์ˆ˜ ์—†๋Š” ๊ด€๊ณ„์ด๋‹ค. ์†Œํ†ต์ด ์•ˆ๋˜๋Š” ๊ฒƒ์ด๋‹ค. OS๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋‘ ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•ด์„œ ์–ด๋–ค ๊ธฐ๋Šฅ์„ ํ†ตํ•ด์„œ ํ†ต์‹ ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“ค์–ด์ค€๋‹ค. ๊ทธ ๊ธฐ๋Šฅ์„ Kernel์ด ์ œ๊ณตํ•œ๋‹ค. A๋ผ๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ B๋ผ๋Š” ํ”„๋กœ์„ธ์Šค์— ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. 

 ํ”„๋กœ์„ธ์Šค์—์„œ ๋ฆฌ์†Œ์Šค๋กœ ๊ฐ€๋Š” ํ™”์‚ดํ‘œ๋Š” ํ•ด๋‹น ๋ฆฌ์†Œ์Šค๋ฅผ ํ•„์š”๋กœ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๋ฆฌ์†Œ์Šค์—์„œ ํ”„๋กœ์„ธ์Šค๋กœ ํ–ฅํ•˜๋Š” ํ™”์‚ดํ‘œ๋Š” ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฆฌ์†Œ์Šค๋ฅผ ์ด๋ฏธ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์ƒํ™ฉ์ด๋ผ๋Š” ๊ฒƒ์ธ๋ฐ.. ๋ถˆํŽธํ•œ ์ด์œ ๊ฐ€ ๋ฐํ˜€์กŒ๋‹ค. A๋Š” B๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ณ  B๋Š” A๋ฅผ ๊ธฐ๋‹ค๋ฆฐ๋‹ค. ๋‘˜๋‹ค ์•ž์œผ๋กœ ๋‚˜๊ฐˆ ์ˆ˜ ์—†๊ณ  ์ € ์ƒํƒœ๋กœ ๋ฉˆ์ถฐ์žˆ๋Š”๋ฐ ๊ทธ ์ƒํƒœ๋ฅผ Dead Lock์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. 

 

 

Memory Management

์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ”„๋กœ๊ทธ๋žจ์ด ๋Œ์•„์•ผ ํ•˜๋Š”๋ฐ ์ œํ•œ๋œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด์„œ ๋Œ์•„๊ฐ€๊ฒŒ ๋œ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ์˜ ๋ชจ๋“  ์ •๋ณด๋ฅผ OS๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค. Keep track ํ•ด์•ผ ํ•œ๋‹ค.