๐Ÿ“š STUDY

240219 CS ์Šคํ„ฐ๋”” - ์šด์˜์ฒด์ œ

ming412 2024. 2. 19. 13:43

 

Synchronization

Race Condition์„ ์˜ˆ๋ฐฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด Synchronization์ด๋‹ค.

 

+) ์ƒ์‚ฐ์ž-์†Œ๋น„์ž ๋ฌธ์ œ (ํ”„๋กœ์„ธ์Šค ๋™๊ธฐํ™”์— ๋Œ€ํ•œ ๋ฌธ์ œ -> ์›น์„œ๋ฒ„์™€ ์—ฐ๊ฒฐ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค | ์ƒ์‚ฐ์ž:ํด๋ผ(์š”์ฒญ์„ ๋งŒ๋“ ๋‹ค,๋ฒ„ํผ์— ๋„ฃ๋Š”๋‹ค) | ์†Œ๋น„์ž:์„œ๋ฒ„(์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•œ๋‹ค,๋ฒ„ํผ๋ฅผ ๋น„์šด๋‹ค))

https://copycode.tistory.com/67

 

์šด์˜์ฒด์ œ 9์žฅ - ํ”„๋กœ์„ธ์Šค ๊ด€๋ฆฌ(6) : ์ƒ์‚ฐ์ž-์†Œ๋น„์ž ๋ฌธ์ œ -

์šด์˜์ฒด์ œ 9์žฅ- ํ”„๋กœ์„ธ์Šค ๊ด€๋ฆฌ(6) : ์ƒ์‚ฐ์ž-์†Œ๋น„์ž ๋ฌธ์ œ - ํ”„๋กœ์„ธ์Šค ๋™๊ธฐํ™”๋Š” ํ”„๋กœ์„ธ์Šค ๊ด€๋ฆฌ ๋ถ„์•ผ์—์„œ ์ค‘์š”ํ•œ ๋ถ„์•ผ์ด๋‹ค. ์•ž์˜ ์žฅ๋“ค์€ ๋™๊ธฐํ™”๋ฅผ ๊ณต๋ถ€ํ•˜๊ธฐ ์œ„ํ•ด ์€ํ–‰๊ณ„์ขŒ ๋ฌธ์ œ๋ฅผ ์˜ˆ์‹œ๋กœ ๋“ค์–ด์„œ ์„ค๋ช…

copycode.tistory.com

 

๋ฐ๋“œ๋ฝ์ด๋ž€?

ใ…‡ใ…‡

 

๋ฐ๋“œ๋ฝ์ด ๋ฐœ์ƒํ•˜๋Š” ์กฐ๊ฑด 4๊ฐ€์ง€

1. mutual exclusion : ์˜ค์ง ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋งŒ ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผ

2. hold and wait : ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๊ฐ€ ์–ด๋–ค ๋ฆฌ์†Œ์Šค๋ฅผ ๊ฐ€์ง„ ์ƒํƒœ์—์„œ ๋˜ ๋‹ค๋ฅธ ๋ฆฌ์†Œ์Šค๋ฅผ ์ฐจ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๋Š” ์ƒํ™ฉ

3. no preemption : ๊ฐ•์ œ๋กœ ๋ฑ‰์–ด๋‚ด์ง€ ๋ชปํ•จ. ์ž๋ฐœ์ ์œผ๋กœ ๋ฆฌ์†Œ์Šค๋ฅผ ๋†”์ค˜์•ผ ํ•œ๋‹ค

4. circular wait : ์ˆœํ™˜๊ตฌ์กฐ๋กœ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์ƒํ™ฉ

- ํ•ด๊ฒฐ ๋ฐฉ์•ˆ : ๋ชจ๋“  ์ž์›์— ์ˆซ์ž๋ฅผ ๋ถ™์—ฌ์„œ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ๋งŒ ์š”์ฒญ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋ฉด ์ˆœํ™˜๊ตฌ์กฐ ํšŒํ”ผ ๊ฐ€๋Šฅ

- ํ˜„์‹ค์ ์œผ๋กœ๋Š”, ๋ฐ๋“œ๋ฝ ๊ฑธ๋ฆด ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ์ž์›์— int๋ฅผ ๋ถ™์—ฌ์ฃผ๊ธฐ ์–ด๋ ค์›€

 

๋ฐ๋“œ๋ฝ์„ ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ• ๊นŒ?

1. ์˜ˆ๋ฐฉ

- ๋ฐ๋“œ๋ฝ์˜ ๋„ค ๊ฐ€์ง€ ์ „์ œ๋ฅผ ์—†์• ๋Š” ๊ฒƒ

2. ํšŒํ”ผ

- resource allocation graph : ๋ชจ๋“  ๊ฐ„์„ ์— ๋Œ€ํ•œ ์˜ˆ์ธก ์‹œ๊ฐ„์„ ๊ณ„์‚ฐํ•œ๋’ค, ์ž์›ํ• ๋‹น ๊ทธ๋ž˜ํ”„๋ฅผ ๊ณ„์† ํ™•์ธํ•˜๋ฉฐ ํ”ผํ•œ๋‹ค -> ์†๋„๊ฐ€ ๋„ˆ๋ฌด ๋А๋ฆฌ๋‹ค -> ๊ทธ๋ž˜์„œ ๋‚˜์˜จ๊ฒŒ ๋ฑ…์ปค์Šค ์•Œ๊ณ ๋ฆฌ์ฆ˜

- ๋ฑ…์ปค์Šค ์•Œ๊ณ ๋ฆฌ์ฆ˜ : ์•ˆ์ •์ƒํƒœ์ด๋ฉด ์ฃผ๊ณ , ์•ˆ์ •์ƒํƒœ๊ฐ€ ์•„๋‹ˆ๋ฉด ์•ˆ์ค€๋‹ค.

3. ํƒ์ง€์™€ ํšŒ๋ณต

4. ๋ฌด์‹œ

- ์ „์„ธ๊ณ„ ์šด์˜์ฒด์ œ 99%๊ฐ€ ์ด ๋ฐฉ๋ฒ•์„ ์ฑ„ํƒ

- ๋ฐ๋“œ๋ฝ์ด ์ž์—ฐ์ ์œผ๋กœ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ํ™•๋ฅ ์ด ๋งค์šฐ ๋‚ฎ๊ธฐ ๋•Œ๋ฌธ. 24์‹œ๊ฐ„ ์ปดํ“จํ„ฐ๋ฅผ ์ผœ๋†“๋Š”๋‹ค๊ณ  ํ–ˆ์„ ๋•Œ, ์ผ๋…„์— ๋ช‡ ๋ฒˆ ์—†๋‹ค. 

+) ๋ฐ๋“œ๋ฝ vs ๋ผ์ด๋ธŒ๋ฝ(live lock)
๋ผ์ด๋ธŒ๋ฝ์ด๋ž€? ์ง„์ „์ด ์—†๋Š” ์ƒํ™ฉ์—์„œ ์ฃฝ์ง€ ์•Š๋Š”๋‹ค
๋ผ์ด๋ธŒ๋ฝ ํ•ด๊ฒฐ๋ฐฉ์•ˆ : ์ž์› ์š”์ฒญ ์‹œ๊ฐ„์„ ๋žœ๋ค์œผ๋กœ ํ•˜๋ฉด ๋œ๋‹ค

 

+) ์‹์‚ฌํ•˜๋Š” ์ฒ ํ•™์ž ๋ฌธ์ œ

