Advanced Operating Systems - Lecture 1: Introduction and Overview. This lecture will cover the following: course objectives and pre-requisites; introduction to what an operating system is; issues involved in the design of an operating system; different types of operating systems;...
Advanced Operating Systems Introduction and Overview Instructor’s introduction MS (Computer Science) University of Southern California, USA BS Electrical Engineering, University of Engineering and Technology Lahore, Pakistan Over 15 years of professional experience in US and Pakistan industry as system software architect, designer and developer in the field of embedded systems, operating systems and computer networks Worked as senior software architect and team lead in Nortel Networks California USA, Philips Semiconductors California USA, Zhone Technologies California USA, Enabling Technologies Islamabad and CresSoft Inc Islamabad Pakistan Designed and implemented embedded software for network routers, including protocol stacks in real-time operating system kernels, switches, DSL access multiplexers, TCP/IP core protocol and routing engines, multimedia software for video conferencing and video encoding/decoding Currently working as the CTO of MediaRoutes Inc, where I am developing a SIP (Session Initiation Protocol) based highly scalable state-full server for call proxy, routing and registrations The system is built on an asynchronous, event-driven framework I have designed that can scale the SIP server to handle more than 100,000 concurrent SIP sessions The framework will soon be available as open-source under GNU public license Overview of today’s lecture Course Objectives and Pre-requisites Introduction to what an operating system is? Issues involved in the design of an operating system Different types of operating systems Re-cap of the lecture Course objectives In depth treatment of topics from design perspective Consider why things are done in a certain way instead of just how they are done Consider design alternatives Be able to tell the difference between a good design and a bad design Also consider engineering tradeoffs involved in the design process Course Objectives (cont’d) Practical aspects from a computer scientist’s perspective These include: A case study throughout the course of a real commercial operating system kernel We will present Linux kernel for this purpose We will also make comparisons to other operating systems e.g Windows where applicable Hands on training as a programmer on using operating system services in relatively complex programs I will assign to programming assignments for this purpose Course Objectives (cont’d) Research perspective We will also look at some contemporary and classical research on operating system topics in the research literature For this purpose, I will assign a few readings from the literature on operating systems Course Prerequisites C/C++ programming This is an essential prerequisite since without this, you won’t be able to the assignments An undergraduate first course on data structures This should include implementation of elementary data structures e.g lists, stack, queues, trees etc in a high level language like C or C++ etc A first course on operating systems would be helpful but not strictly required since we will cover the basics of each topic before diving into the deeper stuff What is an operating system? Top-down view Provides an extended or virtual machine abstraction to user programs Easier to program than the underlying hardware All services are invoked and accomplished through system calls Bottom-up view Acts as a resource manager of a complex system Resources consist of processors, memories, timers, disks, mice, keyboard, network interfaces, printers etc OS manages allocation of these resources to user programs in an orderly and controlled manner Resource multiplexing OS multiplexes resources in two ways: In time, In space Time multiplexing involves different programs taking turns in using the resource Example: CPU scheduling, printer sharing Space multiplexing involves different program getting part of the resource possibly at the same time Example: memory is divided into several running programs The major OS issues Structure: how is the OS organized? Sharing: how are resources shared across users? Naming: how are resources named (by users or programs)? Security: how is the integrity of the OS and its resources ensured? Protection: how is one user/program protected from another? Performance: how we make it all go fast? Reliability: what happens if something goes wrong (either with hardware or with program)? Extensibility: can we add new features? Communication: how programs exchange information, including across a network? More OS issues Concurrency: how are parallel activates (computation and I/O created and controlled? Scale: what happens as demands or resources increase? Persistence: how you make data last longer than program executions? Distribution: how multiple computers interact with each other? Accounting: how we keep track of resources usage, and perhaps charge for it? Protection and security as an example None OS from my program Your program from my program My program from my program Access by intruding individuals Access by intruding programs Denial of service Distributed denial of service Spoofing Spam Worms Viruses Stuff you download and run knowingly (bugs, Trojan horses) Stuff you download and run unknowingly (cookies, spyware) Type of Operating Systems Main frame operating systems Huge amounts of I/O activity 1000s of disks not unusual Provide batch, transaction and time sharing services Batch processing is routine non-interactive jobs e.g claims processing, sales reporting etc Transaction processing systems handle large number of small requests e.g check processing in banks, air line reservations etc Time-sharing systems allow multiple remote users to run jobs at the same time e.g querying a database OS Optimized for these tasks Example is OS/390 Server operating systems Run on very large PCs, workstations or even main-frames They serve multiple users over a network simultaneously and allow them to share hardware and software Examples are web servers, database transaction servers etc Examples of OS in this class are Win2K, XP and flavors of UNIX Multiprocessor operating systems OS is basically a variation to server operating systems with special provisions for connectivity and communication management between different CPUs PC operating systems OS provides a nice interface to a single user Typically used for word processing, spread sheets, Internet access etc Real-time operating systems Characterized by time as the key parameter Real-time response to internal and external events is more important than any other design goal Classified into two sub-categories: Hard and Soft real-time Example applications include Industrial process control, robotics and assembly lines, air traffic control, network routers and telecommunication switches, multi-media systems etc Embedded operating systems Embedded in small devices e.g palm-top computers e.g PDA, TV sets, micro-wave ovens, mobile phones They have characteristics of real-time systems (mainly soft real-time) but also have restraints on power consumption, memory usage etc Examples include PalmOS and Windows CE Height of this type is smart-card systems Distributed Systems Distribute the computation among several physical processors Loosely coupled system – each processor has its own local memory; processors communicate with one another through various communications lines, such as high-speed buses or telephone lines Advantages of distributed systems Resources Sharing Computation speed up – load sharing Reliability Communications Parallel Systems Multiprocessor systems with more than on CPU in close communication Tightly coupled system – processors share memory and a clock; communication usually takes place through the shared memory Advantages of parallel system: Increased throughput Economical Increased reliability graceful degradation fail-soft systems ... open-source under GNU public license Overview of today’s? ?lecture Course Objectives and Pre-requisites Introduction to what an operating system is? Issues involved in the design of an operating. .. Embedded operating systems Embedded in small devices e.g palm-top computers e.g PDA, TV sets, micro-wave ovens, mobile phones They have characteristics of real-time systems (mainly soft real-time)... Real-time operating systems Characterized by time as the key parameter Real-time response to internal and external events is more important than any other design goal Classified into two sub-categories: