UNIT I PROCESSES AND THREADS

Size: px
Start display at page:

Download "UNIT I PROCESSES AND THREADS"

Transcription

1 UNIT I PROCESSES AND THREADS Introduction to operating systems review of computer organization operating system structures system calls system programs system structure virtual machines. Processes: Process concept Process scheduling Operations on processes Cooperating processes Interprocess communication Communication in client-server systems. Case study: IPC in Linux. Threads: Multi-threading models Threading issues Case Study: Pthreads library OBJECTIVE: An operating system is a program that manages the computer hardware. Mainframe computer systems were the first computers used to tackle many commercial and scientific applications. Multiprocessor systems have more than one processor in close communication, sharing the computer bus, the clock, and sometimes memory and peripherals devices. Distributed systems depend on networking for their functionality. Clustered systems gather together multiple CPUs to accomplish computational work. Another form of a special-purpose operating system is the real-time system. Handheld system includes personal digital assistance (PDAs), such as palm-pilots or cellular telephones with connectivity to a network such as the Internet. System calls provide the interface between a process and the operating system. System programs provide a convenient environment for program development and execution. In the concept of a virtual machine the layered approach is taken to its logical conclusion. A process is a program in execution. A thread is a flow of control within a process, a multithreaded process contains several different flows of control within the same address space.

2 1.Introduction: Preface: This chapter gives information about what is an operating system, history of operating systems, services offered by the operating system in a brief manner, functions of OS, components and history of OS. An operating system is a program that acts as an intermediary between the user of a computer and the computer hardware and provides an environment in which a user can execute programs in a convenient and efficient manner. An operating system (commonly abbreviated to either OS or O/S) is an interface between hardware and user; an OS is responsible for the management and coordination of activities and the sharing of the resources of the computer. The operating system acts as a host for computing applications that are run on the machine. As a host, one of the purposes of an operating system is to handle the details of the operation of the hardware. An operating system is a program that managers the computer hardware and provides a basis for application programs and acts as an intermediary between a user of a computer and the computer hardware. The Operating System is the one program running at all times on the computer with all else being application programs. 1.1 Objectives of OS: The three main objectives of an operating system are, 1. Convenience The OS must be convenient to the programmer or user 2. Efficiency The OS must provide the facility that the resources of the computer should be used in an efficient and effective manner by the user. 3. Ability to evolve The OS must be constructed in such a way that it should permit effective development, testing and introduction of new system functions without interfering with service.

3 1.2 Components of OS: There are three main components available for the OS. They are 1. Control programs 2. System service programs 3. Utility programs A. Control Programs control & maintain the operation of computer 1. Initial program loader (IPL) Program in the form of firmware (software stored in ROM) Computer ON, then electronic chip is automatically activated & IPL read the boot sector routine (BSR), reside in the primary memory B. System Service Programs Support control programs and they are divided into three portions. They are 1. Linkage Editor 2. Librarian 3. Input/Output control system C. Utility Programs are utilized to control the system directly E.g. MS-DOS: Fdisk, FORMAT, ATTRIB, BACKUP, FIND 1.3 Types of Operating Systems: Within the broad family of operating systems, there are generally four types, categorized based on the types of computers they control and the sort of applications they support. The categories are: Real-time operating system (RTOS) - Real-time operating systems are used to control machinery, scientific instruments and industrial systems. An RTOS typically has very little userinterface capability, and no end-user utilities, a very important part of an RTOS is managing the resources of the computer so that a particular operation executes in precisely the same amount of time, every time it occurs.

4 Single-user, single task - As the name implies, this operating system is designed to manage the computer so that one user can effectively do one thing at a time. The Palm OS for Palm handheld computers is a good example of a modern single-user, single-task operating system. Single-user, multi-tasking - This is the type of operating system most people use on their desktop and laptop computers today. Microsoft's Windows and Apple's Mac OS platforms are both examples of operating systems that will let a single user have several programs in operation at the same time. For example, it is possible for a Windows user to write a note in a word processor while downloading a file from the Internet and can able to print a text of an message in the printer. Multi-user - A multi-user operating system allows many different users to take advantage of the computer's resources simultaneously. The operating system must make sure that the requirements of various users are balanced, and that each of the programs they are using has sufficient and separate resources so that a problem with one user doesn't affect the entire community of users. UNIX, VMS and mainframe operating systems, such as MVS, are examples of multi-user operating systems. Operating system in user point of view: According to the user s point of view, the system is designed for one user to monopolize its resources, to maximize the work that the user is performing. Here the OS is designed mostly for ease of use. The OS is designed to maximize resource utilization, to assure that all available CPU time, memory and I/O are used efficiently. For those users who are working in workstations connected to networks and shares servers, files, the OS is designed to compromise between individual usability and resource utilization. For individual users, the OS is designed for individual usability. For embedded systems which are in home devices and automobiles which may have numeric keypad and indicator lights the OS are designed to run without user intervention. Operating system in system point of view: From the computer s point of view the OS is the program that is most intimate with the hardware. The OS is a resource allocator. A computer system has many resources and the OS acts as the manager of these resources. The OS must decide how to allocate the resources to specific programs and users by facing numerous conflicting requests to operate the computer system efficient and fast.

5 An operating system is a control program and it manages the execution of user programs to prevent errors and improper use of the computer. It is especially concerned with the operation and control of I/O devices. Operating system goals: Convenient to the user Efficient operation of the computer system Optimal use of computer resources Provision to future enhancement 1.4 History of OS: or Evolution of operating systems: The first generation: Serial processing: ( ) The first generation computers uses mechanical relays but were very slow, with cycle times measured in seconds. Then relays were replaced by vacuum tubes. In these days a single group of people designed, built, programmed, operated and maintained each machine. By this time operating systems were unheard of. The mode of operation was the programmer has to sign up for a block of time on the signup sheet on the wall, then come down to the machine room, insert his or her plug board into the computer. This mode of operation is termed as serial processing. That means users have access to the computer in series. But various system software tools were developed to attempt to make serial processing more efficient. These include libraries of common functions, linkers, loaders, debuggers and I/O driver routines. The second generation: Simple batch systems: ( ) The introduction of the transistor made computers reliable. To avoid the wasted time in scheduling and setup the concept of batch operating system was developed. The concept was subsequently refined and implemented. The central idea behind the simple batch processing scheme was the use of a piece of software known as the monitor. With the use of this type of operating system, the user no longer has direct access to the machine. To run a job a programmer would first write the program on paper then punch it on cards. Then the card deck should be brought to the input room and

6 hand it to one of the operators and has to wait until the output was ready. After the job was finished by the computer, an operator has to go to the printer and carry the output to the programmer. After finishing a job the next job is automatically loaded into the system by the monitor. The third generation: Multiprogrammed batch systems: ( ) By this time OS/360 evolved which replaced copying cards to tape. The main advantage introduced here is multiprogramming. That is when the current job paused to wait for a tape or other I/O) operation to complete, the CPU will be idle until the I/O finished. The solution evolved to avoid the CPU idle time was the memory is partitioned into several pieces, with a different job in each partition. When one job is waiting for I/O to complete, another job could be using the CPU. So the waiting time of the CPU can be avoided. Also the memory can be expanded to hold three, four or more programs and switch among all of them. This process is known as multiprogramming or multitasking. Another advantage in the third generation systems was spooling where one job is loaded into the empty partition of the memory by the operating system when the previous job finished. The fourth generation: Time sharing systems: (1980 Present) By this time the DOS (Disk Operating System) had evolved. These operating systems were based on the users typing the command to the computer system through the keyboard. To avoid this GUI came into existence. This was user friendly and those who do not know about computers can also operate the system using GUI. Since multiprogramming allows the processor to handle multiple batch jobs at a time, multiprogramming can be used to handle multiple interactive jobs. This technique is referred as time sharing. In a time sharing system multiple users access the system through terminals, with the operating system interleaving the execution of each user program in a short burst or quantum of computation.

7 Batch multiprogramming vs time sharing: Batch Multiprogramming Time Sharing Principal objective Maximize processor use Minimize response time Source of directives to operating system Job control language commands provided with the job Commands entered at the terminal. The evolution of other operating systems is as follows. 1. Macintosh 2.Windows for personal computers 3.Windows NT 4. Windows Me 5.UNIX 6. LINUX 1.5 Mainframe Systems: Mainframe computer systems were the first computers used to tackle many commercial and scientific applications. In this section, we trace the growth of mainframe systems from simple batch systems, where the computer runs one -and only one-application, to time-shared systems, which allow for user interaction with the computer system Batch Systems: Early computers were physically enormous machines run from a console. The common input devices were card readers and tape drives. The common output devices were line printers, tape drives, and card punches. The user did not interact directly with the computer systems. Rather, the user prepared a job -which consisted of the program, the data, and some control information about the nature of the job (control cards)-and submitted it to the computer operator. The job was usually in the form of punch cards. At some later time (after minutes, hours, or days), the output appeared. The output consisted of the result of the program, as well as a dump of the final memory and register contents for

8 debugging. The operating system in these early computers was fairly simple. Its major task was to transfer control automatically from one job to the next. The operating system was always resident in memory. To speed up processing, operators batched together jobs with similar needs and ran them through the computer as a group. Memory layout for a simple batch system. Thus, the programmers would leave their programs with the operator. The operator would sort programs into batches with similar requirements and, as the computer became available, would run each batch. The output from each job would be sent back to the appropriate programmer. In this execution environment, the CPU is often idle, because the speeds of the mechanical I/O devices are intrinsically slower than are those of electronic devices. Even a slow CPU works in the microsecond range, with thousands of instructions executed per second. A fast card reader, on the other hand, might read 1200 cards per minute (or 20 cards per second). Thus, the difference in speed between the CPU and its I/O devices may be three orders of magnitude or more. Over time, of course, improvements in technology and the introduction of disks resulted in faster I/O devices. However, CPU speeds increased to an even greater extent, so the problem was not only unresolved, but exacerbated. The introduction of disk technology allowed the operating system to keep all jobs on a disk, rather than in a serial card reader. With direct access to several jobs, the operating system could perform job scheduling, to use resources and perform tasks efficiently.

9 1.5.2 Multiprogrammed Systems The most important aspect of job scheduling is the ability to multiprogram. A single user cannot, in general, keep either the CPU or the 1/0 devices busy at all times. Multiprogramming increases CPU utilization by organizing jobs so that the CPU always has one to execute. The idea is as follows: The operating system keeps several jobs in memory simultaneously. This set of jobs is a subset of the jobs kept in the job pool-since the number of jobs that can be kept simultaneously in memory is usually much smaller than the number of jobs that can be in the job pool. Memory layout for a multiprogramming system. The operating system picks and begins to execute one of the jobs in the memory. Eventually, the job may have to wait for some task, such as an I/O operation, to complete. In a non-multiprogrammed system, the CPU would sit idle. In a multiprogramming system, the operating system simply switches to, and executes, another job. When that job needs to wait, the CPU is switched to another job, and so on. Eventually, the first job finishes waiting and gets the CPU back. As long as at least one job needs to execute, the CPU is never idle. This idea is common in other life situations. A lawyer does not work for only one client at a time. While one case is waiting to go to trial or have papers typed, the lawyer can work on another case. If she has enough clients, the lawyer will never be idle for lack of work. (Idle lawyers tend to become politicians, so there is a certain social value in keeping lawyers busy.) Multiprogramming is the first instance where the operating system must make decisions for the users. Multiprogrammed operating systems are therefore fairly sophisticated. All the jobs that enter the system are kept in the job pool. This pool consists of all processes residing on disk awaiting allocation of main memory. If several jobs are ready to be brought into memory, and if there is not enough room for all of them, then the system must choose among them.

10 When the operating system selects a job from the job pool, it loads that job into memory for execution. Having several programs in memory at the same time requires some form of memory management. In addition, if several jobs are ready to run at the same time, the system must choose among them.. Finally, multiple jobs running concurrently require that their ability to affect one another be limited in all phases of the operating system, including process scheduling, disk storage, and memory management. These considerations are discussed throughout the text Time-Sharing Systems: Multiprogrammed, batched systems provided an environment where the various system resources (for example, CPU, memory, peripheral devices) were utilized effectively, but it did not provide for user interaction with the computer system. Time sharing (or multitasking) is a logical extension of multiprogramming. The CPU executes multiple jobs by switching among them, but the switches occur so frequently that the users can interact with each program while it is running. An interactive (or hands-on) computer system provides direct communication between the user and the system. The user gives instructions to the operating system or to a program directly, using a keyboard or a mouse, and waits for immediate results. Accordingly, the response time should be short typically within 1 second or so. A time-shared operating system allows many users to share the computer simultaneously. Since each action or command in a time-shared system tends to be short, only a little CPU time is needed for each user. As the system switches rapidly from one user to the next, each user is given the impression that the entire computer system is dedicated to her use, even though it is being shared among many users. A time-shared operating system uses CPU scheduling and multiprogramming to provide each user with a small portion of a time-shared computer. Each user has at least one separate program in memory. A program loaded into memory and executing is commonly referred to as a process. When a process executes, it typically executes for only a short time before it either finishes or needs to perform I/O. I/O may be interactive; that is, output is to a display for the user and input is from a user keyboard, mouse, or other device. Since interactive I/O typically runs at "people speeds," it may take a long time to complete. Input, for example, may be bounded by the user's typing speed; seven characters per second is fast for people, but incredibly slow for computers. Rather than let the CPU sit idle when this interactive input takes place, the operating system will rapidly switch the CPU to the program of some other user. Time-sharing operating systems are even more complex than multiprogrammed operating systems. In both, several jobs must be kept

11 simultaneously in memory, so the system must have memory management and protection. To obtain a reasonable response time, jobs may have to be swapped in and out of main memory to the disk that now serves as a backing store for main memory. A common method for achieving this goal is virtual memory, which is a technique that allows the execution of a job that may not be completely in memory. The main advantage of the virtual-memory scheme is that programs can be larger than physical memory. Further, it abstracts main memory into a large, uniform array of storage, separating logical memory as viewed by the user from physical memory. This arrangement frees programmers from concern over memory-storage limitations. Time-sharing systems must also provide a file system. The file system resides on a collection of disks; hence, disk management must be provided. Also, time-sharing systems provide a mechanism for concurrent execution, which requires sophisticated CPUscheduling schemes. To ensure orderly execution, the system must provide mechanisms for job synchronization and communication, and it may ensure that jobs do not get stuck in a deadlock, forever waiting for one another The idea of time sharing was demonstrated as early as 1960, but since time-shared systems are difficult and expensive to build, they did not become common until the early 1970s. Although some batch processing is still done, most systems today are time sharing. Accordingly, multiprogramming and time sharing are the central themes of modern operating systems, and they are the central themes of this book. 1.6 Desktop Systems: Personal computers PCs appeared in the 1970s. During their first decade, the CPUs in PCs lacked the features needed to protect an operating system from user programs. PC operating systems therefore were neither multi-user nor multitasking. However, the goals of these operating systems have changed with time; instead of maximizing CPU and peripheral utilization, the systems opt for maximizing user convenience and responsiveness. These systems include PCs running Microsoft Windows and the Apple Macintosh. The MS-DOS operating system from Microsoft has been superseded by multiple flavors of Microsoft Windows, and IBM has upgraded MS-DOS to the OS/2 multitasking system. The Apple Macintosh operating system has been ported to more advanced hardware, and now includes new features, such as virtual memory and multitasking. With the release of MacOS X, the core of the operating system is now based on Mach and FreeBSD UNIX for scalability, performance, and features, but it retains the same rich GUI. Linux, a UNIX-like operating system available for PCs, has also become popular recently.

