๐Ÿ’ป
ComputerScience
  • ๋ชฉ์ฐจ
  • Operating System
    • ์šด์˜์ฒด์ œ๋ž€
    • ํ”„๋กœ์„ธ์Šค vs ์Šค๋ ˆ๋“œ
    • ํ”„๋กœ์„ธ์Šค ์ฃผ์†Œ ๊ณต๊ฐ„
    • ์ธํ„ฐ๋ŸฝํŠธ(Interrupt)
    • ์‹œ์Šคํ…œ ์ฝœ(System Call)
    • PCB์™€ Context Switching
    • IPC(Inter Process Communication)
    • CPU ์Šค์ผ€์ค„๋ง
    • ๋ฐ๋“œ๋ฝ(DeadLock)
    • Race Condition
    • ์„ธ๋งˆํฌ์–ด(Semaphore) & ๋ฎคํ…์Šค(Mutex)
    • ํŽ˜์ด์ง• & ์„ธ๊ทธ๋จผํ…Œ์ด์…˜
    • ํŽ˜์ด์ง€ ๊ต์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜
    • ๋ฉ”๋ชจ๋ฆฌ(Memory)
    • ํŒŒ์ผ ์‹œ์Šคํ…œ
  • Network
    • OSI 7 ๊ณ„์ธต
    • TCP 3 way handshake & 4 way handshake
    • TCP/IP ํ๋ฆ„์ œ์–ด & ํ˜ผ์žก์ œ์–ด
    • UDP
    • ๋Œ€์นญํ‚ค & ๊ณต๊ฐœํ‚ค
    • HTTP & HTTPS
    • TLS/SSL handshake
    • ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ(Load Balancing)
    • Blocking,Non-blocking & Synchronous,Asynchronous @LifesLike
    • Blocking & Non-Blocking I/O
  • Algorithm
    • ๊ฑฐํ’ˆ ์ •๋ ฌ(Bubble Sort)
    • ์„ ํƒ ์ •๋ ฌ(Selection Sort)
    • ์‚ฝ์ž… ์ •๋ ฌ(Insertion Sort)
    • ํ€ต ์ •๋ ฌ(Quick Sort) @mimwin
    • ๋ณ‘ํ•ฉ ์ •๋ ฌ(Merge Sort)
    • ํž™ ์ •๋ ฌ(Heap Sort)
    • ๊ธฐ์ˆ˜ ์ •๋ ฌ(Radix Sort)
    • ๊ณ„์ˆ˜ ์ •๋ ฌ(Count Sort)
    • ์ด๋ถ„ ํƒ์ƒ‰(Binary Search)
    • ํ•ด์‹œ ํ…Œ์ด๋ธ” ๊ตฌํ˜„
    • DFS & BFS @sujin-kk
    • ์ตœ์žฅ ์ฆ๊ฐ€ ์ˆ˜์—ด(LIS)
    • ์ตœ์†Œ ๊ณตํ†ต ์กฐ์ƒ(LCA)
    • ๋™์  ๊ณ„ํš๋ฒ•(Dynamic Programming)
    • ๋‹ค์ต์ŠคํŠธ๋ผ(Dijkstra) ์•Œ๊ณ ๋ฆฌ์ฆ˜
    • ๋น„ํŠธ๋งˆ์Šคํฌ(BitMask)
  • Database
    • ํ‚ค(Key) ์ •๋ฆฌ
    • SQL - JOIN
    • SQL Injection
    • SQL vs NoSQL
    • ์ •๊ทœํ™”(Nomalization)
    • ์ด์ƒ(Anomaly)
    • ์ธ๋ฑ์Šค(INDEX)
    • ํŠธ๋žœ์žญ์…˜(Transaction)
    • ํŠธ๋žœ์žญ์…˜ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€(Transaction Isolation Level)
    • ์ €์žฅ ํ”„๋กœ์‹œ์ €(Stored PROCEDURE)
    • ๋ ˆ๋””์Šค(Redis) @sujin-kk
  • Java
    • Java ์ปดํŒŒ์ผ ๊ณผ์ •
    • Call by Value vs Call by Reference
    • String & StringBuffer & StringBuilder
    • ์ž๋ฐ” ๊ฐ€์ƒ ๋จธ์‹ (Java Virtual Machine)
    • Casting(์—…์บ์ŠคํŒ… & ๋‹ค์šด์บ์ŠคํŒ…)
    • ์˜คํ†  ๋ฐ•์‹ฑ & ์˜คํ† ์–ธ๋ฐ•์‹ฑ
    • Thread ํ™œ์šฉ
    • ๊ณ ์œ  ๋ฝ(Intrinsic Lock)
    • ๋ฌธ์ž์—ด ํด๋ž˜์Šค
    • Garbage Collection
    • Promotion & Casting
    • Primitive type & Reference type
    • ์ง๋ ฌํ™”(Serialization)
    • Error & Exception
    • Stream API
    • Record
    • Composition
