ํ๋ ๋์คํฌ์ ๊ตฌ์กฐ๋ฅผ ๋ฐํ์ผ๋ก ์ค์ผ์ฅด๋ง์ ํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณธ๋ค.
1. ๋์คํฌ ์ค์ผ์ค๋ง
๋ณด์กฐ๊ธฐ์ต์ฅ์น๋ ํ์ฌ ์ฌ๋ฌ ๊ฐ์ง ์กด์ฌํ์ง๋ง ์์ง๊น์ง๋ ํ๋ ๋์คํฌ๊ฐ ์ฃผ๋ก ์ฌ์ฉ๋๋ค.
ํ๋ ๋์คํฌ์ ๊ตฌ์กฐ๋ ์์ ์ดํด๋ดค๋ฏ์ด ์ ๊ทธ๋ฆผ๊ณผ ๊ฐ๋ค. ๋์คํฌ์ ์ ๊ทผํ๋ ์๊ฐ์ Seek time(ํ์ ์๊ฐ) + rotational delay + transfer time ์ผ๋ก ๊ณ์ฐํ ์ ์๋๋ฐ, ์ด ์ค์์ seek time(head๋ฅผ ์์ง์ด๋ ์๊ฐ)์ด ๊ฐ์ฅ ํฌ๋ค.
ํ์ฌ ์ปดํจํฐ ํ๊ฒฝ์ ๋๋ถ๋ถ ๋ค์ค ํ๋ก๊ทธ๋๋ฐ ํ๊ฒฝ์ด๋ค. ๊ทธ๋ฌ๋ฏ๋ก ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์์ ์คํ ์ค์ ์๋๋ฐ, ์ด๋ฌํ ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ๋์์ ๋์คํฌ๋ฅผ ์ฝ์ผ๋ ค๋ ์์ฒญ์ด ์ฌ ์ ์๋ค. ์ด์ ๊ฐ์ ์์ฒญ์ด ์ค๋ฉด ๋์คํฌ ์ญ์ CPU์ ๊ฐ์ด **๋์คํฌ ํ(dist queue)**์์ ์์ฒญ์ ์ ์ฅํด๋๊ณ ์ด๋ฅผ ์ฒ๋ฆฌํด์ผ ํ๋ค.
์ฌ๊ธฐ์ ์ปดํจํฐ์ ์ฑ๋ฅ์ ์ํด ์ฌ๋ฌ ์์ฒญ๋ค์ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํด์ผ ํ๋ค. ๋์คํฌ๋ฅผ ์ฝ๋ ์๊ฐ์ ๋งค์ฐ ์ค๋ ๊ฑธ๋ฆฌ๋ ์์ ์ด๊ณ ํนํ ํ์ ์๊ฐ์ด ์ค๋๊ฑธ๋ฆฌ๋ฏ๋ก ์ต๋ํ ์ด ์๊ฐ์ ์ค์ด๋ ๊ฒ์ด ์ค์ํ๋ค. ์ด๋ฌํ ๋ฐฉ๋ฒ๋ค์ ๋์คํฌ ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ์ด๋ผ ํ๋ค.
1.1 FCFS(First-Come First-Served)
์ด ๋ฐฉ๋ฒ์ ์ด๋ ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ์์๋ ์กด์ฌํ๋ ๊ฐ์ฅ ๊ฐ๋จํ๊ณ ๊ฐ์ฅ ๊ณตํํ ๋ฐฉ๋ฒ์ด๋ค. ๋ฐ๋ก ์์ ๋ฅผ ์ดํด๋ณด์.
1.1.1 ์์
200 cylinder dist: 0, 1, 2, ..., 199
Disk queue: 98, 183, 37, 122, 14, 124, 65, 67
ํ์ฌ ํค๋๊ฐ ๊ฐ๋ฆฌํค๋ ์ค๋ฆฐ๋(cylinder) ์์น: 53
์์ ๋ฅผ ๊ทธ๋ฆผ์ผ๋ก ๋ํ๋ด๋ฉด ์ ๊ทธ๋ฆผ๊ณผ ๊ฐ๋ค. ๊ฐ๋ก์ถ์ 0๋ฒ๋ถํฐ 199๋ฒ๊น์ง ์ค๋ฆฐ๋์ ์์น๋ฅผ ๋ํ๋ธ๋ค. ์ฌ๊ธฐ์ ํ๋์ ์ ์ด dist queue๋ฅผ FCFS ๋ฐฉ๋ฒ์ผ๋ก ์ฒ๋ฆฌํ ๊ฒฐ๊ณผ์ด๋ค.
- ํค๋๊ฐ ์์ง์ธ ์ด ๊ฑฐ๋ฆฌ
- = (98 - 53) + (183 - 98) + (183 - 37) + (122 - 37) + (122 - 14) + (124 - 14) + (124 - 65) + (67 - 65) = 640 cylinders
์ ๊ทธ๋ฆผ์ ๊ฒฐ๊ณผ๋ฅผ ๋ณธ ๊ฒ์ฒ๋ผ ํ์ ๋ค์ด์จ ์์๊ฐ ํฐ ๊ฐ, ์์ ๊ฐ์ด ๋ฐ๋ณตํ๋ค๋ฉด ํค๋๊ฐ ์์ง์ด๋ ๊ฑฐ๋ฆฌ๊ฐ ๋งค์ฐ ์ปค์ง์ ์ ์ ์๋ค.
1.2 SSTF(Shortest-Seek-Time-First)
SSTF ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ์ฅ ์งง์ ํ์ ์๊ฐ์ ๋จผ์ ์ ํํ๋ ๊ฒ์ด๋ค. ๋ค์ ๋งํ๋ฉด ํ์ฌ ํค๋๊ฐ ๋ค์ ์์ฒญ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์์ง์ฌ์ผ ํ๋ ๊ฑฐ๋ฆฌ๊ฐ ๊ฐ์ฅ ์งง์ ๊ฒ์ ์ ํํ๋ ๊ฒ์ด๋ค.
1.2.1 ์์
200 cylinder dist: 0, 1, 2, ..., 199
Disk queue: 98, 183, 37, 122, 14, 124, 65, 67
ํ์ฌ ํค๋๊ฐ ๊ฐ๋ฆฌํค๋ ์ค๋ฆฐ๋(cylinder) ์์น: 53
์ ์์ ๋ FCFS ์ค์ผ์ค๋ง์์ ๋ณธ ์์ ์ ๊ฐ์ ๊ฒ์ด๋ค. ์ฒ์ ํค๋ ์์น 53์ ์์์ผ๋ก dist queue์ ์๋ ์ค๋ฆฐ๋ ๋ฒํธ ์ค 53๊ณผ ๊ฐ์ฅ ๊ฐ๊น์ด 65๋ฒ ์ค๋ฆฐ๋๋ฅผ ์ ํํ๋ค. 65๋ฒ์์๋ ๊ฐ์ฅ ๊ฐ๊น์ด 67๋ฒ์ ์ ํํ๊ณ ๊ฐ์ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค.
- ํค๋๊ฐ ์์ง์ธ ์ด ๊ฑฐ๋ฆฌ
- = (65 - 53) + (67 - 65) + (67 - 37) + (37 - 14) + (98 - 14) + (122 - 98) + (124 - 122) + (183 - 124) = 236 cylinders
SSTF ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ์ ๊ฒฐ๊ณผ๋ ์ ์์ ์์ FCFS ์ค์ผ์ค๋ง๋ณด๋ค ํจ์ฌ ์ ์ ์์ ์ค๋ฆฐ๋๋ฅผ ์์ง์ด๋ ๊ฒ์ ๋ณผ ์ ์๋ค. ํ์ง๋ง SSTF ์ค์ผ์ค๋ง์ ํฐ ๋จ์ ์ ๊ธฐ์(starvation)๊ฐ ๋ฐ์ํ ์ ์๋ค. dist queue์๋ ์ง์์ ์ผ๋ก ์๋ก์ด ํ๋ก์ธ์ค์ ์์ฒญ์ด ๋ค์ด์ค๊ธฐ ๋๋ฌธ์ ํค๋์ ๋ฉ๋ฆฌ ๋จ์ด์ ธ ์๋ ์ค๋ฆฐ๋๋ ๋๋ด ์ํํ์ง ๋ชปํ๋ ํ์์ด ๋ฐ์ํ๋๋ฐ, ์ด๋ฅผ starvation์ด๋ผ๊ณ ํ๋ค.
๊ทธ๋ฆฌ๊ณ SSTF ์ค์ผ์ค๋ง์ด ํ์ฌ์ ๊ฐ์ฅ ๊ฐ๊น์ด ์ค๋ฆฐ๋๋ฅผ ์ ํํ๋ค๊ณ ํด์ ์ต์ ์ ์๊ณ ๋ฆฌ์ฆ์ ์๋๋ค. ์ ์์ ์์๋ ๊ฐ์ฅ ์ฒ์ ์์น์ธ 53๋ฒ ์ค๋ฆฐ๋์์ 65๋ฒ์ด ์๋ 37๋ฒ์ผ๋ก ์ด๋ํ ํ์ SSTF ์๊ณ ๋ฆฌ์ฆ์ ์ํํ๋ฉด 208 cylinders ๊ฐ ๋์จ๋ค.๊ทธ๋ฆฌ๋๊ฐ ์๋๋ค
1.3 Scan
Scan ์ค์ผ์ค๋ง์ ๋ง๊ทธ๋๋ก ํค๋๊ฐ ์ง์์ ์ผ๋ก ๋์คํฌ๋ฅผ ์๋ค๋ก ๊ฒ์ฌํ๋ ๊ฒ์ด๋ค. ๊ทธ๋์ ํค๋๊ฐ ์์ผ๋ก ์ค์บํ ๋(๋ฒํธ๊ฐ ์์ ์ค๋ฆฐ๋ ๋ฐฉํฅ)์ ๋ค๋ก ์ค์บํ ๋(๋ฒํธ๊ฐ ํฐ ์ค๋ฆฐ๋ ๋ฐฉํฅ) ์ ํํ๋ ์ค๋ฆฐ๋๊ฐ ์๋ก ๋ค๋ฅด๋ค. ์ฆ ๊ด์ฑ์ ๊ณ ๋ คํ์ฌ ํ๋ฐฉํฅ์ผ๋ก ์ญ ๊ฐ๋ค๊ฐ ๋์ด๋ฉด ๋ฐ๋ ๋ฐฉํฅ์ผ๋ก ๋๋ค.
1.3.1 ์์
200 cylinder dist: 0, 1, 2, ..., 199
Disk queue: 98, 183, 37, 122, 14, 124, 65, 67
ํ์ฌ ํค๋๊ฐ ๊ฐ๋ฆฌํค๋ ์ค๋ฆฐ๋(cylinder) ์์น: 53
์ค์บ ๋ฐฉํฅ: 0๋ฒ ๋ฐฉํฅ์ผ๋ก ์์ง์(๋ฒํธ๊ฐ ์์ ์ค๋ฆฐ๋ ๋ฐฉํฅ)
์ ๊ฒฐ๊ณผ์์ ๋ณผ ์ ์๋ฏ์ด ์ค์บ ๋ฐฉํฅ์ด 0๋ฒ ์ค๋ฆฐ๋ ๋ฐฉํฅ์ด๋ฏ๋ก 53๋ฒ์์ ์์ ๋ฒํธ์ ์ค๋ฆฐ๋๋ก ํฅํ ํ์ ํฐ ๋ฒํธ ์ค๋ฆฐ๋๋ก ์์ง์ธ ๊ฒ์ ๋ณผ ์ ์๋ค.
- ํค๋๊ฐ ์์ง์ธ ์ด ๊ฑฐ๋ฆฌ
- = (53 - 37) + (37 - 14) + (14 - 0) + (65 - 0) + (67 - 65) + (98 - 67) + (122 - 98) + (124 - 122) + (183 - 124) = 236 cylinders
์ฌ๊ธฐ์ ํ ๊ฐ์ง ์๊ฐํด ๋ณผ ์ ์ ์ผ๋ฐ์ ์ผ๋ก ํ๋ก์ธ์ค๋ค์ด ๋์คํฌ์ ์์ฒญํ ๋ ๊ทธ ์์น๋ฅผ ์ข ํฉํด๋ณด๋ฉด ์ค๋ฆฐ๋์ ๊ณจ๊ณ ๋ฃจ ํผ์ ธ์๋ค. ๊ทธ๋ฌ๋ฏ๋ก Scan ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ์ฒ๋ผ ์๋ค๋ก ์์ง์ด๋ ๊ฒ์ด์๋๋ผ ์ฒ์๋ถํฐ ํ ๋ฐฉํฅ์ผ๋ก ๋๊น์ง ์์ง์ด๊ณ ๋ค์ ์ฒ์์ผ๋ก ๋๋์๊ฐ์ ๊ฐ์ ๋ฐฉํฅ์ผ๋ก ๋๊น์ง ์์ง์ด๋ ๊ฒ์ด ๋์ฑ ํจ๊ณผ์ ์ด๋ค.
์ด๋ฌํ ์์ด๋์ด์์ ๋์จ ๊ฒ์ด Circular Scan ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
1.4 C-Scan
์ด ๋ฐฉ์์ ์์์ ๋งํ Circular Scan ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ์ฆ ํ ๋ฐฉํฅ์ผ๋ก ๊ณ์ ์์ง์ด๋ ๊ฒ์ด๋ค. Scan ๋ฐฉ์์ ๋์ ๋ค๋ค๋์ ๋ ๋ฐ๋๋ฐฉํฅ์ผ๋ก ๊ฐ๋๋ฐ, ๊ตณ์ด ๊ทธ๋ด ํ์๊ฐ ์๋ค. ๋ฌผ๋ก ์ค๋ฅธ์ชฝ์์ ์ผ์ชฝ ๋์ผ๋ก ๊ฐ ๋ ํ๋ฐํด๋ฅผ ๋๊ธฐ ๋๋ฌธ์ ์์ง์ด๋ ๊ฑฐ๋ฆฌ๋ ๋ ๊ธธ์ด์ง ์ ์์ง๋ง ๋ค์ ์ฒ์ ์์น๋ก ๋๋์๊ฐ ๋๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ง ์์ผ๋ฏ๋ก ๋ ๋น ๋ฅธ ์๋๋ก ์์ง์ผ ์ ์๋ค. (๊ทธ๋ฅ ๋ชจํฐ๋ก ์ ๊ธ์ผ๋ฉด ๋๋ค.)
1.5 Look
์ด ์๊ณ ๋ฆฌ์ฆ์ ์ Scan ์ค์ผ์ค๋ง ์์ ์์ 0๋ฒ ์ค๋ฆฐ๋๊ฐ ์กด์ฌํ์ง ์์ง๋ง 0๋ฒ๊น์ง ๊ฐ๋ ๋ชจ์ต์ ๋ณด์๋ค. (์ฐํดํ๊ธฐ ์ํด์) ์ด๋ฌํ ๋นํจ์จ์ ์ธ ์์ง์์ ์์ ๊ธฐ ์ํด ์กด์ฌํ๋ ์ค๋ฆฐ๋์ ์ต์์ ์ต๋ ๋ฒ์๋ง ์์ง์ด๋ ์๊ณ ๋ฆฌ์ฆ์ Look ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ์ด๋ผ๊ณ ํ๋ค. ํ์ง๋ง ์ด ๋ฒ์๋ฅผ ์๊ธฐ ์ํด์ ๋ฏธ๋ฆฌ ํ๋ฅผ ๊ฒ์ฌํด์ผํ๋ค. (์ด๋๊ฐ ๊ฐ์ฅ ๊ทผ์ ํ ๋์ธ์ง ์์์ผ ํ๊ธฐ ๋๋ฌธ)
1.6 C-Look
C-Look์ Circular Look ์ ๋งํ๋ค. Look์ ์์์ Scan ์ค์ผ์ค๋ง์ด 0๋ฒ ๋ถํฐ ๋ ์ค๋ฆฐ๋๊น์ง ์์ง์ด์ง ์๊ณ ์กด์ฌํ๋ ์ค๋ฆฐ๋์ ์ต์์์ ์ต๋ ๋ฒ์๋ฅผ ์์ง์ธ๋ค๊ณ ํ์๋๋ฐ, C-Look์ ์ด ๋ฒ์์์ C-Scan๊ณผ ๊ฐ์ด ํ ๋ฐฉํฅ์ผ๋ก๋ง ์์ง์ด๋ ๊ฒ์ ๋งํ๋ค. ์ฆ, ์ต๋ ์ค๋ฆฐ๋์์ ์ต์ ์ค๋ฆฐ๋ ๋ฐฉํฅ์ผ๋ก ์์ง์ธ๋ค๊ณ ํ ๋ ์ต์ ๋ฒ์์ ๋๋ฌํ๋ฉด ๋ค์ ์ต๋ ๋ฒ์๋ก ๋๋์๊ฐ์ ๊ฐ์ ๋ฐฉํฅ์ผ๋ก ์์ง์ธ๋ค.
1.7 Elevator Algorithm
Elevator Algorithm์ Scan๊ณผ ํ์๋์ด ๋์จ ์๊ณ ๋ฆฌ์ฆ(C-scan, Look, C-Look)์ ๋ถ๋ฅด๋ ๋ค๋ฅธ ์ฉ์ด์ด๋ค. ์ Scan ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ ์์ ๊ทธ๋ฆผ์ 90๋๋ก ํ์ ํ๋ฉด ์๋ฆฌ๋ฒ ์ดํฐ์ ๋ชจ์ต๊ณผ ์ ์ฌํ์ฌ ๋ถ์ฌ์ง ์ด๋ฆ์ด๋ค.
Reference
- KOCW ์ํฌ์ฌ ๊ต์๋ - ์ด์์ฒด์
- ์ํฌ์ฌ ๊ต์๋ ๋ธ๋ก๊ทธ(์ํ ๊ธฐ์ถ ๋ฌธ์ )
- codemcd ๋์ ์ ๋ฆฌ๊ธ
- Operating System Concepts, 9th Edition - Abraham Silberschatz