Yeditepe University Department of Computer Engineering CSE 232 Systems Programming LECTURE NOTES #8 INTRODUCTION TO OPERATING SYSTEMS 1. Introduction A computer system can be divided into 4 components: - the hardware (CPU, memory, input/output devices, etc.), the operating system, the system programs (word processors, spread sheets, accounting softwares, compilers,…) the application programs. Application Programs System Programs Operating System Hardware Figure 1. Hierarchy of computer components 1 2. Computer System Structure printer disk CPU disk disk controller printer controller tape-drive controller system bus memory controller memory Figure 2. Hardware of a computer system 2.1. Run-time Environment - Contains a set of service routines that are available for use during program execution (eg. I/O functions: Program invokes a service routine, OS takes care of status testing, counting of bytes transferred, error checking) - Provides facilities for managing the resources (eg. CPU is switched among user jobs according to some predefined policy) 2.2. Input and Output (I/O) I/O devices: block devices character devices I/O types: Programmed I/O Interrupt driven I/O (Interrupt service routine) Direct memory access (DMA) 2 Example 1: Keyboard Keyboard interface (controller) Bus Port 0 (Status) CPU Keyboard electronics Port 1 (Data) Figure 3. Keyboard controller Port: an addressable register - input only ports: CPU only reads from it - output only ports: CPU only writes to it - ports for both input and output Every port has a number. A port can be referred to in an assembly language program by its number, such as: IN 1 Status port: checked by the CPU to see if a key has been pressed and data is ready to be sent to CPU Data port: when a key is pressed, its ASCII code is found in the data port Polling: CPU continually examines the status port until a key is pressed (Programmed I/O) Ex: Reading a character from keyboard KEYIN: IN ANA JZ IN RET 0 A KEYIN 1 ; read status port into A ; test A (10H – key is pressed, 00H – otherwise) ; jump if 00H ; take data into A 3 Example 2: Printer Printer interface (controller) Bus Port 2 (Control) CPU Printer interface electronics Port 3 (Data) Figure 4. Printer controller Data port: character to be printed is put in this port Control port: when the character is ready in the data port, strobe signal (that tells the printer that it can take the character in data port) is sent. A timing loop must be used in the CPU so that the characters are never passed to the printer at a rate faster than it can accept. Special characters: - carriage return: causes the printer head to move to the left side of the paper - line feed: causes the printer to advance the paper by one line Ex: Writing a character to printer CHAROUT: OUT CALL MVI OUT MVI OUT RET 3 DELAY A, 10H 2 A, 00H 2 ; put char. in accumulator into output port ; make sure printer is ready ; set up strobe word (10H – char. in data port is available for printing) ; put it into control port to start strobe signal to printer ; reset strobe (00H – char. in data port is not available for printing) ; put it into control port to finish strobe signal 4 Interrupt Processing An interrupt is a signal that causes the computer to alter its normal flow of instruction execution. eg. divide by zero, time out, I/O operation The interrupt automatically transfers control to an interrupt processing routine which takes some action in response to the condition that caused the interrupt, and then control is returned to the program at which its execution was interrupted. program interrupt routine interrupt occurs Some interrupt types: - I/O interrupt: Generated by an I/O channel or device. - Program interrupt: Generated by some condition that occurs during program execution (eg. divide by zero, illegal machine instruction, etc.) - Timer interrupt: Generated by an internal timer within the CPU - Supervisor call interrupt (SVC): A SVC instruction generates an interrupt that transfers control to an OS service routine. The CPU switches from user mode to supervisor mode. When an interrupt occurs, the status of the CPU is saved (registers, program counter etc.) and the interrupt service routine is executed. After the interrupt is processed, they are restored by the interrupt routine and control is transferred to the program. Saving and restoring the processor status is called context switching. Interrupt priority: During the processing of an interrupt, all interrupts of equal or lower priority are inhibited, higher priority interrupts are allowed. At the end of an interrupt, if there are more than one interrupt pending, one with the highest priority is executed. Interrupt masking, is used to prevent certain interrupts from occurring while the first one is being processed. 5 Example 3: Disk Bus request line CPU Disk controller RAM R/W line DMA Device other electronics interface registers Address bus Data bus Control bus Figure 7. Disk controller Interface registers Status port Control port DMA address registers DMA (Direct Memory Access): is a procedure for transferring data directly between controller and memory without the help of CPU. DMA device: is like a separate CPU with functions related to data transfer, such as: - shuts the CPU down for short periods - seizes control of the system bus - transfers data between memory and external device without the intermediation of CPU Disk controller: accepts commands from CPU such as: - select disk drive - set up DMA registers - return current sector address - return current track address - move head in/out one track - move head to track 0 - read/write current sector Status port: contains the result of a query from CPU or status Control port: commands for the controller are placed DMA address registers: they receive addresses from CPU 6 3. Operating Systems An operating system is a program that acts as an intermediary between a user of a computer and the computer hardware. Main functions of an operating system are: 1. The operating system is an interface between the user and the computer provides access to the to the utility programs such as editors, debuggers, etc. starts the execution of the programs provides low level I/O routines to the user controls access to the files provides access functions for the protection of the resources and data from unauthorized users detects errors such as memory error, device failure, arithmetic overflow, etc. and provides error handling routines collects performance statistics 2. The operating system manages the resources of the system controls and allocates resources System resources are memory, CPU, I/O devices, etc. 3.1. Historical Review of Operating Systems Monitors - Monitors are the simplest operating systems. Single user systems Allow user interaction Simple Batch Systems The user prepares a job (which consists of program, data and some control information), submits it to the computer operator and receives the output after the program is executed. The job is usually punched on cards and the output is usually printed. To speed up processing, jobs with similar needs can be batched together and run as a group. Thus, the operator sorts the programs with similar requirements into batches, runs each batch and sends the output to the programmer. Therefore in a batch operating system there is a lack of interaction between the user and the job while that job is executing. The operating system is always in memory and its job is to transfer control automatically from one job to the next. As the I/O devices are slower than the speed of the CPU (the difference may be three orders of magnitude or more), the CPU is often idle. For using the system more efficiently, cards can be 7 read from the card reader onto the disk. The operating system records their location on disk in a table. When a job requests the printer, the output is copied into a system buffer and is written to the disk. When the job is completed, the output is printed. This form of processing is called spooling (simultaneous peripheral operation on line). Spooling is also used for processing data at remote sites. The CPU send the data via communication paths to a remote site and the processing is done with no CPU intervention. The CPU just needs to be notified when the processing is completed, so that it can spool the next batch of data. Spooling overlaps the I/O of one job with the computation of other jobs. During the execution of one job, the spooler may be reading the input of another job while printing the output of a different job. disk card reader I/O line printer CPU Figure 8. Spooling Multiprogrammed Batch Systems Spooling provides a job pool on disk. In order to increase CPU utilization, jobs in the pool may be scheduled in different ways, such as, first-come first-served, shortest job first, priority basis, etc. The most important aspect of job scheduling is the ability to multiprogram. The operating system keeps several jobs (a subset of jobs in the job pool) in memory at a time. During the execution of one job, if it waits for an I/O operation to complete, the operating system switches to and executes another job. In this way, as long as there is always some job to execute, the CPU will never be idle. Time-Sharing Systems In multiprogrammed batch systems, the user cannot interact with the program during its execution. In time-sharing or multitasking systems, multiple jobs are executed by the CPU switching between them, but the switching occurs so frequently that the user may interact with each program while it is running. Time-sharing operating systems: - uses CPU scheduling and multiprogramming, - uses time-slice mechanism, - allows interactive I/O, - allows many users to share the computer simultaneously. 8 2.5. Personal Computer (PC) Systems A computer system dedicated to a single user is referred to as a PC. In the first PCs, the operating system was neither multiuser nor multitasking (eg. MS-DOS). The operating system concepts used in mainframes and minicomputers, today, are also used in PCs (eg. UNIX, Microsoft Windows NT, Macintosh OS). 2.6. Parallel Systems Parallel systems have more than one processor. In multiprocessor systems (tightly coupled), processors are in close communication, such as they share computer bus, clock, memory or peripherals. 2.7. Distributed Systems Distributed systems also have more than one processor. Each processor has its local memory. Processors communicate through communication lines (eg. Telephone lines, high-speed bus, etc.). Processors are referred to as sites, nodes, computers depending on the context in which they are mentioned. Multicomputer systems are loosely coupled. Example applications are e-mail, web server, etc. 2.8. Real-time Systems Real-time systems are special purpose operating systems. They are used when there are rigid time requirements on the operation of a processor or the flow of data, and thus it is often used as a control device in a dedicated application (eg. fuel injection systems, weapon systems, industrial control systems, …). It has well defined, fixed time constraints. The processing must be done within the defined constraints, or the system fails. Two types: - Hard real-time systems guarantee that critical tasks complete on time. - In Soft real-time systems, a critical real-time task gets priority over other tasks, and the task retains that priority until it completes. 3.2. User Interfaces for Operating Systems Include: - simple command language - a menu - graphical representation of programs and data - I/O routines (service routines) 9 Operating System Features Bootstrap program: initializes CPU, loads OS kernel into memory OS waits for event, signaled by an interrupt either from a hardware or software (system call, monitor call), interrupt vector Dual mode of operation: user mode, kernel mode (supervisor mode) Hardware Protection (base, limit registers) user program 1 User programs run in user mode user program 2 Kernel call 4 3 1 service procedure dispatch table Operating system runs in kernel mode 2 Figure 9. How a system call can be made BIOS (Basic Input Output System) It is an interface between the operating system and hardware. Changes from one computer to another. Ex: - transfers a single character to printer - reads a sector from disk BIOS routines of CP/M: BOOT WBOOT CONST CONIN CONOUT LIST PUNCH HOME READER SELDSK SELTRK SETSEC SETDMA READ WRITE 10 To call a BIOS routine: Jump Table: (found at the beginning of BIOS routines) 1 byte BBASE JMP JMP JMP JMP … … To call WBOOT: 2 bytes BOOT WBOOT CONST CONIN CALL BBASE+3 11 4. Some Operating System Functions 4.1. Process Scheduling CPU is assigned to processes (tasks) by the operating system. In a multiprogramming system, process scheduling is the management of the CPU by switching control among the various processes according to some scheduling policy. blocked waiting for some event awaited event has occurred time slice expired running ready dispatch 3.2. Memory Management Real Memory Real memory is divided into partitions, each process is assigned to a different partition: - Fixed partitions - Variable partitions - Relocatable partitions Virtual Memory In a virtual memory system, user programs are allowed to use a large continuous virtual address space (virtual memory), which may be even larger than the total amount of the real memory available. Portions of the virtual memory are mapped to the real memory as they are needed by the program. Demand paging is one of the mapping methods. This mapping process is completely invisible to the user. 12 Virtual memory Real memory mapping disk virtual address mapping real address 3.3. File Management File management function of an operating system is an intermediate stage between the user program and the I/O supervision. user prog. record file information logical request file manager block physical request I/O supervisor I/O interrupt supervisor I/O I/O channel 13 3.4. Job Scheduling Job scheduling is the task of selecting the next user job to begin execution. In a multiprogramming environment, job scheduler specifies the order of job execution. input queue job scheduler active jobs dispatcher CPU 3.5. Resource Allocation The resources such as CPU, memory, I/O channels are needed by all user jobs, and their allocation is handled automatically by the operating system. Some problems to be handled by the operating system are: - mutual exclusion - process synchronization, - deadlock avoidance - security and protection 14