12 Operating systems for these computers have benefited in several ways from the development of operating systems for mainframes. Microcomputers were immediately able to adopt some of the technology developed for larger operating systems. On the other hand, the hardware costs for microcomputers are sufficiently low that individuals have sole use of the computer, and CPU utilization is no longer a prime concern. Thus, some of the design decisions made in operating systems for mainframes may not be appropriate for smaller systems Other design decisions still apply. For example, file protection was, at first, not necessary on a personal machine. However, these computers are now often tied into other computers over local-area networks or other Internet connections. When other computers and other users can access the files on a PC, file protection again becomes a necessary feature of the operating system. The lack of such protection has made it easy for malicious programs to destroy data on systems such as MS-DOS and the Macintosh operating system. These programs may be self-replicating, and may spread rapidly via worm or virus mechanisms and disrupt entire companies or even worldwide networks. Advanced timesharing features such as protected memory and file permissions are not enough, on their own, to safeguard a system from attack. Recent security breaches have shown that time and again. 1.7 Multiprocessor Systems: Most systems to date are single-processor systems; that is, they have only one main CPU. However, multiprocessor systems (also known as parallel systems or tightly coupled systems) are growing in importance. Such systems have more than one processor in close communication, sharing the computer bus, the clock, and sometimes memory and peripheral devices. Multiprocessor systems have three main advantages. 1. Increased throughput. By increasing the number of processors, we hope to get more work done in less time. The speed-up ratio with N processors is not N; rather, it is less than N. When multiple processors cooperate on a task, a certain amount of overhead is incurred in keeping all the parts working correctly. This overhead, plus contention for shared resources, lowers the expected gain from additional processors. Similarly, a group of N programmers working closely together does not result in N times the amount of work being accomplished.

13 2. Economy of scale. Multiprocessor systems can save more money than multiple single-processor systems, because they can share peripherals, mass storage, and power supplies. If several programs operate on the same set of data, it is cheaper to store those data on one disk and to have all the processors share them, than to have many computers with local disks and many copies of the data. 3. Increased reliability. If functions can be distributed properly among several processors, then the failure of one processor will not halt the system, only slow it down. If we have ten processors and one fails, then each of the remaining nine processors must pick up a share of the work of the failed processor. Thus, the entire system runs only 10 percent slower, rather than failing altogether. This ability to continue providing service proportional to the level of surviving hardware is called graceful degradation. Systems designed for graceful degradation are also called fault tolerant. Continued operation in the presence of failures requires a mechanism to allow the failure to be detected, diagnosed, and, if possible, corrected. The Tandem system uses both hardware and software duplication to ensure continued operation despite faults. The system consists of two identical processors, each with its own local memory. The processors are connected by a bus. One processor is the primary and the other is the backup. Two copies are kept of each process: one on the primary processor and the other on the backup. At fixed checkpoints in the execution of the system, the state information of each job including a copy of the memory image-is copied from the primary machine to the backup. If a failure is detected, the backup copy is activated and is restarted from the most recent checkpoint. This solution is expensive, since it involves considerable hardware duplication. The most common multiple-processor systems now use symmetric multiprocessing (SMP), in which each processor runs an identical copy of the operating system, and these copies communicate with one another as needed. Some systems use asymmetric multiprocessing, in which each processor is assigned a specific task. A master processor controls the system; the other processors either look to the master for instruction or have predefined tasks. This scheme

14 defines a master-slave relationship. The master processor schedules and allocates work to the slave processors. SMP means that all processors are peers; no master-slave relationship exists between processors. Each processor concurrently runs a copy of the operating system. Figure 1.4 illustrates a typical SMP architecture. An example of the SMP system is Encore's version of UNIX for the Multimax computer. This computer can be configured such that it employs dozens of processors, all running copies of UNIX. The benefit of this model is that many processes can run simultaneously-n processes can run if there are N CPUs-without causing a significant deterioration of performance. However, we must carefully control I/O to ensure that the data reach the appropriate processor. Also, since the CPUs are separate, one may be sitting idle while another is overloaded, resulting in inefficiencies. These inefficiencies can be avoided if the processors share certain data structures. A multiprocessor system of this form will allow Symmetric multiprocessing architecture. processes and resources-such as memory-to be shared dynamically among the various processors, and can lower the variance among the processors. Such a system must be written carefully, as we shall see in Chapter 7. Virtually all modern operating systems-including Windows NT, Solaris, Digital UNIX, 0S/2, and Linux-now provide support for SMP. The difference between symmetric and asymmetric multiprocessing may be the result of either hardware or software. Special hardware can differentiate the multiple processors, or the software can be written to allow only one master and multiple slaves. For instance, Sun's operating system SunOS Version 4 provides asymmetric multiprocessing, whereas Version 5 (Solaris 2) is symmetric on the same hardware. As microprocessors become less expensive and more powerful, additional operatingsystem functions are off-loaded to slave processors (or back-ends). For example, it is fairly easy to add a microprocessor with its own memory to manage a disk system. The microprocessor could receive a sequence of requests from the main CPU and implement its own disk queue and scheduling algorithm. This arrangement relieves the main CPU of the overhead of disk scheduling. PCs contain a microprocessor in the keyboard to convert the keystrokes into codes to

15 be sent to the CPU. In fact, this use of microprocessors has become so common that it is no longer considered multiprocessing. 1.8 Distributed Systems: A network, in the simplest terms, is a communication path between two or more systems. Distributed systems depend on networking for their functionality. By being able to communicate, distributed systems are able to share computational tasks, and provide a rich set of features to users. Networks vary by the protocols used, the distances between nodes, and the transport media. TCP/IP is the most common network protocol, although ATM and other protocols are in widespread use. Likewise, operating-system support of protocols varies. Most operating systems support TCP/IP, including the Windows and UNIX operating systems. Some systems support proprietary protocols to suit their needs. To an operating system, a network protocol simply needs an interface device-a network adapter, for example-with a device driver to manage it, and software to package data in the communications protocol to send it and to unpackaged it to receive it. These concepts are discussed throughout the book. Networks are typecast based on the distances between their nodes. A local-area network (LAN), exists within a room, a floor, or a building. A wide-area network (WAN), usually exists between buildings, cities, or countries. A global company may have a WAN to connect its offices, worldwide. These networks could run one protocol or several protocols. The continuing advent of new technologies brings about new forms of networks. For example, a metropolitan-area network (MAN), could link buildings within a city. Bluetooth devices communicate over a short distance of several feet, in essence creating a smallarea network. The media to carry networks are equally varied. They include copper wires, fiber strands, and wireless transmissions between satellites, microwave dishes, and radios. When computing devices are connected to cellular phones, they create a network. Even very short-range infrared communication can be used for networking. At a rudimentary level, whenever computers communicate they use or create a network. These networks also vary by their performance and reliability Client-Server Systems: As PCs have become faster, more powerful, and cheaper, designers have shifted away from the centralized system architecture. Terminals connected to centralized systems are now being supplanted by PCs. Correspondingly; user-interface functionality that used to be handled directly by the centralized

16 systems is increasingly being handled by the PCs. As a result, centralized systems today act as server systems to satisfy requests generated by client systems. Server systems can be broadly categorized as compute servers and file servers. Compute-server systems provide an interface to which clients can send requests to perform an action, in response to which they execute the action and send back results to the client. File-server systems provide a file-system interface where clients can create, update, read, and delete files Peer-to-Peer Systems The growth of computer networks-especially the Internet and World Wide Web (WWW)-has had a profound influence on the recent development of operating systems. When PCs were introduced in the 1970s, they were designed General architecture of distributed systems for "personal" use and were generally considered standalone computers. With the beginning of widespread public use of the Internet in the 1980s for electronic mail, ftp, and gopher, many PCs became connected to computer networks. With the introduction of the Web in the mid-1990s, network connectivity became an essential component of a computer system. Virtually all modern PCs and workstations are capable of running a web browser for accessing hypertext documents on the Web. Operating systems (such as Windows, OS/2, MacOS, and UNIX) now also include the system software (such as TCP/IP and PPP) that enables a computer to access the Internet via a local-area network or telephone connection. Several include the web browser itself, as well as electronic mail, remote login, and file-transfer clients and servers.

17 In contrast to the tightly coupled systems, the computer networks used in these applications consist of a collection of processors that do not share memory or a clock. Instead, each processor has its own local memory. The processors communicate with one another through various communication lines, such as high-speed buses or telephone lines. These systems are usually referred to as loosely coupled systems (or distributed systems). Some operating systems have taken the concept of networks and distributed systems further than the notion of providing network connectivity A network operating system is an operating system that provides features such as file sharing across the network, and that includes a communication scheme that allows different processes on different computers to exchange messages. A computer running a network operating system acts autonomously from all other computers on the network, although it is aware of the network and is able to communicate with other networked computers. A distributed operating system is a less autonomous environment: The different operating systems communicate closely enough to provide the illusion that only a single operating system controls the network. 1.9 Clustered Systems: Like parallel systems, clustered systems gather together multiple CPUs to accomplish computational work. Clustered systems differ from parallel systems, however, in that they are composed of two or more individual systems coupled together. The definition of the term clustered is not concrete; many commercial packages wrestle with what a clustered system is, and why one form is better than another. The generally accepted definition is that clustered computers share storage and are closely linked via LAN networking. Clustering is usually performed to provide high availability. A layer of cluster software runs on the cluster nodes. Each node can monitor one or more of the others (over the LAN). If the monitored machine fails, the monitoring machine can take ownership of its storage, and restart the application(s) that were running on the failed machine. The failed machine can remain down, but the users and clients of the application would only see a brief interruption of service. In asymmetric clustering, one machine is in hot standby mode while the other is running the applications. The hot standby host (machine) does nothing but monitor the active server. If that server fails, the hot standby host becomes the active server. In symmetric mode, two or more hosts are running applications, and they are monitoring each other. This mode is obviously more efficient, as it uses all of the available hardware. It does require that more than one application be available to run. Other forms of clusters include parallel clusters and clustering over a WAN. I Parallel clusters allow multiple hosts to access the same data on the shared

18 storage. Because most operating systems lack support for this simultaneous data access by multiple hosts, parallel clusters are usually accomplished by special versions of software and special releases of applications. For example, Oracle Parallel Server is a version of Oracle's database that has been designed to run on parallel clusters. Each machine runs Oracle, and a layer of software tracks access to the shared disk. Each machine has full access to all data in the database. In spite of improvements in distributed computing, most systems do not offer general-purpose distributed file systems. Therefore, most clusters do not allow shared access to data on the disk. For this, distributed file systems must provide access control and locking to the files to ensure no conflicting operations occur. This type of service is commonly known as a distributed lock manager (DLM). Work is ongoing for general-purpose distributed file systems, with vendors like Sun Microsystems announcing roadmaps for delivery of a DLM within the operating system. Cluster technology is rapidly changing. Cluster directions include global clusters, in which the machines could be anywhere in the world (or anywhere a WAN reaches). Such projects are still the subject of research and development. Clustered system use and features should expand greatly as storage-area networks (SANS), as described in Section , become prevalent. SANs allow easy attachment of multiple hosts to multiple storage units. Current clusters are usually limited to two or four hosts due to the complexity of connecting the hosts to shared storage Real-Time Systems: Another form of a special-purpose operating system is the real-time system. A real-time system is used when rigid time requirements have been placed on the operation of a processor or the flow of data; thus, it is often used as a control device in a dedicated application. Sensors bring data to the computer. The computer must analyze the data and possibly adjust controls to modify the sensor inputs. Systems that control scientific experiments, medical imaging systems, industrial control systems, and certain display systems are real-time systems. Some automobile-engine fuel-injection systems, home-appliance controllers, and weapon systems are also real-time systems. A real-time system has well-defined, fixed time constraints. Processing must be done within the defined constraints, or the system will fail. For I instance, it would not do for a robot arm to be instructed to halt after it had smashed into the car it was building. A real-time system functions correctly if it returns the correct result within its time constraints. Contrast this requirement to a time-sharing system, where it is desirable (but not mandatory) to respond quickly, or to a batch system, which may have no time constraints at all.

19 Real time systems are of two types. 1. Hard real time systems 2. Soft real time systems. A hard real time system guarantees that critical tasks be completed on time. Hard real time systems use data storage to retrieve the data within the time to finish the particular task. Hard real systems conflict with the operation of time sharing systems, and the two cannot be mixed. Also the general purpose operating systems do not support the hard real time functionality. Soft real time systems are the less restrictive type of real time systems. In this type of systems a critical real time task gets priority over other tasks, and retains that priority until it completes. A real time task cannot be kept waiting indefinitely for the kernel to run it. Soft real time is an achievable goal that can be mixed with other types of systems Handheld Systems: Handheld systems include personal digital assistants (PDAs), such as Palm- Pilots or cellular telephones with connectivity to a network such as the Internet. Developers of handheld systems and applications face many challenges, most of which are due to the limited size of such devices. For example, a PDA is typically about 5 inches in height and 3 inches in width, and it weighs less than onehalf pound. Due to this limited size, most handheld devices have a small amount of memory, include slow processors, and feature small display screens. We will take a look now at each of these limitations. Many handheld devices have between 512 KB and 8 MB of memory. (Contrast this with a typical PC or workstation, which may have several hundred megabytes of memory!) As a result, the operating system and applications must manage memory efficiently. This includes returning all allocated memory back to the memory manager once the memory is no longer being used. Currently, many handheld devices do not use virtual memory techniques, thus forcing program developers to work within the confines of limited physical memory. A second issue of concern to developers of handheld devices is the speed of the processor used in the device. Processors for most handheld devices often run at a fraction of the speed of a processor in a PC. Faster processors require more power. To include a faster processor in a handheld device would require a larger battery that would have to be replaced (or recharged) more frequently. To minimize the size of most handheld devices, smaller, slower processors which consume less power are typically used.

20 Therefore, the operating system and applications must be designed not to tax the processor. The last issue confronting program designers for handheld devices is the small display screens typically vailable. Whereas a monitor for a home computer may measure up to 21 inches, the display for a handheld device is often no more than 3 inches square. Familiar tasks, such as reading or browsing web pages, must be condensed onto smaller displays. One approach for I displaying the content in web pages is web clipping, where only a small subset of a web page is delivered and displayed on the handheld device. Some handheld devices may use wireless technology, such as Bluetooth, allowing remote access to and web browsing. Cellular telephones with connectivity to the Internet fall into this category. However, many PDAs currently do not provide wireless access. To download data to these devices, typically one first downloads the data to a PC or workstation, and then downloads the data to the PDA. Some PDAs allow data to be directly copied from one device to another using an infrared link. Generally, the limitations in the functionality of PDAs are balanced by their convenience and portability. Their use continues to expand as network connections become more available and other options, such as cameras and MP3 players, expand their utility. 2. Computer System Organization: 2.1 Computer-System Operation: A modern, general-purpose computer system consists of a CPU and a number of device controllers that are connected through a common bus that provides access to shared memory Each device controller is in charge of a specific type of device (for example, disk drives, audio devices, and video displays). The CPU and the device controllers can execute concurrently, competing for memory cycles. To ensure orderly access to the shared memory, a memory controller is provided whose function is to synchronize access to the memory. 2.2 IO Structure: As we discussed in Section 2.1, a general-purpose computer system consists of a CPU and multiple device controllers that are connected through a common bus. Each device controller is in charge of a specific type of device. Depending on the controller, there may be more than one attached device. For instance, the small computer-systems interface (SCSI) controller can have seven or more devices attached to it. A device controller maintains some local buffer storage and a set of specialpurpose registers. The device controller is responsible for moving the data between the peripheral

21 devices that it controls and its local buffer storage. The size of the local buffer within a device controller varies from one controller to another, depending on the particular device being controlled. For example, the size of the buffer of a disk controller is the same as or a multiple of the size of the smallest addressable portion of a disk, called a sector, which is usually 512 bytes IO Interrupts: To start an I/O operation, the CPU loads the appropriate registers within the device controller. The device controller, in turn, examines the contents of these registers to determine what action to take. For example, if it finds a read request, the controller will start the transfer of data from the device to its local buffer. Once the transfer of data is complete, the device controller informs the CPU that it has finished its operation. It accomplishes this communication by triggering an interrupt DMA Structure: In a simple terminal-input driver, when a line is to be read from the terminal, the first character typed is sent to the computer. When that character is received, the asynchronous-communication (or serial-port) device to which the terminal line is connected interrupts the CPU. When the interrupt request from the terminal arrives, the CPU is about to execute some instruction. (If the CPU is in the middle of executing an instruction, the interrupt is normally held pending the completion of instruction execution.) The address of this interrupted instruction is saved, and control is transferred to the interrupt service routine for the appropriate device. The interrupt service routine saves the contents of any CPU registers that it will need to use. It checks for any error conditions that might have resulted from the most recent input operation. It then takes the character from the device, and stores that character in a buffer. The interrupt routine must also adjust pointer and counter variables, to be sure that the next input character will be stored at the next location in the buffer. The interrupt routine next sets a flag in memory indicating to the other parts of the operating system that new input has been received. The other parts are responsible for processing the data in the buffer, and for transferring the characters to the program that is requesting input. Then, the interrupt service routine restores the contents of any saved registers, and transfers control back to the interrupted instruction. If characters are being typed to a 9600-baud terminal, the terminal can accept and transfer one character approximately every 1 millisecond, or 1000 microseconds. A well-written interrupt service routine to input characters into a buffer may require 2 microseconds per character, leaving 998