Powered by GitBook
On this page
  • ๐Ÿ““ ํ”„๋กœ์„ธ์Šค
  • ๐Ÿ“Œ ํ”„๋กœ๊ทธ๋žจ๊ณผ ํ”„๋กœ์„ธ์Šค โœจ
  • ๐Ÿ“Œ ํ”„๋กœ๊ทธ๋žจ์—์„œ ํ”„๋กœ์„ธ์Šค๋กœ
  • ๐Ÿ“Œ ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ โœจ
  • ๐Ÿ““ PCB: Process Control Block
  • ๐Ÿ“Œ ํ”„๋กœ์„ธ์Šค ์ œ์–ด ๋ธ”๋ก
  • ๐Ÿ“Œ Context Switching โœจ
  1. Operating System

PCB์™€ Context Switching

Previous์‹œ์Šคํ…œ ์ฝœ(System Call)NextIPC(Inter Process Communication)

Last updated 2 years ago

Table of Contents

์—ฌ๊ธฐ์„œ๋„ ๋ณผ ์ˆ˜ ์žˆ์–ด์š”


๐Ÿ““ ํ”„๋กœ์„ธ์Šค

๐Ÿ“Œ ํ”„๋กœ๊ทธ๋žจ๊ณผ ํ”„๋กœ์„ธ์Šค โœจ

์šด์˜์ฒด์ œ์—์„œ ํ”„๋กœ์„ธ์Šค๋Š” ํ•˜๋‚˜์˜ ์ž‘์—…๋‹จ์œ„์ž…๋‹ˆ๋‹ค. (๊ทธ๋ž˜์„œ ํ”„๋กœ์„ธ์Šค๋ฅผ task๋ผ๊ณ ๋„ ๋ถ€๋ฆ…๋‹ˆ๋‹ค.) ์‚ฌ์šฉ์ž๊ฐ€ ๋งˆ์šฐ์Šค๋ฅผ ๋”๋ธ”ํด๋ฆญํ•˜์—ฌ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋ฉด ๊ทธ ํ”„๋กœ๊ทธ๋žจ์ด ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋˜๋Š” ๊ฒ๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ ์ •ํ™•ํžˆ ๋‘˜์˜ ์ฐจ์ด๋Š” ๋ญ˜๊นŒ์š”?

  • ์ •์ ์ธ ์ƒํƒœ vs. ๋™์ ์ธ ์ƒํƒœ

    • ํ”„๋กœ๊ทธ๋žจ์€ ์ €์žฅ์žฅ์น˜์— ๋ณด๊ด€๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋œ๋‹ค๋Š” ๊ฑด ํ”„๋กœ๊ทธ๋žจ ์ฝ”๋“œ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์™€์„œ ์ž‘์—…์ด ์ง„ํ–‰๋˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๋ ‡๊ฒŒ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์˜จ ๊ฒƒ์ด ํ”„๋กœ์„ธ์Šค๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ํ”„๋กœ๊ทธ๋žจ์€ ์ž‘์—… ์ ˆ์ฐจ๋ฅผ ์ญ‰ ์ ์–ด๋†“์€ ๊ฒƒ์ด๊ณ , ํ”„๋กœ์„ธ์Šค๋Š” ๊ทธ ์ž‘์„ฑ๋œ ์ž‘์—… ์ ˆ์ฐจ๋ฅผ ์‹ค์ œ๋กœ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

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

    • ์ด ๋•Œ, ๋ ˆ์Šคํ† ๋ž‘์—์„œ ์š”๋ฆฌํ•˜๋Š” ์š”๋ฆฌ์‚ฌ๋ฅผ ์ƒ๊ฐํ•ด๋ด…์‹œ๋‹ค. ๊ณ„์†ํ•ด์„œ ์—ฌ๋Ÿฌ ์š”๋ฆฌ ์ฃผ๋ฌธ์ด ๋“ค์–ด์˜ค๊ฒ ์ฃ ? ๊ทผ๋ฐ ์š”๋ฆฌ์‚ฌ๊ฐ€ ํ•œ ๋ฒˆ์— ํ•œ ์š”๋ฆฌ๋งŒ ์š”๋ฆฌํ•˜๋ฉด ์–ด๋–จ๊นŒ์š”? ์†๋‹˜๋“ค๋„ ์˜ค๋ž˜ ๊ธฐ๋‹ค๋ฆฌ๊ณ , ๋น„ํšจ์œจ์ ์œผ๋กœ ์š”๋ฆฌ๋ฅผ ํ•˜๊ฒŒ ๋˜๊ฒ ์ฃ ? ํ”„๋กœ์„ธ์Šค๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. CPU๊ฐ€ ํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•˜์ง€ ๋ชปํ•œ๋‹ค๋ฉด ๋น„ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์‹ค์ œ๋กœ ํ”„๋กœ์„ธ์Šค ์—ญ์‹œ Context Switching(๋ฌธ๋งฅ ๊ตํ™˜)์„ ํ†ตํ•ด ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฒˆ๊ฐˆ์•„๊ฐ€๋ฉฐ ์‹คํ–‰๋˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๐Ÿ“Œ ํ”„๋กœ๊ทธ๋žจ์—์„œ ํ”„๋กœ์„ธ์Šค๋กœ