https://dkswnkk.tistory.com/412

 

[OS] ์‹์‚ฌํ•˜๋Š” ์ฒ ํ•™์ž๋“ค ๋ฌธ์ œ(The Dining-Philosophers Problem)

์‹์‚ฌํ•˜๋Š” ์ฒ ํ•™์ž๋“ค ๋ฌธ์ œ(_The Dining-Philosophers Problem) ์ƒ๊ฐํ•˜๊ณ  ๋จน์œผ๋ฉด์„œ ๊ทธ๋“ค์˜ ์ƒ์• ๋ฅผ ๋ณด๋‚ด๋Š” 5๋ช…์˜ ์ฒ ํ•™์ž๋ฅผ ๊ณ ๋ คํ•ด ๋ด…์‹œ๋‹ค. ์ฒ ํ•™์ž๋“ค์€ ์›ํ˜• ํ…Œ์ด๋ธ”์„ ๊ณต์œ ํ•˜๋ฉฐ, ์ด ํ…Œ์ด๋ธ”์€ ๊ฐ๊ฐ ํ•œ ์ฒ ํ•™์ž์—

dkswnkk.tistory.com

 

Race Condition

๋‘ ๊ฐœ ์ด์ƒ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ณตํ†ต ์ž์›์„ ๋ณ‘ํ–‰์ ์œผ๋กœ(concurrently) ์ฝ๊ฑฐ๋‚˜ ์“ฐ๋Š” ๋™์ž‘์„ ํ•  ๋•Œ, ๊ณต์šฉ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์ ‘๊ทผ์ด ์–ด๋–ค ์ˆœ์„œ์— ๋”ฐ๋ผ ์ด๋ฃจ์–ด์กŒ๋Š”์ง€์— ๋”ฐ๋ผ ์‹คํ–‰ ๊ฒฐ๊ณผ๊ฐ€ ๋‹ฌ๋ผ์ง€๋Š” ์ƒํ™ฉ.

Race์˜ ๋œป ๊ทธ๋Œ€๋กœ ๋‘ ๊ฐœ์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ํ•˜๋‚˜์˜ ์ž์›์„ ๋†“๊ณ  ์„œ๋กœ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ๊ฒฝ์Ÿํ•˜๋Š” ์ƒํ™ฉ.

 

ํ”„๋กœ์„ธ์Šค์˜ race condition -> ์ปค๋„์ฝ”๋“œ์—์„œ ๋ฐœ์ƒ
์Šค๋ ˆ๋“œ์˜ race condition -> ๊ณต์œ ์ž์›์—์„œ ๋ฐœ์ƒ

 

Critical Section์ด๋ž€?

๊ณต์œ  ๋ฆฌ์†Œ์Šค์— ์—ฌ๋Ÿฌ๊ฐœ์˜ ์Šค๋ ˆ๋“œ๋“ค์ด ๋™์‹œ์— ์ ‘๊ทผํ•˜์—ฌ ๊ณ ์น˜๋Š” ๋ถ€๋ถ„์œผ๋กœ, Race Condition์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๊ตฌ๊ฐ„.

critical section์ด ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” mutual execlusion์„ ๋ณด์žฅํ•ด์•ผ ํ•œ๋‹ค.

 

ex. ํ™”์žฅ์‹ค ์นธ์€ ์—ฌ๋Ÿฌ๋ช…์ด ๋™์‹œ์— ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— critical section์ด๋‹ค. ํ™”์žฅ์‹ค์ด๋ผ๋Š” critical section์„ ๋ณดํ˜ธํ•˜๊ธฐ ์œ„ํ•ด, ํ•œ ์นธ์—๋Š” ํ•œ ๋ช…๋งŒ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋„๋ก mutual execlusion property๋ฅผ ๋งŒ๋“  ๊ฒƒ!

 

Mutual Exclusion (์ƒํ˜ธ ๋ฐฐ์ œ)

ํ•œ ํ”„๋กœ์„ธ์Šค(์Šค๋ ˆ๋“œ)๊ฐ€ ๊ณต์œ  ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉด, ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค(์Šค๋ ˆ๋“œ)๊ฐ€ ๊ทธ ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•˜๋„๋ก ๋ง‰๋Š”๋‹ค.

 

Lock

Mutual Exclusionํ•œ ์ƒํƒœ๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด Lock์ด๋‹ค.

Lock์€ ์•„๋ž˜ ๋‘ ๊ฐœ์˜ ์—ฐ์‚ฐ์„ ์ง€์›ํ•œ๋‹ค.

void acquire() : Wait until lock is free, then grab it
void release() : Unlock and wake up any thread waiting in acquire()

 

Requirements for Lock

- Mutual execlusion : critical section์— ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ๋งŒ ์ง„์ž… ๊ฐ€๋Šฅ

- Progress : ๊ณต์œ  ๋ฆฌ์†Œ์Šค๋ฅผ ์›ํ•˜๋Š” ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๋“ค์ด ์žˆ์„ ๋•Œ, ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ๋Š” critical section์— ์ง„์ž…ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.

- Bounded waiting : starvation-free. ๊ธฐ๋‹ค๋ฆฌ๋ฉด ์–ธ์  ๊ฐ€๋Š” ๋‚ด ์ฐจ๋ก€๊ฐ€ ์™€์•ผ ํ•œ๋‹ค.

 

ํ•˜์ง€๋งŒ ๊ธฐ๋ณธ์ ์ธ Lock์œผ๋กœ๋งŒ Syncronization์„ ๊ตฌํ˜„ํ•˜๊ธฐ์—๋Š” ํ˜„์‹ค์ ์œผ๋กœ ๋ฌด๋ฆฌ๊ฐ€ ์žˆ๋‹ค.

๊ณ„์† spin ํ•˜๋Š” ๋ฐฉ์‹์ธ Lock๋ณด๋‹ค ๋” ์šฐ์•„ํ•œ Syncronization ๋ฉ”์„œ๋“œ๋ฅผ ์ œ๊ณตํ•˜๋Š”๊ฒŒ ์„ธ๋งˆํฌ์–ด์™€ ๋ฎคํ…์Šค.

 

๋ฎคํ…์Šค(MUTual EXclusive lock)๋ž€?

- ๊ณต์œ ๋œ ์ž์›์— ํ•œ ํ”„๋กœ์„ธ์Šค(์Šค๋ ˆ๋“œ)๊ฐ€ ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์„ ๋ง‰์•„์ค€๋‹ค. (๋™๊ธฐํ™” ๋Œ€์ƒ์ด ํ•˜๋‚˜)

- ํ•œ ์Šค๋ ˆ๋“œ(ํ”„๋กœ์„ธ์Šค)์— ์˜ํ•ด ์†Œ์œ ๋  ์ˆ˜ ์žˆ๋Š” key๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ์ƒํ˜ธ๋ฐฐ์ œ๊ธฐ๋ฒ•.

- contending ๋˜์—ˆ์„ ๋•Œ๋Š” busy-wait ํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ blocked ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค.

- ๋ฝ ์†Œ์œ ์ž(๋ฝ์„ ๊ฑด ์‚ฌ๋žŒ)๋งŒ ๋ฝ์„ ํ•ด์ œํ•  ์ˆ˜ ์žˆ๋‹ค. (์„ธ๋งˆํฌ์–ด์—๋Š” ๋ฝ ์†Œ์œ ์ž๋ผ๋Š” ๊ฐœ๋…์ด ์—†๋‹ค)

  - ์„ธ๋งˆํฌ์–ด๋ฅผ ์˜ฌ๋ฆฌ๋Š” ํ•จ์ˆ˜ ์•ž๋’ค์—๋‹ค ๋ฎคํ…์Šค๋ฅผ ๊ฑธ์–ด์„œ ์‚ฌ์šฉํ•˜๊ธฐ๋„ ํ•œ๋‹ค.