22 microseconds out of every 1000 for CPU computation (and for servicing of other interrupts). Given this disparity, asynchronous I/O is usually assigned a low interrupt priority, allowing other, more important interrupts to be processed first, or even to preempt the current interrupt for another. A high-speed device, however such as a tape, disk, or communications network-may be able to transmit information at close to memory speeds; if the CPU needs two microseconds to respond to each interrupt and interrupts arrive every four microseconds, for example, that does not leave much time for process execution. To solve this problem, direct memory access (DMA) is used for high-speed I/O devices. After setting up buffers, pointers, and counters for the I/O device, the device controller transfers an entire block of data directly to or from its own buffer storage to memory, with no intervention by the CPU. Only one interrupt is generated per block, rather than the one interrupt per byte (or word) generated for low-speed devices. The basic operation of the CPU is the same. A user program, or the operating system itself, may request data transfer. The operating system finds a buffer (an empty buffer for input, or a full buffer for output) from a pool of buffers for the transfer. (A buffer is typically 128 to 4,096 bytes, depending on the device type.) Next, a portion of the operating system called a device driver sets the DMA controller registers to use appropriate source and destination addresses, and transfer length. The DMA controller is then instructed to start the 1/0 operation. While the DMA controller is performing the data transfer, the CPU is free to perform other tasks. Since the memory generally can transfer only one word at a time, the DMA controller "steals" memory cycles from the CPU. This cycle stealing can slow down the CPU execution while a DMA transfer is in progress. The DMA controller interrupts the CPU when the transfer has been completed Interrupt Handling: The operating system preserves the state of the CPU by storing registers and the program counter. Determines which type of interrupt has occurred: polling vectored interrupt system Separate segments of code determine what action should be taken for each type of interrupt Common Functions of Interrupts: Interrupt transfers control to the interrupt service routine generally, through the interrupt vector, which contains the addresses of all the service routines. Interrupt architecture must save the address of the interrupted instruction. Incoming interrupts are disabled while another interrupt is being processed to

23 prevent a lost interrupt. A trap is a software-generated interrupt caused either by an error or a user request. An operating system is interrupt driven. 2.3 Storage Structure: Interrupt Timeline: Computer programs must be in main memory (also called random-access memory or RAM) to be executed. Main memory is the only large storage area (millions to billions of bytes) that the processor can access directly. It is implemented in a semiconductor technology called dynamic random-access memory (DRAM), which forms an array of memory words. Each word has its own address. Interaction is achieved through a sequence of load or store instructions to specific memory addresses. The load instruction moves a word from main memory to an internal register within the CPU, whereas the s t o r e instruction moves the content of a register to main memory. Aside from explicit loads and stores, the CPU automatically loads instructions from main memory for execution. A typical instruction-execution cycle, as executed on a system with a von Neumann architecture, will first fetch an instruction from memory and will store that instruction in the instruction register. The instruction is then decoded and may cause operands to be fetched from memory and stored in some internal register. After the instruction on the operands has been executed, the result may be stored back in memory. Notice that the memory unit sees only a stream of memory addresses; it does not know how they are generated (by the instruction counter, indexing, indirection, literal addresses, and so on) or what they are for (instructions or data). Accordingly, we can ignore how a memory address is generated by a program. We are interested only in the sequence of memory addresses generated by the running program. Ideally, we want the programs and data to reside in main memory permanently. This arrangement is not possible for the following two reasons:

24 1. Main memory is usually too small to store all needed programs and data permanently. 2. Main memory is a volatile storage device that loses its contents when power is turned off or otherwise lost. Thus, most computer systems provide secondary storage as an extension of main memory. The main requirement for secondary storage is that it be able to hold large quantities of data permanently. The most common secondary-storage device is a magnetic disk, which provides storage of both programs and data. Most programs (web browsers, compilers, word processors, spreadsheets, and so on) are stored on a disk until they are loaded into memory. Many programs then use the disk as both a source and a destination of the information for their processing. Hence, the proper management of disk storage is of central importance to a computer system. In a larger sense, however, the storage structure that we have described consisting of registers, main memory, and magnetic disks-is only one of many possible storage systems. There is also cache memory, CD-ROM, magnetic tapes, and so on. Each storage system provides the basic functions of storing a datum, and of holding that datum until it is retrieved at a later time. The main differences among the various storage systems lie in speed, cost, size, and volatility Main Memory Main memory and the registers built into the processor itself are the only storage that the CPU can access directly. There are machine instructions that take memory addresses as arguments, but none that take disk addresses. Therefore, any instructions in execution, and any data being used by the instructions, must be in one of these direct-access storage devices. If the data are not in memory, they must be moved there before the CPU can operate on them. In the case of I/O, each I/O controller includes registers to hold commands and the data being transferred. Usually, special I/O instructions allow data transfers between these registers and system memory. To allow more convenient access to I/O devices, many computer architectures provide memory-mapped. In this case, ranges of memory addresses are set aside, and are mapped to the device registers. Reads and writes to these memory addresses cause the data to be transferred to and from the device registers. This method is appropriate for devices that have fast response times, such as video controllers. In the IBM PC, each location on the screen is mapped to a memory location. Displaying text on the screen is almost as easy as writing the text into the appropriate memory-mapped locations. Memory-mapped I/O is also convenient for other devices, such as the serial and parallel ports used to connect modems

25 and printers to a computer. The CPU transfers data through these kinds of devices by reading and writing a few device registers, called an 1/0 port. To send out a long string of bytes through a memorymapped serial port, the CPU writes one data byte to the data register, then sets a bit in the control register to signal that the byte is available. The device takes the data byte, and then clears the bit in the control register to signal that it is ready for the next byte. Then, the CPU can transfer the next byte. If the CPU uses polling to watch the control bit, constantly looping to see whether the device is ready, this method of operation is called programmed 110 (PIO). If the CPU does not poll the control bit, but instead receives an interrupt when the device is ready for the next byte, the data transfer is said to be interrupt driven. Registers that are built into the CPU are generally accessible within one cycle of the CPU clock. Most CPUs can decode instructions and perform simple operations on register contents at the rate of one or more operations per clock tick. The same cannot be said of main memory, which is accessed via a transaction on the memory bus. Memory access may take many cycles of the CPU clock to complete, in which case the processor normally needs to stall, since it does not have the data required to complete the instruction that it is executing. This situation is intolerable because of the frequency of memory accesses. The remedy is to add fast memory between the CPU and main memory. A memory buffer used to accommodate a speed differential, called a cache Magnetic Disks Magnetic disks provide the bulk of secondary storage for modern computer systems. Conceptually, disks are relatively simple (Figure 2.5). Each disk platter has a flat circular shape, like a CD. Common platter diameters range from 1.8 to 5.25 inches. The two surfaces of a platter are covered with a magnetic material. We store information by recording it magnetically on the platters. A readwrite head "flies" just above each surface of every platter. The heads are attached to a disk arm, which moves all the heads as a unit. The surface of a platter is logically divided into circular tracks, which are subdivided into sectors. The set of tracks that are at one arm position forms a cylinder. There may be thousands of concentric cylinders in a disk drive, and each track may contain hundreds of sectors. The storage capacity of common disk drives is measured in gigabytes.

26 track t, armassembly rotation Moving-head disk mechanism Magnetic Tapes Magnetic tape was used as an early secondary-storage medium. Although it is relatively permanent and can hold large quantities of data, its access time is slow in comparison to that of main memory. In addition, random access to magnetic tape is about a thousand times slower than random access to magnetic disk, so tapes are not very useful for secondary storage. Tapes are used mainly for backup, for storage of infrequently used information, and as a medium for transferring information from one system to another. A tape is kept in a spool, and is wound or rewound past a read-write head. Moving to the correct spot on a tape can take minutes, but once positioned, tape drives can write data at speeds comparable to disk drives. Tape capacities vary greatly, depending on the particular kind of tape drive. Some tapes hold 2 to 3 times more data than does a large disk drive. Tapes and their drivers are usually categorized by width, including 4,8, and 19 millimeters, 1 /4 and 1/2 inch. 2.4 Storage Hierarchy: The wide variety of storage systems in a computer system can be organized in a hierarchy according to speed and cost. The higher levels are expensive, but they are fast. As we move down the hierarchy, the cost per bit generally decreases, whereas the access time generally increases. This tradeoff is reasonable; if a given storage system were both faster and less expensive than another-other properties being the same-then there would be no reason to use the slower, more expensive memory. In fact, many

27 early storage devices, including paper tape and core memories, are relegated to museums now that magnetic tape and semiconductor memory have become faster and cheaper. The top three levels of memory may be constructed using semiconductor memory. Storage systems organized in hierarchy. Speed Cost Volatility Caching copying information into faster storage system; main memory can be viewed as a last cache for secondary storage. Storage-Device Hierarchy: 2.5 Hardware protection: Introduction: As the technology grows the usage of OS also changed. When the OS took the control of the machine or computer, especially in shared environment various problems occurred. The system read wrong data for the jobs and subtle error occurred. So to avoid these sort errors some protection mechanism is necessary. A properly designed operating system must ensure that an incorrect program cannot cause other programs to execute incorrectly.

28 Protection process: Many programming errors are detected by the hardware. These errors are handled by the OS. If the user tries to access the memory in an abnormal manner then the hardware trap the OS. The trap transfers control through the interrupt vector to the operating system like an interrupt. Whenever any program error occurs the OS must abnormally terminate the program by giving an appropriate error message and the memory of the program will be dumped. Dual mode operation: Proper operation must be ensured to protect the operating system, all the programs and their data from abnormal functioning. There are two modes of operation available for protection. 1. User mode 2. Monitor mode. A bit known as mode bit is added to the hardware of the computer to indicate the current mode. Mode bit 0 indicates that the current mode of the system is monitor mode and bit 1 indicates that the current mode is the user mode. By this mode bit the user can understand whether the task is executed on behalf of the operating system or on behalf of the user. Working of dual mode operation: First the hardware starts in monitor mode at the time of booting. Operating system is then loaded. OS starts user processes in user mode. If interrupt occurs, the hardware switches from user mode to monitor mode by setting the mode bit to 0. After gaining control, it switches to the user mode by setting the bit 1 before passing control to the user program.

29 Privileged Instructions: Dual mode operation protects the operating system from errant users and the users from one another. This is accomplished by a set of instructions called privileged instructions. Privileged instructions are the machine instruction which works only in monitor mode and not in user mode. The hardware allows privileged instructions to be executed only in monitor mode. If an attempt is made to execute a privileged instruction in user mode, the hardware does not execute the instruction and treats this as an illegal instruction and traps it to the operating system. If the hardware does not support dual mode operating will spoil the operating system functions which will lead to unexpected results. Recent and advanced processors provide dual mode operation. I/O protection: To prevent users from performing illegal I/O all I/O instructions are defined as privileged instructions. Thus, the users cannot issue I/O instructions directly, and they must do it through the operating system. To execute the I/O instructions properly it must be ensured that the user program should not gain control of the computer in monitor mode. When the system starts in user mode and if there is any interruption, it will switch to monitor mode by storing the address. And again when a trap occurs the control will switch to user mode and continue the process. There are various ways that the hardware can switch from one mode to the other mode. Sometimes new errors occur and the I/O must be protected from these errors also. Memory protection: Memory protection is achieved by the CPU hardware comparing every address generated in user mode with the registers. Any attempt by a program executing in user mode to access monitor memory or other users memory results in a trap to the monitor. This scheme prevents the user programs from modifying the code or data structures of either the operating system or other users.

30 A base and a limit register define a logical address space. The base and limit registers can be loaded only by the operating system by means of privileged Since these instructions are executed only in monitor mode and by the operating system alone, the OS only will load the base and limit registers and prevent the user programs from changing the contents of the registers. The OS is given unrestricted access to both monitor and users memory. This provision allows the OS to load the user programs into users memory and to dump out these programs in case of errors. Thus the memory is protected by means of privileged and restricted access of the memory by the user program. CPU protection: Besides I/O and memory protection, the user program should not get stuck into an indefinite loop. This is done by timer. A timer can be set to interrupt the computer after a specified period. This may be a fixed period or a variable period. Before turning over control to the user, the operating system ensures that the timer is set to interrupt. If the timer interrupts, control transfers automatically to the operating system. Thus the timer can be used to prevent a user program from running too long. The timer also uses to compute the current time by referring some initial time. The procedure of changing the parameters to prepare for the next program to run is called context switch. The operating system saves registers, internal variables and buffers and thus protects the CPU.

31 monitor-addressing error 2.6 Network Structure: There are basically two types of networks: local-area networks (LAN) and wide-area networks (WAN). The main difference between the two is the way in which they are geographically distributed. Local-area networks are composed of processors that are distributed over small geographical areas (such as a single building or a number of adjacent buildings). Wide-area networks, on the other hand, are composed of a number of autonomous processors that are distributed over a large geographical area (such as the United States). These differences imply major variations in the speed and reliability of the communications network, and they are reflected in the distributed operating-system design Local-Area Networks Local-area networks emerged in the early 1970s, as a substitute for large mainframe computer systems. For many enterprises, it is more economical to have a number of small computers, each with its own self-contained applications, rather than a single large system. Because each small computer is likely to need a full complement of peripheral devices (such as disks and printers), and because some form of data sharing is likely to occur in a single enterprise, it was a natural step to connect these small systems into a network. LANs are usually designed to cover a small geographical area (such as a single building, or a few adjacent buildings) and are generally used in an office environment. All the sites in such systems are close to one another, so the communication links tend to have a higher speed and lower error rate than do their counterparts in wide-area networks. High-quality (expensive) cables are needed to attain this higher speed and reliability. It is also possible to use the cable exclusively for data network traffic. Over longer distances, the cost of using high-quality cable is enormous, and the exclusive use of the cable tends to be prohibitive. The most common links in a local-area network are twisted pair and fiber optic cabling. The most common configurations are multi-access bus, ring, and star networks. Communication speeds

32 range from 1 megabit per second, for networks such as AppleTalk, infrared, and the new Bluetooth local radio network, to 1 gigabit per second for gigabit-ethernet. Ten megabits per second is most common, and is the speed of lobaset Ethernet. loobaset Ethernet requires a higher-quality cable but runs at 100 megabits per second, and is becoming common. Also growing is the use of optical-fiber-based FDDI Networking. The FDD network is token-based and runs at over 100 megabits per second. A typical LAN may consist of a number of different computers (from mainframes to laptops or PDAs), various shared peripheral devices (such as laser printers or magnetic-tape drives), and one or more gateways (specialized processors) that provide access to other networks. An Ethernet scheme is commonly used to construct LANs. An Ethernet network has no central controller, because it is a multiaccess bus, so new hosts can be added easily to the network Wide-Area Networks Wide-area networks emerged in the late 1960s, mainly as an academic research project to provide efficient communication among sites, allowing hardware and software to be shared conveniently and economically by a wide community of users. The first WAN to be designed and developed was the Arpanet. Begun in 1968, the Arpanet has grown from a four-site experimental network to a worldwide network of networks, the Internet, comprising millions of computer systems. Because the sites in a WAN are physically distributed over a large geographical area, the communication links are, by default, relatively slow and unreliable. Typical links are telephone lines, leased (dedicated data) lines, microwave links, and satellite channels. These communication links are controlled by special communication processors, which are responsible for defining the interface through which the sites communicate over the network, as well as for transferring information among the various sites. For example, the Internet WAN provides the ability for hosts at geographically separated sites to communicate with one another. The host computers typically differ from one another in type, speed, word length, operating system, and so on. Hosts are generally on LANs, which are, in turn, connected to the Internet via regional networks. The regional networks, such as NSFnet in the northeast United States, are interlinked with routers to form the worldwide network. Connections between networks frequently use a telephone-system service called TI, which provides a transfer rate of megabits per second over a leased line. For sites requiring faster Internet access, Tls are collected into multiple-t1 units that work in parallel to provide more throughputs. For instance, a T3 is composed of 28 T1 connections and has a transfer rate of 45 megabits per second. The routers control the path each message

