Extensible Distributed Operating System for Reliable Control Systems
Total Page:16
File Type:pdf, Size:1020Kb
194 Extensible Distributed Operating System for Reliable Control Systems Katsumi Maruyama, Kazuya Kodama, Soichiro Hidaka, Hiromichi Hashizume National Institute of Informatics, 2-1-2 Hitotsubashi, Chiyoda-ku, Tokyo, Japan Email:{maruyama,kazuya,hidaka,has}@nii.ac.jp Abstract small monitor-like OSs are used. However, these monitor- like OSs lack program protection mechanisms, and program Since most control systems software is hardware-related, development is difficult. real-time-oriented and complex, adaptable OSs which help Therefore, an extensible/adaptable OS for control sys- program productivity and maintainability improvement are tems is required . We are developing a new OS character- in strong demand. ized by: We are developing an adaptable and extensible OS based on micro-kernel and multi-server scheme: each server runs • Use of an efficient and flexible micro-kernel (L4-ka). • Multi-server based modular OS. (Each OS service is in a protected mode interacting only via messages, and implemented as individual user-level process.) could be added/extended/deleted easily. Since this OS is • Robustness. Only the micro-kernel runs in kernel highly modularized, inter-process messaging overhead is a mode and in kernel space. Other modules run in a pro- concern. Our implementation proved good efficiency and tected user space and mode. maintainability. • Hardware driver programs in user-level process. • Flexible distributed processing by global message passing. 1. Introduction This OS structure proved to enhance OS modularity and ease of programming. However, inter-process messaging Most systems, from large scale public telephone switch- overhead should be considered . We measured the overhead, ing systems to home electronics, are controlled by software, and the overhead was proved to be small enough. and improvement of control program development produc- tivity is necessary . To facilitate the program development , suitable OSs are 2. Structure of this OS required . The followings are required to OSs for control systems. 2.1. The outline of this OS • Required features largely depend on target fields. Ex- Fig. 1 shows the structure of this OS. Thick square boxes tensible and adaptable OS is required . represent independent logical spaces. • Control systems, such as telephone switching systems, Micro kernel manages logical spaces (processes), multi require very severe multi and realtime processing ca- threads, message passing (IPC) and interrupts. Only the mi- pabilities. Very efficient multi-threading must be sup- cro kernel is executed in the kernel mode. ported. OS services, such as process management, file service, • Hardware controls are essential. network service, are implemented by user-level processes, In most OSs, driver programs run in kernel mode, and not by the kernel. They have their own logical space and are their program development is very difficult. executed in user mode. Even hardware drivers are located in • Control programs should be maintained for a very long user-level processes. Processes interact only via messages. time, adding new functions. Maintainability is of great importance . 2.2. L4 Micro kernel General purpose OSs are not sufficient for these require- We adopted L4-ka micro kernel [2] implemented at Uni- ments. Therefore, in large and severe systems, specially versity of Karlsruhe, because it is very efficient and flexible. designed OSs are used. In economical embedded systems, L4-ka is characterized by: 195 User-Space, User-Mode APL APL Drive Request Message Driver Library Library Thread Driver task in user mode Shell IRQ_THREAD IRQ_handler( ) Process File NW DP Manager Server Server Server Device Pager User-Space, User-Mode registers in I/O space. IRQ_Message L4 micro-kernel Kernel-Space, Kernel-Mode Figure 1. Multi server OS. Device L4 micro-kernel Interrupt 1. Efficient thread facilities. Figure 2. Driver program. 2. Efficient and flexible message passing facilities: mes- sages are sent synchronously to the destined threads by either value copy, buffer copy or page mapping. data transfers. 3. Flexible memory management. Prof. Liedtke et al. reported [1] a simple L4 message (inter address space, round trip) costs about 500 machine 2.3. Logical space and pager cycles, whereas the shortest Linux system call getpid() costs about 220 machine cycles, and that overall overhead Pager is a user-level process to assign page frames when will be several percent in comparison with monolithic OSs. pagefault occurs . By rewriting the pager, a user can provide To evaluate the block data transfer overhead, we mea- his own mapping algorithm. When a pagefault occurs , the sured it in the case of file service. In monolithic OSs, file kernel sends pagefault message to the pager. Pager assigns subsystem is included in the OS kernel; it accesses APL appropriate page frame, and reply message lets the kernel space directly and transfers data from/to APL by an efficient map new pages. string copy operation. In our OS, the file server is a user-level process, and it 2.4. Service servers cannot access APL space directly. Data must be transferred using IPC, which may result in performance degradation. Process manager manages allocation/freeing of logical We measured the overhead and proved it small enough. space and processes. File server and Network server are implemented by rewriting those of Minix-OS [5] . 3.1. Buffer cache in file server 2.5. Driver program File server adopts buffer caches to improve file access Fig. 2 shows the driver program structure. Each device speed (Fig. 3). Data blocks in HDD are identified by device driver has a driver thread which waits for request mes- number and block number. Recently accessed data blocks sages, and an IRQ thread which waits for interrupt mes- are cached in buffer caches, size of which is 1KB each. sages. Drivers are executed in user mode. This helps facili- Buffer caches are located using hash table whose keys are tating their development. When the L4 kernel notices hard- device and block numbers. Data is transferred between an ware interrupt, it sends an interrupt message to the driver, APL buffer and one or more buffer cache entries in FS. and driver action is activated. In our implementation, HDD driver and ETH driver are 3.2. IPC in L4 micro kernel included in File server and INET server, respectively. They can be separate processes, because drivers interact only by To transfer large volume data between processes, L4 pro- messages. vides an efficient buffer copy mechanism using temporal page mapping, and the following schemes can be used. 3. IPC overhead and file server 1. Straight transfer In this OS structure, IPC efficiency determines the sys- Fig. 4 shows the program to transfer data block “a1” tem efficiency. IPC overhead lies in system calls and block of process-A to buffer “b1” of process-B. The sender 196 Send-side Recv-side File Server sendDesc recvDesc 3 1 Hash Data to be sent Table Receive buffer Buffer caches s1 r1 a1 size=s1 b1 s2 a2 size=r1 s3 size=s2 a3 Buffer Cache Buffer Header size=s3 ipc_send(dest, &sendDesc ,,,); ipc_receive(src, &recvDesc ,,,); HDD Driver HDD is accessed only when Figure 5. Scatter/gather buffer transfer. target blocks are not found HDD in buffer caches. Figure 3. UNIX file subprogram. Application program buf n = read(fd, buf, sz); Send-side Recv-side sendDesc recvDesc (1) Prepare gather message 1 1 reception. ipc_receive(....);. Data to be sent Receive buffer s1 r1 (4) Data gather copy Single IPC a1 b1 size=s1 size=r1 (5) Complete Gather ipc_send(dest, &sendDesc ,,,); ipc_receive(src, &recvDesc ,,,); (2) Request message Figure 4. Straight buffer transfer. Buffer caches File Server (Block size = 1 KB) prepares the send descriptor “sendDesc” and invokes ipc_send(). The receiver prepares the receive de- scriptor “recvDesc” and invokes ipc_receive(). Figure 6. File read using scatter/gather trans- fer. 2. Scatter/gather transfer Sender and receiver can specify multiple buffers to 3.4. Evaluation send/receive data. Data is transferred in one IPC, au- tomatically scattering and gathering data according to To evaluate the file-read IPC overhead, the following test the send/recv descriptors. In Fig. 5, data blocks “a1”, program is used: “a2” and “a3” of process-A are transfered to the buffer “b1” of process-B. for (i = 0; i < 100000; i++) { lseek(fd, 0, 0); read(fd, buf, size); 3.3. File server and data transfer } This measures the time to transfer data from file server Let’s assume that APL is requesting to read block data of buffer caches to APL space (CPU=800MHz Pentium-3, L2 2.5KB. As each buffer cache is 1KB in size, requested data cache size= 512KB). At the first access, all data are copied is cached in 3 buffer caches. Therefore 3 IPCs are required on buffer caches from HDD, so that HDD access time are in a straight transfer. amortized. In the scatter/gather transfer, data in multiple buffer Fig. 7 shows the results. The same program is tested on caches can be transferred in one IPC. Fig. 6 shows this Minix-OS (Version 2.0) and Linux (Kernel version 2.2.12), scheme. and results are shown as Minix(3) and Linux(5), respectively. 197 14 (A) NFS: Network File System (1)Straight Application Program (3)Minix 12 (4)Memcpy (2)Scatter/gather Client File System (5)Linux NFS Server 10 (Stateless) Hash Table Message 8 HDD 6 Buffer caches 4 Time (sec/100000-cycles) File Server 2 Application Hash Program 0 Table 0 5 10 15 20 25 30 Data size (KB) Message Buffer caches Library Figure 7. Inter-process communication over- cache HDD head. (B) This System Figure 8. Distributed File Server. In Minix, file server delegates copy to system task who has direct access to resident physical address space of APLs and Modularity and Extensibility New functions, which re- servers, so no IPC is used for data transfer per se.