๋‘˜์˜ ์ฐจ์ด๋Š” ์•Œ๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์ •ํ™•ํžˆ ์–ด๋–ป๊ฒŒ ํ”„๋กœ์„ธ์Šค๋กœ ์ „ํ™˜๋˜๋Š” ๊ฑธ๊นŒ์š”?

์šฐ์„  ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ ค์•ผ ํ•˜๊ฒ ์ฃ ? ๊ทธ๋ž˜์„œ ํ”„๋กœ๊ทธ๋žจ์„ ๋ฉ”๋ชจ๋ฆฌ์˜ ์ ๋‹นํ•œ ์œ„์น˜๋กœ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ์— ๊ฐ€์ ธ์˜ค๊ธฐ๋งŒ ํ•˜๋ฉด ๋์ผ๊นŒ์š”?

์ž‘์—…์„ ์ง„์งœ๋กœ ํ•˜๋Š” ๊ฑด CPU์ž…๋‹ˆ๋‹ค. CPU๊ฐ€ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ์–ด๋””์— ์˜ฌ๋ผ์™€ ์žˆ๋Š” ์ง€๋ฅผ ์•Œ์•„์•ผํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋˜, ์œ„์—์„œ Context Switching์„ ํ†ตํ•ด ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฒˆ๊ฐˆ์•„๊ฐ€๋ฉฐ ์‹คํ–‰๋œ๋‹ค๊ณ  ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์ด์ „์— ํ”„๋กœ์„ธ์Šค๊ฐ€ ์–ด๋””๊นŒ์ง€ ์‹คํ–‰๋๋Š” ์ง€ ์ •๋ณด๋„ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋˜ ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰๋˜๊ณ  ์žˆ์œผ๋‹ˆ, ํ”„๋กœ์„ธ์Šค๋งˆ๋‹ค ์ด๋ฆ„์ด ์žˆ์–ด์•ผ ์„œ๋กœ ๊ตฌ๋ถ„ํ•˜๊ณ  ์›ํ•˜๋Š” ๊ฑธ ์‹คํ–‰ํ•  ์ˆ˜๋„ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ฆ‰, ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆฌ๋Š” ๊ฒƒ ๋ฟ๋งŒ ์•„๋‹Œ ์ด๋Ÿฐ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ฐ์ข… ์ •๋ณด๋“ค์„ ์ €์žฅํ•ด๋†”์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ •๋ณด๋“ค์„ ์šด์˜์ฒด์ œ๋Š” PCB(Process Control Block)๋ฅผ ์ƒ์„ฑํ•ด์„œ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“Œ ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ โœจ

์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ฒˆ๊ฐˆ์•„๊ฐ€๋ฉฐ ์‹คํ–‰ํ•œ๋‹ค๋ฉด, ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๋„ ์žˆ์„๊ฒƒ์ด๊ณ , ๋Œ€๊ธฐ ์ค‘์ด๊ฑฐ๋‚˜, ์‹คํ–‰์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. OS๋Š” ์ด๋Ÿฐ ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•ด์•ผ ๋‹ค์Œ์— ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•  ์ง€ ์•Œ ์ˆ˜ ์žˆ๊ฒ ์ฃ ?

์ด๋Ÿฐ ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ๋งˆ๋‹ค OS๋Š” ์—ฌ๋Ÿฌ ํƒ€์ž…์˜ queue๋ฅผ ๋‘๊ณ  ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

  • ์—ฌ๊ธฐ์„  queue๋ผ๊ณ  ํ–ˆ์ง€๋งŒ, ์‹ค์ œ๋กœ๋Š” OS๋งˆ๋‹ค ๋‹ค๋ฅด๊ฒŒ ๊ตฌํ˜„๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด linux๋Š” Red Black Tree๋ฅผ ์ด์šฉํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ด queue์— PCB๋ฅผ ๋„ฃ์–ด์„œ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๐Ÿ™‹ ์™œ ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ๋งˆ๋‹ค ํ๋ฅผ ๋‘๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๊ฑธ๊นŒ์š”?

๐Ÿƒ ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ ์ข…๋ฅ˜