33 takes through the net. This routing may be either dynamic, to increase communications efficiency, or static, to reduce security risks or to allow communications charges to be computed. 3. Operating system structures: 3.1 System components: Introduction: An operating system can be viewed in various aspects. 1. As a service provider. 2. As an interface between users and programmers and to the system. 3. As a disassembler to its components and their interconnections. This chapter discusses all the components of a system and how it is managed by the OS Process management: A process is defined as the program in execution. A process needs some resources such as CPU time, memory, files and I/O devices to accomplish certain task. These resources are given to the process while running or when it is created. When the process terminates the operating system will reclaim the reusable resources. The CPU executes the instruction of the processes one after another until the completion of the process. A process is the unit of work in a system. A system consists of collection processes, some of which are user processes and rest are operating system processes. All these processes execute concurrently by utilizing the CPU by multiplexing the CPU among them. The OS is responsible for the following activities in process management. Creating and deleting both system and user processes Suspending and resuming processes Providing mechanisms for process synchronization Providing mechanisms for process communication Providing mechanisms for deadlock handling

34 Main memory management: Main memory is the centre for the operation in a computer system. It is a repository of quickly accessible data shared by the CPU and I/O devices. The central processor reads instructions, data from main memory. The I/O operations also read and write in main memory. It is the only large storage device that the CPU is able to address and access directly. To manage this memory, many different management schemes are available based on effective algorithms. Selection of a memory management scheme for a specific system depends on many factors. Designing of hardware, latest technology, environment etc., Responsibilities of OS in memory management: Parts of the memory currently being used The processes which are using the memory parts at present Deciding of which processes are to be loaded into the memory when available Allocating and deallocating the memory space accordingly File management: File management is one of the most visible components of an operating system. Computers can store information on several different types of storage media. The operating system maps files onto physical media and access these files via the storage devices. Files: A file is a collection of related information defined by its creator. Also files represent programs and data. Data files may be numeric, alphabetic or alphanumeric. Files may be of free form or may be formatted rigidly. The operating system implements the concept of a file by managing mass storage media and the devices that control them.

35 Responsibilities of OS in file management: Creation and deletion of a file Creation and deletion of directories Supporting primitives for manipulating files and directories Mapping files onto secondary storage Backing up files on stable storage media I/O system management: The operating system hides certain unusual things of specific hardware devices from the user. The I/O subsystem consists of 1) A memory management component (includes buffering, caching and spooling) 2) A general device driver interface 3) Drivers for specific hardware devices Secondary storage management: The main purpose of a computer system is to execute programs. These programs along with the data they access will be in main memory during execution. Since main memory is too small to accommodate all data and programs and to avoid the loss of data during power failure, the computer system has a secondary storage to back up main memory. All the programs are loaded into main memory from the secondary storage and after execution they are again stored back into the same secondary storage device. So, the system uses the secondary storage as the source and destination. Hence proper management of disk storage is very important. Since secondary storage is used frequently it must be used efficiently. Responsibilities of OS in secondary storage management: Free space management Storage allocation Disk scheduling

36 Command interpreter system: The most system programs for an operating system is the command interpreter. This is the interface between the user and the operating system. Some OS include the command interpreter in the kernel. In some other operating system the command interpreter is a special program. Many commands are given to the operating system by control statements. When a new task is started a program reads and interprets control statements to execute the task. This program is called shell. The shell acts as the command interpreter and the kernel is protected from direct user access. The function of the shell is very simple. Shells are more powerful and complex. They are very difficult to learn. In some shells, the commands are typed on a keyboard and it is displayed on a screen and by pressing enter the command gets executed. Computer system components The command statements are responsible for the process creation and management, I/O handling, secondary storage management, main memory management, file system access, protection and networking. User communicates with the OS shell Shell communicates with the kernel The kernel provides the OS services by processing all the system calls Conclusion: The operating system has more responsibility in managing the processor, primary storage, secondary storage, I/O devices and the user programs. So the OS has to make some arrangement to manage all the devices for their cogent operation by means of efficient algorithms.

37 3.2 Operating-System Services: An operating system provides an environment for the execution of programs. It provides certain services to programs and to the users of those programs. The specific services provided, of course, differ from one operating system to another, but we can identify common classes. These operating-system services are provided for the convenience of the programmer, to make the programming task easier. Program execution: The system must be able to load a program into memory and to run that program. The program must be able to end its execution, either normally or abnormally (indicating error). IO operations: A running program may require I/O. This 1/0 may involve a file or an I/O device. For specific devices, special functions may be desired (such as to rewind a tape drive, or to blank a CRT screen). For efficiency and protection, users usually cannot control 1/0 devices directly. Therefore, the operating system must provide a means to do I/O. File-system manipulation: The file system is of particular interest. Obviously, programs need to read and write files. Programs also need to create and delete files by name. Communications: In many circumstances, one process needs to exchange information with another process. Such communication can occur in two major ways. The first takes place between processes that are executing on the same computer; the second takes place between processes that are executing on different computer systems that are tied together by a computer network. Communications may be implemented via shared memory, or by the technique of message passing, in which packets of information are moved between processes by the operating system.

38 Error detection: The operating system constantly needs to be aware of possible errors. Errors may occur in the CPU and memory hardware (such as a memory error or a power failure), in I/O devices (such as a parity error on tape, a connection failure on a network, or lack of paper in the printer), and in the user program (such as an arithmetic overflow, an attempt to access an illegal memory location, or a too-great use of CPU time). For each type of error, the operating system should take the appropriate action to ensure correct and consistent computing. In addition, another set of operating-system functions exists not for helping the user, but for ensuring the efficient operation of the system itself. Systems with multiple users can gain efficiency by sharing the computer resources among the users. Resource allocation: When multiple users are logged on the system or multiple jobs are running at the same time, resources must be allocated to each of them. Many different types of resources are managed by the operating system. Some (such as CPU cycles, main memory, and file storage) may have special allocation code, whereas others (such as I/O devices) may have much more general request and release code. For instance, in determining how best to use the CPU, operating systems have CPU-scheduling routines that take into account the speed of the CPU, the jobs that must be executed, the number of registers available, and other factors. There might also be routines to allocate a tape drive for use by a job. One such routine locates an unused tape drive and marks an internal table to record the drive's new user. Another routine is used to clear that table. These routines may also allocate plotters, modems, and other peripheral devices. Accounting: We want to keep track of which users use how many and which kinds of computer resources. This record keeping may be used for accounting (so that users can be billed) or simply for accumulating usage statistics. Usage statistics may be a valuable tool for researchers who wish to reconfigure the system to improve computing services.

39 Protection: The owners of information stored in a multi-user computer system may want to control use of that information. When several disjointed processes execute concurrently, it should not be possible for one process to interfere with the others, or with the operating system itself Protection involves ensuring that all access to system resources is controlled. Security of the system from outsiders is also important. Such security starts with each user having to authenticate himself to the system, usually by means of a password, to be allowed access to the resources. It extends to defending external 1/0 devices, including modems and network adapters, from invalid access attempts, and to recording all such connections for detection of break-ins. If a system is to be protected and secure, precautions must be instituted throughout it. A chain is only as strong as its weakest link. 3.3 System Calls: Introduction: To provide an interface between the operating system and the user programs there are some commands available to have smooth communication. This interface must be understood clearly to understand the functionality of the OS. For each and every operation the interface must communicate with the operating system. This chapter deals with the idea behind the interface normally called as system calls, its types and functionality. What is a system call? System call is defined as the interface between a process and the operating system. These calls are available in assembly language instructions. If a process is running a user program and needs to read a data from a file, it executes a trap of system call instruction to transfer control to the operating system. The operating system checks the requirement by considering the parameters. Then it carries out the system call and returns control to the instruction. This is like invoking a procedure call. The system call only enters into the kernel and the procedure call does not enter into the kernel

40 Example of System Calls: System call sequence to copy the contents of one file to another file High level languages: Certain systems allow system calls to be made directly from a higher level language program, in which the calls are same like predefined function or subroutine calls. A call will be generated to special run time routines that makes the system call or the system call may be generated directly in line Functions Sequences of system calls are executed to perform the following tasks To open an existing input file and create an output file To check whether the file is available or not and for abnormal termination in case of non availability of the file If file is not available to give the error message To abort the system if more output files with same name To delete an existing file To ask the user to replace existing file or abort and read the response from the keyboard in interactive systems To read a loop from the input file and writes it to the output file To close the program after copying the file and write a message to the console To terminate the system normally

41 Steps involved in performing a system call: System calls are performed in a series of steps. The read system call is executed as follows. 1. The calling program which performs the read system call first pushes the parameters onto the stack. 2. The actual system call comes to the library procedure 3. The library procedure which is in assembly language, puts the system call number in a register 4. Then a TRAP instruction is executed to switch from the user mode to kernel mode (monitor mode) and starts execution within the kernel 5. The kernel examines the system call number and dispatches to the correct system call handler 6. The system call handler runs the system call 7. Once the system call handler completes its work, control is returned to the user space library procedure 8. This procedure then returns to the user program 9. Finally the user program cleans the stack System call occurs in different ways, depending on the computer in use. More information is required to identify a system call. The exact type and amount of information vary according to the particular operating system and call. To get the input, it is to be specified the file or device to use as the source and the address and length of the memory buffer in which the input has to be read. Major groups of system calls: System calls can be grouped into five major categories. 1. Process control 2. File management 3. Device management 4. Information maintenance 5. Communications Process control: A running program needs to be able to halt its execution either normally or abnormally. If a system call is made to terminate the currently running program abnormally, or if the program runs into a problem and causes an error trap, a dump of memory is sometimes taken and an error message enerated. The dump is written to disk and may be examined by a debugger to determine the cause of the problem.

42 The operating system must transfer control to the command interpreter either in normal and abnormal conditions. The command interpreter then reads the next command. In an interactive system, the command interpreter simply continues with the next command. In batch system, the command interpreter usually terminates the entire job and continues with the next job. A process or job executing one program may load and execute another program. This feature allows the command interpreter to execute a program directed by a user command. Some set of system calls are helpful in debugging a program. Many systems provide system calls to dump memory. This provision is useful for debugging. A program called trace lists each instruction as it is executed. System calls for process control: end, abort load, execute create process, terminate process get process attributes, set process attributes wait for time wait event, signal event allocate and free memory 2. File management: To create and delete files, the system call requires the name of the file or some of the file attributes names. Once a file is created, it has to be read, write and reposition and finally the file needs to be closed. File attributes include file name, file type, protection code, accounting information etc., System calls associated with file management: create file, delete file open, close read, write, reposition get file attributes, set file attributes

43 3. Device management: A program which is running may need additional resources to proceed further. These additional resources may be tape drives, more memory, access to files etc., if they are available, they can be granted and control can be returned to the user programs. Otherwise, the program will have to wait until sufficient resources are available. These things have to be managed by the OS by means of system calls. Device management system calls: request device, release device read, write, reposition get device attributes, set device attributes logically attach or detach devices 4. Information maintenance: Many system calls exist for the purpose of transferring information between the user program and the operating system. Some system calls may return information about the system, such as the number of current users, the version number of the operating system, the amount of free memory or disk space and so on. Besides this information the OS keeps information about all its processes and the system calls that access this information. There are calls to reset the process information (get process attributes, set process attributes) System call for information maintenance: get time or date, set time or date get system data, set system data get process, get file, get device attribute set process, set file, set device attribute

44 5. Communication: To have proper communication various systems calls are available. There are two models of communication which uses various system calls. They are message passing model and the shared memory model. Message passing model: In this model, message is exchanged through an interprocesss communication facility provided by the operating system. Before communication takes place, a connection must be opened. The name of the other communicator must be known. This may be another process within the same system, or some other process in another system connected in a network. The source of the communication known as the client, and the receiver known as a server and then they exchange messages by read message and write message system calls. Shared memory model: In this model, processes use to map memory system calls to gain access to regions of memory owned by other processes. In shared memory model processes exchange information by reading and writing data in these shared areas. The form of data and the location are determined by these processes and are not under the operating system s control. The processes are also responsible for ensuring that they are not writing to the same location simultaneously. Communications models. (a) Msg passing. (b) Shared memory.

45 Both of these above methods are common in operating systems and some systems implement both. Message passing is useful when smaller numbers of data need to be exchanged. Shared memory allows maximum speed and convenience of communication. System calls for communication: create communication connection, delete communication connection send messages, receive messages transfer status information attach or detach remote devices 3.4 System Programs: Another aspect of a modern system is the collection of system programs. Recall the computer hierarchy picture, which depicted the logical computer hierarchy. At the lowest level is hardware. Next is the operating system, then the system programs, and finally the application programs. System programs provide a convenient environment for program development and execution. Some of them are simply user interfaces to system calls; others are considerably more complex. They can be divided into these categories: File management: and directories. These programs create, delete, copy, rename, print, dump, list, and generally manipulate files Status information: Some programs simply ask the system for the date, time, amount of available memory or disk space, number of users, or similar status information. That information is then formatted, and is printed to the terminal or other output device or file.

46 File modification: tape. Several text editors may be available to create and modify the content of files stored on disk or Programming-language support: Compilers, assemblers, and interpreters for common programming languages (such as C, C++, Java, Visual Basic, and PERL) are often provided to the user with the operating system. Some of these programs are now priced and provided separately. Program loading and execution: Once a program is assembled or compiled, it must be loaded into memory to be executed. The system may provide absolute loaders, relocatable loaders, linkage editors, and overlay loaders. Debugging systems for either higher-level languages or machine language are needed also. Communications: These programs provide the mechanism for creating virtual connections among processes, users, and different computer systems. They allow users to send messages to one another's screens, to browse web pages, to send electronic-mail messages, to log in remotely, or to transfer files from one machine to another. Most operating systems are supplied with programs that solve common problems, or perform common operations. Such programs include web browsers, word processors and text formatters, spreadsheets, database systems, compiler compilers, plotting and statistical-analysis packages, and games. These programs are known as system utilities or application programs. Perhaps the most important system program for an operating system is the command interpreter, the main function of which is to get and execute the next user-specified command. Many of the commands given at this level manipulate files: create, delete, list, print, copy, execute, and so on. These commands can be implemented in two general ways. In one approach, the command interpreter itself contains the code to execute the command. For example, a command to delete a file may cause the command interpreter to jump to a section of its code that sets up the

47 parameters and makes the appropriate system call. In this case, the number of commands that can be given determines the size of the command interpreter, since each command requires its own implementing code. An alternative approach-used by UNIX, among other operating systems -implements most commands by system programs. In this case, the command interpreter does not understand the command in any way; it merely uses the command to identify a file to be loaded into memory and executed. Thus, the UNIX command to delete a file 3.5 System Structure: A system as large and complex as a modern operating system must be engineered carefully if it is to function properly and be modified easily. A common approach is to partition the task into small components, rather than have one monolithic system. Each of these modules should be a well-defined portion of the system, with carefully defined inputs, outputs, and function. We have already discussed briefly the common components of operating systems. In this section, we discuss the way that these components are interconnected and melded into a kernel. Simple Structure Many commercial systems do not have a well-defined structure. Frequently, such operating systems started as small, simple, and limited systems, and then grew beyond their original scope. MS- DOS is an example of such a system.

48 It was originally designed and implemented by a few people who had no idea that it would become so popular. It was written to provide the most functionality in the least space (because of the limited hardware on which it ran), so it was not divided into modules carefully. UNIX is another system that was initially limited by hardware functionality. It consists of two separable parts: the kernel and the system programs. The kernel is further separated into a series of interfaces and device drivers, which were added and expanded over the years as UNIX evolved. Everything below the system-call interface and above the physical hardware is the kernel. UNIX System Structure: The kernel provides the file system, CPU scheduling, memory management, and other operatingsystem functions through system calls. Taken in sum, that is an enormous amount of functionality to be combined into one level. This makes UNIX difficult to enhance, as changes in one section could adversely affect other areas. System calls define the API to UNIX; the set of system programs commonly available defines the user interface. The programmer and user interfaces define the context that the kernel must support. New versions of UNIX are designed to use more advanced hardware. Given proper hardware support, operating systems may be broken into pieces that are smaller and more appropriate than are those allowed by the original MS-DOS or UNIX systems. The operating system can then retain much greater control over the computer and over the applications that make use of that computer. Implementers have more freedom to make changes to the inner workings of the system and in the creation of modular operating systems.

49 Layered Approach: The modularization of a system can be done in many ways. One method is the layered approach, in which the operating system is broken up into a number of layers (or levels), each built on top of lower layers. The bottom layer (layer 0) is the hardware; the highest (layer N) is the user interface. An operating-system layer is an implementation of an abstract object that is the encapsulation of data, and of the operations that can manipulate those data. It consists of data structures and a set of routines that can be invoked by higher-level layers. Layer M, in turn, can invoke operations on lowerlevel layers. Layered Operating System: The main advantage of the layered approach is modularity. The layers are selected such that each uses functions (or operations) and services of only lower-level layers. This approach simplifies debugging and system verification. The first layer can be debugged without any concern for the rest of the system, because, by definition, it uses only the basic hardware (which is assumed correct) to implement its functions. Once the first layer is debugged, its correct functioning can be assumed while the second layer is debugged, and so on. If an error is found during the debugging of a particular layer, the error must be on that layer, because the layers below it are already debugged. Thus, the design and implementation of the system are simplified when the system is broken down into layers. Each layer is implemented with only those operations provided by lower level layers. A layer does not need to know how these operations are implemented; it needs to know only what these operations do. Hence, each layer hides the existence of certain data scrubbers, operations, and hardware from higher-level layers.

50 The major difficulty with the layered approach involves the careful definition of the layers, because a layer can use only those layers below it. For example, the device driver for the disk space used by virtual-memory algorithms must be at a level lower than that of the memory-management routines, because memory management requires the ability to use the disk space. Other requirements may not be so obvious. The backing-store driver would normally be above the CPU scheduler, because the driver may need to wait for I/O and the CPU can be rescheduled during this time. However, on a large I system, the CPU scheduler may have more information about all the active processes than can fit in memory. Therefore, this information may need to be swapped in and out of memory, requiring the backing-store driver routine to be below the CPU scheduler. A final problem with layered implementations is that they tend to be less efficient than other types. For instance, when a user program executes an I/O operation, it executes a system call that is trapped to the I/O layer, which calls the memory-management layer, which in turn calls the CPUscheduling layer, which is then passed to the hardware. At each layer, the parameters may be modified, data may need to be passed, and so on. Each layer adds overhead to the system call; the net result is a system call that takes longer than does one on a no layered system. Microkernel System Structure: Moves as much from the kernel into user space 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 Detriments: Performance overhead of user space to kernel space communication

51 3.5 Virtual Machines Mac OS X Structure: Conceptually, a computer system is made up of layers. The hardware is the lowest level in all such systems. The kernel running at the next level uses the hardware instructions to create a set of system calls for use by outer layers. The system programs above the kernel are therefore able to use either system calls or hardware instructions, and in some ways these programs do not differentiate between these two. Thus, although they are accessed differently, they both provide functionality that the program can use to create even more advanced functions. System programs, in turn, treat the hardware and the system calls as though they were both at the same level. Some systems carry this scheme a step further by allowing the system programs to be called easily by the application programs. As before, although the system programs are at a level higher than that of the other routines, the application programs may view everything under them in the hierarchy as though the latter were part of the machine itself. This layered approach is taken to its logical conclusion in the concept of a virtual machine. System models. (a) Nonvirtual machine. (b) Virtual machine.

52 The VM operating system for IBM systems is the best example of the virtual-machine concept, because IBM pioneered the work in this area. By using CPU scheduling and virtual-memory techniques an operating system can create the illusion that a process has its own processor with its own (virtual) memory. Of course, normally, the process has additional features, such as system calls and a file system, that are not provided by the bare hardware. The virtual-machine approach, on the other hand, does not provide any additional functionality, but rather provides an interface that is identical to the underlying bare hardware. Each process is provided with a (virtual) copy of the underlying computer. The physical computer shares resources to create the virtual machines. CPU scheduling can share out the CPU to create the appearance that users have their own processors. Spooling and a file system can provide virtual card readers and virtual line printers. A normal user time-sharing terminal provides the function of the virtual-machine operator's console. Benefits There are two primary advantages to using virtual machines. First, by completely protecting system resources, the virtual machine provides a robust level of security. Second, the virtual machine allows system development to be done without disrupting normal system operation. Each virtual machine is completely isolated from all other virtual machines, so we have no security problems as the various system resources are completely protected. For example, untrusted applications downloaded from the Internet could be run within a separate virtual machine. A disadvantage of this environment is that there is no direct sharing of resources. Two approaches to provide sharing have been implemented. First, it is possible to share a minidisk. This scheme is modeled after a physical shared disk, but is implemented by software. With this technique, files can be shared. Second, it is possible to define a network of virtual machines, each of which can send information over the virtual communications network. Again, the network is modeled after physical communication networks, but it is implemented in software. Such a virtual-machine system is a perfect vehicle for operating-systems research and development. Normally, changing an operating system is a difficult task. Because operating systems are large and complex programs, a change in one part may cause obscure bugs in some other part. The power of the operating system makes this situation particularly dangerous. Because the operating system executes in monitor mode, a wrong change in a pointer could cause an error that would destroy the entire file system. Thus, it is necessary to test all changes to the operating system carefully. The operating system, however, runs on and controls the entire machine. Therefore, the current system must be stopped and taken out of use while changes are made and tested. This period is

53 commonly called system development time. Since it makes the system unavailable to users, system development time is often scheduled late at night or on weekends, when system load is low. Java Java is a very popular object-oriented language introduced by Sun Microsystems in late In addition to a language specification and a large API library, Java also provides a specification for a Java virtual machine (JVM). Java objects are specified with the class construct; a Java program consists of one or more classes. For each Java class, the Java compiler produces an architecture-neutral byte code output (. class) file that will run on any implementation of the JVM. The JVM is a specification for an abstract computer. The JVM consists of a class loader, a class verifier, and a Java interpreter that executes the architecture-neutral byte codes. The class loader loads. class files from both the Java program and the Java API for execution by the Java interpreter. After a class is loaded, the verifier checks that the class file is valid Java byte code and does not overflow or underflow the stack. It also ensures that the byte code does not perform pointer arithmetic, which could potentially provide illegal memory access. If the class passes verification, it is run by the Java interpreter. The JVM also automatically manages memory by performing garbage collection the practice of reclaiming memory from objects no longer in use and returning it to the system. Much research focuses on garbage collection algorithms for increasing the performance of Java programs in the virtual machine. The Java interpreter may be a software module that interprets the byte codes one at a time, or it

54 may be a just-in-time (TIT) compiler that turns the architecture-neutral byte codes into native machine language for the host computer. Most implementations of the JVM use a JIT compiler for enhanced performance. In other instances, the interpreter may be implemented in hardware that executes Java byte codes natively. The JVM makes it possible to develop programs that are architecture neutral and portable. The implementation of the JVM is specific for each system-such as Windows or UNIX-and it abstracts the system in a standard way to the Java program, providing a clean, architecture-neutral interface. This interface allows a class file to run on any system that has implemented the JVM according to the specification. Java takes advantage of the complete environment that a virtual machine implements. Its virtualmachine design provides a secure, efficient, object-oriented, portable, and architecture-neutral platform on which to run Java programs. 4. Processes: Early computer systems allowed only one program to be executed at a time. This program had complete control of the system, and had access to all the system's resources. Current-day computer systems allow multiple programs to be, loaded into memory and to be executed concurrently. This evolution required, firmer control and more compartmentalization of the various programs. These needs resulted in the notion of a process, which is a program in execution. A process is the unit of work in a modern time-sharing system. Process Concept Process Scheduling Operations on Processes Cooperating Processes Interprocess Communication Communication in Client-Server Systems 4.1. Process Concept One impediment to our discussion of operating systems is the question of what to call all the CPU activities. A batch system executes jobs, whereas a timeshared system has user programs, or tasks. Even on a single-user system, such as Microsoft Windows and Macintosh OS, a user may be able to run

55 several programs at one time: a word processor, web browser, and package. Even if the user can execute only one program at a time, the operating system may need to support its own internal programmed activities, such as memory management. In many respects, all these activities are similar, so we call all of them processes. The terms job and process are used almost interchangeably in this text. Although we personally prefer the term process, much of operating-system theory and terminology was developed during a time when the major activity of operating systems was job processing. It would be misleading to avoid the use of commonly accepted terms that include the word job (such as job scheduling) simply because process has superseded job. Process: Informally, a process is a program in execution. A process is more than the program code, which is sometimes known as the text section. It also includes the current activity, as represented by the value of the program counter and the contents of the processor's registers. In addition, a process generally includes the process stack, which contains temporary data (such as method parameters, return addresses, and local variables), and a data section, which contains global variables. Definition 1: A process is defined as a program in execution. Definition 2: A process is an asynchronous activity. Definition 3: A process is defined as the locus of control of a procedure in execution. Definition 4: A process is defined as the manifestation by a process control block in the operating system. Definition 5: A process is an entity to which the processors are assigned for execution. Process State As a process executes, it changes state. The state of a process is defined in part by the current activity of that process. Each process may be in one of the following states: New: The process is being created. Running: Instructions are being executed. Waiting: The process is waiting for some event to occur (such as an I/O completion or reception of a signal). Ready: The process is waiting to be assigned to a processor.

56 Terminated: The process has finished execution. These state names are arbitrary, and they vary across operating systems. The states that they represent are found on all systems, however. Certain operating systems more finely delineate process states. Only one process can be running on any processor at any instant, although many processes may be ready and waiting. Process Control Block Each process is represented in the operating system by a process control block (PCB)-also called a task control block.. It contains many pieces of information associated with a specific process, including these: Process state: The state may be new, ready, running, waiting, halted, and SO on.

57 Program counter: The counter indicates the address of the next instruction to be executed for this process. CPU registers: The registers vary in number and type, depending on the computer architecture. They include accumulators, index registers, stack pointers, and general-purpose registers, plus any condition-code information. Along with the program counter, this state information must be saved when an interrupt occurs, to allow the process to be continued correctly afterward. CPU scheduling information: This information includes a process priority, pointers to scheduling queues, and any other scheduling parameters. Memory-management information: This information may include such information as the value of the base and limit registers, the page tables, or the segment tables, depending on the memory system used by the operating system Accounting information: This information includes the amount of CPU and real time used, time limits, account numbers, job or process numbers, and so on. Status information: The information includes the list of I/O devices allocated to this process, a list of open files, and so on. The PCB simply serves as the repository for any information that may vary from process to process.

58 4.2. Process scheduling: CPU Switch From Process to Process: Introduction: Scheduling is a key concept in computer multitasking and multiprocessing operating system design, and in real-time operating system design. In modern operating systems, there are typically many more processes running than there are CPUs available to run them. What is scheduling? Scheduling refers to the way processes are assigned to run on the available CPUs. This assignment is carried out by software known as a scheduler. Types of scheduling queues: Job queue - The entering processes will be put in this queue Device queue- The list of processes waiting for a particular device I/O queue - The I/O requesting processes will be available in this queue Ready queue - Processes kept in main memory and wait for execution

59 Definition: Schedulers are the program in the operating system which carries out the scheduling task for the processes. The scheduler is concerned mainly with: CPU utilization - to keep the CPU as busy as possible. Throughput - number of process that complete their execution per time unit. Turnaround - amount of time to execute a particular process. Waiting time - amount of time a process has been waiting in the ready queue. Response time - amount of time it takes from when a request was submitted until the first response is produced. Fairness - Equal CPU time to each thread. In real-time environments, such as mobile devices for automatic control in industry (for example robotics), the scheduler also must ensure that processes can meet deadlines; this is crucial for keeping the system stable. Scheduled tasks are sent to mobile devices and managed through an administrative program. Schedulers: Types of schedulers: Long term scheduler or Job scheduler Selects the processes and loads into the main memory Short term scheduler or CPU scheduler Selects the processes that are ready to execute, and allocate the CPU Medium term scheduler - Removes the processes from memory

60 I/O bound and CPU bound processes: I/O bound processes are the processes which consumes more time for their I/O operation. CPU bound processes are the processes which utilizes the CPU more time for computation purpose. Context Switch Switching the CPU to another process requires saving the state of the old process and loading the saved state for the new process. This task is known as a context switch. The context of a process is represented in the PCB of a process; it includes the value of the CPU registers, the process state, and Memory-management information. When a context switch occurs, the kernel saves the context of the old process in its PCB and loads the saved context of the new process scheduled to run. Context-switch time is pure overhead, because the system does no useful work while switching. Its speed varies from machine to machine, depending on the memory speed, the number of registers that must be copied, and the existence of special instructions (such as a single instruction to load or store all registers). Typical speeds range from 1 to 1000 microseconds. Context-switch times are highly dependent on hardware support. For instance, some processors (such as the Sun Ultras ARC) provide multiple sets of registers. A context switch simply includes changing the pointer to the current register set. Of course, if active processes exceed register sets, the system resorts to copying register data to and from memory, as before. Also, the more complex the operating system, the more work must be done during a context switch. As we will see in Chapter 9, advanced memory-management techniques may require extra data to be switched with each context. For instance, the address space of the current process must be preserved as the space of the next task is

61 prepared for use. How the address space is preserved, and what amount of work is needed to preserve it, depend on the memory-management method of the operating system Operations on Processes The processes in the system can execute concurrently, and they must be created and deleted dynamically. Thus, the operating system must provide a mechanism (or facility) for process creation and termination. Process creation: A process can create several new processes via a create process system call during the course of execution. The creating process is the parent process. The process that are created by the parent is called child process. Each of this created process in turn creates other processes forms a tree of processes. The children process can get the resources from the OS directly or the parent process has to allocate the resources to its child. If the resources are to be allocated to number of children, they have to be shared by the parent process. When a process creates a new process, two possibilities exist in terms of execution. 1. The parent continuous to execute concurrently with its children. 2. The parent waits until some or all of its children have terminated. There are two possibilities in terms of the address space of the new process 1. The child process is a duplicate of the parent process. 2. The child process has a program loaded into it. Process Creation:

62 C Program Forking Separate Process int main() { Pid_t pid; /* fork another process */ pid = fork(); if (pid < 0) { /* error occurred */ fprintf(stderr, "Fork Failed"); exit(-1); } else if (pid == 0) { /* child process */ execlp("/bin/ls", "ls", NULL); } else { /* parent process */ /* parent will wait for the child to complete */ wait (NULL); printf ("Child Complete"); exit(0); } } Process termination: A process terminates when it finishes executing its final statement and asks the operating system to delete it by using the exit system call. All the resources of the process including physical and virtual memory, open files, and I/O buffers are deallocated by the operating system. A process can cause the termination of another process via an appropriate system call. This system call is issued by the parent process for its child process which is to be terminated. Therefore, the parent needs the identities of the children. So, when a process is created, the identity of the process is passed to the parent process. A parent may terminate the execution of one of its children for the following reasons. The child has exceeded its usage of some of the resources allocated. For this purpose the parent has to inspect the child then and there using some mechanism.

63 The task assigned to the child is no longer required. The parent is existing, and the operating system does not allow a child to continue if its parent terminates. On such systems if a process terminates then all its children must also be terminated. This phenomenon is called cascading termination Cooperating Processes The concurrent processes executing in the operating system may be either independent processes or cooperating processes. A process is independent if it cannot affect or be affected by the other processes executing in the system. Clearly, any process that does not share any data (temporary or persistent) with any other process is independent. On the other hand, a process is cooperating if it can affect or be affected by the other processes executing in the system. Clearly, any process that shares data with other processes is a cooperating process. We may want to provide an environment that allows process cooperation for several reasons: Information sharing: Since several users may be interested in the same piece of information (for instance, a shared file), we must provide an environment to allow concurrent access to these types of resources. Computation speedup: If we want a particular task to run faster, we must break it into subtasks, each of which will be executing in parallel with the others. Such a speedup can be achieved only if the computer has multiple processing elements (such as CPUS or I/O channels). Modularity: We may want to construct the system in a modular fashion, dividing the system functions into separate processes or threads.

64 Convenience: Even an individual user may have many tasks on which to work at one time. For instance, a user may be editing, printing, and compiling in parallel. Producer-consumer problem: This is the common paradigm for co-operative processes. Here a producer process produces information that is consumed by a consumer process. For example, a printer program produces characters which will be consumed by the printer driver. A compiler may produce the assembly code which will be consumed by the assembler. The assembler in turn produces object modules consumed by the loader. To allow producer and consumer processes to run concurrently, a buffer of items must be available that can be filled by the producer and emptied by the consumer. A producer can produce one item while the consumer consumes another one. The producer and consumer must be synchronized, so that the consumer does not try to consume an item that has not yet been produced. In this situation the consumer must wait until an item is produced by the producer. The producer consumer problem has been categorized into two. 1. Unbounded producer consumer 2. Bounded producer consumer In Unbounded buffer producer consumer problem the consumer has to wait for the producer to produce the item because there is no limit for the buffer size. In bounded buffer producer consumer problem the producer has to wait because there is limit for the buffer size and the consumer has no necessity to wait. The buffer may either be provided by the operating system through the use of an Interprocess communication (IPC) facility or explicitly coded by the programmer with the use of shared memory.

65 Bounded-Buffer Shared-Memory Solution: Shared data #define BUFFER_SIZE 10 Typedef struct {... } item; item buffer[buffer_size]; int in = 0; int out = 0; Solution is correct, but can only use BUFFER_SIZE-1 elements Bounded-Buffer Insert() Method: while (true) { /* Produce an item */ while (((in = (in + 1) % BUFFER SIZE count) == out) ; /* do nothing -- no free buffers */ buffer[in] = item; in = (in + 1) % BUFFER SIZE; { Bounded Buffer Remove() Method while (true) { while (in == out) ; // do nothing -- nothing to consume } // remove an item from the buffer item = buffer[out]; out = (out + 1) % BUFFER SIZE; return item;

66 4.5. Interprocess communication: Introduction: One way to achieve co-operative process to communicate with each other is the interprocess communication (IPC) facility which is provided by the operating system itself to share the common buffer pool. This chapter deals with the basic concepts of IPC, the mechanisms that provide the facility of IPC, naming methodology of the processes which are communicating via IPC, types of IPCs and how they are synchronized. What is IPC? IPC is defined as a mechanism that provides facility to the processes to communicate and synchronize their actions without sharing the same address space. IPC environment: IPC is very much useful in distributed environment where the communicating processes reside on different computers connected with a network. Example: Chat program used in WWW. Message passing system: IPC is best provided by a message passing system and message passing has various definitions. The object of Message passing system is to allow processes to communicate with each other without resorting the shared data. IPC provides minimum two operations send (message) and receive (message). Messages sent by a process can be of either fixed or variable size. If fixed size messages are sent the implementation is easy at system level. But the programming task is more difficult. But on the other hand, the variable the implementation is very difficult at the system level but the programming task is much easier. If two processes are communicating each other, messages have to be sent and received by them. A communication link must exist between them. This link can be implemented in various ways. They are as follows. Direct or indirect communication Symmetric or asymmetric communication

67 Automatic or explicit buffering Send by copy or send by reference Fixed sized or variable sized messages Direct or indirect communication: Direct communication: With direct communication each process that wants to communicate must explicitly name the recipient or sender of the communication. In this scheme the send and receive primitives are defined as follows. Send (P, message) - send a message to process P Receive (Q, message) receive a message from process Q Properties of communication link: A link is established automatically between every pair of processes that want to communicate. The process need to know only each other s identity to communicate. A link is associated exactly with two processes. Indirect communication: Indirect communication among processes is a method of communication where the communication takes place indirectly among the processes by means of a mailbox or ports. Mailbox: The mailbox is an object where messages can be placed by processes and from which messages can be removed. Each mailbox has a unique identification. In this communication each process can communicate with other processes via number of different mailboxes. Two processes can communicate with each other only if they share the mailbox. The mailbox may be owned either by a process or by the operating system. If the mailbox is owned by a process then there must be a owner and user to the mailbox. The process which sends message to other process is the owner of the mailbox whereas the process that receives communication from other processes is the user of the mailbox. When a process terminates, the corresponding mailbox will also be terminated if the terminating process is the owner of

68 the mailbox. On the other hand, if the mailbox is owned by the operating system then these mailboxes will not be attached to any process directly. There is a mechanism in the OS that allows the processes to do the following. Creation of new mailbox Send and receive messages through the mailbox Delete a mailbox Here the owner is the only process that receives the messages through the mailbox. But the ownership can be passed on to other processes through appropriate system call. An issue: Suppose only one process sends a send request and two processes are issuing a receive request which are sharing the same mailbox, which process has to receive the message. This issue depends on the method of communication. But this problem has to be resolved by Allowing a link to be associated with at most two processes Allowing at most one process at a time to execute a receive operation Allow the system to select arbitrarily which process will receive the message. Synchronization Communication between processes takes place by calls to send and receive primitives. There are different design options for implementing each primitive. Message passing may be either blocking or nonblocking-also known as synchronous and asynchronous. Blocking send: mailbox. The sending process is blocked until the message is received by the receiving process or by the Nonblocking send: The sending process sends the message and resumes operation.

69 Blocking receive: The receiver blocks until a message is available. Nonblocking receive: The receiver retrieves either a valid message or a null. Different combinations of send and receive are possible. When both the send and receive are blocking, we have a rendezvous between the sender and the receiver. Buffering Whether the communication is direct or indirect, messages exchanged by communicating processes reside in a temporary queue. Basically, such a queue can be implemented in three ways: Zero capacity: The queue has maximum length 0; thus, the link cannot have any messages waiting in it. In this case, the sender must block until the recipient receives the message. Bounded capacity: The queue has finite length n; thus, at most n messages can reside in it. If the queue is not full when a new message is sent, the latter is placed in the queue (either the message is copied or a pointer to the message is kept), and the sender can continue execution without waiting. The link has a finite capacity, however. If the link is full, the sender must block until space is available in the queue. Unbounded capacity: The queue has potentially infinite length; thus, any number of messages can wait in it. The sender never blocks. The zero-capacity case is sometimes referred to as a message system with no buffering; the other cases are referred to as automatic buffering.

70 4.6. Communication in Client - Server Systems Consider a user who needs access to data located at some server. For example, a user may wish to find out the total number of lines, words, and characters in a file located at server A. This request is handled by a remote server A, which accesses the file, computes the desired result, and eventually transfers the actual data back to the user. Sockets A socket is defined as an endpoint for communication. A pair of processes communicating over a network employs a pair of sockets-one for each process. A socket is made up of an IP address concatenated with a port number. In general, sockets use a client-server architecture. The server waits for incoming client requests by listening to a specified port. Once a request is received, the server accepts a connection from the client socket to complete the connection. Servers implementing specific services (such as telnet, ftp, and http) listen to well-known ports (a telnet server listens to port 23, an ftp server listens to port, and a web (or http) server listens to port 80). All ports below 1024 are considered well known; we can use them to implement standard services. When a client process initiates a request for a connection, it is assigned a port by the host computer. This port is some arbitrary number greater than For example, if a client on host X with IP address wishes to establish a connection with a web server (which is listening on port 80) at address , host X may be assigned port The connection will consist of a pair of sockets: ( :1625) on host X, and ( :80) on the web server. The packets traveling between the hosts are delivered to the appropriate process, based on the destination port number.

