Thanks to visit codestin.com
Credit goes to www.scribd.com

0% found this document useful (0 votes)
12 views4 pages

OS

The document serves as class notes for CS3500 students, providing an introduction to operating systems, their roles as resource managers, and the differences between various types of operating systems, including mobile, desktop, and distributed systems. It discusses the architecture of operating systems, virtualization technologies, and the use of containers for program isolation and portability. Additionally, it highlights the distinctions between bare metal virtualization and container-based virtualization, along with references for further study.

Uploaded by

yeshaswini.56
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
12 views4 pages

OS

The document serves as class notes for CS3500 students, providing an introduction to operating systems, their roles as resource managers, and the differences between various types of operating systems, including mobile, desktop, and distributed systems. It discusses the architecture of operating systems, virtualization technologies, and the use of containers for program isolation and portability. Additionally, it highlights the distinctions between bare metal virtualization and container-based virtualization, along with references for further study.

Uploaded by

yeshaswini.56
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 4

Introduction of Operating Systems

(Given as class notes for use by the CS3500 students only and should not be used for any other
purposes and not fully prepared as any textbook material. Since the students have a general
feeling that what has been covered is not following a textbook material, this is being given for
them as some rough class notes on the points covered in the class. Will be revised
continuously as I get time).

Operating Systems are at the heart of modern computing systems. They are rightly called
resource managers working on top of the hardware and providing all necessary resources to
the user applications running on top of the computing systems. At one extreme we have the
mobile systems, where all applications are running as apps where the user is a single user
owning the mobile phone. The desktop systems are generally multiuser environment which
provide not only graphical user interface to the suers but also command line interfaces for
more sophisticated users. The server based computing systems are generally multicore with
more hardware resources including memory and acceleration cards and provide remote login
facility for client programs. Examples include Network File Systems (NFS) and Google File
Systems (GFS) used in datacenters. The later class of operating systems are called Distributed
Operating Systems which manage resources of multiple computing systems connected over
a network. Operating Systems which need to provide response within a certain period of time
for user processes running on top of the computing systems are called real-time operating
systems. The operating system is expected to obey the deadlines for processes while doing
the scheduling of the resources in a real-time operating systems. This chapter will try to
provide a broad introduction to operating systems and the evolving trends in operating
systems.

Operating System as a first level wrapper around hardware :

The computing hardware generally consists of cpu, registers, memory, bus and peripheral
devices. The memory is generally organized into several layers including L2, L3 cache and
memory. For example if you look into the description of your lap top computer, the hardware
configuration looks something as shown in Figure 1.

Question : Examine the hardware on your laptop and understand the details.

Imagine writing programs on this bare hardware. The Hardware works with machine
instruction with each instruction fetched from memory and executed on the cpu and the
result stored back in the memory. This fetch-execute-store cycle is the basic cycle on which
the computer hardware works. Working with the bare metal hardware will be difficult for
users and for making the computer as generally useful general purpose machine, a program
that run on top of the hardware and manages the hardware for easily written programs in
high level languages is required. Such a program that run on the hardware and provides
support for user applications is what is termed as “Operating Systems”. In that sense, the
operating system becomes the first program to run on the hardware as we switch on the
computing system and takes control of the underlying hardware and peripheral devices
connected to the hardware and provide require support to the users for working and running
usrefull programs by the users. The examples could be switching on your MacOS laptop or a
windows laptop. Once you switch on the laptop, the first program that starts executing in this
case is either MacOS operating system or windows operating system. The BIOS (the Basic
Input and Output systems) provides the needed support to bootstrap the operating system
program and bring it up as the first program to run on the program and every other program
starts running on top of the operating system taking its support. Thus programs written on
top of one operating system taking its support may not run on other operating systems since
the support may not exist on the operating system. For example, the fork() system call used
ot create child processes on unix and similar operating systems including linux will not work
on windows operating system since such as support system call does not exist on windows
operating system. Similar dynamic memory management in programs that need operating
system support also face similar issues of portability from one operating system to a different
operating system.

