E D R , A S I H C RSS

Chapter II - Real-Time Systems Concepts

RenameThisPage - Name Space — Œ€ํ•ด„œ €œธฐ ฐ”žŒ. ทธฆฌณ  ˜ฌธ œชฉ„–ด“ฐธฐ— Œ€ํ•ด„œŠ” FrontPage €žฅ œ— ฌธ‹จ ฐธกฐฐ”žŒ --„ฒœ

1. What is the Real Time?

ฆฌ– ํƒ€ž„ดŠ” ง€ Timing ˜ correctness ( •ํ™•„)— ˜ํ•ด ฒฐ •˜Š” งด‹ค. ดŸฌํ•œ ฆฌ–ํƒ€ž„€ Œ€žต ‘€€ €ฅ˜ €€ณ  žˆ‹ค.
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

1.2. Foreground / Background System

ž‘€ ‹œŠคํ…œ—„œŠ” ‹œŠคํ…œ˜ ํšจœจ„„ œ„ํ•ด ณด‹จ „ํŽธํ•˜ณ  ฐ˜ ธ ””žธ„ ‚ฌšฉํ•œ‹คณ  ํ•œ‹ค. ‹ค œกœ –ดํ”Œฆฌ€ด…˜ด ž‘™ํ•˜Š” €„„ Background Systemดณ  ํ•˜ฉฐ ISR (interrupt service rountines) ณ  ถˆฆฌšฐŠ” ธํ„ŸฝํŠธ €„„ Foreground systemดณ  ํ•œ‹ค.
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) :: ธํ„ŸฝํŠธ ˆ˜ํ–‰ ค‘ธ ƒํƒœ

1.8. Context Switch ( or Task Switch)

ฌธงฅ „ํ™˜ด ถˆฆฌšฐŠ” ด  •€ ํ•˜‚˜˜ ํƒœŠคํฌ—„œ ‹คฅธ ํƒœŠคํฌกœ ž‘—…ด ด „ ˜ธฐ œ„ํ•œ  •„
งํ•œ‹ค. ด ‡ฒŒ ํ•˜ธฐ œ„ํ•ด„œŠ” €ธˆ ˆ˜ํ–‰ ค‘ธ ํƒœŠคํฌ˜ ํ™˜ฒฝ( ˆ€Šคํ„ฐ,€ˆ˜“)„  €žฅณต„(Šคํƒ)—
 €žฅํ•˜ณ   „ํ™˜ ˜ณ ž ํ•˜Š” ํƒœŠคํฌ˜ ํ™˜ฒฝ„ ฝ–ด“ค—ฌ• €Šฅํ•  ฒƒด‹ค.

1.9. Kernel

ปค„€ €ํ‹ฐํƒœŠคํ‚—„œ ํƒœŠคํฌ˜ €ฆฌ ˆ˜ํ–‰ํ•˜ฉฐ ˜ํ•œ ํƒœŠคํฌ ‚ฌด—„œ˜ ํ†ต‹ „ ‹ด‹ํ•œ‹ค. ˜ํ•œ
ปค„€ CPU ‹œ„„ ธก •ํ•˜ฉฐ „งˆํฌ–ด,ฉ”„€,ํ“ ฐ™€ „œ„Šค  œณตํ•œ‹ค.

1.10. Scheduler

Šค€ฅดŸฌŠ” DISPATCHERณ „ ถˆฆฌšฐฉฐ šฐ„ ˆœœ„€ †’€ ํƒœŠคํฌ ˆ˜ํ–‰‹œํ‚จ‹ค.

1.11. Non - Preemptive Kernel („ „  ํ˜• ปค„)