ํฌ๊ฒŒ๋Š” Run, Ready, Waiting 3๊ฐ€์ง€ ์ƒํƒœ๋กœ ๋ณผ ์ˆ˜๋„ ์žˆ๊ณ , ์ด์™ธ์—๋„ ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค ์ƒํƒœ ๋ชจ๋ธ์ด ์žˆ๋Š”๋ฐ, 5๊ฐ€์ง€ ์ƒํƒœ์˜ ํ”„๋กœ์„ธ์Šค ๋ชจ๋ธ์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  1. ์ƒ์„ฑ ์ƒํƒœ create

    • ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์™€ ์‹คํ–‰ ์ค€๋น„๋ฅผ ์™„๋ฃŒํ•œ ์ƒํƒœ์ž…๋‹ˆ๋‹ค.

    • ์ด ๋•Œ PCB๋„ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

  2. ์ค€๋น„ ์ƒํƒœ ready

    • ์ƒ์„ฑ๋œ ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ์–ป์„ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์ƒํƒœ. ์ž๊ธฐ ์‹คํ–‰ ์ˆœ์„œ๊ฐ€ ๋  ๋•Œ๊นŒ์ง€ ํ”„๋กœ์„ธ์Šค๋Š” ์ค€๋น„ ์ƒํƒœ์—์„œ ๊ธฐ๋‹ค๋ ค์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    • CPU scheduler๊ฐ€ ์ค€๋น„ ํ๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. CPU ์Šค์ผ€์ค„๋Ÿฌ๋Š” Context Switching์ด ์ผ์–ด๋‚  ๋•Œ ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๋ฅผ running ์‹œํ‚ฌ ์ง€ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ๋” ์ž์„ธํ•œ ๊ฑด ์Šค์ผ€์ค„๋Ÿฌ ๊ด€๋ จํ•ด์„œ ๋”ฐ๋กœ ์ •๋ฆฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

  3. ์‹คํ–‰ ์ƒํƒœ running

    • ์ค€๋น„ ์ƒํƒœ์— ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค ์ค‘ ํ•˜๋‚˜๊ฐ€ CPU๋ฅผ ์–ป์–ด ์‹ค์ œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ƒํƒœ์ž…๋‹ˆ๋‹ค.

    • ์ผ์ • ์‹œ๊ฐ„๋™์•ˆ CPU๋ฅผ ์‚ฌ์šฉํ•œ ๊ถŒ๋ฆฌ๋ฅผ ๊ฐ–๋Š”๋‹ค. ์ฃผ์–ด์ง„ ์‹œ๊ฐ„๋™์•ˆ ์ž‘์—…์ด ๋๋‚˜์ง€ ์•Š์•˜๋‹ค๋ฉด ๋‹ค์‹œ ์ค€๋น„ ์ƒํƒœ๋กœ ๋Œ์•„๊ฐ‘๋‹ˆ๋‹ค.

  4. ์™„๋ฃŒ ์ƒํƒœ terminate exit

    • ์ฃผ์–ด์ง„ ์‹œ๊ฐ„๋™์•ˆ ์ž‘์—…์„ ์™„๋ฃŒํ•œ ์ƒํƒœ์ž…๋‹ˆ๋‹ค.

    • ์ด ๋•Œ PCB๋„ ํ๊ธฐํ•˜๊ณ , ์ฝ”๋“œ์™€ ์‚ฌ์šฉํ–ˆ๋˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

    • ์ •์ƒ์  ์ข…๋ฃŒ๋ผ๋ฉด exit()๋กœ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ฒ˜๋ฆฌ๋˜์ง€๋งŒ, ์˜ค๋ฅ˜๋‚˜ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์— ์˜ํ•ด ๋น„์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒ๋˜๋Š” ๊ฐ•์ œ ์ข…๋ฃŒ(abort)๋ฅผ ๋งŒ๋‚˜๋ฉด ๋””๋ฒ„๊น…ํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ•์ œ ์ข…๋ฃŒ ์ง์ „์˜ ๋ฉ”๋ชจ๋ฆฌ ์ƒํƒœ๋ฅผ ์ €์žฅ์žฅ์น˜๋กœ ์˜ฎ๊น๋‹ˆ๋‹ค. ์ด๋ฅผ ์ฝ”์–ด ๋คํ”„(core dump)๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

  5. ๋Œ€๊ธฐ ์ƒํƒœ blocking waiting

    • ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž…์ถœ๋ ฅ์„ ์š”๊ตฌํ•˜๋ฉด, CPU๊ฐ€ ์ง์ ‘ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๊ณ  ์ž…์ถœ๋ ฅ ๊ด€๋ฆฌ์ž์—๊ฒŒ ๋ช…๋ น์„ ๋‚ด๋ฆฝ๋‹ˆ๋‹ค. ์ด ์ƒํƒœ์—์„œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์š”์ฒญํ•œ ์ž‘์—…์ด ๋๋‚  ๋•Œ๊นŒ์ง€ CPU๊ฐ€ ์•„๋ฌด ์ž‘์—…๋„ ํ•˜์ง€ ์•Š๊ณ  ๊ธฐ๋‹ค๋ฆฌ๋ฉด ํšจ์œจ์„ฑ์ด ๋–จ์–ด์ง€๊ฒ ์ฃ ?

    • ๋”ฐ๋ผ์„œ ์ž…์ถœ๋ ฅ์„ ์š”๊ตฌํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž…์ถœ๋ ฅ์ด ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์ƒํƒœ์ž…๋‹ˆ๋‹ค.

    • ๋Œ€๊ธฐ ์ƒํƒœ์˜ ํ”„๋กœ์„ธ์Šค๋Š” ์š”์ฒญํ•œ ์ž…์ถœ๋ ฅ์ด ์™„๋ฃŒ๋˜๋ฉด ์ž…์ถœ๋ ฅ ๊ด€๋ฆฌ์ž๋กœ๋ถ€ํ„ฐ ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ๋ฐ›์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ๋Œ€๊ธฐ ์ƒํƒœ์˜ ํ”„๋กœ์„ธ์Šค๋Š” ๋ฐ”๋กœ ์‹คํ–‰ ์ƒํƒœ๋กœ ๋Œ์•„๊ฐ€์ง€ ์•Š๊ณ , ์ค€๋น„ ์ƒํƒœ๋กœ ๋Œ์•„๊ฐ€์„œ ๋‹ค์‹œ ์ž๊ธฐ ์ฐจ๋ก€๋ฅผ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค.