71 The details illustrating how the server communicates with the socket are as follows. The server first establishes a print writer object that it will use to communicate with the client. A Print Writer object allows the server to write to the socket using the normal print and println methods for output. import java.net.*; import java.io.*; public class Server { public static void main(string[] args) throws IOException { Socket client = null; PrintWriter pout = null; ServerSocket sock = null; try sock = new ServerSocket (5155) ; // now listen for connections while (true) { client = sock.accept(); // we have a connection pout = new PrintWriter( client. getoutputstream(), true) ; // write the Date to the socket pout.println(new java.util.dateo.tostring()); pout. close 0 ; client. close0 ; } catch (IOException ioe) { System.err.println(ioe) ; finally { if (client!= null) client. close0 ; if (sock!= null) sock. close 0 ; } }

72 A client communicates with the server by creating a socket and connecting to the port the server is listening on.. The client creates a Socket and requests a connection with the server at IP address on port Once the connection is made, the client can read from the socket using normal stream I/O statements. After it has received the time of day from the server, the client closes the socket and exits. The IP address is a special IP address known as the local host. When a computer refers to IP address , it is referring to itself. This mechanism allows the client and server on the same host to communicate using the TCP/IP protocol. The IP address could be replaced with the IP address of another host running the time-of-day server. import java.net.*; import j ava. io. * ; public class Client public static void main(string[] args) throws IOException { Inputstream in = null; BufferedReader bin = null; Socket sock = null; try //make connection to socket sock = new Socket ( ",5155) ; in = sock. getinputstream0 ; bin = new BufferedReader(new Input~treamReader(in)); String line; while ( (line = bin.readline())!= null) System.out.println(line); catch (IOException ioe) { System.err.println(ioe) ; } finally { if (sock!= null) sock. close 0 ; } Communication using sockets-although common and efficient-is considered a low-level form of communication between distributed processes. One reason is that sockets allow only an unstructured stream of bytes to be exchanged between the communicating threads. It is the responsibility of the

73 client or server application to impose a structure on the data. In the next two subsections, we look at two alternative, higher-level methods of communication: remote procedure calls (RPCs) and remote method invocation (RMI). Remote Procedure Calls: Remote procedure call (RPC) abstracts procedure calls between processes on networked systems. Stubs client-side proxy for the actual procedure on the server. The client-side stub locates the server and marshals the parameters. The server-side stub receives this message, unpacks the marshaled parameters, and performs the procedure on the server. The RPC was designed as a way to abstract the procedure-call mechanism for use between systems with network connections. Because we are dealing with an environment in which the processes are executing on separate systems, we must use a message-based communication scheme to provide remote service. In contrast to the IPC facility, the messages exchanged for RPC communication are well structured and are thus no longer just packets of data. They are addressed to an RPC daemon listening to a port on the remote system, and contain an identifier of the function to execute and the parameters to pass to that function. The function is then executed as requested, and any output is sent back to the requester in a separate message. A port is simply a number included at the start of a message packet. Whereas a system normally has one network address, it can have many ports within that address to differentiate the many network services it supports. If a remote process needs a service, it addresses its messages to the proper port. For instance, if a system wished to allow other systems to be able to list the current users on it, it would have a daemon supporting such an RPC attached to a port -say, port Any remote system could obtain the needed information (that is, the list of current users) by sending an RPC message to port 3027 on the server; the data would be received in a reply message The semantics of RPCs allow a client to invoke a procedure on a remote host as it would invoke a procedure locally. The RPC system hides the necessary details allowing the communication to take place. The RPC system does this by providing a stub on the client side. Typically, a separate stub exists for each separate remote procedure. When the client invokes a remote procedure, the RPC system calls the appropriate stub, passing it the parameters provided to the remote procedure. This stub locates the port on the server and marshals the parameters. Parameter marshalling involves packaging the parameters into a form which may be transmitted over a network. The stub then transmits a message to the server using message passing. A similar stub on the server side receives this message and invokes the procedure on the server. If necessary, return values are passed back to the client using the same technique

74 Remote Method Invocation The remote method invocation (RMI) is a Java feature similar to RPCs. RMI allows a thread to invoke a method on a remote object. Objects are considered remote if they reside in a different Java virtual machine (JVM). Therefore, the remote object may be in a different JVM on the same computer or on a remote host connected by a network. RMI and RPCs differ in two fundamental ways. First, RPCs support procedural programming whereby only remote procedures or functions may be called. RMI is object-based: It supports invocation of methods on remote objects. Second, the parameters to remote procedures are ordinary data structures in RPC; with RMI it is possible to pass objects as parameters to remote methods. By allowing a Java program to invoke methods on remote objects, RMI makes it possible for users to develop Java applications that are distributed across a network.

75 To make remote methods transparent to both the client and the server, RMI implements the remote object using stubs and skeletons. A stub is a proxy for the remote object; it resides with the client. When a client invokes a remote method, this stub for the remote object is called. This client-side stub is responsible for creating a parcel consisting of the name of the method to be invoked on the server and the marshaled parameters for the method. The stub then sends this parcel to the server, where the skeleton for the remote object receives it. The skeleton is responsible for unmarshalling the parameters and invoking the desired method on the server. The skeleton then marshals the return value (or exception, if any) into a parcel and returns this parcel to the client. The stub unmarshalls the return value and passes it to the client. Let us demonstrate how this process works. 5. Threads: Introduction: A thread is a flow of execution through the process's code, with its own program counter, system registers and stack. Threads are a popular way to improve application performance through parallelism. A thread is sometimes called a light weight process. Threads represent a software approach to improving performance of operating system 0/ reducing the over head of process switching. In systems with threads, a process with exactly one thread is equivalent to a classical process. Each thread belongs to exactly one process and no thread can exist outside a process. Each thread represents separate flow of control.

76 Threads have been successfully used in implementation network severs. They also provide a suitable foundation for parallel execution of applications on shared memory multiprocessors. Threading issues System calls fork and exec is discussed here. In a multithreaded program environment, fork and exec system calls is changed. Unix systems have two version fork system calls. One call duplicates all threads and another that duplicates only thread that invoke the fork system call. Whether to use one or two version of fork system call totally depends upon the application. Duplicating all threads unnecessary, if exec is called immediately after fork system call. Thread cancellation is processes of thread terminate before its completion of task For example, in multiple thread environments, thread concurrently searching through database. If anyone thread returns the result, the remaining thread might be cancelled. Thread cancellation is of two types. 1. Asynchronous cancellation 2. Deferred cancellation In asynchronous cancellation, one thread immediately terminates the target thread. Deferred cancellation periodically check for terminate by target thread. It also allows the target thread to terminate itself in an orderly fashion. Some resources are allocated to the thread. If we cancel the thread, which update the data with other thread. This problem may face by asynchronous cancellation system wide resource are not free if threads cancelled asynchronously. Most of the operating systems allow a process or thread to be cancelled asynchronously.

1. Operating System Concepts

1. Operating System Concepts 1. Operating System Concepts 1.1 What is an operating system? Operating systems are an essential part of any computer system. An operating system (OS) is software, which acts as an intermediary between

More information

Computer-System Organization (cont.)

Computer-System Organization (cont.) Computer-System Organization (cont.) Interrupt time line for a single process doing output. Interrupts are an important part of a computer architecture. Each computer design has its own interrupt mechanism,

More information

UNIT I OPERATING SYSTEMS OVERVIEW

UNIT I OPERATING SYSTEMS OVERVIEW UNIT I OPERATING SYSTEMS OVERVIEW Computer System Overview-Basic Elements, Instruction Execution, Interrupts, Memory Hierarchy, Cache Memory, Direct Memory Access, Multiprocessor and Multicore Organization.

More information

Chapter 1: Introduction. Operating System Concepts 9 th Edit9on

Chapter 1: Introduction. Operating System Concepts 9 th Edit9on Chapter 1: Introduction Operating System Concepts 9 th Edit9on Silberschatz, Galvin and Gagne 2013 Objectives To describe the basic organization of computer systems To provide a grand tour of the major

More information

Chapter 1: Introduction

Chapter 1: Introduction Chapter 1: Introduction What is an operating system? Simple Batch Systems Multiprogramming Batched Systems Time-Sharing Systems Personal-Computer Systems Parallel Systems Distributed Systems Real -Time

More information

Operating Systems Fundamentals. What is an Operating System? Focus. Computer System Components. Chapter 1: Introduction

Operating Systems Fundamentals. What is an Operating System? Focus. Computer System Components. Chapter 1: Introduction Operating Systems Fundamentals Overview of Operating Systems Ahmed Tawfik Modern Operating Systems are increasingly complex Operating System Millions of Lines of Code DOS 0.015 Windows 95 11 Windows 98

More information

Introduction. What is an Operating System? A Modern Computer System. Computer System Components. What is an Operating System?

Introduction. What is an Operating System? A Modern Computer System. Computer System Components. What is an Operating System? Introduction CSCI 315 Operating Systems Design Department of Computer Science What is an Operating System? A Modern Computer System Computer System Components Disks... Mouse Keyboard Printer 1. Hardware

More information

UNIT 1. INTRODUCTION: COMPUTER & OPERATING SYSTEMS

UNIT 1. INTRODUCTION: COMPUTER & OPERATING SYSTEMS This document can be downloaded from www.chetanahegde.in with most recent updates. 1 UNIT 1. INTRODUCTION: COMPUTER & OPERATING SYSTEMS 1.1 BASIC ELEMENTS A computer consists of processor, memory and I/O

More information

CHAPTER-1: INTRODUCTION TO OPERATING SYSTEM:

CHAPTER-1: INTRODUCTION TO OPERATING SYSTEM: CHAPTER-1: INTRODUCTION TO OPERATING SYSTEM: TOPICS TO BE COVERED 1.1 Need of Operating System 1.2 Evolution of os 1.3 operating system i. Batch ii. iii. iv. Multiprogramming Time sharing Real time v.

More information

Chapter 1: Introduction

Chapter 1: Introduction Chapter 1: Introduction What is an Operating System? Mainframe Systems Desktop Systems Multiprocessor Systems Distributed Systems Clustered System Real -Time Systems Handheld Systems Computing Environments

More information

MODULE 1. INTRODUCTION: COMPUTER & OPERATING SYSTEMS

MODULE 1. INTRODUCTION: COMPUTER & OPERATING SYSTEMS This document can be downloaded from www.chetanahegde.in with most recent updates. 1 MODULE 1. INTRODUCTION: COMPUTER & OPERATING SYSTEMS 1.1 BASIC ELEMENTS A computer consists of processor, memory and

More information

OPERATING SYSTEMS UNIT - 1

OPERATING SYSTEMS UNIT - 1 OPERATING SYSTEMS UNIT - 1 Syllabus UNIT I FUNDAMENTALS Introduction: Mainframe systems Desktop Systems Multiprocessor Systems Distributed Systems Clustered Systems Real Time Systems Handheld Systems -

More information

Operating Systems Course 2 nd semester 2016/2017 Chapter 1: Introduction

Operating Systems Course 2 nd semester 2016/2017 Chapter 1: Introduction Operating Systems Course 2 nd semester 2016/2017 Chapter 1: Introduction Lecturer: Eng. Mohamed B. Abubaker Note: Adapted from the resources of textbox Operating System Concepts, 9 th edition What is an

More information

Computer-System Architecture (cont.) Symmetrically Constructed Clusters (cont.) Advantages: 1. Greater computational power by running applications

Computer-System Architecture (cont.) Symmetrically Constructed Clusters (cont.) Advantages: 1. Greater computational power by running applications Computer-System Architecture (cont.) Symmetrically Constructed Clusters (cont.) Advantages: 1. Greater computational power by running applications concurrently on all computers in the cluster. Disadvantages:

More information

Chapter 1: Introduction

Chapter 1: Introduction Chapter 1: Introduction Silberschatz, Galvin and Gagne 2009 Chapter 1: Introduction What Operating Systems Do Computer-System Organization Computer-System Architecture Operating-System Structure Operating-System

More information

CS6401- Operating System QUESTION BANK UNIT-I

CS6401- Operating System QUESTION BANK UNIT-I Part-A 1. What is an Operating system? QUESTION BANK UNIT-I An operating system is a program that manages the computer hardware. It also provides a basis for application programs and act as an intermediary

More information

OPERATING SYSTEMS. Prescribed Text Book Operating System Principles, Seventh Edition By Abraham Silberschatz, Peter Baer Galvin and Greg Gagne

OPERATING SYSTEMS. Prescribed Text Book Operating System Principles, Seventh Edition By Abraham Silberschatz, Peter Baer Galvin and Greg Gagne OPERATING SYSTEMS Prescribed Text Book Operating System Principles, Seventh Edition By Abraham Silberschatz, Peter Baer Galvin and Greg Gagne OVERVIEW An operating system is a program that manages the

More information

Module 1: Introduction

Module 1: Introduction Module 1: Introduction What is an operating system? Simple Batch Systems Multiprogramming Batched Systems Time-Sharing Systems Personal-Computer Systems Parallel Systems Distributed Systems Real-Time Systems

More information

Part I Overview Chapter 1: Introduction

Part I Overview Chapter 1: Introduction Part I Overview Chapter 1: Introduction Fall 2010 1 What is an Operating System? A computer system can be roughly divided into the hardware, the operating system, the application i programs, and dthe users.

More information

Lecture 1 Introduction (Chapter 1 of Textbook)

Lecture 1 Introduction (Chapter 1 of Textbook) Bilkent University Department of Computer Engineering CS342 Operating Systems Lecture 1 Introduction (Chapter 1 of Textbook) Dr. İbrahim Körpeoğlu http://www.cs.bilkent.edu.tr/~korpe 1 References The slides

More information

Module 1: Introduction. What is an Operating System?

Module 1: Introduction. What is an Operating System? Module 1: Introduction What is an operating system? Simple Batch Systems Multiprogramming Batched Systems Time-Sharing Systems Personal-Computer Systems Parallel Systems Distributed Systems Real-Time Systems

More information

Operating System: an Overview. Lucia Dwi Krisnawati, MA

Operating System: an Overview. Lucia Dwi Krisnawati, MA Operating System: an Overview Lucia Dwi Krisnawati, MA What is an Operating System? A program that acts as an intermediary between a user of a computer and the computer hardware. Operating system goals:

More information

Introduction to Computer Systems and Operating Systems

Introduction to Computer Systems and Operating Systems Introduction to Computer Systems and Operating Systems Minsoo Ryu Real-Time Computing and Communications Lab. Hanyang University msryu@hanyang.ac.kr Topics Covered 1. Computer History 2. Computer System

More information

Operating Systems. Operating Systems

Operating Systems. Operating Systems The operating system defines our computing experience. It is the first software we see when we turn on the computer, and the last software we see when the computer is turned off. It's the software that

More information

Introduction to Operating System

Introduction to Operating System Introduction to Operating System An operating system is a program which manages all the computer hardware. It provides the base for application program and acts as an intermediary between a user and the

More information

UNIT-I MAINFRAME SYSTEMS

UNIT-I MAINFRAME SYSTEMS UNIT-I Introduction: Mainframe Systems - Desktop Systems Multiprocessor Systems Distributed Systems Clustered Systems - Real Time Systems Hardware Protection System Components Handheld Systems -Operating

More information

CS370 Operating Systems

CS370 Operating Systems CS370 Operating Systems Colorado State University Yashwant K Malaiya Fall 2016 Lecture 2 Slides based on Text by Silberschatz, Galvin, Gagne Various sources 1 1 2 System I/O System I/O (Chap 13) Central

More information

ECE397A Operating Systems. Chapter 1: Introduction

ECE397A Operating Systems. Chapter 1: Introduction ECE397A Operating Systems Welcome! Instructor: Professor Csaba Andras Moritz Class webpage: http://www.ecs.umass.edu/ece/andras/courses/ece397 Instructors webpage: http://www.ecs.umass.edu/ece/andras 3

More information

Chapter 1: Introduction. Operating System Concepts 8th Edition,

Chapter 1: Introduction. Operating System Concepts 8th Edition, Chapter 1: Introduction, Administrivia Reading: Chapter 1. Next time: Continued Grand Tour. 1.2 Outline Common computer system devices. Parallelism within an operating system. Interrupts. Storage operation,

More information

Module 1: Introduction

Module 1: Introduction Module 1: Introduction What is an operating system? Simple Batch Systems Multiprogramming Batched Systems Time-Sharing Systems Personal-Computer Systems Parallel Systems Distributed Systems Real -Time

More information

European University of Lefke. Instructor: Dr. Arif SARI

European University of Lefke. Instructor: Dr. Arif SARI European University of Lefke CIS 105 Operating Systems Instructor: Dr. Arif SARI Email: asari@eul.edu.tr Introduction 1.1 Silberschatz, Galvin and Gagne 2009 Chapter 1: Introduction, Silberschatz, Galvin

More information

Course Content. 07-Feb-17 Faculty of Computer Science & Engineering 1 BK TP.HCM

Course Content. 07-Feb-17 Faculty of Computer Science & Engineering 1 BK TP.HCM Course Content Course Overview Process Concepts Processes Scheduling Processes Synchronization Deadlocks & Problems solving Real Memory Virtual Memory I/O Management Files system Some modern OS Examples

More information

CS370 Operating Systems

CS370 Operating Systems CS370 Operating Systems Colorado State University Yashwant K Malaiya Spring 2018 Lecture 2 Slides based on Text by Silberschatz, Galvin, Gagne Various sources 1 1 2 What is an Operating System? What is

More information

Some popular Operating Systems include Linux Operating System, Windows Operating System, VMS, OS/400, AIX, z/os, etc.

Some popular Operating Systems include Linux Operating System, Windows Operating System, VMS, OS/400, AIX, z/os, etc. An Operating System (OS) is an interface between computer user and computer hardware. An operating system is software which performs all the basic tasks like file management, memory management, process

More information

Chapter 1: Introduction Dr. Ali Fanian. Operating System Concepts 9 th Edit9on

Chapter 1: Introduction Dr. Ali Fanian. Operating System Concepts 9 th Edit9on Chapter 1: Introduction Dr. Ali Fanian Operating System Concepts 9 th Edit9on Silberschatz, Galvin and Gagne 2013 1.2 Silberschatz, Galvin and Gagne 2013 Organization Lectures Homework Quiz Several homeworks

More information

CSC 453 Operating Systems

CSC 453 Operating Systems CSC 453 Operating Systems Lecture 1: An Introduction What Is an Operating System? An operating system is the software that serves as an interface between the user (or his/her software applications) and

More information

To provide a grand tour of the major operating systems components To provide coverage of basic computer system organization

To provide a grand tour of the major operating systems components To provide coverage of basic computer system organization Introduction What Operating Systems Do Computer-System Organization Computer-System Architecture Operating-System Structure Operating-System Operations Process Management Memory Management Storage Management

More information

Fundamental of digital computer

Fundamental of digital computer Introduction to computer:- Fundamental of digital computer A computer is an electronic device that has the ability to accept data, store data, perform mathematical and logical operations, and report the

More information

Introduction CHAPTER. Practice Exercises. 1.1 What are the three main purposes of an operating system? Answer: The three main puropses are:

Introduction CHAPTER. Practice Exercises. 1.1 What are the three main purposes of an operating system? Answer: The three main puropses are: 1 CHAPTER Introduction Practice Exercises 1.1 What are the three main purposes of an operating system? Answer: The three main puropses are: To provide an environment for a computer user to execute programs

More information

OPERATING SYSTEMS & UTILITY PROGRAMS

OPERATING SYSTEMS & UTILITY PROGRAMS OPERATING SYSTEMS & UTILITY PROGRAMS System Software System software consists of the programs that control the operations of the computer and its devices. Functions that system software performs include:

More information

1.1 Introduction. Fig.1.1 Abstract view of the components of a computer system.

1.1 Introduction. Fig.1.1 Abstract view of the components of a computer system. 1.1 Introduction An operating system is a program that manages the computer hardware. It also provides a basis for application programs and acts as an intermediary between a user of a computer and the

More information

Types and Functions of Win Operating Systems

Types and Functions of Win Operating Systems LEC. 2 College of Information Technology / Software Department.. Computer Skills I / First Class / First Semester 2017-2018 Types and Functions of Win Operating Systems What is an Operating System (O.S.)?

More information

OPERATING SYSTEMS TOTAL : 45 REFERENCE BOOKS

OPERATING SYSTEMS TOTAL : 45 REFERENCE BOOKS OPERATING SYSTEMS UNIT I 9 Introduction - Mainframe systems Desktop Systems Multiprocessor Systems Distributed Systems Clustered Systems Real Time Systems Handheld Systems - Hardware Protection - System

More information

Operating Systems. Introduction & Overview. Outline for today s lecture. Administrivia. ITS 225: Operating Systems. Lecture 1

Operating Systems. Introduction & Overview. Outline for today s lecture. Administrivia. ITS 225: Operating Systems. Lecture 1 ITS 225: Operating Systems Operating Systems Lecture 1 Introduction & Overview Jan 15, 2004 Dr. Matthew Dailey Information Technology Program Sirindhorn International Institute of Technology Thammasat

More information

Operating system Dr. Shroouq J.

Operating system Dr. Shroouq J. 2.2.2 DMA Structure In a simple terminal-input driver, when a line is to be read from the terminal, the first character typed is sent to the computer. When that character is received, the asynchronous-communication

More information

Ricardo Rocha. Department of Computer Science Faculty of Sciences University of Porto

Ricardo Rocha. Department of Computer Science Faculty of Sciences University of Porto Ricardo Rocha Department of Computer Science Faculty of Sciences University of Porto Slides based on the book Operating System Concepts, 9th Edition, Abraham Silberschatz, Peter B. Galvin and Greg Gagne,

More information

Operating Systems: Internals and Design Principles. Chapter 2 Operating System Overview Seventh Edition By William Stallings

Operating Systems: Internals and Design Principles. Chapter 2 Operating System Overview Seventh Edition By William Stallings Operating Systems: Internals and Design Principles Chapter 2 Operating System Overview Seventh Edition By William Stallings Operating Systems: Internals and Design Principles Operating systems are those

More information

DM510 Operating Systems. Jacob Aae Mikkelsen

DM510 Operating Systems. Jacob Aae Mikkelsen DM510 Operating Systems Jacob Aae Mikkelsen DM510 2014 DM510 Course Introduction Teacher: Jacob Aae Mikkelsen ( jamik@imada.sdu.dk ) Teaching Assistant: Daniel Fentz Johansen ( dfjohansen@gmail.com ) Course

More information

Operating Systems. Computer Science & Information Technology (CS) Rank under AIR 100

Operating Systems. Computer Science & Information Technology (CS) Rank under AIR 100 GATE- 2016-17 Postal Correspondence 1 Operating Systems Computer Science & Information Technology (CS) 20 Rank under AIR 100 Postal Correspondence Examination Oriented Theory, Practice Set Key concepts,

More information

Introduction. TDDI04, K. Arvidsson, IDA, Linköpings universitet Contents. What is an Operating System (OS)?

Introduction. TDDI04, K. Arvidsson, IDA, Linköpings universitet Contents. What is an Operating System (OS)? TDDI04 Concurrent Programming, Operating Systems, and Real-time Operating Systems Introduction Copyright Notice: The lecture notes are mainly based on Silberschatz s, Galvin s and Gagne s book ( Operating

More information

Operating Systemss and Multicore Programming (1DT089)

Operating Systemss and Multicore Programming (1DT089) Operating Systemss and Multicore Programming (1DT089) Introduction to Operating Systemss (Chapter 1) Wednesday january 23 Uppsala University 2013 karl.marklund@it.uu.se Chapter 1: Introduction Chapter

More information

OPERATING- SYSTEM CONCEPTS

OPERATING- SYSTEM CONCEPTS INSTRUCTOR S MANUAL TO ACCOMPANY OPERATING- SYSTEM CONCEPTS SEVENTH EDITION ABRAHAM SILBERSCHATZ Yale University PETER BAER GALVIN Corporate Technologies GREG GAGNE Westminster College Preface This volume

More information

Chapter 1: Introduction. What is an Operating System? Overview Course (contd.) How do I spend my time? Computer System Components

Chapter 1: Introduction. What is an Operating System? Overview Course (contd.) How do I spend my time? Computer System Components ECE397A Operating Systems Overview Chapter 1: Introduction Welcome! Instructor: Professor Csaba Andras Moritz, andras@ecs.umass.edu Class webpage: http://www.ecs.umass.edu/ece/andras/courses/ece397_s2005

More information

TOPIC 1. Following are some of important functions of an operating System. Memory Management. Processor Management. Device Management.

TOPIC 1. Following are some of important functions of an operating System. Memory Management. Processor Management. Device Management. TOPIC 1 An operating System (OS) is an intermediary between users and computer hardware. It provides users an environment in which a user can execute programs conveniently and efficiently. In technical

More information

CSC 2405: Computer Systems II

CSC 2405: Computer Systems II CSC 2405: Computer Systems II Dr. Mirela Damian http://www.csc.villanova.edu/~mdamian/csc2405/ Spring 2016 Course Goals: Look under the hood Help you learn what happens under the hood of computer systems

More information

Operating Systems Overview. Chapter 2

Operating Systems Overview. Chapter 2 1 Operating Systems Overview 2 Chapter 2 3 An operating System: The interface between hardware and the user From the user s perspective: OS is a program that controls the execution of application programs

More information

7/20/2008. What Operating Systems Do Computer-System Organization

7/20/2008. What Operating Systems Do Computer-System Organization Introduction to Operating Systems Introduction What Operating Systems Do Computer-System Organization Computer-System Architecture Operating-System Structure Operating-System Operations Process Management

More information

Four Components of a Computer System

Four Components of a Computer System Four Components of a Computer System Operating System Concepts Essentials 2nd Edition 1.1 Silberschatz, Galvin and Gagne 2013 Operating System Definition OS is a resource allocator Manages all resources

More information

Fundamental Concepts and History

Fundamental Concepts and History Fundamental Concepts and History Minsoo Ryu Real-Time Computing and Communications Lab. Hanyang University msryu@hanyang.ac.kr Topics Covered I. Fundamental Concepts II. Evolution of OS 2 Key Concepts

More information

Operating System Concepts Rab Nawaz Khan Jadoon

Operating System Concepts Rab Nawaz Khan Jadoon Operating System Concepts Rab Nawaz Khan Jadoon DCS COMSATS Institute of Information Technology Lecturer COMSATS Lahore Pakistan Operating System Concepts Operating System Operating System It is a system

More information

What Operating Systems Do An operating system is a program hardware that manages the computer provides a basis for application programs acts as an int

What Operating Systems Do An operating system is a program hardware that manages the computer provides a basis for application programs acts as an int Operating Systems Lecture 1 Introduction Agenda: What Operating Systems Do Computer System Components How to view the Operating System Computer-System Operation Interrupt Operation I/O Structure DMA Structure

More information

Chapter 1: Introduction Operating Systems MSc. Ivan A. Escobar

Chapter 1: Introduction Operating Systems MSc. Ivan A. Escobar Chapter 1: Introduction Operating Systems MSc. Ivan A. Escobar What is an Operating System? A program that acts as an intermediary between a user of a computer and the computer hardware. Operating system

More information

Chapter 1: Introduction

Chapter 1: Introduction Chapter 1: Introduction Chapter 1: Introduction What Operating Systems Do Computer-System Organization Computer-System Architecture Operating-System Structure Operating-System Operations Process Management

More information

UNIT 1 JAGANNATH UNIVERSITY UNIT 2. Define Operating system and its functions. Explain different types of Operating System

UNIT 1 JAGANNATH UNIVERSITY UNIT 2. Define Operating system and its functions. Explain different types of Operating System JAGANNATH UNIVERSITY BCAII OPERATING SYSTEM MODEL TEST PAPER (SOLVED) UNIT 1 Q1 Q2 Q3 Q4 Q5 Define Operating system and its functions Explain different types of Operating System Describe different types

More information

Lecture 9: MIMD Architectures

Lecture 9: MIMD Architectures Lecture 9: MIMD Architectures Introduction and classification Symmetric multiprocessors NUMA architecture Clusters Zebo Peng, IDA, LiTH 1 Introduction A set of general purpose processors is connected together.

More information

Introduction. CS3026 Operating Systems Lecture 01

Introduction. CS3026 Operating Systems Lecture 01 Introduction CS3026 Operating Systems Lecture 01 One or more CPUs Device controllers (I/O modules) Memory Bus Operating system? Computer System What is an Operating System An Operating System is a program

More information

Chapter 1: Introduction

Chapter 1: Introduction Chapter 1: Introduction Chapter 1: Introduction What Operating Systems Do Computer-System Organization Computer-System Architecture Operating-System Structure Operating-System Operations Process Management

More information

Chapter 1 Computer System Overview

Chapter 1 Computer System Overview Operating Systems: Internals and Design Principles Chapter 1 Computer System Overview Seventh Edition By William Stallings Objectives of Chapter To provide a grand tour of the major computer system components:

More information

Reserves time on a paper sign-up sheet. Programmer runs his own program. Relays or vacuum tube hardware. Plug board or punch card input.

Reserves time on a paper sign-up sheet. Programmer runs his own program. Relays or vacuum tube hardware. Plug board or punch card input. Introduction & Ch1 Two Roles of an Operating System Extended Machine or virtual machine Device drivers, Processes, File systems, Networking protocols. Resource Manager Allocates and enforces Memory, Disk

More information

Chapter 1: Introduction. Chapter 1: Introduction

Chapter 1: Introduction. Chapter 1: Introduction Chapter 1: Introduction Chapter 1: Introduction What Operating Systems Do Computer-System Organization Computer-System Architecture Operating-System Structure Operating-System Operations Process Management

More information

GENERAL I ARTICLE. Operating Systems. 1. Objectives and Evolution. operating systems, and then we trace the evolution of operating

GENERAL I ARTICLE. Operating Systems. 1. Objectives and Evolution. operating systems, and then we trace the evolution of operating Operating Systems 1. Objectives and Evolution M Suresh Babu In this article we examine the objectives and fun.ctions of operating systems, and then we trace the evolution of operating systems from the

More information

Chapter-1: Exercise Solution

Chapter-1: Exercise Solution Chapter-1: Exercise Solution 1.1 In a multiprogramming and time-sharing environment, several users share the system simultaneously. This situation can result in various security problems. a. What are two

More information

Computer System Overview

Computer System Overview Computer System Overview Introduction A computer system consists of hardware system programs application programs 2 Operating System Provides a set of services to system users (collection of service programs)

More information

Principles of Operating Systems CS 446/646

Principles of Operating Systems CS 446/646 Principles of Operating Systems CS 446/646 1. Introduction to Operating Systems a. Role of an O/S b. O/S History and Features Serial processing Simple batch systems Multiprogrammed batch systems Time-sharing

More information

OPERATING SYSTEMS: Lesson 1: Introduction to Operating Systems

OPERATING SYSTEMS: Lesson 1: Introduction to Operating Systems OPERATING SYSTEMS: Lesson 1: Introduction to Jesús Carretero Pérez David Expósito Singh José Daniel García Sánchez Francisco Javier García Blas Florin Isaila 1 Why study? a) OS, and its internals, largely

More information

ROEVER ENGINEERING COLLEGE, PERAMBALUR DEPARTMENT OF INFORMATION TECHNOLOGY OPERATING SYSTEMS QUESTION BANK UNIT-I

ROEVER ENGINEERING COLLEGE, PERAMBALUR DEPARTMENT OF INFORMATION TECHNOLOGY OPERATING SYSTEMS QUESTION BANK UNIT-I systems are based on time-sharing systems ROEVER ENGINEERING COLLEGE, PERAMBALUR DEPARTMENT OF INFORMATION TECHNOLOGY OPERATING SYSTEMS QUESTION BANK UNIT-I 1 What is an operating system? An operating

More information

OPERATING SYSTEM. Functions of Operating System:

OPERATING SYSTEM. Functions of Operating System: OPERATING SYSTEM Introduction: An operating system (commonly abbreviated to either OS or O/S) is an interface between hardware and user. OS is responsible for the management and coordination of activities

More information

Introduction To Operating System

Introduction To Operating System 1 Introduction To Operating System What is Operating System? An operating system is a program that controls the execution of application and acts as an interface between the user of a computer and the

More information

Operating Systems. studykorner.org

Operating Systems. studykorner.org Operating Systems Outlines What are Operating Systems? All components Description, Types of Operating Systems Multi programming systems, Time sharing systems, Parallel systems, Real Time systems, Distributed

More information

Operating Systems. Lecture Course in Autumn Term 2015 University of Birmingham. Eike Ritter. September 22, 2015

Operating Systems. Lecture Course in Autumn Term 2015 University of Birmingham. Eike Ritter. September 22, 2015 Lecture Course in Autumn Term 2015 University of Birmingham September 22, 2015 Course Details Overview Course Details What is an Operating System? OS Definition and Structure Lecture notes and resources:

More information

OPERATING SYSTEMS. P. PRAVEEN Asst.Prof, CSE

OPERATING SYSTEMS. P. PRAVEEN Asst.Prof, CSE OPERATING SYSTEMS By P. PRAVEEN Asst.Prof, CSE P. Praveen Asst Prof, Department of Computer Science and Engineering Page 1 P. Praveen Asst Prof, Department of Computer Science and Engineering Page 2 1

More information

Downloaded from various sources on the NET

Downloaded from various sources on the NET Overview Computers. Hardware components of a Computer. Purpose and functions of computer operating systems. Evolution of computer operating systems. Operating systems available today. Downloaded from various

More information

Batch processing is a technique in which Operating System collects programs and data together in

Batch processing is a technique in which Operating System collects programs and data together in OPERATING SYSTEM PROPERTIES Following are few of very important tasks that Operating System handles. 1.1 Batch Processing Batch processing is a technique in which Operating System collects programs and

More information

Operating System - Overview

Operating System - Overview Unit 37. Operating System Operating System - Overview An Operating System (OS) is an interface between a computer user and computer hardware. An operating system is a software which performs all the basic

More information

Lecture Topics. Announcements. Today: Advanced Scheduling (Stallings, chapter ) Next: Deadlock (Stallings, chapter

Lecture Topics. Announcements. Today: Advanced Scheduling (Stallings, chapter ) Next: Deadlock (Stallings, chapter Lecture Topics Today: Advanced Scheduling (Stallings, chapter 10.1-10.4) Next: Deadlock (Stallings, chapter 6.1-6.6) 1 Announcements Exam #2 returned today Self-Study Exercise #10 Project #8 (due 11/16)

More information

Table of Contents 1. OPERATING SYSTEM OVERVIEW OPERATING SYSTEM TYPES OPERATING SYSTEM SERVICES Definition...

Table of Contents 1. OPERATING SYSTEM OVERVIEW OPERATING SYSTEM TYPES OPERATING SYSTEM SERVICES Definition... Table of Contents 1. OPERATING SYSTEM OVERVIEW... 1 Definition... 1 Memory Management... 2 Processor Management... 2 Device Management... 2 File Management... 2 Other Important Activities... 3. OPERATING

More information

Misc. Third Generation Batch Multiprogramming. Fourth Generation Time Sharing. Last Time Evolution of OSs

Misc. Third Generation Batch Multiprogramming. Fourth Generation Time Sharing. Last Time Evolution of OSs Third Generation Batch Multiprogramming Misc. Problem: but I/O still expensive; can happen in middle of job Idea: have a pool of ready jobs in memory, switch to one when another needs I/O When one job

More information

NETW3005 Operating Systems Lecture 1: Introduction and history of O/Ss

NETW3005 Operating Systems Lecture 1: Introduction and history of O/Ss NETW3005 Operating Systems Lecture 1: Introduction and history of O/Ss General The Computer Architecture section SFDV2005 is now complete, and today we begin on NETW3005 Operating Systems. Lecturers: Give

More information

Module 1 Introduction/OS Overview

Module 1 Introduction/OS Overview Module 1 Introduction/OS Overview Reading: Chapter 1 and 2 (Silberchatz) Objective: Quick overview of computer system organization the processor (CPU), memory, and input/output, architecture and general

More information

Operating System Review

Operating System Review COP 4225 Advanced Unix Programming Operating System Review Chi Zhang czhang@cs.fiu.edu 1 About the Course Prerequisite: COP 4610 Concepts and Principles Programming System Calls Advanced Topics Internals,

More information

Some popular Operating Systems include Linux Operating System, Windows Operating System, VMS, OS/400, AIX, z/os, etc.

Some popular Operating Systems include Linux Operating System, Windows Operating System, VMS, OS/400, AIX, z/os, etc. Operating System Quick Guide https://www.tutorialspoint.com/operating_system/os_quick_guide.htm Copyright tutorialspoint.com Operating System Overview An Operating System OS is an interface between a computer

More information

Announcement. Exercise #2 will be out today. Due date is next Monday

Announcement. Exercise #2 will be out today. Due date is next Monday Announcement Exercise #2 will be out today Due date is next Monday Major OS Developments 2 Evolution of Operating Systems Generations include: Serial Processing Simple Batch Systems Multiprogrammed Batch

More information

SRI VENKATESWARA COLLEGE OF ENGINEERING PENNALUR, SRIPERUMBUDUR TK

SRI VENKATESWARA COLLEGE OF ENGINEERING PENNALUR, SRIPERUMBUDUR TK Operating System SRI VENKATESWARA COLLEGE OF ENGINEERING PENNALUR, SRIPERUMBUDUR TK 602117 DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING & DEPARTMENT OF INFORMATION TECHNOLOGY COMMON COURSE (REGULATIONS

More information

Course Details. Operating Systems with C/C++ Course Details. What is an Operating System?

Course Details. Operating Systems with C/C++ Course Details. What is an Operating System? Lecture Course in Autumn Term 2013 University of Birmingham Lecture notes and resources: http://www.cs.bham.ac.uk/ exr/teaching/lectures/opsys/13_14 closed facebook group: UoBOperatingSystems anyone registered

More information

Multiprocessor scheduling

Multiprocessor scheduling Chapter 10 Multiprocessor scheduling When a computer system contains multiple processors, a few new issues arise. Multiprocessor systems can be categorized into the following: Loosely coupled or distributed.

More information

Operating System For Computer Science & Information Technology By www.thegateacademy.com Syllabus Syllabus for Operating System Processes, Threads, Inter Process Communication, Concurrency and Synchronization,

More information

HANDOUTS/ NOTES/ STUDY MATERIAL. Jagannath Institute of Management Sciences Lajpat Nagar OPERATING SYSTEM

HANDOUTS/ NOTES/ STUDY MATERIAL. Jagannath Institute of Management Sciences Lajpat Nagar OPERATING SYSTEM HANDOUTS/ NOTES/ STUDY MATERIAL Jagannath Institute of Management Sciences Lajpat Nagar OPERATING SYSTEM UNIT 1 Introduction/Definition An operating system act as an intermediary between the user of a

More information

Some popular Operating Systems include Linux, Unix, Windows, MS-DOS, Android, etc.

Some popular Operating Systems include Linux, Unix, Windows, MS-DOS, Android, etc. 1.1 Operating System Definition An Operating System (OS) is an interface between a computer user and computer hardware. An operating system is a software which performs all the basic tasks like file management,

More information

Chapter 1 Introduction

Chapter 1 Introduction Chapter 1 Introduction Introduction to OS 1 What is an Operating System? A program that acts as an intermediary between a user of a computer and the computer hardware. Various operating system goals: Mainframe

More information

CSC Operating Systems Fall Lecture - I Introduction. Tevfik Ko!ar. Louisiana State University. August 25 th, Contact Information

CSC Operating Systems Fall Lecture - I Introduction. Tevfik Ko!ar. Louisiana State University. August 25 th, Contact Information CSC 4103 - Operating Systems Fall 2009 Lecture - I Introduction Tevfik Ko!ar Louisiana State University August 25 th, 2009 1 Contact Information Instructor: Prof. Tevfik Kosar Office: 292 Coates (also

More information