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