CS/โš™๏ธ ์šด์˜์ฒด์ œ

CS/โš™๏ธ ์šด์˜์ฒด์ œ

[โš™๏ธ OS] ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํ†ต์‹  (IPC: Inter-Process Communication)

์ปค๋„์˜ ์ง€์› ํ•„์š” โœจ IPC์˜ ๋ชฉ์  = ํ”„๋กœ์„ธ์Šค ๋™๊ธฐํ™” data transfer sharing data event notification resource sharing and synchronization process control Message Passing ์ปค๋„์„ ํ†ตํ•ด ์ฃผ๊ณ  ๋ฐ›์Œ user ๊ณ„์ธต์— ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค๋“ค๋ผ๋ฆฌ ์ง์ ‘ ํ†ต์‹  X ๐Ÿ‘‰ OS์—์„œ ์ œ๊ณตํ•˜๋Š” message passing์— ๊ด€ํ•œ system call์„ ์ด์šฉํ•ด ์ปค๋„์„ ๊ฑฐ์ณ๊ฐ Messsage queue Pipes Mailboxes Sockets communication link๋ฅผ ๋งŒ๋“ค์–ด์„œ ๋ฉ”์‹œ์ง€๋ฅผ ์ฃผ๊ณ  ๋ฐ›์Œ ๐Ÿ”น Direct Communication ํ”„๋กœ์„ธ์Šค๋ฅผ ์ง์ ‘ ์ง€๋ช… send(P, message) receive(Q, message) ์ƒ๋Œ€๋ฐฉ์˜ I..

CS/โš™๏ธ ์šด์˜์ฒด์ œ

[โš™๏ธ OS] ํ”„๋กœ์„ธ์Šค ๋™๊ธฐํ™”

ํ”„๋กœ์„ธ์Šค ๋™๊ธฐํ™” ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ณต์œ ์ž์›์— ์ ‘๊ทผํ•œ๋‹ค๋ฉด race condition(๊ฒฝํ•ฉ์กฐ๊ฑด)์ด ๋ฐœ์ƒํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ์ƒํ™ฉ์„ ๋ง‰๊ธฐ ์œ„ํ•ด์„œ ํ•„์š”ํ•œ mechanism์ด ์žˆ๋‹ค. ๐Ÿ”น Locking Mechanism ์–ด๋–ค ์ž‘์—…์ด ์ˆ˜ํ–‰๋˜๋Š” ๊ฒƒ์„ ๋ง‰๋Š”๋‹ค ๐Ÿ‘‰ before entering critical section ๐Ÿ‘‰ before accessing shared data critical section(์ž„๊ณ„์˜์—ญ)์€ ์ตœ๋Œ€ํ•œ ์งง๊ฒŒ ์„ค์ •ํ•ด์•ผํ•œ๋‹ค multi-processors์—์„œ interrupt-based locks์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์–ด๋ ค์›€ ๐Ÿ‘‰ read-write instructions ์œผ๋กœ ํ•ด๊ฒฐ ๐Ÿ”น Semaphore Synchronization tool Counting semaphore Binary semaphore โž” 0 ๋˜๋Š” 1 ๊ฐ’๋งŒ..

CS/โš™๏ธ ์šด์˜์ฒด์ œ

[โš™๏ธ OS] CPU ์Šค์ผ€์ค„๋ง

CPU ์Šค์ผ€์ค„๋ง ๐Ÿ‘‰ ์–ด๋Š ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‚ฌ์šฉ๋  ๊ฒƒ์ธ์ง€ ๊ฒฐ์ • ๐Ÿ”น CPU ์Šค์ผ€์ค„๋Ÿฌ Ready ์ƒํƒœ์˜ ํ”„๋กœ์„ธ์Šค ์ค‘์—์„œ ์ด๋ฒˆ์— CPU์— ์ค„ ํ”„๋กœ์„ธ์Šค ์„ ์ • ๐Ÿ”น Dispatcher CPU ์ œ์–ด๊ถŒ์„ CPU ์Šค์ผ€์ค„๋Ÿฌ์— ์˜ํ•ด ์„ ํƒ๋œ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ๋„˜๊น€ = context switching ๐Ÿ”น ๊ณ ๋ ค์‚ฌํ•ญ ๋ˆ„๊ตฌํ•œํ…Œ CPU๋ฅผ ์ค„ ๊ฒƒ์ธ์ง€ ์ค‘๊ฐ„์— CPU๋ฅผ ๋บ์–ด์˜ฌ ์ˆ˜ ์žˆ๊ฒŒ ํ•  ๊ฒƒ์ธ์ง€ ๋˜๋Š” ๊ณ„์† ์“ฐ๊ฒŒ ํ•  ๊ฒƒ์ธ์ง€ ๐Ÿ”น scheduling criteria CPU utilization โž” ์ตœ๋Œ€ํ•œ ์‚ฌ์šฉ Throughput Turnaround Time (์ด ์†Œ์š”์‹œ๊ฐ„) Waiting Time Response time (CPU๋ฅผ ์ตœ์ดˆ ์–ป์„ ๋•Œ๊นŒ์ง€ ๊ฑธ๋ฆฐ ์‹œ๊ฐ„) ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๐Ÿ”น nonpreemptive (๋น„์„ ์ ํ˜•) ๐Ÿ”น preemptive (์„ ์ ํ˜•) ๐Ÿ”ธ ..