- Busy-wait (Spinlock) : ๋ฌธ๊ณ ๋ฆฌ๋ฅผ ๊ณ„์† ํ”๋“ค๋ฉฐ ๊ธฐ๋‹ค๋ฆฐ๋‹ค.

- Blocked (Wait-Signal) : ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‚ฌ์šฉ์ค‘์ด๋ผ ๋ฆฌ์†Œ์Šค๋ฅผ ๋ชป ์žก๋Š” ์ƒํ™ฉ์ผ ๋•Œ, ๋ฌธ๊ณ ๋ฆฌ๋ฅผ ๊ณ„์† ๋Œ๋ฆฌ๊ณ  ์žˆ์ง€ ์•Š๊ณ  ์ ์ž–๊ฒŒ sleep ํ•˜๊ณ  ์žˆ๋‹ค๊ฐ€ ๊นจ์šฐ๋ฉด ์ผ์–ด๋‚œ๋‹ค.

(๊ต๊ณผ์„œ์—์„œ๋Š” ๋ฎคํ…์Šค๊ฐ€ ๋ณดํ†ต spinlock์„ ์ง€์นญํ•œ๋‹ค๊ณ  ๋‚˜์™€์žˆ์ง€๋งŒ, ํ˜„์‹ค์—์„œ๋Š” blocked๋ฅผ ์ง€์นญํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค!)

 

๊ทธ๋Ÿผ ๋ชจ๋‘ ์ ์ž–๊ฒŒ ๊ธฐ๋‹ค๋ฆฌ๋ฉด ์ข‹์„ํ…๋ฐ, spinlock์ด ์™œ ํ•„์š”ํ• ๊นŒ? spinlock์˜ ์žฅ์ ์ด ์žˆ๋‹ค.
1. ๊ตฌํ˜„์ด ๊ต‰์žฅํžˆ ์‰ฝ๋‹ค. (blocking์„ ๊ตฌํ˜„ํ•˜๋ ค๋ฉด ํ”„๋กœ์„ธ์Šค๋ฅผ ์ œ์–ดํ•ด์•ผ ํ•œ๋‹ค. ์Šค์ผ€์ค„๋Ÿฌ๋„ ํ•„์š”.)
2. context switch ์˜ค๋ฒ ํ—ค๋“œ๊ฐ€ ์—†๋‹ค.
-> operation์ด ์งง์•„ contending์ด ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์ ์€ ์ƒํ™ฉ์—์„œ๋Š” ํšจ์œจ์ ์ด๊ณ  ์‰ฌ์šด ๋ฐฉ๋ฒ•!
-> ๋ฐ˜๋ฉด, ๋ณดํ˜ธํ•ด์•ผ ํ•˜๋Š” critical section์ด ๊ธด ๊ฒฝ์šฐ์—๋Š”, blocking ๋˜๋Š” ๋ฎคํ…์Šค๊ฐ€ ํšจ์œจ์ ์ด๋‹ค.

 

+) ๋ฐ”์ด๋„ˆ๋ฆฌ ์„ธ๋งˆํฌ์–ด vs ๋ฎคํ…์Šค์˜ ์ฐจ์ด
๋ฝ ์†Œ์œ ๊ถŒ์ด ์žˆ๊ณ (๋ฎคํ…์Šค) ์—†๊ณ (๋ฐ”์ด๋„ˆ๋ฆฌ ์„ธ๋งˆํฌ์–ด)!

 

์„ธ๋งˆํฌ์–ด -> ๋ฎคํ…์Šค๋ฅผ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด ๋‚˜์˜ด

- ๊ณต์œ ๋œ ์ž์›์— ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค(์Šค๋ ˆ๋“œ)๊ฐ€ ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์„ ๋ง‰์•„์ค€๋‹ค. (๋™๊ธฐํ™” ๋Œ€์ƒ์ด ํ•˜๋‚˜ ์ด์ƒ)

- ํ˜„์žฌ ๊ณต์œ ์ž์›์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ์Šค๋ ˆ๋“œ(ํ”„๋กœ์„ธ์Šค)์˜ ์ˆ˜(S)๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐ’์„ ๋‘์–ด ์ƒํ˜ธ๋ฐฐ์ œ๋ฅผ ๋‹ฌ์„ฑํ•˜๋Š” ๊ธฐ๋ฒ•. S ๊ฐ’์ด 1์ด ๋˜๋ฉด, ํ˜„์‹ค์ ์œผ๋กœ ๋ฎคํ…์Šค์™€ ๋™์ผํ•˜๊ฒŒ ๋œ๋‹ค.

- Signaling mechanism. 

# Wait() : decrease S by one, and wait until S >= 0
void wait(struct semaphore *sem) {
	sem -> S--;
    while (sem->S < 0); // S๊ฐ€ 0๋ณด๋‹ค ์ž‘์€ ๊ฒฝ์šฐ์—๋Š” ๊ณ„์† ๋ฌดํ•œ๋ฃจํ”„ํ•˜๋ฉฐ ๋Œ€๊ธฐ
}

# Signal() : increase S by one
void signal(struct semaphore *sem) {
	sem -> S++;
}

 

๋ชจ๋‹ˆํ„ฐ -> ์„ธ๋งˆํฌ์–ด๋ฅผ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด ๋‚˜์˜ด

https://velog.io/@moonheekim0118/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C-%EB%AA%A8%EB%8B%88%ED%84%B0-Monitor

 

[์šด์˜์ฒด์ œ] ๋ชจ๋‹ˆํ„ฐ (Monitor)

์„ธ๋งˆํฌ์–ด์˜ ํ•œ๊ณ„์  Timing Errors๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๊ณ , ์ด๋Š” ์ถ”์ ํ•˜๊ธฐ์— ๋ชน์‹œ ๊นŒ๋‹ค๋กญ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋ฐ”์ด๋„ˆ๋ฆฌ ์„ธ๋งˆํฌ์–ด๋ฅผ ์‚ฌ์šฉ ํ•  ์‹œ, ๊ฐ ํ”„๋กœ์„ธ์Šค๋“ค์ด wait->signal ์ˆœ์„œ๋ฅผ ์ง€์ผœ์•ผํ•˜๋Š”๋ฐ ์ด๋ฅผ ์ง€ํ‚ค์ง€ ์•Š์„

velog.io

 

๋ฌผ๋ฆฌ์ฃผ์†Œ๋ฅผ ์“ฐ๋ฉด ๋˜๋Š”๋ฐ ์™œ ๊ฐ€์ƒ์ฃผ์†Œ๋ฅผ ์“ฐ๋Š”๊ฐ€? (๊ฐ€์ƒ์ฃผ์†Œ๊ฐ€ ๋“ฑ์žฅํ•˜๊ฒŒ ๋œ ๋ฐฐ๊ฒฝ)

- ์‹ค์ œ ๋ฌผ๋ฆฌ์ฃผ์†Œ์— ์–ด๋””์— ์˜ฌ๋ผ๊ฐˆ์ง€ ๋ชฐ๋ผ์„œ ๋‚˜์ค‘์— ๋ฐ”์ธ๋”ฉ์„ ํ•˜๊ฒ ๋‹ค!

- ๊ทธ๋ ‡๊ฒŒ ํ•˜๋‹ˆ๊นŒ ๊ฐœ๋ฐœ์ž ํŽธ์˜์„ฑ๋„ ์ข‹๋‹ค

- base bound ์ฒดํฌ

 

๋…ผ๋ฆฌ์ฃผ์†Œ(=๊ฐ€์ƒ์ฃผ์†Œ) : ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ƒ๊ฐํ•˜๋Š” ์ฃผ์†Œ

๋ฌผ๋ฆฌ์ฃผ์†Œ : ์‹ค์ œ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ

 

๊ฐ€์ƒ์ฃผ์†Œ์— bound๋ฅผ ๋”ํ•˜๋ฉด ๋ฌผ๋ฆฌ์ฃผ์†Œ๊ฐ€ ๋‚˜์˜จ๋‹ค. ์ด๊ฑธ ํ•˜๋Š”๊ฒŒ MMU 

 

๋ฉ”๋ชจ๋ฆฌ ํŒŒํŽธํ™”

- internal fragmentation (๋‚ด๋ถ€๋‹จํŽธํ™”)
partition์—์„œ ํ•œ ์ž‘์—…์ด ์ฐจ์ง€ํ•˜๊ณ  ๋‚จ์€ ์˜์—ญ์€ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š”๋ฐ, ์ด ๋ถ€๋ถ„์„ internal fragmentation์ด๋ผ๊ณ  ํ•จ.

 

- external fragmentation (์™ธ๋ถ€๋‹จํŽธํ™”)
ํ•œ partition ์˜์—ญ๋ณด๋‹ค ํ”„๋กœ๊ทธ๋žจ์ด ์ปค์„œ ํ• ๋‹น ์ž์ฒด๋ฅผ ํ•  ์ˆ˜ ์—†์–ด ์˜์—ญ ์ „์ฒด๊ฐ€ ๋‚ญ๋น„๋  ๋•Œ, ์ด ๋ถ€๋ถ„์„ external fragmentaion์ด๋ผ๊ณ  ํ•จ.

 

 

๋ฉ”๋ชจ๋ฆฌ ํŒŒํŽธํ™” ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

- Binding

- Fragment

1. Segmentation ๊ธฐ๋ฒ• (๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ, ๋‚ด๋ถ€ ๋‹จํŽธํ™” ํ•ด๊ฒฐ)

๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์„œ๋กœ ๋‹ค๋ฅธ ๋…ผ๋ฆฌ์  ๋‹จ์œ„์ธ segment๋กœ ๋ถ„ํ• ํ•ด์„œ ๋ฉ”๋ชจ๋ฆฌ์— ํ• ๋‹น. (๋™์ ํ• ๋‹น์‹์œผ๋กœ ๊ฐ€๋ณ€๊ธธ์ด)

mapping์„ ์œ„ํ•ด segment table์ด ํ•„์š”ํ•˜๋‹ค.

 

Segment table

 

ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ•„์š”ํ•œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„๋งŒํผ ํ• ๋‹นํ•ด ์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ๋‚ด๋ถ€๋‹จํŽธํ™” ๋ฌธ์ œ๋Š” ์ผ์–ด๋‚˜์ง€ ์•Š์ง€๋งŒ, ์ค‘๊ฐ„์— ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ•ด์ œํ•˜๋ฉด ์ƒ๊ธฐ๋Š” ์™ธ๋ถ€๋‹จํŽธํ™” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

 

2. Paging ๊ธฐ๋ฒ• (๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ, ์™ธ๋ถ€ ๋‹จํŽธํ™”ํ•ด๊ฒฐ)

address space๋ฅผ ์—ฐ์†์ ์œผ๋กœ ํ• ๋‹นํ•˜์ง€ ์•Š๊ณ , page ๋ผ๋Š” ๋‹จ์œ„๋กœ ์ชผ๊ฐœ์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ.

 

๋จผ์ €, ํ”„๋กœ์„ธ์Šค์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ page ๋‹จ์œ„๋กœ ์ž๋ฅด๊ณ , ์‹ค์ œ physical ๋ฉ”๋ชจ๋ฆฌ(ex. RAM)๋„ page ๋‹จ์œ„๋กœ ์ชผ๊ฐ ๋‹ค. ์ด ๋•Œ ์ชผ๊ฐœ์ง„ physical memory๋ฅผ frame์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ๊ทธ๋ฆฌ๊ณ  virtual memory์˜ page๋ฅผ physical memory์˜ frame์œผ๋กœ ๋งคํ•‘ํ•œ๋‹ค.

(= LA์™€ PA๋ฅผ ๊ฐ™์€ ํฌ๊ธฐ์˜ page๋กœ ์ชผ๊ฐ  ๋’ค, page table์ด ์ด ๋‘˜์„ ๋งคํ•‘ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์‚ฌ์šฉ) 

 

 

์ด๋ ‡๊ฒŒ paging์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•˜๋ฉด, external fragmentation์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค. internal fragmentation์€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์น˜๋ช…์ ์ธ ์ •๋„๋Š” ์•„๋‹ˆ๋‹ค.

 

Page table

- Linear page table

๋ชจ๋“  virtual address์˜ page๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ๋‹ด์•„๋†“์€ page table์ด๋‹ค.

์ฆ‰, vpn (virtual page number) 0๋ฒˆ๋ถ€ํ„ฐ N๋ฒˆ๊นŒ์ง€ ์ญˆ์šฑ ๋Š˜๋ ค๋†“์€ ๊ฒƒ์ธ๋ฐ, ์ด๋Š” ํ˜„๋Œ€ ์ปดํ“จํ„ฐ ํ™˜๊ฒฝ์—์„œ๋Š” ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค.

์ด์œ ...

 

- Hierarchical page table

์œ„์™€ ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด, "์•ˆ์“ฐ๋Š” page table์€ ํ• ๋‹นํ•˜์ง€ ์•Š๊ณ  ์žˆ๋‹ค๊ฐ€ ํ•„์š”ํ• ๋•Œ๋งŒ ํ• ๋‹นํ•˜๋ฉด ๋˜์ง€ ์•Š์„๊นŒ?" ๋ผ๋Š” ๋ฐฉ๋ฒ•์ด hierarchical page table์ด๋‹ค.

 

outer page table๊ณผ page table์„ ๋‚˜๋ˆ„์–ด์„œ, ์‚ฌ์šฉํ•˜๋Š” outer page table๋งŒ ํ•˜์œ„ page table์„ ํ• ๋‹นํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

 

์œ„์™€ ๊ฐ™์ด Virtual Address๋Š” outer page table entry์˜ ์œ„์น˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” p1, page table entry์˜ ์œ„์น˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” p2, page frame์—์„œ ์‹ค์ œ ์œ„์น˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” d๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.

 

ํ”„๋กœ์„ธ์Šค๋Š” ๊ฐ์ž ์ž์‹ ์˜ VA(Virtual Address)๋งŒ ๋“ค๊ณ  ์žˆ์ง€๋งŒ, ์‚ฌ์‹ค PA(Pyhsical Address)๋„ ์žˆ๋‹ค.

