RenameThisPage - Name Space ์ ๋ํด์ ์ง์ผ์ฃผ๊ธฐ ๋ฐ๋. ๊ทธ๋ฆฌ๊ณ ์๋ฌธ์ ๋ชฉ๋์ด์ฐ๊ธฐ์ ๋ํด์๋ FrontPage ๊ฐ์ฅ ์ ๋ฌธ๋จ ์ฐธ์กฐ๋ฐ๋ --์์ฒ
Contents
- 1. What is the Real Time?
- 1.1. Real Time System ์ ์ฌ์ฉ ๋ฒ์
- 1.2. Foreground / Background System
- 1.3. Critical Section of Code
- 1.4. Resource
- 1.5. Shared Resource
- 1.6. Multitasking
- 1.7. Task
- 1.8. Context Switch ( or Task Switch)
- 1.9. Kernel
- 1.10. Scheduler
- 1.11. Non - Preemptive Kernel (๋น ์ ์ ํ ์ปค๋)
- 1.12. Preemptive Kernel (์ ์ ํ ์ปค๋)
- 1.13. Reentrancy
- 1.14. Round Robin Scheduling
- 1.15. Task Priority
- 1.16. Static Priority
- 1.17. Dynamic Prioirty
- 1.18. Priority Inversions
- 1.19. Assigning Task Priorities
- 1.20. Mutual Exclusion
- 1.21. DeadLock
- 1.22. Synchronization
- 1.23. Event Flags
- 1.24. Intertask Communication
- 1.25. Message MailBoxes
- 1.26. Message Queues
- 1.27. Interrupts
- 1.28. Interrupt Latency
- 1.29. Interrupt Response
- 1.30. Interrupt Recovery
- 1.31. ISR Processing Time
- 1.32. Nonmaskable Interrupts (NMIs)
- 1.33. Clock Tick
- 1.34. Memory Requirements
- 1.35. Advantages and Disadvantages of Real-Time Kernels
1. What is the Real Time? ¶
๋ฆฌ์ผ ํ์์ด๋ผ๋ ๋ง์ Timing ์ correctness (์ ํ์ฑ)์ ์ํด ๊ฒฐ์ ๋๋ ๋ง์ด๋ค. ์ด๋ฌํ ๋ฆฌ์ผํ์์ ๋๋ต ๋๊ฐ์ง ๋ถ๋ฅ๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
Soft / Hard ๊ฐ ๊ทธ ๋๊ฐ์ง ์๋ผ๊ณ ํ ์ ์๋ค. Soft Real Time ์ด๋ ๋ง์ Task ์ ์ํ์ด ๊ฐ๋ฅํ๋ฉด ๋ณด๋ค ๋น ๋ฅด๊ฒ ์งํ ๋ ์ ์๊ฒ ๋ง๋ค์ด์ง์์คํ ์ ๋งํ๋ค.
์๋ฅผ ๋ค์ด High Priority๋ฅผ ๊ฐ์ง Task๊ฐ ์ ์ ํ ์ํ์ ํ๋ฉฐ ๋ค๋ฅธ Task ๋ณด๋ค ๋ง์ ์์์ ์ฌ์ฉํ ์ ์์ ๋๋ฅผ ๋งํ๋๊ฒ ๊ฐ๋ค.
๋ฐ์ Hard System์ด๋ ํน์ ์๊ฐ๋ด์ Task์ ์์ ์ด ์์ ๋์ด์ผ ํ๋ ์์ ๋ค์ ๋งํ๋ค. ๋๋ถ๋ถ์ Real-Time ์์คํ ์์๋ ๋๊ฐ์ง
์์คํ ์ ํผํฉ์ ํ์๋กํ๋ค.
Soft / Hard ๊ฐ ๊ทธ ๋๊ฐ์ง ์๋ผ๊ณ ํ ์ ์๋ค. Soft Real Time ์ด๋ ๋ง์ Task ์ ์ํ์ด ๊ฐ๋ฅํ๋ฉด ๋ณด๋ค ๋น ๋ฅด๊ฒ ์งํ ๋ ์ ์๊ฒ ๋ง๋ค์ด์ง์์คํ ์ ๋งํ๋ค.
์๋ฅผ ๋ค์ด High Priority๋ฅผ ๊ฐ์ง Task๊ฐ ์ ์ ํ ์ํ์ ํ๋ฉฐ ๋ค๋ฅธ Task ๋ณด๋ค ๋ง์ ์์์ ์ฌ์ฉํ ์ ์์ ๋๋ฅผ ๋งํ๋๊ฒ ๊ฐ๋ค.
๋ฐ์ Hard System์ด๋ ํน์ ์๊ฐ๋ด์ Task์ ์์ ์ด ์์ ๋์ด์ผ ํ๋ ์์ ๋ค์ ๋งํ๋ค. ๋๋ถ๋ถ์ Real-Time ์์คํ ์์๋ ๋๊ฐ์ง
์์คํ ์ ํผํฉ์ ํ์๋กํ๋ค.
1.1. Real Time System ์ ์ฌ์ฉ ๋ฒ์ ¶
์ค์ ๋ก ์ด๋ฌํ ์ ๋ฐ์ ์ธ ๋ถ๋ถ์์ ์ฐ์ด๋ ์ง๋ ๋ชจ๋ฅด๊ฒ ๋ค. ์์ฆ ๊ฐ์ ์ ํ๋ค์ด ๋ณด๋ค ์ฐ์ํด์ ธ์ ์ด๋ฌํ ๋ฆฌ์ผํ์์ด ํ์ํ์ง๋ง ์ฑ
์ ๋์จ ์๋ ๊ณผํ ๊ฒ ๊ฐ๋ค.
์ฑ ์ ๋์จ ์๋ ๋ค์๊ณผ ๊ฐ๋ค. ์ฐธ๊ณ ์ ์ผ๋ก ์์ ๋์์ ํ๋ค.
Food processing, Chemical plants, Engine controls, Antilock braking systems, Fax machines, ETC
์ฑ ์ ๋์จ ์๋ ๋ค์๊ณผ ๊ฐ๋ค. ์ฐธ๊ณ ์ ์ผ๋ก ์์ ๋์์ ํ๋ค.
Food processing, Chemical plants, Engine controls, Antilock braking systems, Fax machines, ETC
1.2. Foreground / Background System ¶
์์ ์์คํ
์์๋ ์์คํ
์ ํจ์จ์ฑ์ ์ํด ๋ณด๋จ ๊ฐํธํ๊ณ ์ผ๋ฐ์ ์ธ ๋์์ธ์ ์ฌ์ฉํ๋ค๊ณ ํ๋ค. ์ค์ ๋ก ์ดํ๋ฆฌ์ผ์ด์
์ด ์๋ํ๋ ๋ถ๋ถ์ Background System์ด๋ผ๊ณ ํ๋ฉฐ ISR (interrupt service rountines) ๋ผ๊ณ ๋ถ๋ฆฌ์ฐ๋ ์ธํฐ๋ฝํธ ๋ถ๋ถ์ Foreground system์ด๋ผ๊ณ ํ๋ค.
ISR๋ถ๋ถ์ ํฌ๋ฆฌํฐ์ปฌ ์น์ ์ ์ํด ๋ณดํธ๋๋ฉฐ ์์คํ ์ ํจ์จ์ฑ์ ๋์ด๊ธฐ ์ํด์๋ ๋ณด๋ค ์งง์ ISR ์ด ํ์ํ๋ค.
ISR๋ถ๋ถ์ ํฌ๋ฆฌํฐ์ปฌ ์น์ ์ ์ํด ๋ณดํธ๋๋ฉฐ ์์คํ ์ ํจ์จ์ฑ์ ๋์ด๊ธฐ ์ํด์๋ ๋ณด๋ค ์งง์ ISR ์ด ํ์ํ๋ค.
1.3. Critical Section of Code ¶
ํฌ๋ฆฌํฐ์ปฌ ์น์
๋๋ ํฌ๋ฆฌํฐ์ปฌ ๋ฆฌ์ ผ์ด๋ผ ๋ถ๋ฆฌ์ฐ๋ ์ด ๋ถ๋ถ์ ์ปค๋๊ณผ ๊ด๋ จ๋ ์ค์ ๋ถ๋ถ์์ ์ธํฐ๋ฝํธ๋ก ์ธํ ์ปค๋์ ์์์ ๋ง๊ธฐ ์ํด ๋ถ๋ฆฌ์ฐ๋ ๊ณณ์ด๋ฉฐ ๋ํ ์ํ์๊ฐ์ ๋จ์ถ์ด ์ ๋์ ์ผ๋ก ํ์ํ ๋ถ๋ถ์์ ์ฐ์ด๋ ๊ตฌ๊ฐ์ด๋ค. ์ด๋ ์ฝ๋์ ์์์ ๊ณต์ ๋ฅผ ๋ง๊ณ ๋ฐฐํ์ ์ธ ๊ณต๊ฐ์ผ๋ก ์ค์ ๋๋ค.
1.4. Resource ¶
ํ์คํฌ์ ์ํด ์ฐ์ฌ์ง๋ ๋น ๊ณต๊ฐ์ ๋งํ๋ค. ์ด๋ฌํ ๋ฆฌ์์ค๋ I/O , Printer , Memory , KeyBoard ๊ฐ ๋ ์ ์์ผ๋ฉฐ ๋ค๋ฅธ ๊ธฐํ ์์๋ ์๋ค.
1.5. Shared Resource ¶
๊ณต์ ์์์ด๋ ํ๋ ์ด์์ Task๊ฐ ๊ฐ์ ์์์ ์ธ ๊ฒฝ์ฐ๋ฅผ ๋งํ๋ค. ๋ Task๋ ๋ฐฐํ์ ์ผ๋ก ๊ฐ์ Resouce์ ์ ๊ทผ์ ํ๋ฉฐ Data์ ํ์์ ๋ฐฉ์งํ๋ค. ์ด๋ฌํ ๋ฐฉ์์ mutual exclusion (์ํธ ๋ฐฐํ์ฑ) ์ด๋ผ๊ณ ํ๋ค.
1.6. Multitasking ¶
๋ฉํฐํ์คํน์ด๋ ํ๋ก์ธ์ค์ ์ค์ผ์ค๊ณผ CPU์ ์ค์์นญ์ ์ํด ๋ณต์์ Task๊ฐ ์คํ๋๋ ๊ฒ์ ๋งํ๋ค. ๋ํ ๋ฉํฐํ์คํน์ด๋ Back/Fore Ground ์ฒ๋ผ ๋ณต์์ Task๊ฐ ์ด์๋๋ ๊ฒ์
๋งํ๋ค.
๋งํ๋ค.
1.7. Task ¶
ํ์คํฌ๋ thread๋ผ๊ณ ๋ ๋ถ๋ฆฐ๋ค. ์ด๋ ํ๋์ ํ์คํฌ๊ฐ ํ๋์ Stack๊ณผ TCB๋ฅผ ๊ฐ์ง ๊ฒฝ๋ ํ๋ก์ธ์ค์ด๋ค.
ํ์คํฌ์ ์ํ๋ ๋ค์๊ณผ ๊ฐ์ ์ํ๊ฐ ์๋ค.
DORMANT :: ํ์คํฌ๊ฐ ๋ฉ๋ชจ๋ฆฌ ์์๋ ์กด์ฌํ๋ ์์ง ํ์ฑํ ๋์ง ๋ชปํ ์ํ
READY :: ๋ฐ๋์ ํ๊ธฐ ์ ์ค๋น๋ ์ํ,์ฐ์ ์์๊ฐ ๋ฎ์ ์์ง ํ์ฑํ ๋์ง ์์ ์ํ
RUNNING :: ์ง๊ธ ํ๋ ์ค์ธ ์ํ
WAITING :: ์ด๋ฒคํธ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ฉฐ ํด์ ์ค์ธ ์ํ
ISR(interrupted) :: ์ธํฐ๋ฝํธ๋ฅผ ์ํ ์ค์ธ ์ํ
ํ์คํฌ์ ์ํ๋ ๋ค์๊ณผ ๊ฐ์ ์ํ๊ฐ ์๋ค.
DORMANT :: ํ์คํฌ๊ฐ ๋ฉ๋ชจ๋ฆฌ ์์๋ ์กด์ฌํ๋ ์์ง ํ์ฑํ ๋์ง ๋ชปํ ์ํ
READY :: ๋ฐ๋์ ํ๊ธฐ ์ ์ค๋น๋ ์ํ,์ฐ์ ์์๊ฐ ๋ฎ์ ์์ง ํ์ฑํ ๋์ง ์์ ์ํ
RUNNING :: ์ง๊ธ ํ๋ ์ค์ธ ์ํ
WAITING :: ์ด๋ฒคํธ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ฉฐ ํด์ ์ค์ธ ์ํ
ISR(interrupted) :: ์ธํฐ๋ฝํธ๋ฅผ ์ํ ์ค์ธ ์ํ
1.8. Context Switch ( or Task Switch) ¶
๋ฌธ๋งฅ์ ํ์ด๋ผ ๋ถ๋ฆฌ์ฐ๋ ์ด ๊ณผ์ ์ ํ๋์ ํ์คํฌ์์ ๋ค๋ฅธ ํ์คํฌ๋ก ์์
์ด ์ด์ ๋๊ธฐ ์ํ ๊ณผ์ ์
๋งํ๋ค. ์ด๋ ๊ฒ ํ๊ธฐ ์ํด์๋ ์ง๊ธ ์ํ ์ค์ธ ํ์คํฌ์ ํ๊ฒฝ(๋ ์ง์คํฐ,๋ณ์๋ฑ)์ ์ ์ฅ๊ณต๊ฐ(์คํ)์
์ ์ฅํ๊ณ ์ ํ ๋๊ณ ์ ํ๋ ํ์คํฌ์ ํ๊ฒฝ์ ์ฝ์ด๋ค์ฌ์ผ ๊ฐ๋ฅํ ๊ฒ์ด๋ค.
๋งํ๋ค. ์ด๋ ๊ฒ ํ๊ธฐ ์ํด์๋ ์ง๊ธ ์ํ ์ค์ธ ํ์คํฌ์ ํ๊ฒฝ(๋ ์ง์คํฐ,๋ณ์๋ฑ)์ ์ ์ฅ๊ณต๊ฐ(์คํ)์
์ ์ฅํ๊ณ ์ ํ ๋๊ณ ์ ํ๋ ํ์คํฌ์ ํ๊ฒฝ์ ์ฝ์ด๋ค์ฌ์ผ ๊ฐ๋ฅํ ๊ฒ์ด๋ค.
1.9. Kernel ¶
์ปค๋์ ๋ฉํฐํ์คํน์์ ํ์คํฌ์ ๊ด๋ฆฌ๋ฅผ ์ํํ๋ฉฐ ๋ํ ํ์คํฌ ์ฌ์ด์์์ ํต์ ์ ๋ด๋นํ๋ค. ๋ํ
์ปค๋์ CPU ์๊ฐ์ ์ธก์ ํ๋ฉฐ ์ธ๋งํฌ์ด,๋ฉ์ธ์ง,ํ๋ฑ๊ณผ ๊ฐ์ ์๋น์ค๋ฅผ ์ ๊ณตํ๋ค.
์ปค๋์ CPU ์๊ฐ์ ์ธก์ ํ๋ฉฐ ์ธ๋งํฌ์ด,๋ฉ์ธ์ง,ํ๋ฑ๊ณผ ๊ฐ์ ์๋น์ค๋ฅผ ์ ๊ณตํ๋ค.
1.10. Scheduler ¶
์ค์ผ์ฅด๋ฌ๋ DISPATCHER๋ผ๊ณ ๋ ๋ถ๋ฆฌ์ฐ๋ฉฐ ์ฐ์ ์์๊ฐ ๋์ ํ์คํฌ๋ฅผ ์ํ์ํจ๋ค.
1.11. Non - Preemptive Kernel (๋น ์ ์ ํ ์ปค๋) ¶
์๋ก์ด ๋์ ์์์ ํ์คํฌ๋ ํ์ฌ ๋ฎ์ ์ฐ์ ์์์ ํ์คํฌ๊ฐ CPU๋ฅผ ํฌ๊ธฐํ์ ๋ ๊ถํ์ ๊ฐ๋๋ค.
์ด๋ฌํ ๋น์ ์ ํ ์ปค๋์ ์ธํฐ๋ฝํธ ๋ค์คํ ์ด ๋ฎ๋ค.๋ํ ์ํ์ค์ธ ํ์คํฌ๊ฐ ๋ค๋ฅธ ํ์คํฌ์ ์ํด
์ํ์ด ์ค๋จ๋๋ ์ํฉ๋ ๋ง์ ์ ์๋ค.
์ด๋ฌํ ๋น์ ์ ํ ์ปค๋์ ์ธํฐ๋ฝํธ ๋ค์คํ ์ด ๋ฎ๋ค.๋ํ ์ํ์ค์ธ ํ์คํฌ๊ฐ ๋ค๋ฅธ ํ์คํฌ์ ์ํด
์ํ์ด ์ค๋จ๋๋ ์ํฉ๋ ๋ง์ ์ ์๋ค.
1.12. Preemptive Kernel (์ ์ ํ ์ปค๋) ¶
์ ์ ํ ์ปค๋์ ์์คํ
์ ๋ฐ์์ฑ์ด ์ค์ํ ๋ ์ฐ์ธ๋ค. ์ ์ ํ ์ปค๋์ ๊ฒฝ์ฐ ์ปค๋์ด ์ฐ์ ์์๊ฐ ๋์
ํ์คํฌ๋ก์ ์ ํ์ ํ์คํ ํด ์ค๋ค. ๋ง์ฝ ์ฐ์ ์์๊ฐ ๋์ ํ์คํฌ๊ฐ ์ค๋น์ํ๋ผ๋ฉด ๋ฐ๋ก ์ธํฐ๋ฝํธ๊ฐ
๋๊ณ ์ง๊ธ ์ํ์ค์ธ ํ์คํฌ๋ ๋ฉ์ถ๋ฉฐ ๋์ ํ์คํฌ๋ก์ ๋ฌธ๋งฅ์ ํ์ด ์ด๋ฃจ์ด์ง๋ค.
ํ์คํฌ๋ก์ ์ ํ์ ํ์คํ ํด ์ค๋ค. ๋ง์ฝ ์ฐ์ ์์๊ฐ ๋์ ํ์คํฌ๊ฐ ์ค๋น์ํ๋ผ๋ฉด ๋ฐ๋ก ์ธํฐ๋ฝํธ๊ฐ
๋๊ณ ์ง๊ธ ์ํ์ค์ธ ํ์คํฌ๋ ๋ฉ์ถ๋ฉฐ ๋์ ํ์คํฌ๋ก์ ๋ฌธ๋งฅ์ ํ์ด ์ด๋ฃจ์ด์ง๋ค.
1.13. Reentrancy ¶
๋ง ๊ทธ๋๋ก ์ฌ์ง์
์ด ๊ฐ๋ฅํ ํจ์๋ฅผ ๋งํ๋ ๊ฒ์
๋๋ค. ํ์คํฌ๊ฐ ํ๋์ ํจ์๋ก ์ด๋ฃจ์ด์ ธ์์ผ๋ฏ๋ก ์ฌ์ง์
์
์ํด์๋ ํจ์์์ ์ฐ์ผ ๋ณ์์ ๋ํด์ ์ ์ญ์ผ๋ก ์ค์ ํด ๋์ผ๋ฉด ์๋๊ฒ ์ ธ ๋ง์ฝ ์ ์ญ์ผ๋ก ์ค์ ํ๊ณ ๋ค์ ์ง์ ํ
๊ฒ ๋๋ค๋ฉด ๋ค๋ฅธ Task๋ค์ ์ํด ๊ทธ ๊ฐ์ด ๋ฐ๋์ด์ ธ ์์ ์๋ ์์ต๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก Task์์ ์ฐ์ผ ๋ณ์/๋ฉ๋ชจ๋ฆฌ๋
Task Stack ์ ๊ฐ์ ์ ์ฅํ์ฌ ํด๋น Task๋ก ๋ค์ ์ง์ ํ์ ๋ ์คํ์์ ๊บผ๋ด ๊ทธ ๊ฐ์ ๋ณต์ํ๋ ๋ฐฉ๋ฒ์ด ์๊ฒ ์ต๋๋ค.
๋ค์์ ์ฌ์ง์ ์ด ๊ฐ๋ฅํ ์ฝ๋์ ๋ถ๊ฐ๋ฅํ ์ฝ๋์ ์์ด๋ค.
์ํด์๋ ํจ์์์ ์ฐ์ผ ๋ณ์์ ๋ํด์ ์ ์ญ์ผ๋ก ์ค์ ํด ๋์ผ๋ฉด ์๋๊ฒ ์ ธ ๋ง์ฝ ์ ์ญ์ผ๋ก ์ค์ ํ๊ณ ๋ค์ ์ง์ ํ
๊ฒ ๋๋ค๋ฉด ๋ค๋ฅธ Task๋ค์ ์ํด ๊ทธ ๊ฐ์ด ๋ฐ๋์ด์ ธ ์์ ์๋ ์์ต๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก Task์์ ์ฐ์ผ ๋ณ์/๋ฉ๋ชจ๋ฆฌ๋
Task Stack ์ ๊ฐ์ ์ ์ฅํ์ฌ ํด๋น Task๋ก ๋ค์ ์ง์ ํ์ ๋ ์คํ์์ ๊บผ๋ด ๊ทธ ๊ฐ์ ๋ณต์ํ๋ ๋ฐฉ๋ฒ์ด ์๊ฒ ์ต๋๋ค.
๋ค์์ ์ฌ์ง์ ์ด ๊ฐ๋ฅํ ์ฝ๋์ ๋ถ๊ฐ๋ฅํ ์ฝ๋์ ์์ด๋ค.
๊ฐ๋ฅ ์ฝ๋
~cpp void strcpy (char * dest , char * src){ while (*dest++ = *src++) { ; } *dest = NUL; }๋ถ๊ฐ๋ฅ ์ฝ๋
~cpp int Temp; // ์ธ์ ๋ฐ๋์ง ๋ชจ๋ฅด๋ ์ ์ญ ๋ณ์ void swap(int *x,int *y) { Temp = *x; *x = *y; *y = Temp; }์์ ๊ฐ์ ๊ฒฝ์ฐ Temp๋ฅผ ์ง์ญ๋ณ์๋ก ๋์ด ํ์คํฌ์ ์คํ์ ๊ฐ์ด ์ ์ฅ ๋๋ฉด ๋ ๊ฒ ๊ฐ๋ค.
1.14. Round Robin Scheduling ¶
๊ฐ์ ์ฐ์ ๊ถ์ ๊ฐ๋ ํ์คํฌ๋ผ๋ฆฌ๋ ๊ฐ์ ์ํ ์๊ฐ ๋งํผ ์๋ ๋๊ฒ ๋ง๋ค์ด์ง๋ ๋ฐฉ์์ผ๋ก
Time Slicing ์ด๋ผ๊ณ ๋ ํ๋ค. ๋ํ ์ด ์ํ ์๊ฐ์ quantum ์ด๋ผ๊ณ ํ๋ค.
Time Slicing ์ด๋ผ๊ณ ๋ ํ๋ค. ๋ํ ์ด ์ํ ์๊ฐ์ quantum ์ด๋ผ๊ณ ํ๋ค.
1.15. Task Priority ¶
๋ง ๊ทธ๋๋ก ํ์คํฌ์ ์ฐ์ ๊ถ์ด๋ค. ๋ง์ดํฌ๋ก์จ ์ค์์ค์์๋ ๋์ ์ฐ์ ๊ถ์ ๊ฐ์ ํ์คํฌ๊ฐ
์ํ๋๋๋ก ๋ง๋ค์ด ์ก๋ค.
์ํ๋๋๋ก ๋ง๋ค์ด ์ก๋ค.
1.16. Static Priority ¶
ํ์คํฌ๊ฐ ์ํํ๋ ๋์ ํ์คํฌ์ ์ฐ์ ์์๊ฐ ๋ฐ๋์ง ์๋ ๊ฒ์ ๋งํ๋ ๋ฐ ๋ฆฌ์ผํ์์์๋
๋๋ถ๋ถ์ ํ์คํฌ๊ฐ ๊ทธ๋ฌํ๋ค
๋๋ถ๋ถ์ ํ์คํฌ๊ฐ ๊ทธ๋ฌํ๋ค
1.17. Dynamic Prioirty ¶
์์ ๋ฐ๋ ๋๋ ์ํฉ์ผ๋ก ํ์์ ๋ฐ๋ผ ์ฐ์ ์์๊ฐ ๋ฐ๋ ์ ์๋ ๋ฐ ์ด๋ฌํ ์ ์ ์ํ์๊ฐ์
๋ณํ๋ฅผ ๊ฐ์ ธ์ค๋ฏ๋ก ๋ฆฌ์ผํ์์์๋ ์ฌ์ฉ๋์ง ์๋๋ค.
๋ณํ๋ฅผ ๊ฐ์ ธ์ค๋ฏ๋ก ๋ฆฌ์ผํ์์์๋ ์ฌ์ฉ๋์ง ์๋๋ค.
1.18. Priority Inversions ¶
์ฐ์ ์์ ๋ฐ์ ์๋๋ฆฌ์ค. ์ฐ์ ์์๊ฐ ๋ฐ๋์ด์ผ ํ ์ํฉ์ ์๋๋ฆฌ์ค๋ก ํ์ด ๋ํ๋ธ ๊ฒ.
1.19. Assigning Task Priorities ¶
์ฐ์ ์์ ํ ๋น์ ๊ฐ๋ฒผ์ด ๋ฌธ์ ๋ ์๋๋ค. ์ด๋ ๋๋ถ๋ถ์ ์์คํ
์์ ์ค์ํ ๊ฒ์ผ๋ก ๊ฐ์ฃผ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ ์น๋ช ์ ์ค์ํ ํ์คํฌ๋ ๋ฎ์ ์ฐ์ ์์๊ฐ ์ฃผ์ด์ง ๊ฒ์ด๋ค.
๋๋ถ๋ถ์ ๋ฆฌ์ผํ์์์๋ SOFT/HARD ๋ฆฌ์ผํ์์ ์ ์ ํ ์กฐํฉ์ผ๋ก ์ฐ์ฌ์ง๋ค.
SOFT์์๋ ๊ฐ๋ฅํ ๋ณด๋ค ๋น ๋ฅธ ์คํ์ ์ค์ํ๋ฉฐ ํน์ ์๊ฐ์ ๊ผญ ์์ ์ ๋ง์น ์ด์ ๋ ์๋ค. ๋ฐ์
HARD์์๋ ์ ํํ ๊ทธ๋ฆฌ๊ณ ์ ํด์ง ์์์ ์์ ์ ๋ง์ณ์ผ ํ๋ค.
๊ทธ๋ฆฌ๊ณ ๋ ์น๋ช ์ ์ค์ํ ํ์คํฌ๋ ๋ฎ์ ์ฐ์ ์์๊ฐ ์ฃผ์ด์ง ๊ฒ์ด๋ค.
๋๋ถ๋ถ์ ๋ฆฌ์ผํ์์์๋ SOFT/HARD ๋ฆฌ์ผํ์์ ์ ์ ํ ์กฐํฉ์ผ๋ก ์ฐ์ฌ์ง๋ค.
SOFT์์๋ ๊ฐ๋ฅํ ๋ณด๋ค ๋น ๋ฅธ ์คํ์ ์ค์ํ๋ฉฐ ํน์ ์๊ฐ์ ๊ผญ ์์ ์ ๋ง์น ์ด์ ๋ ์๋ค. ๋ฐ์
HARD์์๋ ์ ํํ ๊ทธ๋ฆฌ๊ณ ์ ํด์ง ์์์ ์์ ์ ๋ง์ณ์ผ ํ๋ค.
- Rate Monotonic Scheduling (RMS)
- ์ผ๋ง๋ ์์ฃผ TASK๊ฐ ์ํ๋์ด ์ง๋๋์ ๋ฐ๋ผ ํ ๋น๋๋ ์ฐ์ ์์
- ๊ฐ๋จํ ์์ฃผ ์คํ๋๋ TASK๊ฐ ๋์ ์ฐ์ ์์๋ฅผ ๊ฐ๋๋ค๋ ๋ง....
- Figure 2.9๋ฅผ ๋ณด๋ฉด ์ ์ ์๋ค.
- RMS ์ ๋ํ ๊ฐ์ ๋ค ....
- ๋ชจ๋ TASK๋ ์ ๊ธฐ์ ์ผ๋ก ์ํ ๋๋ค.
- TASK๋ค์ ๋๊ธฐ์ ์ด์ง ์๋ค...-> ์ด ๋ง์ ๋ค๋ฅธ TASK๋ค๊ณผ ๋ํํ๋ฉฐ ๊ณต์ ํ๋ฏ๋ก ๋๊ธฐ์ ์ผ๋ก ์คํ ๋์ง ์๋๋ค๋ ๊ฒ.
- CPU๋ ๊ฐ์ฅ ๋์ ์ฐ์ ์์๋ฅผ ๊ฐ๋ TASK๋ฅผ ์ํํ๋ค๋ ์ .
- ๋ชจ๋ TASK๋ ์ ๊ธฐ์ ์ผ๋ก ์ํ ๋๋ค.
- ์ผ๋ง๋ ์์ฃผ TASK๊ฐ ์ํ๋์ด ์ง๋๋์ ๋ฐ๋ผ ํ ๋น๋๋ ์ฐ์ ์์
~cpp ์์ ๋ค์๊ณผ ๊ฐ๋ค. -- E(i) 1/n > ---- < n ( 2 - 1 ) -- T(i) i ์ผํ ์์ ๋ณด๊ฒ ๋...