๐Ÿ““ PCB: Process Control Block

๐Ÿ“Œ ํ”„๋กœ์„ธ์Šค ์ œ์–ด ๋ธ”๋ก

  • ํ”„๋กœ์„ธ์Šค๋ฅผ Task๋ผ๊ณ ๋„ ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ, PCB ์—ญ์‹œ TCB๋ผ๊ณ ๋„ ๋ถ€๋ฆ…๋‹ˆ๋‹ค.

โ—๏ธPCB ๊ตฌ์„ฑ

ํฌ์ธํ„ฐ

ํ”„๋กœ์„ธ์Šค ์ƒํƒœ

Process ID

Process Priority

Program Counter

๊ฐ์ข… CPU Registers ์ •๋ณด

๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ์ •๋ณด

ํ• ๋‹น๋œ ์ž์› ์ •๋ณด

PPID์™€ CPID

  1. ํฌ์ธํ„ฐ

  2. ํ”„๋กœ์„ธ์Šค ์ƒํƒœ

    • Run, Ready, Waiting ๋“ฑ์˜ ์ƒํƒœ

  3. ํ”„๋กœ์„ธ์Šค ID

    • ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ตฌ๋ณ„ํ•˜๊ธฐ ์œ„ํ•œ ๊ตฌ๋ถ„์ž

  4. ํ”„๋กœ๊ทธ๋žจ ์šฐ์„ ์ˆœ์œ„

    • CPU Scheduling์ด ์ผ์–ด๋‚˜์„œ ์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ์ค€๋น„ ์ƒํƒœ์— ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค ์ค‘ ์‹คํ–‰ ์ƒํƒœ๋กœ ์˜ฎ๊ฒจ์•ผ ํ•  ํ”„๋กœ์„ธ์Šค๋ฅผ ์–ด๋–ป๊ฒŒ ์„ ํƒํ• ๊นŒ์š”?

    • ํ”„๋กœ์„ธ์Šค ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์‚ผ์•„์„œ, ๋†’์€ ์šฐ์„ ์ˆœ์œ„์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋จผ์ € ์‹คํ–‰ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด์— ๊ด€ํ•œ๊ฑด ์Šค์ผ€์ค„๋ง๋งŒ ๋‹ค๋ฃฐ ๋•Œ ๋” ์ž์„ธํžˆ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  5. ํ”„๋กœ๊ทธ๋žจ ์นด์šดํ„ฐ

    • ๋‹ค์Œ์— ์‹คํ–‰๋  ๋ช…๋ น์–ด์˜ ์œ„์น˜๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํ”„๋กœ๊ทธ๋žจ ์นด์šดํ„ฐ ๊ฐ’์„ ์ €์žฅํ•ด๋†“์Šต๋‹ˆ๋‹ค. ์ด๊ฒŒ ์žˆ์–ด์•ผ Context Switching์ด ์ผ์–ด๋‚˜์„œ ๋‹ค์‹œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰๋  ๋•Œ ์–ด๋””๋ฅผ ์‹คํ–‰ํ•ด์•ผํ•  ์ง€ ์•Œ ์ˆ˜ ์žˆ๊ฒ ์ฃ ?

  6. ๊ฐ์ข… ๋ ˆ์ง€์Šคํ„ฐ ์ •๋ณด

    • ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰๋˜๋ฉด์„œ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ๋งˆ๋‹ค ์ง€์—ญ ๋ณ€์ˆ˜๋Š” ์Šคํƒ์— ์ €์žฅ๋˜์ฃ ? ๊ทธ๋Ÿผ ์ด ์Šคํƒ์ด ์–ด๋”จ๋Š” ์ง€๋ฅผ ์•Œ์•„์•ผ ์ €์žฅ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋•Œ ์Šคํƒ ํฌ์ธํ„ฐ๋„ ์ด ๋ ˆ์ง€์Šคํ„ฐ ์ •๋ณด์— ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

    • ์ด ๊ฐ’์„ ์ €์žฅํ•ด๋†”์•ผ ๋‹ค์Œ์— ์‹คํ–‰ํ•  ๋•Œ ์ด์–ด์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์„ ๊ฑฐ์—์š”.

  7. ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ์ •๋ณด

    • ํ• ๋‹น๋ฐ›์•˜๋˜ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์–ด๋”” ์žˆ๋Š”์ง€ ๋‚˜ํƒ€๋‚ด๋Š” ์œ„์น˜ ์ •๋ณด, segmentation table, page table์˜ ์ •๋ณด๋„ ๋ณด๊ด€ํ•ฉ๋‹ˆ๋‹ค. ๋” ์ž์„ธํ•œ ๊ฑด ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ์— ๋Œ€ํ•ด ๋‹ค๋ฃฐ ๋•Œ ์ •๋ฆฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

  8. ํ• ๋‹น๋œ ์ž์› ์ •๋ณด

    • ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰ ์ค‘์— ์‚ฌ์šฉํ•˜๋Š” ํŒŒ์ผ, ์ž…์ถœ๋ ฅ ์žฅ์น˜ ๊ฐ™์€ ๋ฆฌ์†Œ์Šค๋Š” ์ฒ˜์Œ ์‚ฌ์šฉ๋  ๋•Œ OS๊ฐ€ ๋ฆฌ์†Œ์Šค ๋ฒˆํ˜ธ๋ฅผ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค. ์ด ๋•Œ ์ด ๋ฒˆํ˜ธ๋Š” ์–‘์˜ ์ •์ˆ˜๋กœ์„œ, PCB์˜ file descriptor table์— ๋“ฑ๋ก๋ฉ๋‹ˆ๋‹ค.

  9. PPID์™€ CPID

    • ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” PPID, ์ž์‹ ํ”„๋กœ์„ธ์Šค(๋“ค)๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” CPID ์ •๋ณด๋„ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

      ์˜ˆ๋ฅผ ๋“ค์–ด fork() ์‹œ์Šคํ…œ ํ˜ธ์ถœ๋กœ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ณต์‚ฌ๋ฉ๋‹ˆ๋‹ค. ์ด ๋•Œ ์›๋ž˜ ์‹คํ–‰ํ•˜๋˜ ํ”„๋กœ์„ธ์Šค๋Š” ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค, ์ƒˆ๋กœ ์ƒ๊ธด ํ”„๋กœ์„ธ์Šค๋Š” ์ž์‹ ํ”„๋กœ์„ธ์Šค๋กœ ๋ถ€๋ชจ-์ž์‹ ๊ด€๊ณ„๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