MMU๋Š” PT(Page Table) ๋ฅผ ์‚ฌ์šฉํ•ด์„œ VA(Virtual Address) ๋ฅผ PA(Pyhsical Address) ๋กœ translate ํ•˜์—ฌ ์‚ฌ์šฉํ•œ๋‹ค. ๋งŒ์•ฝ Invalid bit ๊ฐ™์€๊ฒŒ ์žˆ๋‹ค๋ฉด page fault๋ฅผ ๋งŒ๋“ ๋‹ค.

 

TLB (Translation Lookaside Buffer)๋ž€?

์‹ค์ œ page table์„ ์ฐพ์•„๋ณด์ง€ ์•Š๊ณ  ๋น ๋ฅด๊ฒŒ pfn์„ ์ฐพ์„ ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ํ•˜๋“œ์›จ์–ด ๋กœ์ง. (TLB๋Š” ์บ์‹œ์— ์ €์žฅํ•œ๋‹ค)

 

Hierarchical page table์„ ์‚ฌ์šฉํ•˜๋‹ˆ, ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ•œ ๋ฒˆ ์ฝ์„ ๋•Œ ์—ฌ๋Ÿฌ depth์˜ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์„ ์ฝ์–ด์•ผ ํ•˜๋Š”๋ฐ, ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋„ˆ๋ฌด ํฌ๋‹ค -> VA (Virtual Address)๋ฅผ PA (Physical Address)๋กœ ๋ณ€ํ™˜ํ•˜๋Š”๋ฐ ๊ต‰์žฅํžˆ ๋งŽ์€ ์‹œ๊ฐ„์ด ํ•„์š”ํ•˜๋‹ค.

 

๊ทธ๋ž˜์„œ TLB ๋“ฑ์žฅ. ์ตœ๊ทผ์— translate ํ•œ ์ •๋ณด๋ฅผ ๋ฏธ๋ฆฌ ์ €์žฅํ•ด๋‘๋ฉด ํŽธํ•˜๊ฒ ๋‹ค.

TLB๋Š” vpn๊ณผ, vpn์— ๋งคํ•‘๋˜๋Š” pfn์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”๋ฐ, ๋งŒ์•ฝ ์–ด๋–ค vpn์ด TLB์— ์žˆ์œผ๋ฉด, page table์„ ๋’ค์ ธ๋ณด์ง€ ์•Š๊ณ ๋„ ๋ฐ”๋กœ pfn์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

 

ํ•˜์ง€๋งŒ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฐ”๋€” ๊ฒฝ์šฐ TLB๋ฅผ ๋ชจ๋‘ flush ํ•ด์ค˜์•ผ ํ•œ๋‹ค๋Š” ๋ฌธ์ œ์ ์ด ์žˆ๋‹ค. (TLB์— pid๋ฅผ ์ถ”๊ฐ€์‹œ์ผœ flush ํ•ด์ฃผ์ง€ ์•Š์•„๋„ ๋˜๋Š” TLB๋„ ๋งŽ์ด ์‚ฌ์šฉ๋œ๋‹ค.)

 

https://ddongwon.tistory.com/49

 

22. ํŽ˜์ด์ง•(Paging)๊ณผ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”(Page table)

ํŽ˜์ด์ง•๊ณผ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์€ ํ˜„๋Œ€ ์šด์˜์ฒด์ œ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ จ ์ปจ์…‰์—์„œ ์•„์ฃผ ์ค‘์š”ํ•œ ๊ฒƒ์ด๋ฏ€๋กœ ์ž˜ ์ •๋ฆฌํ•ด๋‘์ž! 1. ํŽ˜์ด์ง•(Paging) address space๋ฅผ ์—ฐ์†์ ์œผ๋กœ ํ• ๋‹นํ•˜์ง€ ๋ง๊ณ , ํŽ˜์ด์ง€๋ผ๋Š” ๋‹จ์œ„๋กœ ์ชผ๊ฐœ์„œ ์‚ฌ์šฉ

ddongwon.tistory.com

 

+) Page Fault๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ ์–ด๋–ป๊ฒŒ ๋ ๊นŒ? 
1. OS๊ฐ€ (MMU์— ์žˆ๋Š”) page table์„ ๋’ค์ ธ๋ณธ๋‹ค
2. ์—†์œผ๋‹ˆ OS์˜ ํ•ธ๋“ค๋Ÿฌ์—๊ฒŒ ๊ฒฐ์ •๊ถŒ์„ ๋„˜๊ธด๋‹ค
3. OS๊ฐ€ Back Store(์Šค์™‘๊ณต๊ฐ„?)์— ์žˆ๋Š” page๋ฅผ ์ฐพ๋Š”๋‹ค (Back Store ์ค‘์š” !!)
4. ๋ฌผ๋ฆฌ ๊ณต๊ฐ„์— ์ฐพ์€ page๋ฅผ ์˜ฌ๋ฆฐ๋‹ค
5. page table์„ ์—…๋ฐ์ดํŠธ ํ•ด์ค€๋‹ค
6. ์•„๊นŒ ์—†์–ด์„œ ์‹คํŒจํ–ˆ๋˜ instruction ๋‹ค์‹œ ์‹คํ–‰

 

Swapping

- ์ปดํ“จํ„ฐ์˜ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•œ ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•˜๋ฉด, ๋ฉ”์ธ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์™€์žˆ๋Š” ํ”„๋กœ์„ธ์Šค ์ค‘ ์ž˜ ์•ˆ์“ฐ๋Š” ํ”„๋กœ์„ธ์Šค์˜ ๋‚ด์šฉ์„ ํ†ต์งธ๋กœ ๋””์Šคํฌ(ex. ssd)์— ์จ๋†“๊ณ  ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ์˜ ๋นˆ ๊ณต๊ฐ„์„ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋Œ๋ฆฌ๋Š”๋ฐ ์‚ฌ์šฉํ•˜์ž!

- Swap out : ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๊ฝ‰ ์ฐผ์„ ๋•Œ ๋””์Šคํฌ๋กœ ๋‚ด๋ณด๋‚ด๋Š” ๊ฒƒ 

- Swap in : ๋””์Šคํฌ์—์„œ ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ๋กœ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ

 

- Swapping์˜ ์žฅ์  : ์ „์ฒด ํ”„๋กœ์„ธ์Šค ๋ฉ”๋ชจ๋ฆฌ์˜ ํ•ฉ์ด ํ˜„์žฌ ๋‚ด๊ฐ€ ๊ฐ€์ง„ ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ๋ณด๋‹ค ๋” ๋งŽ์„ ์ˆ˜ ์žˆ๋‹ค!

  - ex. ๋‚ด ์ปดํ“จํ„ฐ์˜ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ 10๊ธฐ๊ฐ€๋ฐ–์— ์•ˆ๋˜์ง€๋งŒ, ๋‚ด๊ฐ€ ๋Œ๋ฆฌ๊ณ ์žˆ๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ์‚ฌ์šฉ์ค‘์ธ ๋ฉ”๋ชจ๋ฆฌ์˜ ํ•ฉ์ด ์ˆ˜๋ฐฑ๊ธฐ๊ฐ€๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค.(ํ•˜๋“œ๋””์Šคํฌ ๊ณต๊ฐ„๋งŒ ์ถฉ๋ถ„ํ•˜๋‹ค๋ฉด..)

 

- Swapping์˜ ๋‹จ์  : ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ํฌ๋‹ค.

2GB ํ”„๋กœ์„ธ์Šค ํ•˜๋‚˜๋ฅผ swap out ํ•˜๋Š”๋ฐ 2.7์ดˆ ์ •๋„ ๊ฑธ๋ฆฐ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฑ”๋ฅผ ๋‹ค์‹œ ์ฝ์–ด๋“ค์ด๋ ค๋ฉด 2.7์ดˆ๊ฐ€ ๋˜ ๊ฑธ๋ฆฐ๋‹ค.

