์šด์˜์ฒด์ œ๋กœ๋ถ€ํ„ฐ ์‹œ์Šคํ…œ ์ž์›์„ ํ•  ์žฅ ๋ฐ›๋Š” ์ž‘์—…์˜ ๋‹จ์œ„๋ฅผ ํ”„๋กœ์„ธ์Šค๋ผ๊ณ  ํ•œ๋‹ค.

 

์‹œ์Šคํ…œ ์ž์›์˜ ์˜ˆ๋กœ๋Š” ๋ฌด์—‡์ด ์žˆ์„๊นŒ โ“

1. CPU ์‹œ๊ฐ„

2. ์šด์˜๋˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ์ฃผ์†Œ ๊ณต๊ฐ„

3. Code, Data, Stack, Heap์˜ ๊ตฌ์กฐ๋กœ ๋˜์–ด ์žˆ๋Š” ๋…๋ฆฝ๋œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ

 

ํ”„๋กœ์„ธ์Šค๋Š” ๊ฐ๊ฐ ๋…๋ฆฝ๋œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”๋ฐ ํ”„๋กœ์„ธ์Šค ๋‚ด์— ์‹คํ–‰๋˜๋Š” ์—ฌ๋Ÿฌ ํ๋ฆ„์˜ ๋‹จ์œ„์ธ ์Šค๋ ˆ๋“œ์™€ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ๊ณต์œ ํ•œ๋‹ค.

 

ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค ์•ˆ์— ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๊ฐ€ ์กด์žฌ(๊ธฐ๋ณธ์ ์œผ๋กœ ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Œ)ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๊ฐ™์€ ํ”„๋กœ์„ธ์Šค ๋‚ด์— ์žˆ๋Š” ์Šค๋ ˆ๋“œ๋“ค์€ ๊ฐ๊ฐ์˜ Stack ์˜์—ญ์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ  Code, Data, Heap ์˜์—ญ์€ ๊ณต์œ ํ•œ๋‹ค. 

์Šคํƒ ์•ˆ์—๋Š” ์ง€์—ญ๋ณ€์ˆ˜, ๋ฆฌํ„ด ์ฃผ์†Œ, ๊ฐ’ ํŒŒ๋ผ๋ฏธํ„ฐ, ๋ฆฌํ„ด ๊ฐ’์ด ๋“ค์–ด๊ฐ€๋ฉฐ ์ด๊ฒƒ์€ ๊ฐ๊ฐ์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

ํž™ ์•ˆ์—๋Š” ๋™์ ์œผ๋กœ ํ• ๋‹น๋˜๋Š” ๋ฐฐ์—ด์ด๋‚˜ ๊ฐ์ฒด๊ฐ€ ๋“ค์–ด๊ฐ€๋ฉฐ ์ด๋ฅผ ๊ณต์œ ํ•˜๊ธฐ์— ํ•œ ์Šค๋ ˆ๋“œ๊ฐ€ ํ”„๋กœ์„ธ์Šค ์ž์›์„ ๋ณ€๊ฒฝํ•˜๋ฉด(๋™์ ์ด๋ผ๋Š” ๋œป์ด๋ฏ€๋กœ ์ฆ‰ Heap Area ๋ถ€๋ถ„) ๋‹ค๋ฅธ ์ด์›ƒ ์Šค๋ ˆ๋“œ๋„ ๋ณ€๊ฒฝ ์‚ฌ์‹ค์„ ์ฆ‰์‹œ ์•Œ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ ๋ณ€๊ฒฝ์‚ฌ์‹ค์„ ๋ฐ›์•„์™€์„œ ์Šคํƒ์—์„œ ํ™œ๋™์„ ํ•˜์—ฌ ๋ฐ˜์˜ํ•  ๊ฒƒ์ด๋‹ค.

 

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

 

๋™๊ธฐํ™” ๋ฌธ์ œ๋ฅผ ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ• ๊นŒ โ“

๋ณ‘ํ–‰ ์ œ์–ด๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ์˜ ๋ถˆ์ผ์น˜๋ฅผ ๋ง‰์•„์•ผ ํ•œ๋‹ค.

 