๐Ÿ“Œ Context Switching โœจ

CPU๊ฐ€ ํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋๋‚  ๋•Œ๊นŒ์ง€ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•˜์ง€ ์•Š์œผ๋ฉด ๋น„ํšจ์œจ์ ์ด์–ด์„œ ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ฒˆ๊ฐˆ์•„๊ฐ€๋ฉด์„œ ์‹คํ–‰ํ•˜๊ณ , ๊ทธ ๋•Œ ํ”„๋กœ์„ธ์Šค์˜ ์ •๋ณด๋“ค์„ PCB์— ์ €์žฅํ•ด์„œ ๊ด€๋ฆฌํ•œ๋‹ค๊ณ  ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ ์–ด๋–ป๊ฒŒ ๋ฒˆ๊ฐˆ์•„๊ฐ€๋ฉด์„œ ์‹คํ–‰ํ• ๊นŒ์š”?

โ—๏ธ Context Switching(๋ฌธ๋งฅ ๊ตํ™˜)์ด๋ž€

Context Switching์ด๋ž€ CPU๋ฅผ ์ฐจ์ง€ํ•˜๋˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‚˜๊ฐ€๊ณ  ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ฐ›์•„๋“ค์ด๋Š” ์ž‘์—…์ž…๋‹ˆ๋‹ค. ์ด ๋•Œ ์‹คํ–‰ ์ƒํƒœ์—์„œ ๋‚˜๊ฐ€๋Š” PCB์—๋Š” ์ง€๊ธˆ๊นŒ์ง€์˜ ์ž‘์—… ๋‚ด์šฉ์„ ์ €์žฅํ•˜๊ณ , ๋ฐ˜๋Œ€๋กœ ์‹คํ–‰ ์ƒํƒœ๋กœ ๋“ค์–ด์˜ค๋Š” PCB์˜ ๋‚ด์šฉ์„ ์ฝ์–ด์„œ ๋ ˆ์ง€์Šคํ„ฐ์— ์ ์žฌํ•˜์—ฌ CPU๊ฐ€ ์„ธํŒ…๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์•ผ ๋“ค์–ด์˜ค๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ณ„์†ํ•ด์„œ ์ด์–ด์„œ ์ž‘์—…์„ ํ•  ์ˆ˜ ์žˆ๊ฒ ์ฃ ?

