OS 01 Introduction

Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 34

Operating Systems

A Biswas,
Information Technology
IIEST, Shibpur
Books
• Operating Systems Principles and
Practices – Anderson and Dahlin
• OSTEP – OS in Three Easy Pieces
• Operating System Concepts – Galvin
• Computer Systems – Hallaron
• M J Bach
• Deitel and Deitel
How a computer system works
A computer system is a collection of
hardware and software components that
work together to run computer programs.
Hello world !!!
ASCII representation of hello.c
Hello.c is translated to other form
• hello.c is a high-level C program - read and
understood by human

• hello.c is translated by other programs into a


sequence of low-level machine-language
instructions.

• These instructions are then packaged in a form


called an executable object program, and stored
as a binary disk file.
Compilation system
Compilation System
• Four phases:
– Preprocessor
– Compiler
– Assembler
– Linker
1. Preprocessing phase
• Modifies the original C program according to
directives (begins with the # character).

• Example: #include<stdio.h>
1. reads the contents of the system header
file stdio.h and
2. insert it directly into the program text.
hello.c  hello.i
$ cpp hello.c
2. Compilation phase
hello.i  hello.s

• hello.s which contains an assembly-language


program.

• Each statement in an assembly-language


program exactly describes one low-level
machine-language instruction in a standard text
form.
• $gcc –S hello.c
3. Assembly phase
hello.s  hello.o

• The assembler (as) translates hello.s into machine-


language instructions, packages them in a form
known as a relocatable object program, and stores
the result in the object file hello.o.

• The hello.o file is a binary file whose bytes encode


machine language instructions rather than
characters.

$ gcc –c hello.s
4. Linking phase
hello.o  hello

Notice that our hello program calls the printf function, the
printf function resides in a separate precompiled object
file called printf.o, which must somehow be merged with
our hello.o program.

The linker (ld) handles this merging. The result is the hello
file, which is an executable object file (or simply
executable) that is ready to be loaded into memory and
executed by the system.
Shell
$ ./hello
Hello world
$
Hardware organization
Hardware Organization
Buses:
- a collection of electrical conduits called buses
that carry bytes of information back and forth
between the components.
- designed to transfer fixed-sized chunks of bytes
known as words.
- The number of bytes in a word (the word size) is
a fundamental system parameter that varies
across systems.
- Intel -4, Sparc – 8
Hardware Organization
I/O Devices:
Input/output (I/O) devices are the system’s
connection to the external world.
- a keyboard and
- mouse for user input,
- a display for user output, and
- a disk drive (or simply disk) for long-term
storage of data and programs.
Hardware Organization
I/O Devices:
- the hello executable program resides on
the disk.
- each I/O device is connected to the I/O bus
by either a controller or an adapter.
- the purpose of the controller is to transfer
information back and forth between the I/O
bus and an I/O device.
Hardware Organization
Main Memory:
The main memory is a temporary storage device
that holds both a program and the data it
manipulates while the processor is executing the
program.

Physically, main memory consists of a collection of


Dynamic Random Access Memory (DRAM)
chips.

Logically, memory is organized as a linear array of


bytes, each with its own unique address (array
index) starting at zero.
Hardware Organization
Main Memory:
In general, each of the machine instructions that constitute
a program can consist of a variable number of bytes.

The sizes of data items that correspond to C program


variables vary according to type.

For example, on an Intel machine running Linux, data of


type short requires two bytes, types int, float, and long
four bytes, and type double eight bytes.
Processor
- CPU is the engine that interprets (or executes)
instructions stored in main memory.
- At its core is a word-sized storage device (or
register) called the program counter (PC).
- PC points at (contains the address of) some
machine-language instruction in main memory.
- It reads the instruction from memory pointed at
by the program counter (PC),
- interprets the bits in the instruction,
- performs some simple operation dictated by the
instruction, and then
- updates the PC to point to the next instruction
Processor
A few simple operations:

Load: Copy a byte or a word from main memory into a register,


overwriting the previous contents of the register.

Store: Copy the a byte or a word from a register to a location in main


memory, overwriting the previous contents of that location.

Update: Copy the contents of two registers to the ALU, which adds the
two words together and stores the result in a register, overwriting
the previous contents of that register.

I/O Read: Copy a byte or a word from an I/O device into a register.
I/O Write: Copy a byte or a word from a register to an I/O device.

Jump: Extract a word from the instruction itself and copy that word into
the program counter (PC), overwriting the previous value of the PC.
Running the Hello program
1. Shell reads hello 2. Stores in registers 3. Stores in main memory
Running the Hello program
1. Hit the enter key 2. Shell loads executable hello from disk to main memory (DMA)
Running the Hello program
1. Processor executes 2. “hello world” copied to registers 3. then to display device
Running the Hello program

Disk drives are 10 million times slower than the main memory.

Registers are 100 times faster than main memory.

L1 and L2 caches are implemented using Static RAM.


Memory Hierarchy
Running the Hello program
Process and context switch
Virtual Memory
Stack:
Used for function calls.
Expands and contracts
with a function call and
retrun
Shared Libraries:
Libraries shared by
several processes.

Heap:
Expands and contracts
dynamically as malloc
and free are called.

Program code and data:


Machine-level instructions,
C variables from hello
executable.
A network is just another I/O device

You might also like