๊ด€๋ฆฌ ๋ฉ”๋‰ด

๋ชฉ๋กOperating System (์šด์˜์ฒด์ œ) (6)

Unfazedโ—๏ธ๐ŸŽฏ

๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ, ์ปจํ…์ŠคํŠธ ์Šค์œ„์น˜, ์Šค์ผ€์ค„๋ง, ํ”„๋กœ์„ธ์Šค vs ์Šค๋ ˆ๋“œ

1. ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ์ด ํ•„์š”ํ•œ ์ด์œ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ์ด ํ•„์š”ํ•œ ์ฃผ์š” ์ด์œ ๋Š” ํฌ๊ฒŒ ๋‘๊ฐ€์ง€๋กœ ์‘๋‹ต์„ฑ(Responsiveness)๊ณผ ์„ฑ๋Šฅ(Performance)์ด๋‹ค.1.1. ์‘๋‹ต์„ฑ(Responsiveness)์‚ฌ์šฉ์ž ๊ฒฝํ—˜ ์ธก๋ฉด์—์„œ ์‘๋‹ต์„ฑ์€ ์†Œํ”„ํŠธ์›จ์–ด ํ’ˆ์งˆ์„ ๊ฒฐ์ •ํ•˜๋Š” ํ•ต์‹ฌ ์š”์†Œ์ด๋‹ค.์‚ฌ๋ก€ 1: ์˜จ๋ผ์ธ ์‡ผํ•‘๋ชฐ์—์„œ ๋Œ€๋Ÿ‰ ๊ตฌ๋งค ์š”์ฒญ์ด DB ์ž‘์—…์„ ์ง€์—ฐ์‹œํ‚ฌ ๊ฒฝ์šฐ, ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์ด ์ฐจ๋‹จ๋จ → ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ์œผ๋กœ ๊ฐ ์š”์ฒญ์„ ๋ณ„๋„ ์Šค๋ ˆ๋“œ์—์„œ ์ฒ˜๋ฆฌํ•˜๋ฉด ๋™์‹œ ์‘๋‹ต ๊ฐ€๋Šฅ์‚ฌ๋ก€ 2: ๋™์˜์ƒ ์žฌ์ƒ ์•ฑ๋ฉ”์ธ ์Šค๋ ˆ๋“œ: UI ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ์›Œ์ปค ์Šค๋ ˆ๋“œ: ๋ฏธ๋””์–ด ๋””์ฝ”๋”ฉ ๋ฐ ์ถœ๋ ฅ → ์‚ฌ์šฉ์ž ์ธํ„ฐ๋ž™์…˜ ์ง€์—ฐ ์—†๋Š” ๋ถ€๋“œ๋Ÿฌ์šด ๊ฒฝํ—˜ ์ œ๊ณต์ด๋Ÿฌํ•œ ๋™์‹œ์„ฑ(Concurrency)์€ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ์„ ํ†ตํ•ด ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์‹ฌ์ง€์–ด ๋‹จ์ผ ์ฝ”์–ด์—์„œ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.1.2. ์„ฑ๋Šฅ(Performa..

์Šค๋ ˆ๋“œ ์•ˆ์ „์„ฑ Thread Safety

Thread safety์Šค๋ ˆ๋“œ ์•ˆ์ „์„ฑ์€ ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ์— ์˜ํ•ด ๋™์‹œ์— ์‹คํ–‰๋˜๋Š” ๊ฒฝ์šฐ์—๋„ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‚˜ ์ฝ”๋“œ ๋ถ€๋ถ„์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ์„ฑ์งˆ์„ ๋งํ•œ๋‹ค. ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๊ฐ€ ๋™์‹œ์— ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•ด๋„ ๋ฐ์ดํ„ฐ ์†์ƒ์ด๋‚˜ ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ํ–‰๋™์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ์Šค๋ ˆ๋“œ์— ์•ˆ์ „ํ•˜๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.์ด์— ๋ฐ˜ํ•ด, ์Šค๋ ˆ๋“œ ์‹คํ–‰์˜ ์ˆœ์„œ๋‚˜ ํƒ€์ด๋ฐ์— ๋”ฐ๋ผ ๊ฒฐ๊ณผ๊ฐ€ ๋‹ฌ๋ผ์ง€๋Š” ๊ฒฝ์Ÿ ์ƒํƒœ์™€ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๋ฉด ์Šค๋ ˆ๋“œ์— ์•ˆ์ „ํ•˜์ง€ ์•Š๋‹ค. ์Šค๋ ˆ๋“œ์— ์•ˆ์ „ํ•˜์ง€ ์•Š์€ ์ฝ”๋“œ๋Š” ๋™์‹œ์— ๋˜๋Š” ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ํ™˜๊ฒฝ์—์„œ ์•ˆ์ „ํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ฒŒ ๋œ๋‹ค. ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ํ™˜๊ฒฝ์—์„œ count ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ ์˜ˆ์‹œ๋ฅผ ๋ณด์ž.0์œผ๋กœ ์ดˆ๊ธฐํ™”๋œ count ๋ณ€์ˆ˜๊ฐ€ ์žˆ๊ณ  2๊ฐœ์˜ ์Šค๋ ˆ๋“œ๊ฐ€ 'increment()' ๋ฉ”์†Œ๋“œ๋ฅผ ๋™์‹œ์— ํ˜ธ์ถœํ•˜๋Š” ์ƒํ™ฉ์„ ์ƒ๊ฐํ•ด ๋ณด์žpublic class Counter{..

ํƒ€์ด๋จธ ์ธํ„ฐ๋ŸฝํŠธ(timer interrupt) ๋ฐœ์ƒ ์ฃผ๊ธฐ?/ tick interrupt, timer interrupt (+ xv6 )

xv6 ์‹œ์Šคํ…œ ์ฝœ ๊ตฌํ˜„ ๊ณผ์ œ๋ฅผ ํ•˜๋ฉด์„œ ๊ณผ์ œ ๋งˆ๊ฐ์ผ๊นŒ์ง€๋„ ๊น”๋”ํ•˜๊ฒŒ ์ดํ•ด๊ฐ€ ๋˜์ง€ ์•Š์•˜๋˜ ๋ถ€๋ถ„์— ๋Œ€ํ•ด ์ •๋ฆฌํ•ด ๋ณธ๋‹ค. ์ผ๋‹จ ๋‚ด๊ฐ€ ์˜๋ฌธ์ด์—ˆ๋˜ ๋ถ€๋ถ„์€ "1ํ‹ฑ๋งˆ๋‹ค ํƒ€์ด๋จธ ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋ฐœ์ƒ์„ ํ•œ๋‹ค"๊ณ  ํ•˜๋Š”๋ฐ, 1์ดˆ์— 100 ํ‹ฑ์ด๋ผ ํ•œ๋‹ค๋ฉด ํ”„๋กœ์„ธ์Šค ์ˆ˜ํ–‰ ์ค‘ 1์ดˆ์— 100๋ฒˆ์˜ ํƒ€์ด๋จธ ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒƒ์ด๊ณ , ๊ทธ๋•Œ๋งˆ๋‹ค ์œ ์ €๋ชจ๋“œ์—์„œ ์ปค๋„ ๋ชจ๋“œ๋กœ์˜ ์ „ํ™˜์ด ์ด๋ฃจ์–ด์ง„๋‹ค๋Š” ๊ฒƒ์ด ๋งž๋‹ค๋Š” ๊ฒƒ์ธ๋ฐ, ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๊ณผ๋„ํ•˜๊ฒŒ  ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹Œ์ง€? ์˜€๋‹ค. ๊ต์ˆ˜๋‹˜๊ป˜ ์—ฌ์ญค๋ณธ ๋ฐ”๋กœ๋Š” ํƒ€์ด๋จธ ์ธํ„ฐ๋ŸฝํŠธ๋Š” ๋งคํ‹ฑ๋งˆ๋‹ค ๋ฐœ์ƒํ•˜๊ณ , ๊ทธ๋•Œ๋งˆ๋‹ค ์ปค๋„๋ชจ๋“œ๋กœ์˜ ์ „ํ™˜์ด ์ด๋ฃจ์–ด์ง€๋Š” ๊ฒƒ์ด ๋งž๋‹ค๊ณ  ํ•œ๋‹ค. ( ๋ชจ๋“œ์Šค์œ„์นญ์ด ์—„์ฒญ ๋น ๋ฅธ ์‹œ๊ฐ„ ์‚ฌ์ด์— ์ด๋ฃจ์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ํ”„๋กœ์„ธ์Šค์˜ ์ˆ˜ํ–‰์†๋„์— ๊ฑฐ์˜ ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ํ•œ๋‹ค.) ๊ทธ๋•Œ ์ปค๋„ ๋ชจ๋“œ์—์„œ๋Š” system time update,..

ํ”„๋กœ๊ทธ๋žจ๊ณผ ํ”„๋กœ์„ธ์Šค์˜ ์ฐจ์ด/(feat. ์‹œ์Šคํ…œ ์ฝœ)

ํ”„๋กœ๊ทธ๋žจ ๋””์Šคํฌ์— ์ €์žฅ๋œ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ์˜ ์ง‘ํ•ฉ ํ”„๋กœ์„ธ์Šค ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ์˜ ์ธ์Šคํ„ด์Šค๋กœ, ์šด์˜ ์ฒด์ œ๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” ์‹คํ–‰ ์ปจํ…์ŠคํŠธ test.c๋Š” ์†Œ์Šค ์ฝ”๋“œ ํŒŒ์ผ ์ด ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ปดํŒŒ์ผํ•˜์—ฌ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ๋ฐ”์ด๋„ˆ๋ฆฌ(ํ”„๋กœ๊ทธ๋žจ)๋ฅผ ๋งŒ๋“ ๋‹ค. ์ด ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋ฉด test๋ผ๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ƒ์„ฑ๋˜์–ด ์‹คํ–‰๋œ๋‹ค. test.c ์†Œ์Šค ์ฝ”๋“œ ๋‚ด์— a()๋ผ๋Š” ์‹œ์Šคํ…œ ์ฝœ์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž. a()๋Š” testํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ํ˜ธ์ถœ๋˜๋Š” ์‹œ์Šคํ…œ ์ฝœ์ด๋‹ค. ๋”ฐ๋ผ์„œ ๋ณ„๋„์˜ ํ”„๋กœ์„ธ์Šค๋กœ ์‹คํ–‰๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค( a() ์‹œ์Šคํ…œ ์ฝœ์ด ์ข…๋ฃŒ๋œ ๊ฒƒ์ด์ง€ testํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋œ ๊ฒƒ์ด ์•„๋‹˜, ํ˜ธ์ถœ ๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ฆฌ๋Š” ๊ณผ์ •์—์„œ ์ด ๋ถ€๋ถ„์„ ํ˜ผ๋™ํ•˜๊ณ  ์žˆ์—ˆ๋‹ค ). ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ test ํ”„๋กœ์„ธ์Šค์˜ ์ปจํ…์ŠคํŠธ์—์„œ ์ปค๋„ ๋ชจ๋“œ๋กœ ์ „ํ™˜ํ•˜์—ฌ a() ์‹œ์Šคํ…œ์ฝœ์ด ์ฒ˜๋ฆฌ๋œ๋‹ค. (con..