𝐎(𝟏) μŠ€μΌ€μ€„λŸ¬ κ΅¬ν˜„

운영체제 κ°•μ˜ 섀계 ν”„λ‘œμ νŠΈ


C Pintos Pinned
Test Result
Test Result

λ³Έ ν”„λ‘œμ νŠΈλŠ” Stanford Universityμ—μ„œ 개발된 ꡐ윑용 운영체제인 Pintos의 Alarm-priority Testλ₯Ό ν†΅κ³Όν•˜κΈ° μœ„ν•΄ O(1) Schedulerλ₯Ό κ΅¬ν˜„ν•˜λŠ” 것이 λͺ©ν‘œμž…λ‹ˆλ‹€. μ €λŠ” 이 μˆ˜μ—…μ—μ„œ ν•΄λ‹Ή ν…ŒμŠ€νŠΈλ₯Ό ν†΅κ³Όν•œ μœ μΌν•œ μˆ˜κ°•μƒμœΌλ‘œ, μ΅œκ³ μ μ„ λ°›μ•˜μŠ΅λ‹ˆλ‹€.

O(1) SchedulerλŠ” μš°μ„ μˆœμœ„ λ‹¨κ³„μ˜ μˆ˜μ™€ 같은 크기λ₯Ό 가지며 Run Queueλ₯Ό μ›μ†Œλ‘œ ν•˜λŠ” 2개의 λ°°μ—΄λ‘œ κ΅¬μ„±λ©λ‹ˆλ‹€. 두 배열은 각각 Active와 Expired μž‘μ—… λͺ©λ‘μ„ λ‚˜νƒ€λƒ…λ‹ˆλ‹€. Active λ°°μ—΄μ—μ„œ μš°μ„ μˆœμœ„κ°€ 높은 Run Queue의 ν”„λ‘œμ„ΈμŠ€λΆ€ν„° CPUλ₯Ό μ μœ ν•˜λ©°, Taskκ°€ λλ‚œ ν”„λ‘œμ„ΈμŠ€λŠ” Expired λ°°μ—΄λ‘œ μ΄λ™λ©λ‹ˆλ‹€. Active λ°°μ—΄μ˜ λͺ¨λ“  Run Queueκ°€ λΉ„κ²Œ 되면 두 배열이 κ΅μ²΄λ©λ‹ˆλ‹€. λΉ„μ–΄μžˆμ§€ μ•Šμ€ Run Queueλ₯Ό 찾을 λ•Œ, 배열을 μˆœνšŒν•˜κ²Œ 될 경우 O(N)μ΄μ§€λ§Œ, Bitmap을 μ΄μš©ν•˜λ©΄ O(1)으둜 찾을 수 있게 λ©λ‹ˆλ‹€.