์ฆ‰, ์ด์™€ ๊ฐ™์ด ๋‘ ํ”„๋กœ์„ธ์Šค์˜ PCB๋ฅผ ๊ตํ™˜ํ•˜๋Š” ์ž‘์—…์ด Context Switching์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด ๋•Œ ๊ต์ฒด๋˜๋Š” ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค๋Š” CPU ์Šค์ผ€์ค„๋Ÿฌ์— ์˜ํ•ด ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค.

โ—๏ธ ์–ธ์ œ ์ผ์–ด๋‚ ๊นŒ?

์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์ผ์–ด๋‚ฉ๋‹ˆ๋‹ค.

  • ์ผ๋ฐ˜์ ์œผ๋กœ๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ฃผ์–ด์ง„ CPU ์‚ฌ์šฉ ํ—ˆ๊ฐ€ ์‹œ๊ฐ„์„ ๋ชจ๋‘ ์†Œ์ง„ํ•  ๋•Œ

  • ์ž…์ถœ๋ ฅ์„ ์œ„ํ•ด ๋Œ€๊ธฐํ•  ๋•Œ

  • ์ž์‹ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋งŒ๋“ค ๋•Œ

  • ์ธํ„ฐ๋ŸฝํŠธ ์ฒ˜๋ฆฌ๋ฅผ ๊ธฐ๋‹ค๋ฆด ๋•Œ

โ—๏ธ ์ ˆ์ฐจ

ํ”„๋กœ์„ธ์Šค P1๊ณผ P2์˜ Context switching ๊ณผ์ •์„ ์ข€ ๋” ์‚ดํŽด๋ด…์‹œ๋‹ค.

๋‹จ๊ณ„
์ ˆ์ฐจ
์„ค๋ช…

1

์ธํ„ฐ๋ŸฝํŠธ/ ์‹œ์Šคํ…œ ํ˜ธ์ถœ

์–ด๋–ค ์ด์œ ๋กœ ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์‹คํ–‰ ์ƒํƒœ์— ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค P1์ด ์ฃผ์–ด์ง„ ์‹œ๊ฐ„์„ ๋‹ค ์‚ฌ์šฉํ•˜์—ฌ ์šด์˜์ฒด์ œ์—์„œ ์Šค์ผ€์ค„๋Ÿฌ์— ์˜ํ•ด ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

2

์ปค๋„ ๋ชจ๋“œ ์ „ํ™˜

P1์ด ์œ ์ € ๋ชจ๋“œ์—์„œ ์ปค๋„ ๋ชจ๋“œ๋กœ ์ „ํ™˜, P1์€ ์ค€๋น„ ์ƒํƒœ

3

ํ˜„์žฌ ํ”„๋กœ์„ธ์Šค ์ƒํƒœ PCB์— ์ €์žฅ

P1์˜ ํ˜„์žฌ ํ”„๋กœ์„ธ์Šค ์ƒํƒœ PCB์— ์ €์žฅ

4

๋‹ค์Œ ์‹คํ–‰ ํ”„๋กœ์„ธ์Šค ๋กœ๋“œ

P2์˜ PCB ์ •๋ณด๋ฅผ ํ†ตํ•ด CPU ๋ ˆ์ง€์Šคํ„ฐ ์ •๋ณด๋ฅผ ์ฑ„์›€ ์ด ๋•Œ Program Counter๋ฅผ ํ†ตํ•ด ์–ด๋А ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•  ์ง€๋ฅผ ์•Œ ์ˆ˜ ์žˆ๊ณ , Stack Pointer๋ฅผ ํ†ตํ•ด ํ”„๋กœ์„ธ์Šค์˜ ์Šคํƒ ์˜์—ญ ๋งˆ์ง€๋ง‰ ์ฃผ์†Œ๋ฅผ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

5

์œ ์ € ๋ชจ๋“œ ์ „ํ™˜

