Sistemas Operacionais Conceitos Edson Moreno [email protected] http://www.inf.pucrs.br/~emoreno Sumário Introdução Arquitetura de Sistema Operacional Chamadas de sistema. Processos Basicamente, um programa em execução Requer CPU, memória, I/O Possui espaço de endereçamento Programa executável, dados do programa e sua pilha Pode manipular determinados registradores Contador de programa e ponteiro pra pilha Multiprogramação Vários processos sendo executados Escalonamento Salvamento de contexto 3 Processos Tabela de processos Árvore de Processos Comunicação entre processos Identificação de processos (UID, GID) 4 Espaços de Endereçamento SOs simples Apenas um programa por vez está na memória SOs mais sofisticados Multiprogramação Um processo não pode interferir na execução de outro Endereços são de 32 ou 64 bits (maioria) 232 ou 264 bytes Se precisar mais espaço do que pode endereçar? Memória virtual 5 Sumário Introdução Arquitetura de Sistema Operacional Chamadas de sistema. Arquitetura de SO Sistemas monolíticos Coleção de processos sequenciais cooperantes Chamadas de sistemas Fluxo de operação Recebe solicitações dos programas de usuário Executa em modo de núcleo Retorna um resultado 7 Arquitetura de SO Sistemas monolíticos 8 Arquitetura de SO Sistemas em camadas Conjunto de processos sequenciais cooperantes Cada processo com uma função bem definida Gerência de memória, driver de periférico, etc ex: THE (Dijkstra 1968) 5: operador 4: programas usuário 3: gerência de entrada/saída 2: comunicação console do operador-processo 1: gerência de memória 0: alocação do processador e multiprogramação (tratamento de interrupções) 9 Arquitetura de SO Máquinas virtuais Permite a execução de múltiplos SOs virtuais em um único SO real Trata o hardware e o núcleo do SO como se tudo fosse hw. Recursos do computador físico são compartilhados para criar a máquina virtual. Prove uma interface idêntica para o hardware. O SO cria a ilusão de múltiplos processos, cada qual em sua própria memória e processador Escalonamento da CPU dá sensação que os usuários tem seu próprio processador Arquitetura de SO Máquinas virtuais Recursos virtuais são mapeados para recursos reais Cada usuário possui uma máquina virtual mapeada sobre a máquina real (ex. VM da IBM) 11 Arquitetura de SO Micro Kernel Baseada no modelo cliente/servidor Serviços do sistema são implementados por servidores especializados Microkernel implementa somente tratamento de interrupções, gerência de memória (básico), funções básicas de escalonamento clientes (programas de usuários) solicitam serviços ao SO (microkernel) que reencaminha para os serviços especializados modularidade e extensibilidade Benefícios Código de fácil extensão Fácil adaptação do SO para novas arquiteturas Mais confiável, visto que menos código está rodando no SO 12 Arquitetura de SO Micro Kernel 13 Sumário Introdução Estrutura de um SO Chamadas de sistema Chamada de sistema Forma na qual o SO disponibiliza seus serviços System calls prove interface entre um processo e o SO. Geralmente disponibilizado como instrução em assembly Três métodos usados para passagem de parâmetro entre processo do usuário e SO. Passagem de parâmetros por registrador. Armazenamento de parâmetros em tabela na memória, sendo o endereço da tabela passado como parâmetro por registrador. Empilhamento (Push) de parâmetros na pilha pelo processo e o consequente desempilhamento pelo SO. Chamadas de sistema (system calls) Executam em modo núcleo Realiza troca de contexto: usuário -> núcleo (kernel) Processo que faz chamada de sistema fica bloqueado Implementação depende do HW existente ex: INTEL/Linux -> INT 80H (número da rotina é passado no registrador EAX) MIPS ??? 16 Chamadas de sistema (system calls) Podem ser divididas em grupos Gerência de processos Gerência de arquivos/diretórios Sinalizações Proteção Gerência de tempo 17 Chamadas de sistema (system calls) Gerência de processos Criação de processos (fork, exec) Espera a finalização de processo (wait, waitpid) Termina a execução do processo (exit) Informação sobre processos (getpid) Aumenta segmento de dados (brk, sbrk) 18 Chamadas de sistema (system calls) Gerência de arquivos Criação/abertura de arquivos (creat, mknod, open) Fechamento de arquivos (close) Leitura/escrita de arquivos (read, write) Movimentação do ponteiro do arquivo (lseek) Informações (stat, fstat, access) Execução de operações especiais em arquivos especais (ioctl, fcntl) controlar dispositivos de bloco / configurar terminal 19 Chamadas de sistema (system calls) Gerência de diretórios Criação/remoção de diretórios (mkdir, rmdir) Manipulação de links (link, unlink) (Des)Montagem no sistema de arquivos (mount, umount) Mudar diretório atual (chdir) Mudar diretório root / (chroot) 20 Chamadas de sistema (system calls) Sinalização Rotinas para execução de operações que preemptam a execução de um processo corrente (sigaction, sigreturn, kill) Informar exceções detectadas pelo hardware (sigaction, sigreturn) Definição de limites de tempo (timeouts) (alarm) Suspender um processo por tempo indeterminado (pause) Habilitar/desabilitar a recepção de sinais em um processo (sigprocmask, sigpending) 21 Chamadas de sistema (system calls) Sinalizações Chamadas de sistema (system calls) Proteção Modificar permissões de acesso em arquivos (chmod) Informações de usuário (getuid, setuid, getgid, setgid) Mudar o proprietário de um arquivo (chown) 23 Chamadas de sistema (system calls) Gerência de tempo Verificar hora atual (time) segundos desde 1 de janeiro de 1970 Modificar hora (stime) Modifica os horários de acesso de um arquivo (utime) Informações sobre uso de CPU pelo usuário (times) tempo gasto pelo usuário nos modos de usuário e sistema 24 Exemplo Chamadas de Sistema Linux 2 5 Referências Silberschatz, G. “Operating System Concepts”. Capítulo 3 Tanenbaum, A. “Sistemas Operacionais: projeto e implementação”. Capítulo 1