Estudo de Caso
GNU/Linux
• Linus Torvalds — 1991, de-senvolveu o n´ucleo do SO • baseado no Minix • clone do Unix
• kernel h´ıbrido monol´ıtico • sob licen¸ca GPL
Processos
• Gerenciador – mant´em uma lista de todos os processos usando duas estruturas de dados: – lista circular – examinar todas as tarefas – tabela hash – localizar/acessar uma tarefa • processos interativos – constante intera¸c˜ao
com usu´ario
• processos em lote – baixa prioridade • processos de tempo real – alta prioridade
Processos
sh sh ls
Fork code Exec code
New process Same process
1. Fork call 3. exec call
4. sh overlaid with ls 2. new sh
created
PID = 501 PID = 748 PID = 748
Allocate child's process table entry Fill child's entry from parent Allocate child's stack and user area Fill child's user area from parent Allocate PID for child Set up child to share parent's text Copy page tables for data and stack Set up sharing of open files Copy parent's registers to child
Find the executable program Verify the execute permission Read and verify the header Copy arguments, environ to kernel Free the old address space Allocate new address space Copy arguments, environ to stack Reset signals
Initialize registers
Escalonamento (kernel 2.6)
• Filas por prioridade – 140 n´ıveis – 1 a 100 – processos de tempo real – 101 a 140 – demais processos
• ↑prioridade, ↑ qualidade de servi¸co, ↑ fra¸c˜ao de tempo de CPU, ↓ tempo de resposta
Escalonamento de Processos
Highest priority Lowest priority -4 -3 -2 -1 0 0 1 2 3Waiting for disk I/O Waiting for disk buffer Waiting for terminal input Waiting for terminal output Waiting for child to exist
User priority 0 User priority 1 User priority 2 User priority 3 Process queued on priority level 3 Process waiting in user mode Process waiting in kernel mode
Escalonamento (kernel 2.6)
• Processos de tempo real: prioridade est´atica – Round Robin
– FCFS
• Demais processos: prioridade dinˆamica (prioridade base + tempo restante) – Round Robin (20 ms)
– I/O bound tem maior prioridade que CPU bound
Gerˆ
encia de Mem´
oria
• Pagina¸c˜ao por demanda
• Tabela de p´agina com trˆes n´ıveis
• Algoritmo de substitui¸c˜ao de p´agina: LRU
Gerˆ
encia de Mem´
oria
Global directory Directory Page middle directory Page table Page Word selected Virtual address Offset Page Middle
E/S
• dispositivos de E/S s˜ao tratados como arquivos e acessados com read e write
• bloco – endere¸cado e acessado individualmente, ou seja, ´e poss´ıvel acessar o bloco 231 sem passar pelos blocos de 0 a 130. Ex.: disco • caracter – muitas vezes precisam ser
especialmente controlados (apagar uma entrada digitada no teclado). Exs.: teclado, mouse, impressoras,...
E/S
File system
Buffer cache
Disk drivers Terminal drivers Line disciplines User space Kernel Disk Reading/writing files Cooked interface to /dev/tty Raw interface to/dev/tty
Streams
A Stream head TCP IP Ethernet driver Ethernet controller B Stream head TCPToken ring driver
Token ring controller Process Ethernet Token Ring Computer User mode Kernel mode
Sistema de Arquivos
VFS (Virtual File System):
• Permite diferentes SAs: sistema de arquivos do Minix, MS-DOS, VFAT, NTFS, Ext2, Ext3, ReiserFS
• projetado segundo orienta¸c˜ao a objetos • inode-object – representam arquivos • file-object – usados para acesso de arquivos • file-system-object – sistema de arquivos
Sistema de Arquivos
Mode i-node Link count Uid Gid File size Times Addresses of first 10 disk blocks Single indirect Double indirect Triple indirect Parent’s file descriptor table Child’s file descriptor table Unrelated process file descriptor table Open file description File position R/W Pointer to i-node File position R/W Pointer to i-node Pointers to disk blocks Triple indirect block Double indirectblock indirectSingle block ‘ ext2:::????
MS-DOS
• IBM-PC, 1981 • CP/M (Digital)– Gary Kildall n˜ao fechou neg´ocio com a IBM • MS-DOS (MicroSoft Disk Operanting System)
– DOS foi comprado da Seattle Computer Products por 50 mil d´olares
• 16 bits
• linha de comandos
Hist´
oria do Windows
• Windows 1.0, 1985 • Windows 2.0, 1987
• Windows 3.0, 1990 (sucesso comercial) • Interface gr´afica sobre o MS-DOS • Espa¸co de endere¸camento compartilhado • Windows 95/98/Me/2000
• Windows XP, 2001 • Windows Vista, 2007
DLL (Dynamic Link Libraries)
Gdi32.dll User32.dll Kernel32.dll Call Call Call Operating system User process 2a 3a 2b 3b 4b System interface (ntdll.dll) Enviroment subsystem process (csrss.exe) Win32 subsys 1 User space Kernel space
Processos e Threads
Address space Thread Process User stackKernel mode thread stack Access token Process handle table P T T T T P Job
Escalonamento Windows
NT/2000/XP
• I/O bound tem maior prioridade que CPU bound
• prioridade:
– 16 a 31 : tempo real – 1 a 15: outros processos
• prioridade 0 – zero thread, respons´avel por zerar as p´aginas livres do sistema.
Escalonamento no Windows
Next thread to run Priority
System priorities
User priorities
Zero page thread 31 24 16 8 1 0 Idle thread
Escalonamento no Windows
• Escalonador escolhe thread de maior prior. • Proc. tempo real – n˜ao-preemptivos, prioridade
est´atica
• Outros – bˆonus de aumento de prioridade: – no retorno de I/O (1 para disco e 6 para
teclado
Gerˆ
encia de Mem´
oria (NT)
4GB de mem´oria virtual (2GB para usu´arios e 2GB para SO) Process A 4 GB 2 GB 0 Nonpaged pool Paged pool A's page tables Stacks, data, etc HAL + OS System data Process A's private code and data Process B Nonpaged pool Paged pool B's page tables Stacks, data, etc HAL + OS System data Process B's private code and data Process C Nonpaged pool Paged pool C's page tables Stacks, data, etc HAL + OS System data
Process C's private code
and data
Bottom and top 64 KB are invalid
Gerˆ
encia de Mem´
oria
• Quando um processo ´e carregado, n p´aginas s˜ao alocadas
• P´aginas com trˆes estados – livre: n˜ao utilizada
– reservada: alocadas, por´em n˜ao mapeadas – f´ısico/dedicadas: mapeadas para o processo • Tabela de p´agina de 2 n´ıveis
• Alg. de subst.: LRU + conjunto de trabalho
I/O
User process User program Win32 Rest of windowsHardware abstraction layer
Controller Controller Controller Filter Function Bus Function Bus Monolithic Driver stack
Sistema de Arquivos 2000/XP
• NTFS (New Technology File System), 1990 – alto desempenho, flexibilidade e seguran¸ca • divide o disco em clusters l´ogicos (quantidade
de blocos utilizadas de cada vez) – padr˜ao 4KB • MFT (Master File Table) – mant´em atributos
dos arquivos
• Implementa tolerˆancia a falhas atrav´es de transa¸c˜oes (partes – arquivo log).
Tabela de arquivos-mestre do NTFS
16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Metadata files 1 KBFirst user file (Reserved for future use) (Reserved for future use) (Reserved for future use) (Reserved for future use) $Extend Extentions: quotas,etc $Upcase Case conversion table $Secure Security descriptors for all files $BadClus List of bad blocks $Boot Bootstrap loader $Bitmap Bitmap of blocks used $ Root directory $AttrDef Attribute definitions $Volume Volume file $LogFile Log file to recovery $MftMirr Mirror copy of MFT $Mft Master File Table
Um Registro da MTF
(trˆ
es s´
eries e nove blocos)
Standard info header File name header Data header
Info about data blocks
Run #1 Run #2 Run #3
Standard
info File name 0 9 20 4 64 2 80 3 Unused
Disk blocks Blocks numbers 20-23 64-65 80-82 MTF record Record header Header
Sistema de Arquivos 2000/XP
• Change Journal – armazena altera¸c˜oes ocorridas no SA. Utilizado para backup • Prote¸c˜ao: leitura, escrita e execu¸c˜ao • Metadados: 16 registros com informa¸c˜oes