๐Ÿ’ก ์ž„๊ณ„ ์˜์—ญ

ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ˆ˜์ • ๊ฐ€๋Šฅํ•œ ๊ณต์œ ์ž์›์„ ์•ก์„ธ์Šคํ•˜๊ณ  ์žˆ์„ ๋•Œ, ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋Š” ๊ทธ ๊ณต์œ  ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋„๋ก ๋ณด์žฅ

 

๐Ÿ’ก ์ž„๊ณ„ ๊ตฌ์—ญ ์ƒํ˜ธ ๋ฐฐ์ œ ๊ธฐ๋ฒ•

 

1. ๋ฎคํ…์Šค

์ผ์ข…์˜ locking ๋งค์ปค๋‹ˆ์ฆ˜์œผ๋กœ lock์„ ๊ฐ€์ง€๊ณ  ์žˆ์„ ๋•Œ๋งŒ ๊ณต์œ  ๋ฐ์ดํ„ฐ ์ ‘๊ทผ ๊ฐ€๋Šฅ

ํ‚ค๋ฅผ ๊ฐ€์ง„ ์‚ฌ๋žŒ๋งŒ์ด ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๊ณ  ์ผ์ด ๋๋‚˜๋ฉด ํ‚ค ๋ฐ˜๋‚ฉ

 

2. ์„ธ๋งˆํฌ์–ด

๋™์‹œ์— ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ํ—ˆ์šฉ ๊ฐ€๋Šฅํ•œ counter์˜ ๊ฐœ์ˆ˜๋ฅผ ์˜๋ฏธ

count ์ˆ˜๊ฐ€ 1๊ฐœ๋ฉด binary semaphore๋ผ๊ณ  ํ•˜๋ฉฐ ์ด๋Š” ๋ฎคํ…์Šค์™€ ๊ฐœ๋…์ ์œผ๋กœ ๊ฐ™๋‹ค.

์—ฌ๋Ÿฌ๊ฐœ์ด๋ฉด counting semaphore๋ผ๊ณ  ๋ถˆ๋ฆฐ๋‹ค.

 

3. ๋ชจ๋‹ˆํ„ฐ

๋ฎคํ…์Šค์™€ condition valuable๋ฅผ ๊ฐ–๊ณ  ์žˆ๋Š” ๋งค์ปค๋‹ˆ์ฆ˜

์ˆœ์ฐจ์ ์œผ๋กœ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ณต์œ ์ž์›์ด๋‚˜ ๊ทธ๋ฃน์— ํ• ๋‹นํ•˜๋ฉฐ ๋ฐ์ดํ„ฐ์™€ ํ”„๋กœ์‹œ์ €๋ฅผ ํฌํ•จํ•˜๋Š” ๋ณ‘ํ–‰์„ฑ ๊ณ ๊ธ‰ ๊ตฌ์กฐ์ฒด

๋ชจ๋‹ˆํ„ฐ ๋‚ด๋ถ€ ๋ณ€์ˆ˜๋Š” ๋ชจ๋‹ˆํ„ฐ ๋‚ด๋ถ€์—์„œ๋งŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ณ  ์ด๋Š” ์ •๋ณด์˜ ์€ํ ๊ธฐ๋ฒ•

๋ชจ๋“  ์ž๋ฐ” ๊ฐ์ฒด๋Š” Monitor๋ฅผ ๊ฐ–๊ณ  ์žˆ๋‹ค.

 

๋ฎคํ…์Šค์™€ ์„ธ๋งˆํฌ์–ด์˜ ์ฐจ์ด์ ์€ โ“

๋ฎคํ…์Šค๋Š” ๊ณต์œ ์ž์›์— ๋Œ€ํ•œ ์ ‘๊ทผ๊ถŒํ•œ ์ฆ‰ lock์ด๋ผ๋Š” ํ‚ค๋ฅผ ํ•œ๊ฐœ๋งŒ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๊ณ  ์„ธ๋งˆํฌ์–ด๋Š” ์—ฌ๋Ÿฌ๊ฐœ ๊ฐ€๋Šฅ

+ Recent posts