* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Download What is an operating system?
Survey
Document related concepts
Burroughs MCP wikipedia , lookup
Spring (operating system) wikipedia , lookup
Plan 9 from Bell Labs wikipedia , lookup
Copland (operating system) wikipedia , lookup
Mobile operating system wikipedia , lookup
Linux kernel wikipedia , lookup
Distributed operating system wikipedia , lookup
Caldera OpenLinux wikipedia , lookup
Process management (computing) wikipedia , lookup
Unix security wikipedia , lookup
Transcript
Real-time Operating System and RTLinux 金仲達教授 清華大學資訊工程學系 (slides adapted from Prof. T.Y. Huang) Overview Operating Systems Real-Time Operating Systems RTLinux Real-time OS1 What is an operating system? An operating system is the “permanent” software that controls/abstracts hardware User applications can thus be simpler and device-independent User Applications virtual machine interface Operating System physical machine interface Architecture Real-time OS2 Multi-tasking Operating Systems Manages resources and processes to support different user applications Provides Applications Programming Interface (API) for user applications User Application User Application Operating System Architecture Real-time OS3 General-Purpose Operating System User program Executable binary user Compiler Linker compiler user mode kernel System library OS interface Operating system Device drivers OS Architecture Hardware Real-time OS4 2-layered Architecture Applications Operating System Kernel Graphics Subsystems Scheduler I/O Manager Network Drivers Device Drivers Graphics Drivers Hardware Real-time OS5 3-layered Architecture Processes Operating System Kernel Applications Applications Graphics Subsystems Scheduler I/O Manager Network Drivers Device Drivers Graphics Drivers Hardware Real-time OS6 3-layered with Microkernel Applications Processes Graphics Subsystems Applications I/O Manager Microkernel Processes Network Drivers Device Drivers Graphics Drivers Hardware Real-time OS7 Embedded System Devices 3-layered device Palm, PocketPC 2-layered device XBox User Applications Embedded OS Application Hardware Hardware Real-time OS8 Device Driver Device driver的唯一目的就是要將所有的硬 體隱藏. 他應該是整套軟體中唯一能和硬體溝通的窗 口. 他能直接讀取或寫入特定裝置控制及狀態暫 存器, 如果裝置發生中斷,那ISR也要整合到 裝置驅動程式. Real-time OS9 Importance of Operating Systems System API are the only interface between user applications and hardware OS code cannot allow any bug API are designed for general-purpose, not performance driven (e.g. network applications) Any break (e.g. invalid access) causes reboot The owner of OS technology controls the software & hardware industry Real-time OS10 Overview Operating Systems Real-Time Operating Systems RTLinux Real-time OS11 What is a real-time OS? An operating system with real-time features real-time operating system (general-purpose) real-time embedded system (device-specialized) “Real-time” does not mean speed, but keeping deadlines Overall deterministic behavior Guaranteed – typically short – response/reaction times Real-time OS12 Soft vs. Hard Real-Time Soft real-time requirements: Missing the deadline is unwanted, but is mot immediately critical Examples: multimedia streaming Hard real-time requirements: Missing the deadline results in a fundamental failure Examples: nuclear power plant controller, multimedia streaming Real-time OS13 Scheduler A component in OS that decides which task in the ready queue gets the CPU new task ready scheduler signal events waiting running terminating tasks Real-time OS14 Key Components in RTOS Process/Thread management – scheduler Resource management – synchronization FCFS scheduling algorithm no preemption no flexibility T1 = (0, 4, 10) == (Ready, Execution, Deadline) T2 = (1, 2, 4) Priority scheduling algorithms preemption allowed complexity resource blocking Real-time OS15 Variants of RTOS Pure real time OS RT-Application RTOS Hardware Real-time OS16 Pure RTOS Especially designed for real-time requirements Completely real-time compliant Often usable for simple architecture Advantage: no or little overhead Computing power, memory Disadvantage: limited functionality Example: eCos, Nucleus, pSOS, VxWork, QNX, OSE, Lyra Real-time OS17 OS Real-Time Extensions Extension of an OS by real-time components Cooperation between RT- and non-RT parts Advantages: rich functionality Disadvantage: No general real-time ability Computing and memory resources Example: RT-Linux, Solaris, Windows NT Real-time OS18 OS Real-Time Extensions Applications RT Applications Standard OS RT extension Hardware Real-time OS19 Windows CE Manufacturer: Microsoft PDA, Industrial embedded systems, game consoles Characteristics Win32 API Well-developed tool chains (Visual Studio) Most well-known 32 bit platforms with MMU Typical memory requirements : a few MB’s Relative high royalty Real-time OS20 Embedded Linux Open source Almost free: porting cost Massive development support from community Code quality Robust Brand name Internet platform IBM will invest 1 Billion per year for Linux Real-time OS21 A Typical Embedded Linux Browser Pocket Word ICQ JavaVM SDK E-mail MP3 PIM ICA GTK+ & GDK GUI DDK GW32 MultiLanguage Embedded Linux OS Screen Phone & XC WBT PDA Web Pad Real-time OS22 Embedded and Real-Time Linux Solution Providers Lynx -- Blue Cat Linux MontaVista -- Hard Hat Linux Lineo -- Embedix Linux FSMLabs -- RTLinux Zentropix -RealTime Linux Coollogic -- On-Channel Linux Redhat IBM Real-time OS23 Overview Operating Systems Real-Time Operating Systems RTLinux Real-time OS24 Linux Kernel Design focus: application throughput Linux use interrupt off critical section management Linux kernel is non-preemptable Linux compromises the timely selection of real-time processes for throughput Linux allow nested interrupts (depends on hardware) Real-time OS25 Hybrid Linux Kernel RTLiux (work around the problem) run Linux as the idle task real-time threads are executing in a real-time kernel interrupt off/on operations by Linux are emulated by the lower level kernel complex and difficult for application development Real-time OS26 RTLinux Architecture Init Bash Xterm System calls Interrupt or polling Real time task Linux Kernel Real time task Drivers I/O RT-Linux Scheduler I/O Interrupt Interrupt Hardware Real-time OS27 Writing RTLinux programs Writing modules: Linux module: an object file w/o main(), but use: init_module(): called when module is inserted into kernel cleanup_module(): called before module is removed Typically, init_module() registers a handler with kernel, or replaces one of kernel function Example: convert module.c into a module by: $ gcc -c {SOME-FLAGS} my_module.c insert created module, module.o, by: $ insmod module.o Removes the module by: $ rmmod module Real-time OS28 RTLinux program example The program executes once every second, and during each iteration it will print 'Hello World‘ #include <rtl.h> #include <time.h> #include <pthread.h> pthread_t thread; int init_module(void){ return pthread_create(&thread, NULL, thread_code, NULL); } void cleanup_module(void){ pthread_delete_np(thread); } Real-time OS29 RTLinux program example void * thread_code(void){ struct sched_param p; p.sched_priority = 1; pthread_setschedparam(pthread_self(), SCHED_FIFO, &p); pthread_make_periodic_np(pthread_self(), gethrtime(), 1000000000); while (1) { pthread_wait_np(); rtl_printf("Hello World\n"); } return 0; } Real-time OS30 Compiling and executing Can use a 'Makefile'. Locate and copy the rtl.mk file into the same directory as your hello.c and Makefile Compile the code with include rtl.mk all: hello.o clean: rm -f *.o hello.o: hello.c $(CC) ${INCLUDE} ${CFLAGS} –c hello.c $ make Use 'rtlinux' to insert: (must be 'root') $ rtlinux start hello Real-time OS31 Interprocess communication Only that part of a program which requires precise time restrictions should be written as a real-time process Others can be written and executed in user space User spaces processes are often easier to write, execute and debug than real-time threads There should be a way to communicate between user space Linux processes and real-time thread Consider the most important and common way of communication, the real-time FIFO Real-time OS32 Real-time FIFO Unidirectional queues: Usually, one end processes is the real-time thread and the other is a user space process Are character devices (/dev/rtf*) with a major number of 150 Real-time threads uses integers to refer to each FIFO (for example, 2 for /dev/rtf2) There is a limit to the number of FIFOs Functions, rtf_create(), rtf_destroy(), rtf_get(), rtf_put() for handling the FIFOs The Linux user process sees the real-time FIFOs as normal character devices Functions, open(), close(), read() and write() can be used on these devices Real-time OS33 IPC example program A C program (filename pcaudio.c) to play music (of just two tones) through the PC speaker For now, we need write to the character device /dev/rtf3 #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> #define DELAY 30000 void make_tone1(int fd) { static char buf = 0; write (fd, &buf, 1); } Real-time OS34 IPC example program void make_tone2(int fd) { static char buf = 0xff; write (fd, &buf, 1); } main() { } int i; int fd=open("/dev/rtf3", O_WRONLY); while (1) { for (i=0;i<DELAY;i++); make_tone1(fd); for (i=0;i<DELAY;i++); make_tone2(fd); } Real-time OS35 A real-time version #include <rtl.h> #include <pthread.h> #include <rtl_fifo.h> #include <time.h> #define FIFO_NO 3 #define DELAY 30000 pthread_t thread; int init_module(void) { return pthread_create(&thread, NULL, sound_thread, NULL); } void cleanup_module(void) { pthread_delete_np(thread); } Real-time OS36 A real-time version void * sound_thread(int fd) { static char buf = 0; pthread_make_periodic_np(pthread_self(), gethrtime(), 500000000); while (1) { pthread_wait_np(); buf = (int)buf^0xff; rtf_put(FIFO_NO, &buf, 1); } return 0; } Real-time OS37