P2 ํ”„๋กœ์„ธ์Šค ์ปค๋„ ๋ชจ๋“œ์—์„œ ์œ ์ € ๋ชจ๋“œ๋กœ ์ „ํ™˜๋˜์–ด ์‹คํ–‰

โ—๏ธ๋‹จ์ 

Context Switching์ด ๋„ˆ๋ฌด ์žฆ์œผ๋ฉด ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒํ•ด์„œ ์„ฑ๋Šฅ์ด ๋–จ์–ด์ง‘๋‹ˆ๋‹ค.

  • ์ปค๋„ ๋ชจ๋“œ, ์œ ์ € ๋ชจ๋“œ ์ „ํ™˜ํ•˜๋ฉด์„œ ์ƒํƒœ ์ €์žฅํ•˜๊ณ  ๋ ˆ์ง€์Šคํ„ฐ๊ฐ’ ๋‹ค์‹œ ๋ถˆ๋Ÿฌ์˜ค๊ณ ..

  • ๊ทธ ์™ธ์—๋„ ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ๋„ ๋น„์›Œ์•ผ ํ•˜๊ณ ..

  • ์ด๋Ÿฌ๋Š” ๋™์•ˆ CPU๋Š” ๋‹ค๋ฅธ ์ž‘์—…์„ ํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  CPU๋ฅผ ๊ทธ๋ƒฅ ๋†€๊ฒŒ ๋†”๋‘๋Š” ๊ฒƒ๋ณด๋‹ค ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ˆ˜ํ–‰์‹œํ‚ค๋Š” ๊ฒƒ์ด ๋” ํšจ์œจ์ ์ผ ๋•Œ ์Šค์ผ€์ค„๋Ÿฌ๋Š” Context Switching์„ ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ™‹ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์„๊นŒ์š”?


๐Ÿ‘€ ๋‹ค์Œ์„ ์ฐธ๊ณ ํ•˜์—ฌ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

  • ํ•™๋ถ€ ์ˆ˜์—…

์—์„œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ๋ฉ”๋ชจ๋ฆฌ๋งŒ ํ•„์š”ํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๊ณ , ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์ž๋ฃŒ ๊ตฌ์กฐ๋กœ PCB๊ฐ€ ํ•„์š”ํ•˜๋‹ค๊ณ  ํ–ˆ์ฃ ? PCB์— ๋Œ€ํ•ด ๋” ์•Œ์•„๋ด…์‹œ๋‹ค.

์—์„œ ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ์— ๋”ฐ๋ผ ํ๋กœ ์šด์˜๋œ๋‹ค๊ณ  ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋•Œ queue์—์„œ PCB๋ฅผ ์—ฐ๊ฒฐํ•  ๋•Œ ํฌ์ธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ :

๐Ÿ““ ํ”„๋กœ์„ธ์Šค
๐Ÿ“Œ ํ”„๋กœ๊ทธ๋žจ๊ณผ ํ”„๋กœ์„ธ์Šค โœจ
๐Ÿ“Œ ํ”„๋กœ๊ทธ๋žจ์—์„œ ํ”„๋กœ์„ธ์Šค๋กœ
๐Ÿ“Œ ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ โœจ
๐Ÿ™‹ ์™œ ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ๋งˆ๋‹ค ํ๋ฅผ ๋‘๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๊ฑธ๊นŒ์š”?
๐Ÿƒ ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ ์ข…๋ฅ˜
๐Ÿ““ PCB: Process Control Block
๐Ÿ“Œ ํ”„๋กœ์„ธ์Šค ์ œ์–ด ๋ธ”๋ก
โ—๏ธPCB ๊ตฌ์„ฑ
๐Ÿ“Œ Context Switching โœจ
โ—๏ธ Context Switching(๋ฌธ๋งฅ ๊ตํ™˜)์ด๋ž€
โ—๏ธ ์–ธ์ œ ์ผ์–ด๋‚ ๊นŒ?
โ—๏ธ ์ ˆ์ฐจ
โ—๏ธ๋‹จ์ 
๐Ÿ™‹ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์„๊นŒ์š”?
ํ”„๋กœ์„ธ์Šค์˜ ๊ฐœ์š”
ํ”„๋กœ์„ธ์Šค ์ œ์–ด ๋ธ”๋ก๊ณผ ๋ฌธ๋งฅ ๊ตํ™˜
ํ”„๋กœ์„ธ์Šค์˜ ๊ฐœ์š”
ํ”„๋กœ์„ธ์Šค์˜ ๊ฐœ์š”
bash-shell/file_descriptors
์‰ฝ๊ฒŒ ๋ฐฐ์šฐ๋Š” ์šด์˜์ฒด์ œ
@gyoogle/tech-interview-for-developer
image-20220912042405286
image-20220912042427164