2GB ํ”„๋กœ์„ธ์Šค๋ฅผ ํ†ต์งธ๋กœ ๋ฐ”๊พธ๋ ค๋ฉด 5์ดˆ ์ด์ƒ ๊ฑธ๋ฆฐ๋‹ค..

-> ํ”„๋กœ์„ธ์Šค ์ „์ฒด address space๋ฅผ ๋””์Šคํฌ์— ๋„ฃ๊ณ  ๋นผ๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ, page ๋‹จ์œ„๋กœ ์ชผ๊ฐœ์„œ  ๋„ฃ๊ณ  ๋นผ์ž!

-> Demand Paging

 

Demand Paging

์›๋ž˜ swapping์€ ํ”„๋กœ์„ธ์Šค ์ „์ฒด๋ฅผ ๋„ฃ๊ณ  ๋นผ๋Š” ๊ฐœ๋…์ด์—ˆ๋‹ค.

demand paging์€, page ๋‹จ์œ„๋กœ ๋„ฃ๊ณ  ๋นผ๋Š” ๊ฐœ๋…!

๋”ฑ ํ•„์š”ํ•œ ๊ฒƒ๋งŒ ๋ฉ”๋ชจ๋ฆฌ๋กœ ๋ถˆ๋Ÿฌ๋“ค์ด๊ณ , ๋‚˜๋จธ์ง€๋Š” ์ €์žฅ์žฅ์น˜์— ๋‘์ž.

 

+) ๋ฐ˜๋Œ€ ๊ฐœ๋…์ด PrePaging
Prepaging - ๋‹น์žฅ ํ•„์š”ํ•˜์ง€ ์•Š์ง€๋งŒ ์ง€์—ญ์„ฑ์„ ๊ณ ๋ คํ•ด ๋ฏธ๋ฆฌ ๊ฐ€์ ธ์˜ค๋Š”๊ฑฐ
Demand Paging - "์š”๊ตฌ"ํ•  ๋•Œ๋งŒ ๊ฐ€์ ธ์˜ค๋Š”๊ฑฐ (์ง€๊ธˆ ๋‹น์žฅ ํ•„์š”ํ•œ๊ฑฐ)

 

 

Main memory์˜ ๊ณต๊ฐ„์ด ๋ถ€์กฑํ•  ๋•Œ, P2๊ฐ€ ๋” ๋งŽ์€ page๋ฅผ ์š”์ฒญํ•œ๋‹ค.

์ด ๋•Œ, Demand Paging ๋™์ž‘ ๊ณผ์ •

1. OS๊ฐ€ page replacement policy์— ์˜ํ•ด victim page๋ฅผ ์„ ํƒํ•œ๋‹ค.

2. ํ•ด๋‹น page์— ์žˆ๋Š” ๋‚ด์šฉ์„ ๋””์Šคํฌ์— ์žˆ๋Š” swap file์— ์˜ฎ๊ธด๋‹ค.

3. PTE๊ฐ€ swap out๋œ page๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋„๋ก ๊ฐฑ์‹ ํ•œ๋‹ค. (=ํ•ด๋‹น page๋Š” ์ด์ œ ๋”์ด์ƒ ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ์ง€ ์•Š๊ณ  swap file์— ์žˆ์–ด.)

4. victim page๋Š” ์ด์ œ ์ž์œ ๋กญ๊ฒŒ ํ• ๋‹น ๊ฐ€๋Šฅํ•˜๋‹ค. -> P2์—๊ฒŒ ํ• ๋‹นํ•ด์ค€๋‹ค.

 

demand paging์˜ ์˜ํ–ฅ๋ ฅ์€ ์ง€์—ญ์„ฑ์„ ๋”ฐ๋ฅธ๋‹ค.

- Temporal locality : ํ•œ ๋ฒˆ ์ฐธ์กฐํ•œ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ๋‹ค์‹œ ์ฐธ์กฐํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค.

- Spatial locality : ์ฐธ์กฐํ•œ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ ๊ทผ์ฒ˜๊ฐ€ ์กฐ๋งŒ๊ฐ„ ์ฐธ์กฐ๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค.

 

์Šค๋ ˆ์‹ฑ (Thrashing)

demand paging์„ ์‚ฌ์šฉํ•˜๋Š” ์ƒํ™ฉ์—์„œ, ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์— ์ ‘๊ทผํ•˜๊ฒŒ ๋  ๋•Œ page fault ์œจ์ด ๋†’์€ ๊ฒƒ์„ ์˜๋ฏธํ•˜๋ฉฐ CPU ์ด์šฉ๋ฅ ์ด ๊ธ‰๊ฒฉํžˆ ๋–จ์–ด์ง€๋Š” ํ˜„์ƒ (์‹ฌ๊ฐํ•œ ์„ฑ๋Šฅ ์ €ํ•˜)

 

Thrashing ๋ฐœ์ƒ ๋ฐฉ์ง€

- ์›Œํ‚น์…‹ ์•Œ๊ณ ๋ฆฌ์ฆ˜ : page fault๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ๋””์Šคํฌ๋กœ ์™”๋‹ค๊ฐ”๋‹ค ํ•˜๋Š” ์‹œ๊ฐ„์ด ๊ธฐ๋‹ˆ๊นŒ, ์—ฌ๋Ÿฌ๋ฒˆ ํ•  ๊ฑธ ํ•œ๋ฒˆ์— ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฐœ๋…..?

https://zangzangs.tistory.com/144

 

[OS] ์Šค๋ ˆ์‹ฑ(thrashing)

์Šค๋ ˆ์‹ฑ(thrashing) ์•ˆ๋…•ํ•˜์„ธ์š”? ์žฅ์žฅ์Šค์ž…๋‹ˆ๋‹ค. ํ”„๋กœ์„ธ์Šค๊ฐ€ ์›ํ™œํ•˜๊ฒŒ ์ˆ˜ํ–‰๋˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ผ์ • ์ˆ˜์ค€ ์ด์ƒ์˜ ํŽ˜์ด์ง€ ํ”„๋ ˆ์ž„์„ ๋ฌผ๋ฆฌ์  ๋ฉ”๋ชจ๋ฆฌ์— ํ• ๋‹น ๋ฐ›์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์ž‘ํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ์ตœ

zangzangs.tistory.com

 

ํŽ˜์ด์ง€ ๊ต์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜  (page replacement policy)

- FIFO (First in First out) : ๊ฐ€์žฅ ๋จผ์ € ๋“ค์–ด์˜จ(=์˜ค๋ž˜๋œ) ํŽ˜์ด์ง€๋ฅผ ๊ต์ฒด

  - ๊ฐ„๋‹จํ•˜๊ณ  ์ดˆ๊ธฐํ™” ์ฝ”๋“œ์— ๋Œ€ํ•ด ์ ์ ˆํ•œ ๋ฐฉ๋ฒ•. Belady's Anomaly(FIFO Anomaly) ๋ฐœ์ƒ ๊ฐ€๋Šฅ.

