Sistemas Operacionais Slides adaptados de Prof. Dr. Marcos José Santana e Prof. Dra. Regina Helena Carlucci Santana baseados no livro Sistemas Operacionais Modernos de A. Tanenbaum Tipos e Estrutura System Calls
Na aula Anterior Por que é necessário um sistema operacional? O que é um sistema operacional? Histórico Conceitos Básicos
Roteiro - Nesta aula Tipo e Estrutura de Sistemas Operacionais Chamadas ao Sistema (System Calls)
Tipos de SOs Quanto ao compartilhamento de Hardware (2 tipos) Monoprogramados ou Monotarefas: permitem apenas um programa ativo em dado período, permanecendo ativo do início ao fim de sua execução (MS-DOS) Multiprogramados ou Multitarefas mantém mais de um programa na memória, permitindo o time-sharing (Unix, Windows)
Monoprogramados ou Monotarefas O processador, a memória e os periféricos permanecem exclusivamente dedicados à execução de um único programa Má utilização dos recursos Facilidade na implementação Exemplo: sistemas embarcados O processo estará em um destes estados Novo Executando Concluído
Multiprogramados ou Multitarefas Vários processos encontram-se em memória ao mesmo tempo Várias tarefas ocorrem simultaneamente em um único processador: um processo é executado enquanto outro aguarda Necessidade de um mecanismo de trocas rápidas de processo
Multiprogramados ou Multitarefas Classificação quanto à interação com as aplicações: Sistema Multitarefa Sistemas batch Sistemas de tempo real Sistemas de interativo
Estrutura dos Sistemas Operacionais Principais tipos de estruturas Monolíticos; Arquitetura Micro-Kernel; Em camadas; Máquinas Virtuais; Cliente-Servidor.
Estrutura dos Sistemas Operacionais = Monolíticos O SO é um único módulo O SO é um conjunto de processos que podem interagir entre si a qualquer momento sempre que necessário Processos do usuário invocam rotinas do SO Os serviços (Chamadas) requisitados ao sistema são realizados por meio da colocação de parâmetros em registradores ou pilhas de serviços seguida da execução de uma instrução chamada TRAP;
Estrutura dos Sistemas Operacionais = Monolíticos Todos os módulos do sistema são compilados individualmente e depois ligados uns aos outros em um único arquivo-objeto; Cada processo possui uma interface bem definida com relação aos parâmetros e resultados para facilitar a comunicação com os outros processos; Simples; Primeiros sistemas UNIX e MS-DOS;
Estrutura dos Sistemas Operacionais = Monolíticos Aplicação Aplicação
Estrutura dos Sistemas Operacionais = Monolíticos
Estrutura dos Sistemas Operacionais = Micro-Kernel O objetivo é tornar o núcleo do SO o menor possível A função do núcleo é gerenciar comunicação entre esses processos Papeis do núcleo alocação de CPU comunicação aos processos (IPC) Ex.: Symbian, Minix
Estrutura dos Sistemas Operacionais = Micro-Kernel
Estrutura dos Sistemas Operacionais = Em Camadas Sistema operacional modular que possui uma hierarquia de níveis; Modular: divisão de um processo complexo em módulos de menor complexidade Hierarquico: a cada nível, os detalhes de operações dos níveis anteriores podem ser ignorados Primeiro sistema em camadas: THE (idealizado por E.W. Dijkstra); Possuía 6 camadas, cada qual com uma função diferente; Sistema em batch simples;
Estrutura dos Sistemas Operacionais = Em Camadas Vantagem: isolar as funções do sistema operacional, facilitando manutenção e depuração; Desvantagem: cada nova camada implica uma mudança no modo de acesso; Exemplo: Multics Atualmente: modelo de 2 camadas.
Fornecimento de Serviços Estrutura dos Sistemas Operacionais = Em Camadas Camadas definidas no THE
Fornecimento de Serviços Estrutura dos Sistemas Operacionais Em Camadas Alocação do processador Chaveamento entre os processos em execução - multiprogramação
Fornecimento de Serviços Estrutura dos Sistemas Operacionais Em Camadas Gerenciamento da memória Alocação de espaço para processos na memória e no disco Processo dividido em partes (páginas) para ficarem no disco
Fornecimento de Serviços Estrutura dos Sistemas Operacionais Em Camadas Comunicação entre os processos
Fornecimento de Serviços Estrutura dos Sistemas Operacionais Em Camadas Gerenciamento dos dispositivos de i/o armazenamento de informações de/para tais dispositivos
Fornecimento de Serviços Estrutura dos Sistemas Operacionais Em Camadas Programas dos usuários Alto nível de abstração
Fornecimento de Serviços Estrutura dos Sistemas Operacionais Em Camadas Processo do operador do sistema
Estrutura dos Sistemas Operacionais = Máquina Virtual Idealizada em 1960 pela IBM VM/370; Modelo de máquina virtual cria um nível intermediário entre o SO e o Hardware denominado Gerência de VM; Esse nível cria diversas máquinas virtuais independentes e isoladas, onde cada máquina oferece uma cópia virtual do hardware, incluindo modos de acesso, interrupções, dispositivos de E/S, etc; Cada máquina virtual pode ter seu próprio SO.
Estrutura dos Sistemas Operacionais = Máquina Virtual Principais Conceitos Monitor da Máquina Virtual (VMM): executa sobre o hardware e implementa multiprogramação fornecendo várias máquinas virtuais é o coração do sistema CMS (Conversational Monitor System): TimeSharing; Executa chamadas ao Sistema Operacional; Máquinas virtuais são cópias do hardware, incluindo os modos kernel e usuário; Cada VM pode rodar um SO diferente.
Estrutura dos Sistemas Operacionais = Máquina Virtual TimeSharing Chamadas ao Sistema TRAP TRAP Monitor da Máquina Virtual (VMM) Roda sobre o hardware e implementa multiprogramação
Estrutura dos Sistemas Operacionais = Máquina Virtual A ideia de VM foi posteriormente utilizada em contextos diferentes: Programas MS-DOS: rodam em computadores 32 bits; As chamadas feitas pelo MS-Dos ao SO eram realizadas e monitoradas pelo monitor da VM (VMM);
Estrutura dos Sistemas Operacionais = Máquina Virtual A ideia de VM foi posteriormente utilizada em contextos diferentes: Programas Java (Máquina Virtual Java-JVM): o compilador Java produz código JVM (Bytecodes). Esse código é executado pelo interpretador Java: Programas Java rodam em qualquer plataforma, independentemente do SO;
Estrutura dos Sistemas Operacionais = Máquina Virtual A ideia de VM foi posteriormente utilizada em contextos diferentes: Computação em Nuvem Virtualização dos servidores simula diferentes ambientes em servidores físicos;
Estrutura dos Sistemas Operacionais = Máquina Virtual Vantagem: Flexibilidade; Desvantagem: Simular diversas máquinas virtuais não é uma tarefa simples sobrecarga;
Estrutura dos Sistemas Operacionais = Cliente/Servidor Reduzir o SO a um nível mais simples: Kernel: implementa a comunicação entre processos clientes e processos servidores núcleo mínimo; Maior parte do SO está implementado como processos de usuários (nível mais alto de abstração); Sistemas Operacionais Modernos.
Estrutura dos Sistemas Operacionais = Cliente/Servidor Cada processo servidor trata de uma tarefa Os processo servidores não tem acesso direto ao hardware. Assim, se algum problema ocorrer com algum desses servidores, o hardware não é afetado; O mesmo não se aplica aos serviços que controlam os dispositivos de E/S, pois essa é uma tarefa difícil de ser realizada no modo usuário devido à limitação de endereçamento. Sendo assim, essa tarefa ainda é feita no kernel.
Estrutura dos Sistemas Operacionais = Cliente/Servidor Adaptável para Sistemas Distribuídos
Estrutura dos Sistemas Operacionais = Cliente/Servidor Linux Monolítico + Módulos; Windows Microkernel + Camadas + Módulos
Sistemas Operacionais System Calls e Interrupções
Conceitos Básicos Chamadas ao Sistema Quando ocorre? um processo precisa realizar uma instrução privilegiada (imprimir arquivo) Para que isso ocorre, é necessário que haja uma chamada de sistema alternância do modo de usuário para o modo kernel Chamadas de sistema são a porta de entrada para o modo kernel
Conceitos Básicos Chamadas ao Sistema Modos de Acesso Modo Usuário; Modo Kernel ou Supervisor ou Núcleo; São determinados por um conjunto de bits localizados no registrador de status do processador: PSW (program status word); Por meio desse registrador, o hardware verifica se a instrução pode ou não ser executada pela aplicação. Protege o próprio kernel do SO na RAM contra acessos indevidos.
Conceitos Básicos Chamadas ao Sistema Modo Usuário Aplicações não tem acesso direto aos recursos da máquina, ou seja, ao hardware; Quando o processador trabalha no modo usuário, a aplicação só pode executar instruções sem privilégios, com um acesso reduzido de instruções; Por que? Para garantir a segurança e a integridade do sistema.
Conceitos Básicos Chamadas ao Sistema Modo Kernel Aplicações tem acesso direto aos recursos da máquina, ou seja, ao hardware; Operações com privilégios; Quando o processador trabalha no modo kernel, a aplicação tem acesso ao conjunto total de instruções; Apenas o SO tem acesso às instruções privilegiadas.
Conceitos Básicos Chamadas ao Sistema Se uma aplicação precisa realizar alguma instrução privilegiada, ela realiza uma chamada ao sistema (System Call), que altera do modo usuário para o modo kernel; Chamadas de sistemas são a porta de entrada para o modo kernel São a interface entre os programas do usuário no modo usuário e o SO no modo kernel; As chamadas diferem de SO para SO, no entanto, os conceitos relacionados às chamadas são similares independentemente do SO.
Conceitos Básicos Chamadas ao Sistema As system calls são realizadas através das instruções TRAP TRAP: interupções de software Permitem chamar a atenção do SO pegar a requisição do usuário, identificar a requisição, processar esta requisição
Conceitos Básicos Chamadas ao Sistema Passos para system calls 1. processo realiza uma chamada ao sistema (TRAP) 2. o SO utiliza uma tabela para determinar o endereço da rotina 3. a rotina do serviço é acionada 4. serviço solicitado é executado, devolvendo o controle ao processo
Conceitos Básicos Chamadas ao Sistema TRAP: instrução que permite o acesso ao modo kernel; Exmeplo: Instrução do UNIX: count = read(fd, buffer, nbytes); Arquivo a ser lido Bytes a serem lidos Ponteiro para o Buffer O programa sempre deve checar o retorno da chamada de sistema para saber se algum erro ocorreu!!!
Conceitos Básicos Chamadas ao Sistema Exemplos de chamadas da interface: Chamadas para gerenciamento de processos: Fork (CreateProcess WIN32) Cria um processo; Outros exemplos no Posix (Portable Operating System Interface)
Conceitos Básicos Chamadas ao Sistema Exemplos de chamadas da interface: Chamadas para Gerenciamento de Diretórios: Mount monta um diretório; Outros exemplos no Posix
Conceitos Básicos Chamadas ao Sistema Exemplos de chamadas da interface: Outros tipos de chamadas: Chmod: modifica permissões; Outros exemplos no Posix
Conceitos Básicos Chamadas ao Sistema Chamadas da interface. Unix x Windows> Unix Chamadas da interface muito semelhantes às chamadas ao sistema ~100 chamadas a procedimentos Windows Chamadas da interface totalmente diferente das chamadas ao sistema APIWin32 (Application Program Interface) Padrão de acesso ao sistema operacional Facilita a compatibilidade Possui milhares de procedimentos
Conceitos Básicos Chamadas ao Sistema Exemplos de chamadas da interface: Unix e API Win32
Interface das Chamadas de Sistemas Interface para esconder a complexidade das system calls interface de programação fornecida pelo SO escrita em linguagem de alto nível aplicações utilizam uma API (Application Program Interface) encapsula o acesso direto às chamadas ao sistema
Interface das Chamadas de Sistemas APLICAÇÃO DO USUÁRIO read(fd, buffer,var( Wrapper API read() do Solaris read() do Linux read() do aix Solaris Linux AIX
Interface das Chamadas de Sistemas win32 API para Windows POSIX API para todas versões UNIX Java API para JVM
Interface das Chamadas de Sistemas Por que utilizar APIs em vez de chamadas diretas ao sistema? Portabilidade Esconder complexidade de chamadas ao sistema Acréscimo de funcionalidades que otimizam o desempenho
Interrupções Um processo pode ser interrompido ao fazer uma chamada ao sistema Usando TRAPS (para isso a aplicação tem que estar em execução) interrupção em nível de processo E o que fazer com interrupções que não são causadas por processos em execução? Interrupções de hardware Sinal elétrico no hardware Dispositivo de i/o ou clock
Interrupções
Interrupção vs Traps Interrupção Evento que independe do processo (externo ao processador) Gerada por dispositivos que podem não estar relacionado ao processo em execução TRAPS Evento que depende do processo Causado pelo processo no processador
Atividades para casa Ler capítulo 1 do Tanenbaum Resolver os exercícios ímpares Estudar chamadas ao sistema (Linux) e começar a pensar como implementar um programa que utilize algumas delas...
Referências Notas de aula Professor Marcos José Santana (USP) Aulas professor Jó Ueyama (Univesp) - https://www.youtube.com/watch?v=ie9evxy8ups