Kernel Types System Calls Operating Systems Autumn 2013 CS4023 Kernel Types System Calls Outline 1 Kernel Types 2 System Calls System Call Overview Types of System Calls – §2.4, SGG CS4023 Kernel Types System Calls The OS Kernel The kernel is the central component of an OS It has complete control over everything that occurs in the system Kernel overview and comparison (courtesy of Wikipedia) CS4023 Kernel Types System Calls Monolithic Kernel Older monolithic kernels were written as a mixture of everything the OS needed, without much of a structure. The monolithic kernel offers everything the OS needs: CPU scheduling, memory management, multiprogramming, interprocess communication (IPC), device access, file systems, network protocols, etc. Newer monolithic kernels have a modular design, which offers run-time adding and removal of services. The whole kernel runs in "kernel mode", a processor mode in which the software has full control over the machine. The processes running on top of the kernel run in "user mode", in which programs have only access to the kernel services Modern OS with monolithic kernels: Linux, FreeBSD, NetBSD, Solaris CS4023 Kernel Types System Calls Microkernel Moves as much from the kernel into “user” space to run as processes Communication takes place between user modules using message passing Benefits Easier to extend a microkernel Easier to port the operating system to new architectures More reliable (less code is running in kernel mode) More secure Disadvantages Performance overhead of user space to kernel space communication Example microkernels: L4, Minix, QNX CS4023 Kernel Types System Calls Monolithic vs. Microkernel System Structure Monolithic Kernel Microkernel CS4023 Kernel Types System Calls Hybrid Kernels Similar to microkernels, except that they include additional code in kernel space so that such code can run more swiftly than it would were it in user space These kernels represent a compromise that was implemented by some developers before it was demonstrated that pure microkernels can provide high performance Hybrid kernels should not be confused with monolithic kernels that can load modules after booting (such as Linux) Example OS with hybrid kernels: Microsoft Windows NT, 2000 and XP, Windows 7, DragonFly BSD CS4023 Kernel Types System Calls OS Kernels Comparisons (courtesy Wikipedia) CS4023 Kernel Types System Calls Modules Best current methodology for OS design involves using OOP techniques to create a modular kernel Kernel has set of core components and links in additional services as required – either at boot time or run time Uses dynamically loadable modules Solaris and 7 types of loadable modules CS4023 Kernel Types System Calls Mac OS X Structure Apple’s Mac OS X uses a hybrid structure Top layers include application environments and services providing a graphical interface to applications Below these layers is kernel environment, which consists mainly of Mach microkernel: provides memory management, thread scheduling and support for RPCs and other types of IPC BSD kernel: file system support, networking CS4023 Kernel Types System Calls System Call Overview Types of System Calls – §2.4, SGG Outline 1 Kernel Types 2 System Calls System Call Overview Types of System Calls – §2.4, SGG CS4023 Kernel Types System Calls System Call Overview Types of System Calls – §2.4, SGG Overview System call: a request made by any arbitrary program to the OS for performing tasks which the said program does not have required permissions to execute System calls are generally available as assembly language instructions and they are usually listed in the various manuals used by the assembly-language programmers Mostly accessed by programs via a high-level Application Program Interface (API) rather than direct system call use Managed by run-time support library (set of functions built into libraries included with a compiler) CS4023 Kernel Types System Calls System Call Overview Types of System Calls – §2.4, SGG Overview (contd.) Three most common APIs are: Windows API POSIX API for POSIX-based systems (including virtually all versions of UNIX, Linux, and Mac OS X) Java API for the Java virtual machine (JVM) CS4023 Kernel Types System Calls System Call Overview Types of System Calls – §2.4, SGG Example Use of System Calls System call sequence to copy the contents of one file to another file CS4023 Kernel Types System Calls System Call Overview Types of System Calls – §2.4, SGG Linux open() Example The Linux open() function – a function (which uses a system call) for opening a file prior to reading / writing CS4023 Kernel Types System Calls System Call Overview Types of System Calls – §2.4, SGG Implementing System Calls Typically, a number associated with each system call System-call interface maintains a table indexed according to these numbers The system call interface invokes intended system call in OS kernel and returns status of the system call and any return values The caller need know nothing about how the system call is implemented Just needs to obey API and understand what OS will do as a result call Most details of OS interface hidden from programmer by API Managed by run-time support library (set of functions built into libraries included with compiler) CS4023 Kernel Types System Calls System Call Overview Types of System Calls – §2.4, SGG API – System Call – OS Relationship CS4023 Kernel Types System Calls System Call Overview Types of System Calls – §2.4, SGG Standard C Library Example CS4023 Kernel Types System Calls System Call Overview Types of System Calls – §2.4, SGG System Call Parameter Passing Three general methods used to pass parameters to the OS Simplest: pass the parameters in registers ...but what if there are more parameters than registers? Parameters stored in a block, or table, in memory, and address of block passed as a parameter in a register Each individual system call knows how to treat the table contents This approach taken by Linux and Solaris Parameters placed, or pushed, onto the stack by the program and popped off the stack by the operating system Block and stack methods do not limit the number or length of parameters being passed CS4023 Kernel Types System Calls System Call Overview Types of System Calls – §2.4, SGG Links to Explore How to start developing your own OS kernel Java API POSIX API Mac OS X API CS4023 Kernel Types System Calls System Call Overview Types of System Calls – §2.4, SGG Outline 1 Kernel Types 2 System Calls System Call Overview Types of System Calls – §2.4, SGG CS4023 Kernel Types System Calls System Call Overview Types of System Calls – §2.4, SGG Categories Process control File management Device management Information maintenance Communications CS4023 Kernel Types System Calls System Call Overview Types of System Calls – §2.4, SGG Process Control end, abort load, execute create process, terminate process get/set process attributes wait for time wait/signal event allocate and free memory CS4023 Kernel Types System Calls System Call Overview Types of System Calls – §2.4, SGG File Management create/delete file open, close read, write, reposition get/set file attributes CS4023 Kernel Types System Calls System Call Overview Types of System Calls – §2.4, SGG Device Management request device, release device read, write, reposition get/set device attributes logically attach or detach devices CS4023 Kernel Types System Calls System Call Overview Types of System Calls – §2.4, SGG Information Maintenance get/set time or date get/set system data number of current users amount of free memory (numerous other statistics) CS4023 Kernel Types System Calls System Call Overview Types of System Calls – §2.4, SGG Communication create, delete communication connection send, receive messages transfer status information attach or detach remote devices CS4023