Question : Wirte a small program that runs on MacOS and show that it odes not run on
Windows operating systems.

Bringing Up Multiple Operating Systems on the Same Hardware :

Often we may need to work with multiple operating systems and hence the need for running
multiple operating systems on the bare metal hardware (as is the case in this class). This is
possible by running a virtualization software on top of the bare-metal hardware which
abstracts the underlying the hardware and shares it between multiple operating system
programs running on the hypervisor running on top of the hardware. In this case the first
program to be running on top of the hardware becomes the virtualization software which
negotiates the requests for hardware use by the multiple operating system programs running
on top of the hypervisor. The hypervisors are also responsible for current cloud systems for
providing hardware as Infrastructure as a Srvice (IaaS). The most popular hypervisor available
are KVM and VMware. Using Hypervisors, it is possible to partition the hardware between the
operating systems programs running on top of the hypervisor. But some limitations exist on
what can be partitioned and it may not be possible to partition the L3 cache in most cases.
Vitrualbox is often userlevel program that runs on top of the operating system providing the
same emulation as virtualization software on bare metal hardware.

Regerence : Analysis of Virtualization Technologies for High


Performance Computing Environments
Andrew J. Younge, Robert Henschel, James T. Brown, Gregor von Laszewski, Judy Qiu,
Geoffrey C. Fox
Pervasive Technology Institute, Indiana University
2729 E 10th St., Bloomington, IN 47408, U.S.A.
{ajyounge,henschel,jatbrown,gvonlasz,xqiu,gcf}@indiana.edu

Container and Dockers as Virtualization on Top of Operating Systems :

Containers as a concept provide namespace isolation for programs running on top of the
operating systems. For example, the program running as a process on top of an operating
system such as linux in one namespace will have access to resources belonging to that
namespace only. Hence it is possible to isolate and consequently virtualize on top of the
operating systems using namespaces. The processes running in a namespace are called
containers and frameworks such as dockers built on top of the containers provide support for
running process images created on operating system to run on another operating system with
the operating system dependencies extracted into the container images. As long as the
docker framework runs on top of the operating systems, container images become portable
and can be run as docker images on the operating systems. For example, it is possible to run
entire ubuntu as a container image on top of MacOS or windows OS as long as the ubuntu
container image has all the needed code to run on the native OS and docker framework as
running as application on top of the native OS.

Virtualization on Top of Bare Metal Vs Operating System

Bare Metal virtualization provides more efficiency as it runs on top of the hardware. The
security also is higher for each operating system as they do not share any code and only some
part of the hardware. On the otherhand, containers makes it easy to port the image from one
operating system to another but will have more security issues since the operating system on
which they are shared with other processes running on the operating system.

Little advance reference (can go thru if you have time):

Performance Overhead Comparison


between Hypervisor and Container
based Virtualization
Zheng Li, Maria Kihl, Qinghua Lu, Jens A. Andersson

OS Architecture : How the operating system program is architected and various design choices
from monolithic vs microkernel vs Exokernel vs Hybrid Architecture (refer to slices provided)

Mobile Operating System details are also covered to give an overview of how a mobile
operating system is different from desktop operating system. The core- kernel (linux kernel)
and dalivk VM (which became ART (android runtime ) and apps developed in Java. Each App
gets sandboxed (isolated) in the JVM running on top of the kernel. However the underneath
kernel is shared between all apps in this case linux kernel which introduces security issues.
This will be discussed later in the later classes.

Some discussion on distributed operating systems has been made in the class. Especially
relating to RDMA (Remote Direct Memory Access) which allows the clinet to access the
remote systems memory directly bypassing the cpu on the remote server. The NIC abstraction
can be used to optimize various remote access protocols. Interested students can get
references to this from me. (This is not part of any evaluation of the course).

Note : I may provide more reference as per the need of the students (students can write to
me specifically if they need more study material on the contents of the class. Tanenbaum
book’s chapter 1 also covers this content and may not be exactly the same way it is done in
the class. Feel free to approach me for further clarifications).

You might also like