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