Evolution of OS • Operating Systems have been evolving through the years. • Generations of computers to see what their Operating Systems were like. Generations Year Electronic devices Types of OS and used devices First 1945-55 Vaccum Tubes Plug Boards Second 1955-65 Transistors Batch Systems Third 1965-1980 ICs Multiprogramming Fourth Since 1980 LSI Personal Computers Zeroth Generation • First Digital Computer was designed by Charles Babbage(1792-1871) called Analytical Engine. • Design was purely mechanical (wheels, gears, cogs etc) • Due to Unreliable design did not get popular. • It did not have any Operating System. First Generation (1945-55) Vacuum Tubes & Plugboards • Around 1940’s John Von Neumann and others developed Calculating Engine. • Initially they used mechanical Relays but was very slow. • Replaced by vacuum tubes. • Machines were enormous, Entire Room Sized, With Tens of thousands of vacuum tubes. • Still millions times slower than today’s cheapest PC. • Programming was done in machine language. • Often by wiring up the plug boards to control the machine’s basic functions. • Programming languages were unknown. • Operating systems were unheard of. First Generation Cont….. • Programmers have to sign up for a block of time • Come down to the machine room • Insert his or her plug board into the computer. • Spend the next few hours hoping that none of the thousands of vacuum tubes would burn out during the programs run. • Just numerical calculations were performed. • In 1950 punch cards were Introduced instead of plug boards. Second Generation (1955-65) Transistors and Batch Systems • In 1950s Transistors were introduced. • Computers were reliable enough to be manufactured and sold. • Machines were called Mainframes, locked in a special air conditioned room with the professional operators to operate them. • Only big companies or major govt. agencies or universities could afford the multimillion dollar price equipment. • To run a job • Write program on paper (FORTRAN or Assembler) then punch it on punch cards. • Bring card deck to the computer room and hand it over to the operator. (Wait for Output) • When Job gets finished, operator takes print out and brings to the output room and then programmer can collect it. Second Generation Cont…. • During the Job if FORTRAN compiler needed then? • Perform Next Job. • Much Computer Time was wasted while Operators were moving around the machine room. • High Cost Equipment, How to reduce the Wasted Time? • Solution was Batch System. Batch System • Idea was to collect a tray full of jobs in the Input room. • Read Jobs onto a magnetic tape using a small inexpensive computer IBM 1401, was very good at reading cards, copying tapes & printing output. (was not good at numerical calculations) • Other much more expensive machines, IBM 7904, were used for real computing. Batch System • After about an hour of collecting a batch of Jobs, the was rewound and brought into the machine room, where it was mounted on a tape drive. • The operator then loads special program (Ancestor’s of an OS (from the system tape)) which reads the first Job from tape & run it. • O/P was written to second tape. • OS automatically reads the next Job from the tape. • When the Whole Batch was done, the operator removed the I/P & O/P tapes, replaced by next batch of I/P tape. • Brought the O/P tape to a 1401 for printing. Batch Systems (1) Figure 1- An early batch system. (a) Programmers bring cards to 1401. (b)1401 reads batch of jobs onto tape. Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639 Batch Systems (2) Figure 1-1. (c) Operator carries input tape to 7094. (d) 7094 does computing. (e) Operator carries output tape to 1401. (f) 1401 prints output. Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639 Batch Systems (3) Figure 1-2. Structure of a typical FMS job. Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639 Batch System • It starts with $JOB card, specifying the max run time in minutes, the account number to be charged, and programmer’s name. • $FORTRAN card, telling the OS to load the FORTRAN compiler from the system tape. • Followed card is the program to be compiled. • $LOAD card, directing the OS to load the object program just compiled (saved on a scratch card) • $RUN card, telling the OS run the program with the data following it. • Finally the $END card marked the end of Job. • This generation largely used for Scientific and Engineering Calculations. • Programming languages were FORTRAN and Assembly Language. • Typical Operating Systems were FMS(FORTRAN MONITOR SYSTEM) and IBSYS(IBM’s Operating Systems for 7094). Third Generation (1965-80) ICs & Multiprogramming • Around 1960’s Manufacturer had two distinct products in the market i.e. 7094( for numerical calculations) and 1401(for tape sorting & printing). • Developing and Maintaining two diff. products was not possible for manufacturers. • Customers were needed small machines but then they wanted a bigger machine which runs all programs but faster. • IBM solved the problem by introducing OS/360. • 360 was a series of S/W compatible machines ranging from 1401- sized to powerful 7094. • They differed in Price and performance. • All machines had the same architecture & Instruction set so programs written for one machine could run on all the others (Portability) • 360 was designed to handle both Scientific and commercial computing. Third Generation Cont….. • Single family had satisfied all the need of customers. • IBM had came out with Successors of 360 370, 4300, 3080 & 3090 Series. • 360 was the first computer to use the Integrated Circuits (ICs) • Improving Price and Performance both compare to 2nd Generation. • Descendants of these machines are still in used today at many computer centers • Often used for managing huge databases (Airline Reservation Systems) , As servers for World Wide Web Sites( must process thousands of requests per second) • Greatest strength was also the Greatest weakness. Third Generation Cont….. • OS/360 had to work on all models. • It had to run from small systems to large systems (replaced by 1401- 7904) • It had to be good for few peripherals systems to many peripherals system. • Had to work in commercial & scientific environments. • Above all it had to be efficient for users. • IBM could not make a s/w to meet all these requirements • Result, was enormous and extraordinary complex OS • Still OS/360 had satisfied customers need. • Important feature or key technique was multiprogramming Multiprogramming • Main Disadvantage of 2nd Generation , on 7094, when current Job paused to wait for a tape or other I/O devices operation to complete CPU simply set Idle until the I/O finished. • To save Idle CPU time solution evolved was to partition memory into several pieces, with diff Jobs in each Partition. Figure 1-3 A multiprogramming system with three jobs in memory. Multiprogramming • While One Job was Waiting for I/O to complete, another Job could be using the CPU. • If enough Jobs could be held in Memory at once, CPU could be kept busy nearly 100% • Multiple Jobs in Memory also require special H/W to protect each Job. • 360 and others were equipped with this H/W. • Though multiple Jobs in memory, it still has the problem. • Still some problem Mechanical I/O is slower than Electronic Device CPU) • In order to overcome the speed mismatch problem a technique called SPOOLING (Simultaneous Peripherals Operations Online) was Introduced. SPOOLING • After sometimes, improvement in technology & Introduction of disks resulted in faster I/O devices. • At the same time CPU speed was also increased to a greater extent due to change in their technology. • Due to advent of Disk technology it allowed OS to keep all jobs on a disk rather than on a serial card reader. • Whenever a running Job finished, the OS could load a new Job from the disk into the now-empty partition and run it. • This technique is called Spooling and was also used for output. Card Reader I/P O/P Spool Spool Printer Reader Process Application Program Writer Process SPOOLING • If several Jobs are ready to be brought into memory, and there is no enough room for all of them, then system must choose among them. Job Scheduling is required. • Once Job is selected & loaded in memory, then having several program in memory at the same time requires having some form of Memory Management. • If several Jobs are ready in memory then CPU Scheduling is required. Multiprogramming • Problems • Multiprogrammed batch systems provide an environment where the various System resources are utilized effectively. • User cannot Interact with Job while it is executing. • User has to set up the control cards to handle all possible outcomes. • In a multi-step Job, subsequent steps may depend on the result of earlier ones. • The running of a program may depend on successful compilation. • Diff to define what to do in all cases. • A Programmer can not modify a program as it executes. • A single comma mistake could cause a compilation to fail and programmer has to waste half a day in experimentation. • Turnaround time was long. • Solution is a Time-Sharing Systems. Time-Sharing Systems • Time Sharing is a logical extension of Multiprogramming. • Multiple Jobs are executed by the CPU switching between them, but the switches occur so frequently that the users may interact with each program while it is running. • An interactive system provides online communication between user and the system. • User gives instruction to OS or program & receives response directly. • K/B is I/P and CRT is O/P • OS finishes execution of one command & seeks next from K/B, user gives I/P & waits for response & decides the next command based on the previous result. • User can easily experiment and can see results immediately. Time-Sharing Systems • FEATURES • Multiple users interacting with the system. • CPU bound is divided into different time slots depending upon the no. of users. • CPU switching is so fast that user feels that he is only working on the system. • Multitasking System with the CPU scheduling and Multiprogramming to provide each user with a small portion of a time-shared system. • Issues • Due to complexity Memory mgmt is required. • It must provide Job Synchronization and communication. • It must ensure that Deadlock will not occur. Time-Sharing Systems • First Time-Sharing System was CTSS (Compatible Time Sharing System) (1962). • Then MULTICS (Multiplexed Information & Computing Services), to support hundreds of simultaneous user & huge machines. • Another major development was the growth of Minicomputers, DEC PDP-1 in 1961, Series & last PDP-11. • Ken Thompson developed UNIX system on PDP-7. • System V from AT&T, BSD (Berkeley S/W Distribution) • IEEE developed on standard called POSIX for UNIX. • 1987 clone of UNIX called MINIX was released. • Then Linus Torvald developed LINUX (free Version) Fourth Generation (1980-till present) Personal Computers • With the development of LSI Circuits, chips containing thousands of transistors on a square centimeter of silicon, the age of personal computer (called Microcomputers) dawned. • Microprocessor made it possible for an individual to have his or her own PC. • 1974, Intel came out with 8080 PC. • For OS Intel asked consultant Gary Kildal. • They built a controller & 8-inch floppy disk was hooked up to the 8080. • Disk based OS called CP/M (Control program for Microcomputers) • Kildal formed a company Digital Research. • Rewrote CP/M for 8080, Zilog Z80 & other CPU & used for micro computing for about 5 years. • In 1980 IBM designed IBM PC & looked around for OS. Fourth Generation Cont…… • IBM contacted Bill Gates to license his BASIC Interpreter & also asked for OS which runs on PC. • Gates suggested for Digital Research. • Kildal refused to meet IBM & even to sign up with IBM (Worst business decision in recorded history) • IBM went back to Gates if he can provide them with an OS. • Gates found local manufacturer, had a suitable OS DOS (Disk OS), met him and asked to buy it which they readily accepted ($50,000). • Gates then offered DOS/BASIC package to IBM which IBM has accepted. • IBM wanted certain modifications so Gates hired that person (Tim Paterson ) as an employee of Microsoft and new version of DOS called MS-DOS. • Wise decision to offer as a package then to sell as an end user like CP/M. Fourth Generation Cont…… • IBM PC/AT in 1983 came out with 80286 CPU with MS-DOS & CP/M was out. • MS-DOS widely used on 80386,80486 families (XENIX). • CP/M, MS-DOS & other OS were command based only. • In 1980, Engelbart invented GUI complete with windows, icons, menus & mouse. • Steve Job taken an idea from him and developed Macintosh for APPLE Computers. (1st attempt Lisa was failed), got huge success due to user-friendly features. • Microsoft decided to build the successor of MS-DOS with GUI and they came up with WINDOWS (originally ran on top of MS-DOS like a shell than a true OS) • 1985-1995, 10 yrs, Windows was just an environment on top of MS- DOS. • In 1995, Win95, was released, using the underlying MS-DOS program only for booting and running old MS-DOS program. Fourth Generation Cont…… • In 1998, win98 (16 bit OS) • Win NT written from scratch (32 bit OS) • Win NT 4 was released. • Win NT 5 was renamed as win 2000. • Window Millennium edition (Win ME). • Another OS for PCs were UNIX, LINUX • UNIX supported windowing System called X Windows. Network Operating System • Another interesting development began in Mid 1980s is the growth of Networking of PCs • NOS & DOS. • In NOS, users are aware of the existence of multiple computers and can log into remote machines and copy files from one machine to another. • Each machine runs its own local Operating System and has its own local user. • NOS are not fundamentally different from single processor OS. • They need NIC and some low level S/W to drive it and program to achieve remote login and remote file access. Distributed Operating System • DOS, is one that appears to its users as a traditional uni-processor system. • Even though it is actually composed of multiple processors. • The users should not be aware of where their programs are being run or where their files are located. • It is automatically and efficiently handled by the OS. • DOS often allow applications to run on several processors at the same time. • More complex processor scheduling algorithms in order to optimize the parallelism.