Baixe o app para aproveitar ainda mais
Prévia do material em texto
U F P A - P P G E E – L P R A D - L IN C Sistemas Operacionais Diego Lisboa Cardoso diego@ufpa.br Universidade Federal do Pará U F P A - P P G E E – L P R A D - L IN C Conceitos Básicos Chamadas de Sistema ◼ A interface entre o S.O. e os programas de usuário é definida pelo conjunto de instruções estendidas que o sistema operacional proporciona. ◼ Essas instruções são conhecidas como chamadas de sistema (system calls) → manipulam diversos objetos gerenciados pelo S.O. U F P A - P P G E E – L P R A D - L IN C Conceitos Básicos Chamadas de Sistema ◼ Pode-se dizer que são métodos utilizados para que os programas de usuários solicitem serviços providos pelo sistema operacional. ◼ Algumas peculiaridades: ⚫ Cada chamada corresponde a um procedimento de uma biblioteca contida no sistema operacional. ⚫ As chamadas de sistema executam em modo protegido, sem a interferência do usuário. U F P A - P P G E E – L P R A D - L IN C Conceitos Básicos Processo de Execução de uma Chamada de Sistema: ◼ Os serviços são requisitados através da colocação de parâmetros em lugares muito bem determinados (por exemplo, em registradores). ◼ Segue-se a execução de uma instrução especial de trap (Chamada ao Supervisor ou Chamada ao Kernel). ◼ A execução deste tipo de instrução chaveia a máquina do Modo Usuário para o Modo Kernel, e transfere o controle para o S.O. U F P A - P P G E E – L P R A D - L IN C Conceitos Básicos Processo de Execução de uma Chamada de Sistema (Continuação): ◼ O S.O. examina os parâmetros para determinar qual das chamadas de sistema deve ser executada. ◼ A seguir, o S.O. verifica em uma tabela indexada, o endereço do procedimento que executa a chamada ao sistema. ◼ Após a conclusão da chamada de sistema, o controle retorna ao programa do usuário. U F P A - P P G E E – L P R A D - L IN C Conceitos Básicos Exemplo de Chamada de Sistema: count = read (file, buffer, nbytes); READ (chamada de sistema). U F P A - P P G E E – L P R A D - L IN C Conceitos Básicos Chamadas de Sistema para manipular arquivos no UNIX ◼ open(): Specifies file name to be used; ◼ close(): Release file descriptor; ◼ read(): Input a block of information; ◼ write(): Output a block of information; U F P A - P P G E E – L P R A D - L IN C #include <stdio.h> #include <fcntl.h> int main() { int inFile, outFile; char *inFileName = "in_test.txt"; char *outFileName = "out_test.txt"; int len; char c; inFile = open(inFileName, O_RDONLY); outFile = open(outFileName, O_WRONLY); /* Loop through the input file */ while ((len = read(inFile, &c, 1)) > 0) write(outFile, &c, 1); /* Close files and quite */ close(inFile); close(outFile); } U F P A - P P G E E – L P R A D - L IN C Conceitos Básicos Interpretador de Comandos (Shell) ◼ É a interface entre os usuários e o sistema operacional. ◼ Um comando vindo do usuário, se com uma sintaxe válida, é interpretado pelo shell, que chama o procedimento responsável pela execução do comando. U F P A - P P G E E – L P R A D - L IN C Conceitos Básicos Bourne shell (sh) -- Written by Steve Bourne, while at Bell Labs. First distributed with Version 7 Unix, circa 1978, and enhanced over the years. Almquist shell (ash) -- Written as a BSD-licensed replacement for the Bourne Shell; often used in resource-constrained environments. The sh of FreeBSD, NetBSD (and their derivatives) are based on ash that has been enhanced to be POSIX conformant for the occasion. Bourne-Again shell (bash) -- Written as part of the GNU Project to provide a superset of Bourne Shell functionality. Debian Almquist shell (dash) -- Dash is a modern replacement for ash in Debian. Korn shell (ksh) -- Written by David Korn, while at Bell Labs. mksh -- Descendant of the OpenBSD /bin/ksh and pdksh, developed as part of MirOS BSD. Z shell (zsh) -- considered as the most complete (read: the one with the most features) shell: it is the closest thing that exists to a superset of sh, ash, bash, csh, ksh, and tcsh.[citation needed] Busybox -- Tiny utilities for small and embedded systems, include a shell. http://en.wikipedia.org/wiki/Bourne_shell http://en.wikipedia.org/wiki/Stephen_Bourne http://en.wikipedia.org/wiki/Bell_Labs http://en.wikipedia.org/wiki/Version_7_Unix http://en.wikipedia.org/wiki/Almquist_shell http://en.wikipedia.org/wiki/FreeBSD http://en.wikipedia.org/wiki/NetBSD http://en.wikipedia.org/wiki/POSIX http://en.wikipedia.org/wiki/Bash_(Unix_shell) http://en.wikipedia.org/wiki/GNU_Project http://en.wikipedia.org/wiki/Debian_Almquist_shell http://en.wikipedia.org/wiki/Debian http://en.wikipedia.org/wiki/Korn_shell http://en.wikipedia.org/wiki/David_Korn_(computer_scientist) http://en.wikipedia.org/wiki/Bell_Labs http://en.wikipedia.org/wiki/Korn_shell%23Variants http://en.wikipedia.org/wiki/OpenBSD http://en.wikipedia.org/wiki/MirOS_BSD http://en.wikipedia.org/wiki/Z_shell http://en.wikipedia.org/wiki/Wikipedia:Citation_needed http://en.wikipedia.org/wiki/Busybox U F P A - P P G E E – L P R A D - L IN C Concorrência O que é concorrência? O que é concorrer a algo? U F P A - P P G E E – L P R A D - L IN C Concorrência A possibilidade de o processador executar instruções ao mesmo tempo que outras operações, como, por exemplo, operações de E/S, permite que diversas tarefas sejam executadas concorrentemente pelo sistema. Existem diversos mecanismos de concorrência, como: ◼ Interrupções e Exceções; ◼ Buffering; ◼ Spooling; ◼ Reentrância; U F P A - P P G E E – L P R A D - L IN C Concorrência Pergunta... Por que a concorrência é o princípio básico para o projeto e a implementação dos sistemas multiprogramáveis ? U F P A - P P G E E – L P R A D - L IN C Concorrência Os Sistemas Multiprogramáveis surgiram da limitação dos sistemas monoprogramáveis U F P A - P P G E E – L P R A D - L IN C Concorrência Leitura de um registro 0,0015s Execução de 100 instruções 0,0001s Total 0,0016s % Utilização da CPU (0,001/0,0015)=0,066 = 6,6% Exemplo de Utilização de um sistema Mono. Programa que executa em média 100 instruções por registro lido. Neste caso o processador gasta 93,4% do tempo esperando o dispositivo de E/S concluir a operação para continuar processando. Como podemos solucionar este problema? U F P A - P P G E E – L P R A D - L IN C Interrupções e Exceções Os periféricos do computador (discos, teclado, monitor, etc) são acessados através de circuitos específicos genericamente denominados controladores: a placa de vídeo, por exemplo permite o acesso ao monitor; UCP MP Controlador Dispositivos de E/S • O processador não se comunica mais diretamente com os periféricos, mas sim através de cada controlador. U F P A - P P G E E – L P R A D - L IN C Interrupções e Exceções U F P A - P P G E E – L P R A D - L IN C Interrupções e Exceções Durante a execução de um programa podem ocorrer alguns eventos inesperados, ocasionando um desvio forçado do fluxo de execução→ Interrupção; Quando um controlador de periférico possui uma informação importante a fornecer ao processador, ele tem duas alternativas de comunicação; ◼ Aguarda até que o processador o consulte → Demorado; ◼ Notifica o processador através do barramento de controle, enviando a ele uma requisição de interrupção (IRQ – Interrupt Request); U F P A - P P G E E – L P R A D - L IN C Conceitos Básicos Interrupção: ◼ Gerada pelo S.O. ou por algum dispositivo, independente do programa que está sendo executado. ⚫ Exemplo de Interrupção: periférico avisa à CPU que está pronto para transmitir algum dado. ⚫ No momento em que a UC detecta a interrupção, o programa em execução é interrompido, e o controle é desviado para uma rotinaresponsável pelo tratamento da interrupção. U F P A - P P G E E – L P R A D - L IN C Mecanismo de Interrupção Interrupção Programa Salvar os Registradores Identifica a origem da interrupção Obtém endereço da rotina Restaura os Registradores Rotina de tratamento U F P A - P P G E E – L P R A D - L IN C Mecanismo de Interrupção U F P A - P P G E E – L P R A D - L IN C Conceitos Básicos ◼ No momento da interrupção, um conjunto de informações sobre a execução do programa deve ser preservado. ◼ Essas informações consistem no conteúdo de alguns registradores, que deverão ser restaurados posteriormente para a continuação do programa. ◼ Existem diferentes tipos de interrupções → cada uma tratada por uma rotina de tratamento. U F P A - P P G E E – L P R A D - L IN C Conceitos Básicos ◼ No momento em que uma interrupção acontece, a CPU deve saber para qual rotina de tratamento deverá ser desviado o fluxo de instrução. ◼ Essa informação deve estar em uma estrutura chamada Vetor de Interrupção, que contém todas as rotinas de tratamento existentes, associadas a cada tipo de interrupção. U F P A - P P G E E – L P R A D - L IN C Conceitos Básicos ◼ As interrupções podem ser classificadas como: ⚫ Mascaráveis: podem ser desabilitadas pelo processador (Todos os dispositivos de E/S utilizam interrupções mascaráveis) ⚫ Não Mascaráveis: não podem ser desabilitadas (usadas para sinalizar “quase catástrofes”, como um erro de paridade de memória) ◼ No caso da ocorrência de múltiplas interrupções, o processador deve saber qual interrupção terá de atender primeiro. U F P A - P P G E E – L P R A D - L IN C Conceitos Básicos ◼ O controlador de pedidos de interrupção é um dispositivo responsável por avaliar as interrupções geradas e suas prioridades de atendimento. ◼ A interrupção tornou possível a implementação da concorrência nos computadores, sendo o fundamento básico dos sistemas multiprogramáveis. U F P A - P P G E E – L P R A D - L IN C Conceitos Básicos ◼ Interrupção de Hardware: pelo dispositivos periféricos ou pelo relógio (timer). ◼ Interrupção de Software: são system calls (chamadas ao sistema) ou trap (armadilha). ◼ Diferença: conhecendo-se um programa e seus dados, é possível prever quando as interrupções de software irão acontecer - o que não é possível no caso das interrupções de hardware. U F P A - P P G E E – L P R A D - L IN C Conceitos Básicos Exceção: ◼ Resultado direto da execução de uma instrução do próprio programa. ⚫ Exemplo: Situações como a divisão por zero ou a ocorrência de um overflow. ◼ Diferença fundamental entre exceção e interrupção: ⚫ Exceção gerada por um evento síncrono. ⚫ Interrupção gerada por um evento assíncrono. U F P A - P P G E E – L P R A D - L IN C Buffering A técnica de buffering consiste na utilização de um buffer, para a transferência de dados entre os dispositivos de E/S e a memória, liberando imediatamente o dispositivo de entrada para realizar uma nova leitura. Nesse caso, enquanto o processador manipula o dado no buffer o dispositivo realiza outra operação. Permitindo minimizar o problema da disparidade da velocidade de processamento existente entre o processador e os dispositivos de E/S. U F P A - P P G E E – L P R A D - L IN C Buffering Qual seria o objetivo da técnica do BUFFERING? Manter, na maior parte do tempo, processador e dispositivos de E/S ocupados, aumentando assim a concorrência. U F P A - P P G E E – L P R A D - L IN C Spooling É uma técnica semelhante à técnica de buffering, sendo que esta técnica utiliza uma área em disco como se fosse um grande buffer; ◼ Ex.: No momento em que um comando de impressão é executado, as informações que serão impressas são gravadas antes em um arquivo em disco, conhecido como arquivo de spool, liberando imediatamente o programa para outras atividades. Posteriormente o SO encarrega-se de direcionar o conteúdo do arquivo de spool para a impressora. ◼ C:\WINDOWS\system32\spool\PRINTERS U F P A - P P G E E – L P R A D - L IN C Spooling Pergunta... Qual a vantagem da técnica do spooling? O uso do spooling permite desvincular o programa do dispositivo de impressão, impedindo que um programa reserve a impressora para uso exclusivo. U F P A - P P G E E – L P R A D - L IN C Reentrância É comum vários usuários utilizarem os mesmos aplicativos simultaneamente, então para evitar que vários códigos executáveis fossem carregados na memória, e evitar o desperdício de espaço→ Reentrância; É a capacidade de um código executável (código reentrante) ser compartilhado por diversos usuários, exigindo que apenas uma cópia do programa esteja na memória. A reentrância permite que cada usuário possa estar em um ponto diferente do código reentrante, manipulando dados próprios, exclusivos de cada usuário. U F P A - P P G E E – L P R A D - L IN C Reentrância Código reentrante Usuário A Usuário BUsuário D Usuário C Área de dados do usuário A Área de dados do usuário B Área de dados do usuário C Área de dados do usuário D U F P A - P P G E E – L P R A D - L IN C Estrutura de um Sistema Operacional Sistemas Monolíticos ◼ Não há estruturação visível. ◼ SO é escrito como um conjunto de procedimentos, que geralmente implementa mais que as funções básicas de um Sistema Operacional. ◼ Comprometimento do desempenho, devido à grande funcionalidade atribuída ao SO. ◼ Maior complexidade em programação de mais baixo nível. U F P A - P P G E E – L P R A D - L IN C Estrutura de um Sistema Operacional Sistemas em Camadas ◼ O S.O. é organizado em hierarquia de níveis. ◼ O sistema é dividido em níveis de complexidade, sendo que os níveis inferiores prestam serviços para os superiores. ◼ Implementam apenas a funcionalidade básica de um sistema operacional, isto é, as Gerências de processos/processador, de memória, de dispositivos de entrada/saída e do sistema de arquivos. U F P A - P P G E E – L P R A D - L IN C Estrutura de um Sistema Operacional Sistemas em Camadas ◼ Desempenho melhor, pelo fato de menos funcionalidade estar implementada em nível de kernel. ◼ Primeiro SO em camadas foi o THE (Technische Hogeschool Eindhoven), na Holanda, em 1968. U F P A - P P G E E – L P R A D - L IN C Estrutura de um Sistema Operacional O THE possuía seis níveis: 5 Operador 4 3 0 1 2 Programas de Usuário Gerenciador Dispositivo de E/S Comunicação processo-usuário Gerência de Memória Multiprogramação U F P A - P P G E E – L P R A D - L IN C Estrutura de um Sistema Operacional Sistema Cliente-Servidor ◼ Processo Cliente. ◼ Processo Servidor. ◼ O trabalho do kernel é prover a comunicação entre o cliente e o servidor. ◼ O S.O. realiza tarefas bem definidas: ⚫ Serviço de arquivo. ⚫ Processos. ⚫ Memória. ⚫ Entre outros. U F P A - P P G E E – L P R A D - L IN C Exercício Exercício 01: 1) Defina SO. 2) Como seria utilizar um computador sem um SO? 3) Qual o objetivo de um SO? 4) Quais elementos compõe um SO? 5) Qual a diferença entre Multiprogramação e monoprogramação e porque dizemos que existe subutilização de recursos em sistemas monoprogramáveis? 6) O que são sistemas com múltiplos processadores e quais as suas vantagens? 7) O que são sistemas fortemente acoplado e fracamente acoplado? 8) Qual a grande diferença entre Sistemas operacionais de rede e sistemas distribuído? 9) O que é concorrência e como este conceito está presente nos sistemas multiprogramáveis? 10) Explique o mecanismo de funcionamento das interrupções. 11) Explique o funcionamento das técnicas de Buffering, Spooling e Reentrância. U F P A - P P G E E – L P R A D - L IN C Lembrando Familiarizaçãocom o Minix/Linux; (todos) - instalação - sugestão: usar máquinas virtuais – VirtualBox, etc; U F P A - P P G E E – L P R A D - L IN C Exercício Utilizar o programa “chamadas de sistemas”, compilá-lo em Linux. Descrever como funcionam as chamadas de sistemas geradas pelas funções do programa C. U F P A - P P G E E – L P R A D - L IN C Trabalho 1 (um por grupo) - criar aplicativos na linguagem C para rodar no Linux utilizando as chamadas do sistema operacional. a- programa que concatena dois arquivos. Entrada: o nome dos dois arquivos. Saida: o arquivo concatenado b- programa que imprime os nomes e datas dos arquivos no diretório corrente. c- troca o nome dos arquivos de um diretório colocando a string "L" na frente. d- troca o password de um usuário. U F P A - P P G E E – L P R A D - L IN C Entregar Relatório com: Objetivo programa explicado e comentado cópias das telas do emulador mostrando o programa rodando. Código executável Apresentação com powerpoint e telas da saída do emulador. U F P A - P P G E E – L P R A D - L IN C Sistemas Operacionais Diego Lisboa Cardoso diego@ufpa.br Universidade Federal do Pará
Compartilhar