220 likes | 232 Views
Learn about modern operating systems' abstractions and facilities, implementation issues, hardware management, benefits, and core OS issues.
E N D
CS444/CS544Operating Systems Introduction 1/12/2007 Prof. Searleman jets@clarkson.edu
CS444/CS544 Spring 2007 • Objectives of this course • Administrivia • Overview of Operating Systems Reading assignment: • Chapters 1 & 2, plus 3.1 through 3.3 HW#1: due Friday, 1/18/07
Course Objectives • To introduce students to the abstractions and facilities provided by modern operating systems. • To familiarize students with the issues that arise when implementing operation system services
Administrivia • course webpage: http://www.clarkson.edu/~jets/cs444/sp07 • contact info: SC375, x2377, jets@clarkson.edu, IM jetsza • office hours: check webpage • TA: Todd DeShane • schedule: check frequently! Either 2 lectures & a lab per week; or sometimes 3 lectures
Textbooks Required: • Operating System Concepts, 7th Edition, by Silberschatz, Galvin, and Gagne, John Wiley & Sons, 2005, ISBN 0-471-69466-5. Recommended: • The C Programming Language, ANSI C, Second Edition, by Kernighan & Ritchie, Prentice Hall, 1988, ISBN 0-13-110362-8.
Grading Policy • 30% Midterm Exams • 30% Final Exam • 10% Homework & Quizzes • 30% Laboratory Projects
Applications Operating Systems Hardware What is an operating system? A software layer that • manages hardware resources • provides an abstraction of the underlying hardware that is easier to program and use “who gets what, when” “virtual machine”
Hardware Resources • CPU, Functional Units, Registers • Main memory access • Storage devices (disk drives, CD-ROMs, tape drives) • Network Interface Cards • Human I/O devices (keyboards, monitors, mice) • Other? Printers, cameras, sensors, … How much do you know about what it would be like to interact with these devices without an OS? The interface should be convenient, fair & efficient
Objectives • convenience • efficiency • ability to evolve • an OS should be designed so that new services can be developed, tested, and deployed without (or minimally) disrupting current services
Benefits of Operating Systems (1) • Abstracting the Hardware • Gory details of the raw hardware hidden so applications can be smaller and simpler • Application writers can program to a simpler and more portable “virtual machine” • Providing useful logical abstractions • New types of logical resources (sockets, pipes)
Benefits of Operating Systems (2) • Protecting applications from each other • Enforce “fair” allocation of hardware resources among applications • Policies that say what is “fair” and mechanisms to enforce it • Supporting communication and coordination among applications • Support abstractions through which different applications can share data and notify each other of events
What an operating system is not • Compiler • Standard libraries • Command Shells • These are closely related pieces of system software, but they are not the OS.
Is OS code like other code? • Most OSs are implemented in C • Developed without space-age development environments (kernel debuggers?) • The buck stops here! • OS must deal with gory hardware details • Try to keep hardware dependent parts isolated • What happens when get a device interrupt in the middle of executing an application? What happens when get a device interrupt while servicing another device interrupt? • What happens if you take a page fault while executing operating system code • Performance and reliability are crucial! • Still a lot more like application code than you might think
Lots of variety of OSes • Unix (Solaris, HP-UX, AIX, FreeBSD, NetBSD,OpenBSD…); Linux • Windows XP, 2000, NT, ME, 98, 95 • BeOS • MacOS, OS X • OS 360, CMS, MVS, VM, z/OS • PalmOS • WindowsCE • Mach, Amoeba, Sprite, Vino, SPIN, QnX, …
What distinguishes operating systems? • When people talk about which operating system to run, they often talk about: • Look and feel of the desktop windowing system • Devices that are supported • What hardware platforms does it run on? • Applications that are available for that OS • Who developed the code? Who supports the code? • How often does the system crash? Reliability? • Do you pay for it? • Are these really core OS issues?
Core OS Issues: OS Structure • How is the OS structured? • One monolithic kernel of spaghetti code • One monolithic kernel that is internally composed of distinct layers • One monolithic kernel that is internally composed of distinct objects • Micro-kernel with trusted user level applications that provide major OS functionality like virtual memory, scheduling, file systems, etc. • Software engineering questions: • Maintainability? Performance? Reliability? Portability?
Core OS Issues • Concurrency • How many and what types of activities can occur simultaneously? • Protection • What is the granularity at which permission to access various resources are granted? • How do you verify an entity’s right to access a resource? • Fault Tolerance • How do we deal with faults in applications? In devices? In our own OS code?
Core OS Issues • Resource/services provided to applications • Does the OS offer kernel support for events? Signals? Threads? Pipes? Shared memory? • Naming • How do applications refer to and request the resources they want for themselves? Resources they want to share with others? • Sharing • What objects can be shared among applications? What is the granularity of sharing? • Resource Allocation and Tracking • What is the unit (or units) of resource allocation? • Can we track ( and bill for) resource usage?
Core OS Issues • Service Time Guarantees • What guarantees (if any) are made to applications about the servicing of their requests or about the servicing of device interrupts? • Real-time OSs • Scale/Load • What are the limits of resource allocation? (Biggest file, Maximum number of processes, etc.) • What happens as the demand for resources increases? (graceful degradation? )
Core OS Issues • Extensibility /Tuning • What interfaces are provided to change operating system behavior? • How does (or does) the OS optimize its behavior based on the characteristics of the hardware or the application mix?
This Semester • Architectural support for OS; Application demand on OS • Major components of an OS • Scheduling, Memory Management, Synchronization, File Systems, Networking,.. • How is the OS structured internally and what interfaces does it provide for using its services and tuning its behavior? • What are the major abstractions modern OSes provide to applications and how are they supported?
Reading Assignment: By 1/16/07, read: - Chapter 1 (Introduction) - Chapter 2 (OS Structures) By 1/18/07, read: - Chapter 3, sections 3.1, 3.2 & 3.3