Seminar Topics & Project Ideas On Computer Science Electronics Electrical Mechanical Engineering Civil MBA Medicine Nursing Science Physics Mathematics Chemistry ppt pdf doc presentation downloads and Abstract

Full Version: Advanced Operating Systems
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Advanced Operating Systems

[attachment=26922]


Introduction 1

These notes are provided for those individuals who need to gain a more complete understanding
of operating systems than is provided by a typical undergraduate course. The notes are currently
a “work in progress” and suggestions to the author are welcome.

Background and Prerequisites

All undergraduate computer science curriculum recommendations include a course on operating
systems. This required course is not one in which the user is taught how to enter commands,
create and list directories, and install and maintain the operating system. These are certainly
appropriate skills, but don’t provide the understanding of operating systems expected by the
designers of computer science curricula.
Instead, the undergraduate operating systems course that is an appropriate prerequisite for this
material covers the purposes of an operating system, the variety of designs possible, and the
traditional algorithms used in an operating system implementation. Two topics covered in some
depth in that course are concurrency and mutual exclusion. These topics are not exclusively part
of the operating system domain, but the undergraduate operating systems course is usually the
first one in which students are exposed to these topics.
There is a wealth of information to be covered in the undergraduate course, and it is rare that
students have many opportunities to engage in significant implementation tasks (except for
small “toy” projects). Indeed, it is usually the case that there is insufficient time in the course to
cover all of the background material.

The Approach

There are two parts to the material in these notes. Although they are presented sequentially, the
material in the first part will prove beneficial later.

Design and Implementation of the Tempo Operating System

We will first examine in detail the design and implementation of an operating system called
Tempo. This is not a “toy” operating system of the kind that is usually provided for use with
undergraduate operating system textbooks (with some exceptions). Instead, it is a complete
system that can boot and run on most typical x86-based personal computers.
There are numerous goals we hope to achieve by studying this system:
• Better understanding of the purpose of system calls: By examining the detail of how
system resources and services are provided to application programs, we can better
appreciate the facilities provided by those operating systems we typically use (e.g.
Microsoft Windows and UNIX varieties).

Introduction

• Better understanding of design alternative and their effects: There are often multiple
approaches that can be taken to manage the resources of a computer system, each with
positive and negative consequences. A real operating system will allow us to examine the
effects of such design decisions.
• Better understanding of existing operating systems: By examining the design and
implementation of Tempo, we will gain insights into how popular operating systems deal
with similar issues.
• Better understanding of concurrency and mutual exclusion: Reading about concurrency
and studying classic algorithms for synchronization is valuable, but seeing the
implementation and use of these in a real operating system gives real understanding of
them. We know that modern processors have almost reached the “legal” speed limit, and
understand that only by utilizing multiple processes running on multiple processors will we
achieve additional performance gains. Multiple processes concurrently or simultaneously
working on the same data must be synchronized.
• Better understanding of how applications can use system services: Every application
uses the services of the operating system, but those services are usually hidden below a
layer of library functions. Application designers often overlook available facilities and
resources because they mistakenly limit themselves to the features provided by a particular
programming language. Even if only those language-provided facilities are used,
understanding the system services their implementations use will improve the application
designer’s understanding of the cost of those facilities.

Introduction

to Real-Time1 Systems and Applications
The second part of these notes provides introductory material on real-time systems and
programming. Real-time systems have two parts: a real-time operating system and one or more
real-time applications. It is common for such systems to be dedicated to running those
applications (as opposed to attempting to be general-purpose, or all things to all applications).
If you could successfully enumerate all the computer systems and applications in use at any
instant, you would find that perhaps as much as ninety percent of those systems and applications
could be characterized using the term real-time. That’s right; although there are many PCs out
there, they represent only a small fraction of the computer systems in use. And most computer
scientists (and even a larger fraction of computer users) don’t have even a small understanding
of real-time systems and programming.
This part will introduce the basics of real-time programming, focusing on the system services
needed to ensure timely delivery of results. Several classic algorithms for real-time scheduling
and dealing with priority inversion (an undesirable situation that can occur unless carefully
avoided) are examined. Operating system design decisions that affect the capability of the
system to support real-time applications are also considered.