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.0329 sec