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