- LRU (Least Recently Used) : ๊ฐ€์žฅ ์˜ค๋žซ๋™์•ˆ ์‚ฌ์šฉํ•˜์ง€ ์•Š์€ ํŽ˜์ด์ง€๋ฅผ ๊ต์ฒด

  - ๊ฐ€์žฅ ์˜ค๋žซ๋™์•ˆ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜๋˜ ๋ฐ์ดํ„ฐ๋ผ๋ฉด ์•ž์œผ๋กœ๋„ ์‚ฌ์šฉํ•  ํ™•๋ฅ ์ด ์ ์„ ๊ฒƒ์ด๋‹ค. ์‹œ๊ฐ„ ์ง€์—ญ์„ฑ(temporal locality) ์„ฑ์งˆ ๊ณ ๋ ค.

  - ๋ณ€ํ˜•์ด ๋งŽ๋‹ค! ๊ทธ ์ค‘ ๊ฐ€์žฅ ์ค‘์š”ํ•œ๊ฒŒ Second Chance Algorithm (=Clock Algorithm)

- LFU (Least Frequently Used) : ์ฐธ์กฐ ํšŸ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ๋‚ฎ์€ ํŽ˜์ด์ง€๋ฅผ ๊ต์ฒด

  - ๋‹จ์  : ๊ฐ€์žฅ ์ตœ๊ทผ์— ๋ถˆ๋Ÿฌ์˜จ ํŽ˜์ด์ง€๊ฐ€ ๊ต์ฒด๋  ์ˆ˜ ์žˆ์Œ.

- MFU (Most Frequently Used) : ์ฐธ์กฐ ํšŸ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ๋งŽ์€ ํŽ˜์ด์ง€ ๊ต์ฒด

  - ๊ฐ€์ • : ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋œ ํŽ˜์ด์ง€๊ฐ€ ์•ž์œผ๋กœ๋Š”  ์‚ฌ์šฉ๋˜์ง€ ์•Š์„ ๊ฒƒ์ด๋‹ค.

 

https://doh-an.tistory.com/28

 

[OS] ํŽ˜์ด์ง€ ๊ต์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜ - FIFO/LRU/LFU/MFU/NUR

๐Ÿ’ก ํŽ˜์ด์ง€ ๊ต์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์šด์˜์ฒด์ œ๋Š” ์ฃผ๊ธฐ์–ต์žฅ์น˜๋ณด๋‹ค ๋” ํฐ ์šฉ๋Ÿ‰์˜ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ํ”„๋กœ๊ทธ๋žจ์˜ ์ผ๋ถ€๋งŒ ์ฃผ๊ธฐ์–ต์žฅ์น˜์— ์ ์žฌํ•˜์—ฌ ์‚ฌ์šฉํ•œ๋‹ค. ์ด๋ฅผ ๊ฐ€์ƒ๋ฉ”๋ชจ๋ฆฌ ๊ธฐ๋ฒ•์ด๋ผ ํ•œ๋‹ค. ํŽ˜์ด์ง• ๊ธฐ

doh-an.tistory.com

 

 

Shared Memory

forkํ•  ๋•Œ ๋‘ ๊ฐœ(parent, child)์˜ VA๊ฐ€ ์„œ๋กœ ๊ฐ™์€ PA๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋„๋ก PT(Page Table)๋งŒ ๋งŒ๋“ค์–ด์ฃผ๋ฉด, memory copy๋ฅผ ํ”ผํ•  ์ˆ˜ ์žˆ๋‹ค.

Shared Memory

 

 

๊ทผ๋ฐ ๋ฌธ์ œ์ !

๋ถ€๋ชจ๋‚˜ ์ž์‹ ์ค‘ ํ•˜๋‚˜๊ฐ€ write ํ•œ๋‹ค๋ฉด ๋‹ค๋ฅธ ํ•˜๋‚˜๋„ ๋ณ€๊ฒฝ๋œ ๊ฐ’์„ ๋ณด๊ฒŒ ๋œ๋‹ค.

๊ทธ๋ž˜์„œ write ํ•  ๋•Œ copyํ•˜๋Š” copy-on-write ๊ฐœ๋…์ด ์ƒ๊ธด ๊ฒƒ์ด๋‹ค.

 

Copy-on-Write

parente process์˜ ์ด๋ฏธ์ง€๋ฅผ child์— ๋ณต์‚ฌํ•˜์ง€ ์•Š๊ณ  parent process๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” pysical memory์˜ ์ฃผ์†Œ๋ฅผ ๊ณต์œ ํ•˜๋Š” ๋ฐฉ์‹์„ ํ†ตํ•ด child process๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•.

 

copy on write๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ fork ๊ธฐ๋Šฅ๊ณผ ๊ด€๋ จ์ด ์žˆ๋‹ค.

fork๋Š” parent process๋ฅผ ์ด์šฉํ•ด์„œ child process๋ฅผ ๋งŒ๋“ค์–ด๋‚ด๋Š” ๊ฒƒ์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ์ž์‹ ํ”„๋กœ์„ธ์Šค๋“ค์€ ์ดํ›„์— exec๋ฅผ ํ•ด์„œ ์ƒˆ๋กœ์šด process๋กœ overwrite ํ•˜๋Š”๋ฐ, ๊ทธ๋Ÿฌ๋ฉด ๋ถ€๋ชจ๋กœ๋ถ€ํ„ฐ ๋ณต์‚ฌํ•ด์˜จ ํŽ˜์ด์ง€๋“ค์€ ๋‹ค ์“ธ๋ชจ์—†๋Š” ๊ฒƒ์ด ๋˜๊ณ  ๋งŒ๋‹ค.

 

๋ณต์‚ฌ๋ฅผ ํ•˜๊ณ  ๋ฐ”๋กœ exec๋ฅผ ํ†ตํ•ด ์ƒˆ๋กœ์šด process๋ฅผ ๋งŒ๋“ค์–ด๋‚ผํ…๋ฐ ๊ตณ์ด ๋ณต์‚ฌ๋ฅผ ํ•  ํ•„์š”๊ฐ€ ์žˆ์„๊นŒ? ๋ผ๋Š” ์˜๋ฌธ์— ์˜ํ•ด ํƒ„์ƒํ•œ ๊ฒƒ์ด copy on write ์ด๋‹ค.

 

 

https://hyeo-noo.tistory.com/83

 

[XV-6 ์šด์˜์ฒด์ œ] Copy-on-Write #1

