Operative systems

Propaganda
Diferentes Tipos de Software
Quem são estes Senhores?
Overview Sistemas Operativos
Steve Jobs
Bill Gates
Linus Torvalds
Device Drivers
Sistemas Informáticos
Bill Joy
Dennis Ritchie
SLIDES 6
Funções do Sistema Operativo
Ken Thompson
Andrew Tanenbaum
Virtualização do Processador/Dispositivos
Esconder os detalhes do hardware subjacente
ao sistema
Gestão de memória
Gestão de dispositivos genéricos
Gestão de dispositivos de armazenamento
(discos/etc.)
Segurança
Dois aspectos fundamentais...
Multiprogramação
Processadores Virtuais
(... máquinas virtuais...)
“Virtualizar” a utilização do processador e dos
recursos associados à máquina
Cada programa corre sobre a aparência de ser o
único no sistema
O sistema operativo fornece um interface unificado
aos dispositivos da máquina
Virtualização da Máquina
Trata-se de uma técnica de manter múltiplos
programas em memória simultaneamente. Cada
programa executa como se fosse o único existente
na máquina.
Gestão de Memória
Processador Real
Em qualquer altura o Sistema Operativo tem de
saber que programas estão em memória e onde é
que cada um deles reside
1
Conceito de Processo
Histórico: batch processing
Um programa em execução com...
Timesharing system A system that allows
multiple users to interact with a computer at the
same time
Multiprogramming A technique that allows
multiple processes to be active at once,
allowing programmers to interact with the
computer system directly, while still sharing its
resources
In a timesharing system, each user has his or
her own virtual machine, in which all system
resources are (in effect) available for use
Um identificador único
Recursos próprios (e.g. ficheiros abertos)
Um espaço de endereçamento (i.e. memória própria
protegida de todos os outros “processos”)
MS Word
(1 processo)
MS Excel
(1 processo)
Comutação entre Processos
Comutação de Processos
De alguns em alguns ms é gerada uma “interrupção”
Quanto existe uma interrupção, deixa-se de executar o
código do utilizador e passa-se a executar o código do
sistema operativo
O sistema operativo pode então comutar para outro
processo (escalonamento preemptivo)
Nível do Utilizador
total = 0;
for (int i=0; i<20000; i++)
total = total + i;
printf(“total=%d\n”, total);
while (!feof(fd))
{
if (fscanf(fd, “%d”, &d) == 1)
printf(“%d\n”, d);
}
Timesharing
Ciclo de Vida de um Processo
Terminated
New
Ready
(to execute)
Dispatch
Interrupt
(...)
Running
I/O or
event waiting
Nível do Kernel
RTC Interrupt Handler
Blocked
(waiting for
something)
End of I/O or
event completed
2
Filas do Sistema Operativo
Ready Queue
Fila onde aguardam todos os processos que estão à
espera de executar
Blocked Queue
Fila onde aguardam todos os processos que estão à
espera que uma operação de entrada/saída
complete ou de um “evento especial”
Escalonamento de Processos
Round Robin
Suponhamos que existem vários processos na
Ready Queue....
Como é que se decide qual é que executa a seguir?
Existem diversos algoritmos.
Um bastante conhecido é o Round-Robin
É decidido à priori qual a fatia de tempo a atribuir a
cada processo.
Timeslice ou Quantum de Execução
Running (não é uma fila)
A “Ready Queue” é um lista ordenada
Processo que se encontra a executar
Apenas este processo o Sistema Operativo ocupam
tempo de processador
Cada processo executa até se esgotar o seu timeslice. Quando
isso acontece, é colocado no final da ready queue
O próximo processo a executar é o que está à frente na ready
queue
Bootstrap process
Gestão de Memória
Ver Slides_6B:
Escalonamento Processos
3
Endereços de Memória
Endereços Lógicos e Físicos
Endereço Virtual Endereço Físico
Endereço Lógico: especifica um endereço que
é visto pelo programa que deverá ter alguma
correspondência com um endereço físico.
Endereço Físico: endereço real/absoluto na
memória principal.
Endereços Lógicos e Físicos
Gestão de Memória
Particionamento de Memória
Base register A register
that holds the beginning
address of the current
partition
Bounds register A register
that holds the length of the
current partition
Fixed partitions Main memory is divided into
a particular number of partitions.
Dynamic partitions Partitions are created to
fit the needs of the programs.
4
Fixed Partitioning
Placement Algorithms with Partitions
Equal-size partitions
Equal-size partitions
any process whose size is less than or equal to the
partition size can be loaded into an available
partition.
if all partitions are full, the operating system can
swap a process out of a partition.
a program may not fit in a partition. The programmer
must design the program with overlays.
because all partitions are of equal size, it does not
matter which partition is used
Unequal-size partitions
can assign each process to the smallest partition
within which it will fit
queue for each partition
processes are assigned in such a way as to
minimize wasted memory within a partition
The use of main memory is inefficient. No
program occupies an entire partition. This is
called internal fragmentation.
Dynamic Partitioning
Partitions are of variable length and number.
Process is allocated exactly as much memory
as required.
Eventually get holes in the memory. This is
called external fragmentation.
Must use compaction to shift processes so
they are contiguous and all free memory is in
one block.
5
Memory Compaction
To merge the memory blocks and reduce
memory holes caused by external
fragmentation.
Time-consuming task....
Placement Algorithm: Best-Fit
Best-fit algorithm
Chooses the block that is closest in size to the
request.
Worst performance.
Since it finds the smallest block it produces the
smallest amount of fragmentation.
Memory compaction must be done more often.
Placement Algorithm: Worst-Fit
Worst-fit algorithm
Chooses the largest available block.
The fragmentation area can be used for another
request.
Dynamic Partitioning: Placement Algorithms
Operating system must decide which free block
to allocate to a process.
Four algorithms:
Best-Fit; First-Fit; Next-Fit; Worst-Fit
Placement Algorithm: First-Fit
First-fit algorithm
Begins to scan memory from the beginning and
chooses the next available block that is largest
enough.
Fastest.
May have many process loaded in the front end of
memory that must be searched over when trying to
find a free block.
Analysis of First-Fit Algorithm:
For every N allocated blocks, there are another 0.5N blocks that will be lost due to
fragmentation -> 1/3 of memory will be unusable...
6
Placement Algorithm: Next-Fit
Buddy System
Entire space available is treated as a single
block of 2U.
If a request of size s such that 2U-1 < s <= 2U,
entire block is allocated.
Next-fit
Begins to scan memory from the location of the last
placement and chooses the next available block that
is largest enough.
Otherwise block is split into two equal buddies.
Process continues until smallest block greater than
or equal to s is generated.
Worst-Fit
Exercícios Gestão Memória
7
Exercício
Exercício
Considere que tem um sistema de memória com as seguintes
partições pela seguinte ordem:
100kb, 500kb, 200kb, 300kb, 600kb, 400kb.
-
Qual o resultado de execução dos algoritmos Best-Fit, First-Fit,
Worst-Fit para a seguinte ordem de pedidos:
212kb, 417kb, 112kb, 526kb, 12kb
Para cada um dos algoritmos indique o total de fragmentação.
E se tivesse uma memória de 2Mb e o algoritmo Buddy-system,
qual seria o resultado da execução para aquela ordem de pedidos?
Protecção de Memória
Considere a técnica de Buddy System para gestão de memória. Admitindo que
a memória total é de 512kbytes.
Apresente a simulação do algoritmo, “step-by-step” e indique a valor total de
fragmentação interna em cada passo, considerando a seguinte lista de
pedidos:
A: request 88k
B: request 156k
C: request 22k
D: request 54k
E: request 312k
--- release C,A
F: request 136k
--- release D
G: request 206k
É absolutamente fundamental que cada
processo não possa aceder à memória dos
outros processos
Questão de segurança de dados
Protecção contra “ponteiros” perdidos e bugs de
software
Grande problema dos Windows 95, 98 e Macs
antigos!
Em caso de inexistência de espaço na memória principal considere a
existência de swapping para memória virtual e a aplicação do algoritmo LRU.
Memória Segmentada “Real”
A cada processo corresponde um endereço base e um
limite (registos especiais no processador)
Sempre que existe um acesso a memória, o
processador verifica se o processo se encontra a
aceder à sua memória ou não
71433
70000
60530
50060
Processo
B
MOV AX, [60000]
ERRO, Acesso proibido!
GPF e Segmentation Faults! ☺
Memória Virtual
Actualmente, todos os sistemas utilizam o conceito de
memória virtual
Cada processo vê toda a memória do computador, como
sendo dele
Quando um processo gera um endereço, esse endereço é
virtual. O processador, com a ajuda do sistema operativo
transforma-o num endereço físico
4Gb
4Gb
Disco
5000
Processo
A
MOV AX, [50124]
OK, dentro do espaço
de endereçamento
1000
1000
0
0
256Mb
0
Espaço de
endereçamento
do processo A
Espaço de
endereçamento
do processo B
Tabela(s) de
Tradução de
Endereços
0
Memória física
8
Memória Virtual Paginada
O sistema mais utilizado nas máquinas actuais
Funciona tal como o esquema indicado
anteriormente, com os seguinte pormenores
A memória física é dividida em pequenos pedaços
chamados páginas (e.g. 4Kbytes)
A memória de cada processo também é dividida em
páginas
Existe uma tabela de páginas por cada processo,
que é gerida pelo sistema operativo. É utilizando
esta tabela que é feita a tradução dos endereços
virtuais em endereços físicos
Sempre que é colocado outro processo em
execução, a sua tabela de páginas é carregada.
Address Translation Scheme
Paginação de Memória
Paginação de Memória
Paged memory technique A memory
management technique in which processes are
divided into fixed-size pages and stored in
memory frames when loaded into memory
Frame A fixed-size portion of main memory that
holds a process page
Page A fixed-size portion of a process that is stored
into a memory frame
Page-map table (PMT) A table used by the
operating system to keep track of page/frame
relationships
Paging: Address Translation
To produce a physical
address, you first look up
the page in the PMT to find
the frame number in which it
is stored
Then multiply the frame
number by the frame size
and add the offset to get the
physical address
Figure 10.7
A paged memory
management
approach
Paging Example
Address generated by CPU is divided into:
Page number (p) – used as an index into a page
table which contains base address of each page in
physical memory.
Page offset (d) – combined with base address to
define the physical memory address that is sent to
the memory unit.
Page number (p) – used as an index into a page table which contains base address of each page in physical memory.
Page offset (d) – combined with base address to define the physical memory address that is sent to the memory unit.
9
Free Frames
Page Tables for Example
Logical-to-Physical Address Translation
Exercícios Paginação
10
Exercício
Page Swapping
Considere um computador com 256Mbytes de memória real,
que usa um esquema de memória virtual de 2Gbytes, baseado
em Paginação, e onde o número das páginas ocupam os 20
bits mais significativos do endereço virtual.
(a)
(b)
(c)
Qual o total máximo de páginas?
Qual o tamanho de cada página?
Se uma PTE (Page Table Entry) ocupar 8 bytes quantas
páginas ocupa a Tabela de Páginas? Qual será o tamanho
máximo dessa Tabela.
Swapping
Swapping
Demand paging An important extension of
paged memory management
Not all parts of a program actually have to be in
memory at the same time
In demand paging, the pages are brought into
memory on demand
Page swap The act of bringing in a page from
secondary memory, which often causes another page
to be written back to secondary memory
Memória Virtual
Need for Page Replacement
A process can be swapped temporarily out of memory
to disk, and then brought back into memory for
continued execution.
Major part of swap time is transfer time; total transfer
time is directly proportional to the amount of memory
swapped.
Example:
disk: transfer rate
memory to swap:
Time it takes to swap out:
Average disk latency:
Time to swap-out/swap-in:
5Mb/sec
1 Mb
1/5 sec = 200 msec
8 msec
416 msec
11
Basic Page Replacement
1.
Find the location of the desired page on disk.
2.
Find a free frame:
- If there is a free frame, use it.
- If there is no free frame, use a page replacement
algorithm to select a victim frame.
- If victim is dirty write back to disk
3.
Read the desired page into the (newly) free frame.
Update the page and frame tables.
4.
Restart the process.
Trashing
Example
Trashing
Se um processo não tem páginas “suficientes”,
o ritmo de faltas de página aumenta muito. Isto
é caracterizado pelo comando vmstat:
Baixa taxa de ocupação do CPU.
Grande número de operações de I/O sobre o disco
de paginação.
Poucas “frames”livres.
Thrashing ≡ o processo está praticamente
sempre à espera que o SO carregue páginas
(page-in) e a transferir páginas (page-out)
de/para o disco.
Exercício
Considere que tem um sistema operativo com um
determinado valor limite no grau de
multiprogramação e que a taxa de utilização de
CPU e disco foram medidas nos seguintes 3
cenários:
(a) CPU usage [11%]; Disk usage [98%]
(b) CPU usage [92%]; Disk usage [5%]
(c) CPU usage [12%]; Disk usage [3%]
Para cada um dos três casos, indique o que poderá
estar a acontecer, indique se pode aumentar o
número de processos para ocupar mais a CPU e se
o mecanismo de paginação deverá estar ou não a
melhorar a performance.
Localidade Temporal e Espacial
Para evitar a ocorrência de trashing é preciso
que os programas explorem bem a localidade
dos dados mantidos em
cache.
Localidade Temporal
Localidade Espacial
12
Hierarquia de memória
Exemplo: dois programas...
Princípio da localidade espacial:
Quem escreveu o programa A?
E o programa B?
Se eu acedi a estes dados, é
provável que aceda aos dados que
estão próximos (e.g. uma imagem)
Princípio da localidade temporal:
Se eu acedi à pouco tempo a estes
dados, é provável que lhes vá
aceder dentro de pouco tempo
Velocidade
Preço
Registos
~128x 32bits
Cache
int A[][] = new int[128][128];
int i,j;
int A[][] = new int[128][128];
int i,j;
// page size = 512 bytes
// each row is stored in one
// page
// page size = 512 bytes
// each row is stored in one
// page
// Programa A
for (j = 0; j < 128; j++)
for (i = 0; i < 128; i++)
A[i][j] = 0;
// Programa B
for (i = 0; i < 128; i++)
for (j = 0; j < 128; j++)
A[i][j] = 0;
~512Kbyte
Memória Central (RAM)
~512Mbyte
Memória de Massa (Disco)
~60Gbyte
José Peseiro
Tamanho
Exercício
Page Faults
int A[][] = new int[128][128];
int A[][] = new int[128][128];
// Programa A
for (j = 0; j < 128; j++)
for (i = 0; i < 128; i++)
A[i][j] = 0;
// Programa B
for (i = 0; i < 128; i++)
for (j = 0; j < 128; j++)
A[i][j] = 0;
128 x128 = 16,384 page faults
128 page faults
Considere que tem duas matrizes:
- int A[4][400];
- int B[4][400].
O tamanho da página neste sistema é 800 bytes e um inteiro ocupa 4
bytes. O sistema tem N Page-Frames, mas o primeiro page-frame é
usado pela página 0, que contém o código. Os outros (N-1) Page-frames
estão vazios no ínicio. O sistema faz uso do algoritmo LRU e do ModifyBit para troca de páginas.
int A[][] = new int[128][128];
int A[][] = new int[128][128];
// Programa A
for (j = 0; j < 128; j++)
for (i = 0; i < 128; i++)
A[i][j] = 0;
// Programa B
for (i = 0; i < 128; i++)
for (j = 0; j < 128; j++)
A[i][j] = 0;
// Programa A
// Programa B
for(i=0;i < 4; i++)
for(j=0; j < 400; j++)
A[i][j]=B[i][j];
for(j=0;j < 400; j++)
for(i=0; i < 4; i++)
A[i][j]=B[i][j];
Se o número de Page-Frames for igual a cinco (N=5) quantos PageFaults e quantos Swap-Outs serão gerados pelo Programa A? e pelo
Programa B?
128 x128 = 16,384 page faults
128 page faults
13
Para saber mais...
Computer Science, An Overview
Capítulo 3 (3.1, 3.2, 3.3)
Computer Science Illuminated
Capítulo 10 (10.1, 10.2, 10.3, 10.4)
14
Download