ƒˆกœšด †’€ ˆœœ„˜ ํƒœŠคํฌŠ” ํ˜„žฌ ‚ฎ€ šฐ„ ˆœœ„˜ ํƒœŠคํฌ€ CPU ํฌธฐํ–ˆ„ •Œ ถŒํ•œ„ ฐ–Š”‹ค.
ดŸฌํ•œ „„  ํ˜• ปค„€ ธํ„ŸฝํŠธ „ŠคํŒ…ด ‚ฎ‹ค.˜ํ•œ ˆ˜ํ–‰ค‘ธ ํƒœŠคํฌ€ ‹คฅธ ํƒœŠคํฌ— ˜ํ•ด
ˆ˜ํ–‰ด ค‘‹จ˜Š” ƒํ™ฉ„ ง‰„ ˆ˜ žˆ‹ค.

1.12. Preemptive Kernel („  ํ˜• ปค„)

„  ํ˜• ปค„€ ‹œŠคํ…œ˜ ฐ˜‘„ด ค‘š”ํ•  •Œ “ฐธ‹ค. „  ํ˜• ปค„˜ ฒฝšฐ ปค„ด šฐ„ ˆœœ„€ †’€
ํƒœŠคํฌกœ˜  „ํ™˜„ ํ™•‹คํžˆ ํ•ด €‹ค. งŒ•ฝ šฐ„ ˆœœ„€ †’€ ํƒœŠคํฌ€ €„ƒํƒœฉด ฐ”กœ ธํ„ŸฝํŠธ€
˜ณ  €ธˆ ˆ˜ํ–‰ค‘ธ ํƒœŠคํฌŠ” ฉˆถ”ฉฐ †’€ ํƒœŠคํฌกœ˜ ฌธงฅ „ํ™˜ด ดฃจ–ด„‹ค.

1.13. Reentrancy

ง ทธŒ€กœ žฌ„ž…ด €Šฅํ•œ ํ•จˆ˜ งํ•˜Š” ฒƒž…‹ˆ‹ค. ํƒœŠคํฌ€ ํ•˜‚˜˜ ํ•จˆ˜กœ ดฃจ–ด ธžˆœ€กœ žฌ„ž…„
œ„ํ•ด„œŠ” ํ•จˆ˜—„œ “ฐ €ˆ˜— Œ€ํ•ด„œ  „—ญœกœ „ •ํ•ด †“œฉด •ˆ˜ฒ  ธ งŒ•ฝ  „—ญœกœ „ •ํ•˜ณ  ‹ค‹œ „ž…ํ•˜
ฒŒ œ‹คฉด ‹คฅธ 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 ดณ  ํ•œ‹ค.

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—„œŠ”  •ํ™•ํžˆ ทธฆฌณ   •ํ•ด„ ‹œž‘— ž‘—…„ งˆณ• ํ•œ‹ค.


  • Rate Monotonic Scheduling (RMS)
    • –งˆ‚˜ ž TASK€ ˆ˜ํ–‰˜–ด €Šƒ— ”ฐ ํ• ‹˜Š” šฐ„ ˆœœ„
    • „‹จํžˆ ž ‹คํ–‰˜Š” TASK€ †’€ šฐ„  ˆœœ„ ฐ–Š”‹คŠ” ง....
    • Figure 2.9 ณดฉด •Œ ˆ˜ žˆ‹ค.
    • RMS — Œ€ํ•œ € •“ค ....
      • ชจ“  TASKŠ”  •ธฐ œกœ ˆ˜ํ–‰ œ‹ค.
      • TASK“ค€ ™ธฐ ด€ •Š‹ค...-> ด ง€ ‹คฅธ TASK“ค Œ€ํ™”ํ•˜ฉฐ ณตœ ํ•˜€กœ ™ธฐ œกœ ‹คํ–‰ ˜€ •ŠŠ”‹คŠ” ฒƒ.
      • CPUŠ” €žฅ †’€ šฐ„ ˆœœ„ ฐ–Š” TASK ˆ˜ํ–‰ํ•œ‹คŠ”  .



~cpp 
   ‹€  ‹คŒ ฐ™‹ค.
   --  E(i)        1/n
   >   ---- < n ( 2    - 1 )
   --  T(i)
   i

   œํ •Œ•„ ณดฒ ‚˜...

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

End Chapter II


Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:22:51
Processing time 0.0416 sec