Post on 21-Jan-2016
description
1
OPERATING SYSTEMS 2 - OVERVIEWPIETER HARTEL
2
Operating System
Resource manager
Hardware resources
Resources provided by the OS itself (which?)
Objectives
Convenience (why?)
Efficiency (why?)
Evolvability (why?)
Abstraction is the key to managing the complexity
3
History
Batch
Time sharing
Real-time
Multi-processor
Distributed systems
Multi-core (why?)
Electrologica X8 console, 1965
4
Concepts and abstractions
Concept
Processes & Threads
Memory management
Protection and security
Scheduling and resource management
Abstraction of
Processor
Physical memory & disks
Dedicated computer
Dedicated computer
5
Abstraction layers
6
Linux example of the Unix API
Output?
gcc Echo.c
./a.out Hello world
strace ./a.out Hello World
#include <stdio.h>
int main(int argc, char *argv[]) { int i; for(i=0; I < argc; i++) { printf("%s ", argv[i]); } printf("(%d)\n", argc); return 0;}
7
Process abstraction
8
Resource sharing (why?)
Deadlock (why?)
Prevention
Detection
Recovery
Avoidance
9
Process management
Scheduling
Timer
Threads (why?)
Which process is running?
10
extern char etext, edata, end;int a = 0xaaaa, b;int main(int argc, char * argv[]) { int c = 0xcccc; int *d_ptr = (int*) malloc(sizeof(int)); int *e_ptr = (int*) alloca(sizeof(int)); b = 0xbbbb; *d_ptr = 0xdddd; *e_ptr = 0xeeee; printf("%p:a=%0x\n", &a, a); …}
Address space management
Output?
gcc AddressSpace.c
./a.out
text
main
etext
data
a
edata
bss
b
end
heap
d
brk
stack
e
argc
c
low
high
stac
khe
ap
11
Memory management
Paging (why?)
MMU!
Swapping (why?)
12
Protection and Security
Processes vs the OS (how?)
Processes vs other Processes (how?)
Privileged processes (why?)
Access control matrix
13
#include <stdio.h>#include <unistd.h>
#define N 41
int main(int argc, char * argv[]) { if(argc >= 3) { FILE *from = fopen(argv[1], "r"); FILE *to = fopen(argv[2], "w"); char buf[N]; while (fgets(buf,N,from) != NULL) { fputs(buf,to); fputc('\n',to); } fclose(from); fclose(to); return 0; } else { printf("usage %s from to\n", argv[0]); return 1; }}
I/O management
Output?
gcc Wrap.c
strace ./a.out Wrap.c junk
Find the system calls for:
fgets()
fputs()
14
Virtual Machine management
Examples?
15
Summary
Operating systems are large, hence abstraction to manage complexity:
Processes and threads
Memory
Files and peripherals
User accounts
Management issues
Fairness
Sharing
Protection