• ์šด์˜์ฒด์ œ : ํ”„๋กœ์„ธ์Šค Process

    2023. 3. 26.

    by. @leeeun

    ๐Ÿ“ํ”„๋กœ์„ธ์Šค๋ž€?

    =task=job

    ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰ ์ฃผ์ฒด, ์‹ค์ฒด. ์‹คํ–‰์ค‘์— ์žˆ๋Š” ํ”„๋กœ๊ทธ๋žจ.

    ์‹คํ–‰๊ณผ ์Šค์ผ€์ค„๋ง์˜ ๊ธฐ๋ณธ ๋‹จ์œ„.

    ์Šค์ผ€์ค„๋ง์ด๋ž€? ํ”„๋กœ์„ธ์Šค์˜ ์‹คํ–‰์ˆœ์„œ๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ

     

    vs ํ”„๋กœ๊ทธ๋žจ-> ๋””์Šคํฌ์— ์ €์žฅ๋œ ์‹คํ–‰ ํŒŒ์ผ

     

    ๐Ÿ“ํ”„๋กœ์„ธ์Šค ๊ตฌ์กฐ

    • code(text) - cpu์˜ ๋ช…๋ น์–ด๋“ค(instruction)์ด ์ €์žฅ
    • (static) data : ์ „์—ญ ๋ณ€์ˆ˜, static ๋ณ€์ˆ˜ ๋“ฑ ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋Š” ๋™์•ˆ ํ•ญ์ƒ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ฐจ์ง€ํ•˜๊ณ  ์žˆ๋Š” ๋ณ€์ˆ˜๋“ค์ด ์ €์žฅ๋˜๋Š” ๊ณณ
    • heap : DMA ์˜์—ญ. ๋™์  ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ• ๋‹น๋˜๋Š” ์˜์—ญ
    • stack : ์ž„์‹œ ๋ฐ์ดํ„ฐ(ํ•จ์ˆ˜์˜ return address, local variable ๋“ฑ)๊ฐ€ ์ €์žฅ๋˜๋Š” ์˜์—ญ 
    • stack frame -> ์Šคํƒ ์˜์—ญ์€ ํ•จ์ˆ˜์˜ ํ˜ธ์ถœ๊ณผ ํ•จ๊ป˜ ํ• ๋‹น๋˜๊ณ  ํ˜ธ์ถœ์ด ์™„๋ฃŒ๋˜๋ฉด ์†Œ๋ฉธํ•จ. ํ•จ์ˆ˜์˜ ํ˜ธ์ถœ ์‹œ ์Šคํƒ์—๋Š” ํ•จ์ˆ˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜, ํ˜ธ์ถœ์ด ๋๋‚œ ๋’ค ๋Œ์•„๊ฐˆ return address, ํ•จ์ˆ˜์˜ ์ง€์—ญ ๋ณ€์ˆ˜ ๋“ฑ์ด ์ €์žฅ๋˜๋Š”๋ฐ ์ด์ฒ˜๋Ÿผ ์Šคํƒ ์˜์—ญ์— ์ฐจ๋ก€๋Œ€๋กœ ์ €์žฅ๋˜๋Š” ํ•จ์ˆ˜์˜ ํ˜ธ์ถœ ์ •๋ณด.

    ๐Ÿ“ํ”„๋กœ์„ธ์Šค ์ƒํƒœ(Process State)

    ๐ŸงกProcess Creation(ํ”„๋กœ์„ธ์Šค ์ƒ์„ฑ)

    • ์ƒˆ๋กœ์šด ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰์‹œํ‚ฌ ๋•Œ
    • ์œ ์ €๊ฐ€ ์–ด๋–ค ์‚ฌ์ดํŠธ์— ์ ‘์†์„ ํ•˜๋ฉด ์œ ์ €์˜ ๋ช…๋ น๋“ค์„ ๋ฐ›๊ธฐ ์œ„ํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋งŒ๋“ค์–ด์ง„๋‹ค.
    • OS์— ์š”์ฒญ์„ ํ•˜๋ฉด ๋“ค์–ด์˜จ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค.
    • ํ”„๋กœ๊ทธ๋žจ ์•ˆ์—์„œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ง์ ‘ ๋งŒ๋“œ๋Š” ๊ฒฝ์šฐ(Parent Process, Child Process)

    ๐Ÿ’›Process Termination(ํ”„๋กœ์„ธ์Šค ์ข…๋ฃŒ)

    • ์ž‘์—…์ด ๋๋‚ฌ์„ ๋•Œ, ์œ ์ €๊ฐ€ ์ ‘์†ํ–ˆ๋˜ ์‚ฌ์ดํŠธ์—์„œ ๋กœ๊ทธ์•„์›ƒ ํ–ˆ์„ ๋•Œ, Parent Process๊ฐ€ ์ข…๋ฃŒ๋˜์–ด Child Process๊ธฐ Parent Process์— ์˜ํ•ด ๊ฐ•์ œ ์ข…๋ฃŒ ๋˜์—ˆ์„ ๋•Œ
    • OS๊ฐ€ ์ข…๋ฃŒ๋˜์—ˆ์„ ๋•Œ
    • ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ฑฐ๋‚˜ ํ•˜๋“œ์›จ์–ด์— fault๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ

    ๐Ÿ“˜ Dispatcher

    Dispatcher -> OS ํ”„๋กœ๊ทธ๋žจ. ์‹คํ–‰์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ์„ ์ค‘๋‹จํ•˜๊ณ  ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰์‹œํ‚ค๋„๋ก ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ

    Interrupt(timeout, I/O request)๊ฐ€ ๋ฐœ์ƒํ•˜๊ฑฐ๋‚˜ ์ข…๋ฃŒ๋œ ํ”„๋กœ์„ธ์Šค๋กœ๋ถ€ํ„ฐ ์ค€๋น„ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ˆ˜ํ–‰ ์ƒํƒœ๋กœ ๋งŒ๋“ค ๋•Œ ํ•ญ์ƒ Dispatcher๊ฐ€ ์ˆ˜ํ–‰

    State Transitions

    ์ƒˆ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ƒ์„ฑ๋˜๋ฉด OS๋Š” ํ”„๋กœ์„ธ์Šค์˜ PCB(Program Control Block)๋ฅผ ์ƒ์„ฑํ•˜๊ณ  not running ์ƒํƒœ๋กœ ์ดˆ๊ธฐํ™” ์‹œํ‚จ๋‹ค.

    not running ์ƒํƒœ์ธ ํ”„๋กœ์„ธ์Šค๋“ค์€ Queue์—์„œ ๋Œ€๊ธฐํ•˜๊ฒŒ ๋˜๋Š”๋ฐ, Queue์—๋Š” ๊ฐ ํ”„๋กœ์„ธ์Šค์˜ PCB ์ฃผ์†Œ๋ฅผ ๊ฐ€๋ฅดํ‚ค๋Š” ํฌ์ธํ„ฐ๋ฅผ ๊ฐ–๊ณ  ์žˆ๋‹ค.

    ๋งŒ์•ฝ ํ˜„์žฌ ์‹คํ–‰์ค‘์ธ running ์ƒํƒœ์˜ ํ”„๋กœ์„ธ์Šค์—์„œ Interrupt๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด OS๋Š” ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค๋ฅผ not running ์ƒํƒœ๋กœ ์˜ฎ๊ธด๋‹ค.

    ๊ทธ๋Ÿฌ๋ฉด dispatcher๊ฐ€ Queue์—์„œ ๋Œ€๊ธฐ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๋“ค ์ค‘ ํ•˜๋‚˜๋ฅผ ๊ณจ๋ผ running ์ƒํƒœ๋กœ ์˜ฎ๊ธด๋‹ค.

    ๐Ÿ“• Five-State Process Model

    • New : ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋งŒ๋“ค์–ด์ง„ ๋‹จ๊ณ„. ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋งŒ๋“ค์–ด์ง€๋ฉด ๋ฉ”๋ชจ๋ฆฌ๋„ ํ• ๋‹น, ํ”„๋กœ์„ธ์Šค์˜ ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” PCB์™€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰๋˜๋ฉฐ ์‚ฌ์šฉํ•  ์Šคํƒ ๋ฉ”๋ชจ๋ฆฌ๋„ ํ• ๋‹น๊ณผ ์ดˆ๊ธฐํ™” ๋“ฑ์˜ ์ž‘์—…์ด ํ•„์š”. ํ”„๋กœ์„ธ์Šค ์ƒ์„ฑ์—๋Š” ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๊ณ  New ์ƒํƒœ์— ์–ด๋Š ์ •๋„ ๋จธ๋ฌผ๋Ÿฌ์•ผ ํ•จ.
    • Ready : ์‹คํ–‰์˜ ์ค€๋น„๊ฐ€ ๋˜์–ด ๊ธฐ๋‹ค๋ฆฌ๋Š” ์ƒํƒœ. CPU๋ฅผ ํ• ๋‹นํ•ด์ฃผ๋ฉด(์Šค์ผ€์ค„๋ง์ด ๋˜๋ฉด) ๋ฐ”๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋‹จ๊ณ„
    • Running : ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ์ฐจ์ง€ํ•˜๊ณ  ์‹คํ–‰ํ•˜๊ณ  ์žˆ๋Š” ์ƒํƒœ
    • Bocked(Waiting) : CPU๋ฅผ ํ• ๋‹นํ•ด์ฃผ์–ด๋„ ์‹คํ–‰ํ•  ์ˆ˜ ์—†๋Š” ์ƒํƒœ์ด๋‹ค.(I/O request, ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋๋‚  ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐ ๋“ฑ๋“ฑ)
    • Exit(terminated) : ํ”„๋กœ๊ทธ๋žจ์„ ์ข…๋ฃŒ์‹œํ‚ค๋Š” ์ž‘์—… ์ˆ˜ํ–‰. ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ• ๋‹น๋ฐ›์€ ์ž์› ๋ฐ˜๋‚ฉ. 

    ๐Ÿ“— Seven-State Process Model

    Five state process model with two suspended states

    Suspend๋ž€?
    Suspend๋Š” ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๊บผ๋‚ด์„œ ํ•˜๋“œ๋””์Šคํฌ๋กœ ์˜ฎ๊ธฐ๋Š” ๊ฒƒ์ด๋‹ค.
    Queue์— ์žˆ๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ํฌ์ธํ„ฐ๋ฅผ ์ด์šฉํ•˜์—ฌ ์˜ฎ๊ธด๋‹ค.

    five-state ๋ชจ๋ธ์—์„œ Ready/Suspend + Blocked/Suspend ์ƒํƒœ

    • Ready/Suspend : I/O ์ž‘์—…์ด๋‚˜ ์š”์ฒญํ•œ ์ž‘์—…์ด ๋๋‚ฌ์ง€๋งŒ ๋ฉ”๋ชจ๋ฆฌ์— ์ž๋ฆฌ๊ฐ€ ์—†์–ด ์—ฌ์ „ํžˆ ํ•˜๋“œ๋””์Šคํฌ์— ์žˆ๋Š” ์ƒํƒœ์ด๋‹ค.
    • Blocked/Suspend : ์š”์ฒญํ•œ ์ž‘์—…์ด ๋๋‚˜์ง€ ์•Š์•˜๊ณ , ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋˜ ํ”„๋กœ์„ธ์Šค๋“ค์ด Swaping์œผ๋กœ ์ธํ•ด ํ•˜๋“œ๋””์Šคํฌ๋กœ ๋‚ด๋ ค๊ฐ„ ์ƒํƒœ์ด๋‹ค.

    Swaping์ด๋ž€?
    ๋ฉ”๋ชจ๋ฆฌ์˜ ํฌ๊ธฐ๋Š” ํ•œ์ •์ ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋“ค์–ด์˜ฌ ์ˆ˜ ์žˆ๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ์ˆ˜๋Š” ์ •ํ•ด์ ธ ์žˆ๋‹ค.
    ์˜ฌ๋ผ์˜จ ํ”„๋กœ์„ธ์Šค๋“ค์ด ๋ชจ๋‘ block์ด ๋˜๋ฉด CPU๊ฐ€ ํ•˜๋Š” ์ผ์ด ์—†์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ํ•˜๋“œ๋””์Šคํฌ์—์„œ ๋Œ€๊ธฐ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๋“ค์„ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆฌ๊ณ  ๊ธฐ์กด์˜ ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋˜ ํ”„๋กœ์„ธ์Šค๋“ค์€ ํ•˜๋“œ๋””์Šคํฌ๋กœ ๋‚ด๋ฆฐ๋‹ค.
    ์ด ์ž‘์—…์„ Swaping์ด๋ผ๊ณ  ํ•œ๋‹ค.

    State Transitions

    Blocked → Blocked/Suspend

    ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์™€ ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค๋“ค์ด ๋ชจ๋‘ ์š”์ฒญํ•œ ์ž‘์—…์„ ํ•˜๋Š๋ผ block ์ƒํƒœ์ด๊ณ , ํ•˜๋“œ๋””์Šคํฌ์— Swapped ๋˜์—ˆ๋˜ ํ”„๋กœ์„ธ์Šค๋“ค์„ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ ค์•ผ ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๊ธฐ ์œ„ํ•ด ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋˜ ํ”„๋กœ์„ธ์Šค๋“ค์„ ํ•˜๋“œ๋””์Šคํฌ์˜ Swapped Area๋กœ ์˜ฎ๊ธด๋‹ค.

    Blocked/Suspend → Blocked

    ์š”์ฒญํ•œ ์ž‘์—…์ด ๋‹ค ๋๋‚˜์ง€ ์•Š์•˜์ง€๋งŒ ๋ฉ”๋ชจ๋ฆฌ์— ๊ณต๊ฐ„์ด ์ถฉ๋ถ„ํžˆ ์žˆ์„ ๊ฒฝ์šฐ ๋‹ค์‹œ ๋ฉ”๋ชจ๋ฆฌ๋กœ ์˜ฌ๋ผ๊ฐˆ ์ˆ˜ ์žˆ๋‹ค.

    Blocked/Suspend → Ready/Suspend

    ์š”์ฒญํ•œ ์ž‘์—…์ด ๋‹ค ๋๋‚ฌ์ง€๋งŒ ๋ฉ”๋ชจ๋ฆฌ์— ๊ณต๊ฐ„์ด ์—†๋Š” ๊ฒฝ์šฐ Ready/Suspend ์ƒํƒœ๋กœ ์˜ฎ๊ธด๋‹ค.

    Ready/Suspend → Ready

    Ready/Suspend ์ƒํƒœ์—์„œ ๋Œ€๊ธฐํ•˜๋˜ ์ค‘ ๋ฉ”๋ชจ๋ฆฌ์— ๊ณต๊ฐ„์ด ์ƒ๊ฒจ ๋‹ค์‹œ Ready ์ƒํƒœ๋กœ ๋ณ€๊ฒฝํ•œ๋‹ค.

    Ready → Ready/Suspend

    ์—ฌ๋Ÿฌ suspend ์ด์œ ๋กœ Ready์—์„œ Ready/Suspend๋กœ ์˜ฎ๊ฒจ์งˆ ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํ”„๋กœ์„ธ์Šค์˜ ์šฐ์„ ์ˆœ์œ„ ๋•Œ๋ฌธ์— ๋ฉ”๋ชจ๋ฆฌ์— ๊ณต๊ฐ„์„ ๋งŒ๋“ค์–ด์•ผํ•  ๊ฒฝ์šฐ Ready/Suspend ์ƒํƒœ๋กœ ์˜ฎ๊ฒจ์ง„๋‹ค.

    New → Ready/Suspend

    ๋งŒ์•ฝ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๊ฐ€๋“ ์ฐจ ์žˆ๋Š” ๊ฒฝ์šฐ๋ผ๋ฉด OS๋Š” New ์ƒํƒœ์—์„œ Ready/Suspend ์ƒํƒœ๋กœ Admit ํ•œ๋‹ค.

    ๐Ÿ“‚ํ”„๋กœ์„ธ์Šค ์ปจํŠธ๋กค ๋ธ”๋Ÿญ(PCB)

    ์šด์˜์ฒด์ œ๊ฐ€ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•ด ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•œ ๋ชจ๋“  ์ •๋ณด๋ฅผ ์ €์žฅํ•ด๋†“์€ ๊ณณ. 

    Context switch๋ฅผ ์œ„ํ•ด ํ•„์š”. ํ”„๋กœ์„ธ์Šค ์ƒ์„ฑ ์‹œ ๋งŒ๋“ค์–ด์ง€๋ฉฐ ์ฃผ๊ธฐ์–ต์žฅ์น˜์— ์œ ์ง€.

     

    ๋Œ“๊ธ€