Copy-on-Write๊ฐ€ ์–ด๋–ค ๊ธฐ๋Šฅ์„ ํ•˜๋Š”์ง€ ์•Œ์•„๋ณด์ž Copy on Write๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ forks ๊ธฐ๋Šฅ๊ณผ ๊ด€๋ จ์ด ์žˆ๋‹ค. forks๋Š” parent process๋ฅผ ์ด์šฉํ•ด์„œ child process๋ฅผ ๋งŒ๋“ค์–ด ๋‚ด๋Š” ๊ฒƒ์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. (๊ธฐ๋ณธ์ ์œผ๋กœ ๋ถ€๋ชจ ํ”„๋กœ

hyeo-noo.tistory.com

 

๋ฉ”๋ชจ๋ฆฌ ๊ณ„์ธต๊ตฌ์กฐ

 

๋ฉ”๋ชจ๋ฆฌ ๊ณ„์ธต์€ ๋ ˆ์ง€์Šคํ„ฐ, ์บ์‹œ, ๋ฉ”๋ชจ๋ฆฌ(RAM), ํ•˜๋“œ๋””์Šคํฌ(์ €์žฅ์žฅ์น˜)๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค.

- ๋ ˆ์ง€์Šคํ„ฐ, ์บ์‹œ๋Š” CPU ๋‚ด๋ถ€์— ์กด์žฌํ•ด ๋น ๋ฅด๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค

- ๋ฉ”๋ชจ๋ฆฌ๋Š” CPU ์™ธ๋ถ€์— ์กด์žฌํ•ด ๋А๋ฆฌ๊ฒŒ ์ ‘๊ทผํ•œ๋‹ค

- ํ•˜๋“œ๋””์Šคํฌ๋Š” CPU๊ฐ€ ์ง์ ‘ ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋‹ค. ํ•˜๋“œ ๋””์Šคํฌ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ๋กœ ์ด๋™์‹œํ‚ค๊ณ  ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ ‘๊ทผํ•ด์•ผ ํ•œ๋‹ค

 

 

Cache Memory๋ž€?

- ์ฃผ๊ธฐ์–ต์žฅ์น˜(CPU)์—์„œ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ๊ณผ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•ด๋‘๊ณ  ์†๋„๋ฅผ ๋น ๋ฅด๊ฒŒ ํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ

- ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ์™€ CPU ์‚ฌ์ด์— ์œ„์น˜

- ์บ์‹œ์˜ ์ ์ค‘๋ฅ ์„ ๊ทน๋Œ€ํ™” ์‹œํ‚ค๊ธฐ ์œ„ํ•ด์„œ๋Š” CPU๊ฐ€ ์ฐธ์กฐํ•  ์ •๋ณด์— ๋Œ€ํ•œ ์˜ˆ์ธก์ด ์ž˜ ๋˜์–ด์•ผ ํ•จ. ์ด๋•Œ ๋‚˜์˜ค๋Š” ๊ฐœ๋…์ด ์บ์‹œ์˜ ์ง€์—ญ์„ฑ(Locality)

- CPU์˜ ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ๋Š” "CPU ์•ˆ์—์„œ ์บ์‹œ ์—ญํ• ์„ ํ•˜๋Š” ์ €์žฅ ์žฅ์น˜"๋ผ๋Š” ๋œป์ด๋‹ค. '์บ์‹œ' ์ž์ฒด๋Š” ํŠน์ •ํ•œ ํ•˜๋“œ์›จ์–ด๋ฅผ ๊ฐ€๋ฆฌํ‚ค์ง€ ์•Š๋Š”๋‹ค. ์บ์‹œ๋Š” ๋” ๋ณดํŽธ์ ์ด๊ณ  ์ถ”์ƒ์ ์ธ '์—ญํ• '์ด๋‹ค.

 

์บ์‹œ์˜ ์ง€์—ญ์„ฑ(Locality)์ด๋ž€?

๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์ ‘๊ทผ์ด ์‹œ๊ฐ„์ -๊ณต๊ฐ„์ ์œผ๋กœ ๊ฐ€๊น๊ฒŒ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์„ ๋œปํ•จ.

- ์‹œ๊ฐ„ ์ง€์—ญ์„ฑ : ์ตœ๊ทผ์— ์ฐธ์กฐ๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ณง ๋‹ค์‹œ ์ฐธ์กฐ๋˜๋Š” ํŠน์„ฑ

- ๊ณต๊ฐ„ ์ง€์—ญ์„ฑ : ์ตœ๊ทผ์— ์ฐธ์กฐ๋œ ๋ฐ์ดํ„ฐ์™€ ์ธ์ ‘ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ฐธ์กฐ๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์€ ํŠน์„ฑ

 

Caching Line์ด๋ž€?

์บ์‹œ์— ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋  ๋•Œ ๋ฌถ์ด๋Š” ๊ธฐ๋ณธ์ ์ธ ๋‹จ์œ„. 

 

์บ์‹ฑ๋ผ์ธ์€ CPU๊ฐ€ ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋ชฉ์  ๋ฐ์ดํ„ฐ์— ๋ฐ”๋กœ ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด์กŒ๋‹ค.

์บ์‹ฑ๋ผ์ธ์€ ์—ฌ๋Ÿฌ ์ข…๋ฅ˜๊ฐ€ ์žˆ๋Š”๋ฐ, ๋Œ€ํ‘œ์ ์œผ๋กœ Full Associative, Set Associative, Direct Map ๋“ฑ์ด ์žˆ๋‹ค. 

 

+) ์บ์‹ฑ๋ผ์ธ์ด ์กด์žฌํ•˜๋Š” ์ด์œ ?

์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ๋Š” ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ์— ๋น„ํ•ด ํฌ๊ธฐ๊ฐ€ ๋งค์šฐ ์ž‘๊ธฐ ๋•Œ๋ฌธ์—, ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ์™€ 1:1 ๋งค์นญ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

์บ์‹œ๊ฐ€ ์•„๋ฌด๋ฆฌ CPU์— ๊ฐ€๊น๊ฒŒ ์œ„์น˜ํ•˜๋”๋ผ๋„, ๋ฐ์ดํ„ฐ๊ฐ€ ์บ์‹œ ๋‚ด์˜ ์–ด๋А๊ณณ์— ์ €์žฅ๋˜์–ด ์žˆ๋Š”์ง€ ์ฐพ๊ธฐ ์–ด๋ ต๋‹ค๋ฉด, ๋น„ํšจ์œจ์ ์ธ ์‹œ์Šคํ…œ์ด ๋œ๋‹ค.

 

๊ทธ๋ž˜์„œ ์บ์‹œ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ๋•Œ๋Š” "์บ์‹ฑ ๋ผ์ธ"์ด๋ผ๋Š” ๋‹จ์œ„์˜ ๋ฌถ์Œ์œผ๋กœ ์ €์žฅํ•˜๋Š”๋ฐ, ์ด ๋•Œ ๋นˆ๋ฒˆํ•˜๊ฒŒ ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์ฃผ์†Œ๋“ค์ด ์ผ์ •ํ•œ ํƒœ๊ทธ๋“ค๋กœ ๋ฌถ์—ฌ์žˆ์œผ๋ฉด ์ฐพ๊ธฐ ์‰ฌ์›Œ์งˆ ๊ฒƒ์ด๋‹ค.

 

https://velog.io/@kangdev/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C-%EC%BA%90%EC%8B%B1-%EB%9D%BC%EC%9D%B8-Caching-line

 

[์šด์˜์ฒด์ œ] ์บ์‹ฑ ๋ผ์ธ (Caching line)

์บ์‹ฑ ๋ผ์ธ (Caching line)์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์„ธ์š” Keyword Script Additional Reference Book - ํ˜ผ์ž ๊ณต๋ถ€ํ•˜๋Š” ์ปดํ“จํ„ฐ ๊ตฌ์กฐ+์šด์˜์ฒด์ œ

velog.io

https://coding-zzang.tistory.com/38

 

[์šด์˜์ฒด์ œ/OS] ์บ์‹œ(Cache)์™€ ์ง€์—ญ์„ฑ(Locality) & ์บ์‹ฑ๋ผ์ธ(Caching Line)

Cache ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ(cache Memory) ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ๋ž€ ? ์ฃผ๊ธฐ์–ต์žฅ์น˜์—์„œ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ๊ณผ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•ด๋‘๊ณ  ์†๋„๋ฅผ ๋น ๋ฅด๊ฒŒ ํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ์†๋„๊ฐ€ ๋น ๋ฅธ ์žฅ์น˜์™€ ๋А๋ฆฐ ์žฅ์น˜๊ฐ„์˜ ๋ณ‘๋ชฉ ํ˜„์ƒ์„ ์ค„์—ฌ์ฃผ

coding-zzang.tistory.com