CS/โš™๏ธ ์šด์˜์ฒด์ œ

[โš™๏ธ OS] Thread

์Šค๋ ˆ๋“œ ์Šค๋ ˆ๋“œ ํ”„๋กœ์„ธ์Šค ๋‚ด๋ถ€์— ์žˆ์Œ. ํ•œ ๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Œ โžก๏ธ concurrency ๋ณ‘๋ ฌ์ฒ˜๋ฆฌ ์Šค๋ ˆ๋“œ๋ผ๋ฆฌ address space, resource ๊ณต์œ  ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ modern OS embedded systems multi-core processors network servers ๐Ÿ”น Multiple Threads ๊ฐ thread๋Š” ๋ณ„๊ฐœ๋กœ ์‹คํ–‰ Memory์™€ I/O state์€ ๊ณต์œ  thread 1์—์„œ thread 2๋กœ context switching์ด ์ผ์–ด๋‚˜๋ฉด thread1์ด ๊ฐ€์ง€๊ณ  ์žˆ๋˜ register set์„ CPU state์— ์ €์žฅ thread2์˜ CPU state์„ register set์— load Hyper-Threading : Context switching ove..

CS/โš™๏ธ ์šด์˜์ฒด์ œ

[โš™๏ธ OS] Process

ํ”„๋กœ์„ธ์Šค ๐Ÿ”น ํ”„๋กœ์„ธ์Šค ์ฝ”๋“œ์˜ ์ผ๋ถ€. ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ ์ž๊ธฐ ๋…๋ฆฝ์ ์ธ resource ๊ฐ€์ง. single address space โžก๏ธ protection ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์™€ ๊ณต์œ  X ๐Ÿ”น ํŠน์ง• ํ”„๋กœ์„ธ์Šค ๊ฐ๊ฐ ๊ณ ์œ ์˜ ์Šคํƒ ๋ฉ”๋ชจ๋ฆฌ ๋ณด์œ  ๊ณ ์œ ์˜ ๋ฉ”๋ชจ๋ฆฌ ํŽ˜์ด์ง€ ๋ณด์œ  ๊ณ ์œ ์˜ file descriptor table ๋ณด์œ  PID (Process ID) ๐Ÿ”น ํ”„๋กœ์„ธ์Šค์˜ Context CPU ์ˆ˜ํ–‰ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ํ•˜๋“œ์›จ์–ด ๋ฌธ๋งฅ Program Counter register ํ”„๋กœ์„ธ์Šค ์ฃผ์†Œ ๊ณต๊ฐ„ code data stack ํ”„๋กœ์„ธ์Šค ๊ด€๋ จ ์ปค๋„ ์ž๋ฃŒ๊ตฌ์กฐ PCB Kernel Stack ๐Ÿ”น ํ”„๋กœ์„ธ์Šค ์ƒ์„ฑ ์ž์‹์€ ๋ถ€๋ชจ์˜ ๊ณต๊ฐ„์„ ๋ณต์‚ฌํ•ด ๊ทธ ๊ณต๊ฐ„์— ์ƒˆ๋กœ์šด ํ”„๋กœ๊ทธ๋žจ์„ ์˜ฌ๋ฆผ ํŠธ๋ฆฌ(๊ณ„์ธต ๊ตฌ์กฐ) ํ˜•์„ฑ fork() ์‹œ์Šคํ…œ์ฝœ์„ ํ†ตํ•ด ์ž์‹ ๊ณผ ๋™์ผํ•œ ํ”„๋กœ..

soogoori
'CS/โš™๏ธ ์šด์˜์ฒด์ œ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก