the simple scheduler in embedded system @ osdc.tw 2014
DESCRIPTION
https://github.com/starnight/simple-scheduler Video: https://www.youtube.com/watch?v=dm18UEsgOowTRANSCRIPT
![Page 1: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/1.jpg)
The Simple Scheduler in Embedded System
A simple scheduler module implemented in C
StarNight @ OSDC.TW 2014
![Page 2: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/2.jpg)
Who am I?
潘建宏 / Jian-Hong Pan (StarNight)About Me : http://about.me/StarNight
出沒在~
GitHub : starnightPTT : zack2004plurk : StarNightFacebook : Jian-Hong Pan
目前繼續在種花店當個打雜園丁 ~
![Page 3: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/3.jpg)
Outline
● History
● OS concepts learned from textbooks
● Process & Scheduler
● What if …
● Simple Scheduler
● Simple Oscilloscope
![Page 4: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/4.jpg)
很久很久以前~
Long Long time ago ~
很久很久以前~
Long Long time ago ~
![Page 5: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/5.jpg)
There is a robot in every boy’s mind ~
每個男孩心中,都有一個機器人~
![Page 6: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/6.jpg)
There is an operating system in every computer scientist’s mind ~
上了大學之後,同學告訴我每位資工人的心中都有個 OS OS ~
![Page 7: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/7.jpg)
However, I am graduated fromdepartment of mechanical engineering ~
但我是機械系畢業的~
![Page 8: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/8.jpg)
For the expectation in my childhood, not only I attended the required classes, but also I sat
in the operating system class ~
為了男孩心中的機器人所以除了本科外,我旁聽 ~
![Page 9: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/9.jpg)
上課也可以很熱血!!!
Reference from internet
![Page 10: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/10.jpg)
欠的總是要還~
其實就是因為旁聽沒繳作業,所以畢業三年多後,
要補寫作業跟老師謝罪 XD
![Page 11: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/11.jpg)
My First Impression of OS
Operating System
Input Output
keyboardmousemicrophonetouchpadcomunication (in)...
screenheadsetcomunication (out)...
![Page 12: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/12.jpg)
There could be an OS in a robot, too!
Operating System
Input Output
GPIsensorscommand (in)comunication (in)...
GPOmotorscommand (out)comunication (out)...
![Page 13: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/13.jpg)
Thinking furthermore
Apps
Operating System
Input Output
drivers scheduler etc ...
ETC
ready queue
data structure
Simple Data Structure @lightning talk COSCUP 2013
![Page 14: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/14.jpg)
Data
Text
Heap
Stackmax
base 0
Process in Memory
Temporary data
Dynamic allocated memoryGlobal variables
Program code
Reference: Figure 3.1 of Operating System Concept, 8th
![Page 15: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/15.jpg)
Usual Diagram of Process State
new
ready
terminated
running
Waiting
admitted exitinterrupt
scheduler dispatchI/O or event waitI/O or event
completion
Reference: Figure 3.2 of Operating System Concept, 8th
![Page 16: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/16.jpg)
Process Control Block (PCB)
Process State
Process Number
Program Counter
Registers
Memory Limits
List of Open Files
Reference: Figure 3.3 of Operating System Concept, 8th
![Page 17: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/17.jpg)
Scheduling when 4 Events Occurs
new
ready
terminated
running
Waiting
admitted exitinterrupt
scheduler dispatchI/O or event waitI/O or event
completion
Reference: Figure 3.2 of Operating System Concept, 8th
1
2
34
For Multitasking
For Multiprogramming
![Page 18: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/18.jpg)
Scheduling Algorithms
● First-Come, First-Served (or FIFO)
● Round Robin
● Shortest Job First
● Shortest Remaining Time First
● Priority Scheduling
● Multilevel Queues
![Page 19: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/19.jpg)
What if ...
● The scheduled job (process) is as small & simple as a function, even is a function.
● Because of being small, the job will not be interrupted by timeout.
● Because of being simple, the job will not wait for the I/O or event. There is another job for I/O or event completion.
![Page 20: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/20.jpg)
Running Waiting Ready
BeforeI/O or event
DuringI/O or event
AfterI/O or event
Compare Jobs’ Status Changing
Job #1 Job #2 Job #3
General
SimpleScheduler
TimeToDoAsync DoAsync AfterAsync
![Page 21: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/21.jpg)
In other words
● Break a single process into several jobs.
● Each job will not be interrupted.
● A job terminate immediately if it is finished.
● Do not save job’s state during context switching.
![Page 22: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/22.jpg)
This is not new idea
Related concepts:
● Functional programming
● Asynchronous function in Javascript
● Events of GUI programs
● Function pointer in C
ToDoAsyncFunc(pArgument, pAfterFunc)
![Page 23: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/23.jpg)
How do it keep the jobs until they are executed?
Save the jobs in somewhere,
maybe a queue.
How about make it like the ready queueof scheduler !?!?
![Page 24: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/24.jpg)
What is Simple Scheduler
● Simple Scheduler does "First In, First Out" (FIFO) scheduling works with no priority and non-preemptive scheduling scheme.
● It is the "Functions", which could also be called callback functions or jobs, that Simple Scheduler schedules.
![Page 25: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/25.jpg)
You can have it from
GitHub → StarNight → simple scheduler
https://github.com/starnight/simple-scheduler
PS. Wiki included
![Page 26: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/26.jpg)
Job’s State in Simple Scheduler
new
ready
terminated
running
admitted exit
scheduler dispatch
Ready Queue
interrupt
scheduler dispatch
Waiting
I/O or event waitI/O or eventcompletion
Small & non-preemptive
Simple & non-blocking I/O
![Page 27: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/27.jpg)
Job’s State in Simple Scheduler
new
ready
terminated
running
scheduler dispatch
Ready Queue
admitted exitDo scheduling
![Page 28: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/28.jpg)
Timing Diagram
Job #1 Job #2
Ready Queue:First In, First Out (FIFO)
![Page 29: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/29.jpg)
Timing Diagram
Job #1 Job #2
Ready Queue:
Job #1
![Page 30: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/30.jpg)
Timing Diagram
Job #1 Job #2
Ready Queue:
Job #1 admits one Job #2Job #2
Job #2
![Page 31: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/31.jpg)
Timing Diagram
Job #2 Job #2
Ready Queue:
![Page 32: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/32.jpg)
Timing Diagram
Job #2 Job #2
Ready Queue:
Job #2
![Page 33: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/33.jpg)
Timing Diagram
Job #2
Ready Queue:
![Page 34: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/34.jpg)
Timing Diagram
Job #2
Ready Queue:
An interrupt occurs during scheduling
![Page 35: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/35.jpg)
Timing Diagram
Job #2
Ready Queue:
The interrupt admits one Job #3
Job #3
Job #3
![Page 36: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/36.jpg)
Timing Diagram
Job #2
Ready Queue:
Job #3
![Page 37: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/37.jpg)
Timing Diagram
Job #2 Job #3
Ready Queue:
Job #2
![Page 38: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/38.jpg)
Timing Diagram
Job #2
Ready Queue:
Job #3
Another interrupt occursduring Job #2 executing
![Page 39: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/39.jpg)
Timing Diagram
Job #2
Ready Queue:
Job #3
The interrupt admits one Job #1
Job #1
Job #1
![Page 40: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/40.jpg)
Timing Diagram
Job #2 Job #1
Ready Queue:
Job #3
![Page 41: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/41.jpg)
Timing Diagram
Job #3
Ready Queue:
Job #1
![Page 42: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/42.jpg)
Timing Diagram
Job #1
Ready Queue:
Job #3
Job #3
![Page 43: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/43.jpg)
Timing Diagram
Ready Queue:
Job #1
![Page 44: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/44.jpg)
Timing Diagram
Ready Queue:
Job #1
Job #1
![Page 45: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/45.jpg)
Timing Diagram
Job #1
Ready Queue:
Job #1 admitsone Job #2
Job #2
Job #2
![Page 46: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/46.jpg)
Timing Diagram
Job #2
Ready Queue:
![Page 47: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/47.jpg)
Timing Diagram
Job #2
Ready Queue:
Job #2
![Page 48: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/48.jpg)
Timing Diagram
Ready Queue:
![Page 49: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/49.jpg)
Timing Diagram
Ready Queue:
![Page 50: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/50.jpg)
When does it admit job?
● Booting (Before scheduler start to run)
● A Job is running
● During interrupt
![Page 51: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/51.jpg)
哥schedule的不是Process, 是Function
It is the functions, not the processes, that simple scheduler schedules.
![Page 52: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/52.jpg)
typedef void (*SS_CB)(void *);
● The job could be pass one parameter's pointer or NULL representing no parameter.
● The pointer of the parameter could be a native variable pointer or even a struture pointer.
Prototype of the Scheduled Function
![Page 53: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/53.jpg)
/* Packaged callback function (PCB). */typedef struct _SS_PACKAGED_CALLBACK { SS_CB cb; void *p;} SS_PCB;
PCB Structure Type
● cb : The callback function pointer of the job.
● p : The argument pointer going to be passed into the job.
Ready Queue
PCB of Job #3
PCB of Job #2
PCB of Job #1
FI
FO
![Page 54: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/54.jpg)
PCB vs PCB
Process State
Process Number
Program Counter
Registers
Memory Limits
List of Open Files
SS_CB cb
Callback function pointer
void *p
Parameter pointerfor the callback function
Original PCB Simple Scheduler PCB
![Page 55: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/55.jpg)
Public Functions
● SSInit : Initial the scheduler.
● SSAdmitJob : Admit a job (callback function) into the ready queue.
● SSMainLoop : Main loop for system scheduling.
● SSBreak : Break scheduling.
● SSConsumeLeft : Consume left jobs in ready queue.
● SSDebug : Have the debug information of the scheduler.
![Page 56: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/56.jpg)
SSBreak(BC)
SSBreak(B)
Scheduler’s State in Simple Scheduler
Boot
Run
Break & Consume Left
SSConsumeLeft(n) orSSBreak(BC)
SSBreak(B)Break
B: SS_BREAKSCHEDULINGBC: SS_BREAKANDCONSUMELEFT
SSMainLoop()
![Page 57: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/57.jpg)
有了
Simple Scheduler
那就用用看吧!
![Page 58: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/58.jpg)
ADC & UART & Timer Labs+
Scheduler
實作一個窮到只剩下 $$ Scheduler的OS kernel
Simple OS for Simple Oscilloscope
https://github.com/starnight/Simple-Oscilloscope
![Page 59: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/59.jpg)
樸實無華 X 極簡
As simple as possible ~
![Page 60: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/60.jpg)
Architecture
Scheduler
Direvers Timer
App #1 App #N
Kernel
User
![Page 61: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/61.jpg)
Fill Modules into Architecture
Simple Scheduler
ADC USART
SysTimer
ADCSample
Process
Kernel
User
Timer
USARTCommunicate
MODBUS - like
PlatformDependentDrivers
![Page 62: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/62.jpg)
Usage of Simple Scheduler
● SSInit()
● Admit leading jobs, ex: Wait command job.
● SSMainLoop()
● Interrupts admit jobs○ USART RX:
■ Admits a job when predefined RX queue is full.
○ USART TX: ■ Admits a job when predefined TX queue is empty.
![Page 63: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/63.jpg)
Usage of Simple Scheduler (Cont.)
● Jobs admit jobs (Ex: Modbus-like package)○ Wait Commad:
■ Admits a wait command job if there is no command.■ Admits a check station job if there is a command.
○ Check station job:■ Admits a wait command job if not matched address.■ Parses commad and admits a corresponding job.
○ Corresponding job:■ ...
![Page 64: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/64.jpg)
Simple Oscilloscpe - MCU Side
![Page 65: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/65.jpg)
Simple Oscilloscpe - Wave Gen. Side
![Page 66: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/66.jpg)
MCU SideATMega328P
Wave Generator Side
![Page 67: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/67.jpg)
Oscilloscope Console by python + pyserial + matplotlib
![Page 68: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/68.jpg)
畢業之後,
還可以重新仔細回味校園裡所學,
並將這些知識融合做出成果,
不也是一種 小確幸 ~
![Page 69: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/69.jpg)
● MVMC & ACAL Labs @ NCU○ 老師們與歷屆學長、同學和學弟們
● 作業系統Operating Systems on Share Course
● 我旁聽的作業系統課 @ NCU
● Textbook: Operating System Concepts
● Open Source Groups
Thanks to
![Page 70: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/70.jpg)
Thank you ~ and Q & A
GitHub → starnight → simple-scheduler
![Page 71: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/71.jpg)
Between Running and Ready State
ready running
interrupt
scheduler dispatch
Ready * NRunning Running
Job’s state according to time:
Time
Interrupted by timeoutFor Multitasking
![Page 72: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/72.jpg)
The Waiting State
Waiting
I/Oevent
waitI/Oevent
completion
WaitingRunning Ready
Job’s state according to time:
Time
For Multiprogramming
![Page 73: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/73.jpg)
Diagram showing CPU switch from process to process
Reference: Figure 3.4 of Operating System Concept, 8th
![Page 74: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/74.jpg)
● SS_READYQUEUEOK
○ The ready queue works fine.
● SS_READYQUEUEEMPTY
○ The ready queue is empty.
● SS_READYQUEUEFULL
○ The ready queue is full.
Ready Queue StatusReady Queue
PCB of Job #3
PCB of Job #2
PCB of Job #1
FI
FO
![Page 75: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/75.jpg)
Job’s State in Simple Scheduler
new
ready
terminated
running
admitted exit
scheduler dispatch
Ready Queue
SSAdmitJob
SSMainLoop
![Page 76: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/76.jpg)
Scheduler Status
● SS_RUNSCHEDULING○ The scheduler is running.
● SS_BREAKSCHEDULING○ The scheduler is or is going to be broken into stop.
● SS_BREAKANDCONSUMELEFT○ The scheduler is or is going to be broken into stop
and consume the left jobs in ready queue.
Represented by SS_SSTATUS → run
![Page 77: The Simple Scheduler in Embedded System @ OSDC.TW 2014](https://reader033.vdocuments.net/reader033/viewer/2022051514/54b77dba4a7959bb328b45c1/html5/thumbnails/77.jpg)
Recall thinking furthermore
Apps
Operating System
Input Output
drivers scheduler etc ...
ETC
ready queue
data structure