1.51k likes | 1.67k Views
Sistemas Operacionais. Renato O. Violin. Conteúdo. Introdução ao S.O Gerenciamento de processos. Gerenciamento de memória. Dispositivos de Entrada/Saída. Sistemas de arquivos. Definição do problema. Um sistema de computação consiste de diversos dispositivos.
E N D
Sistemas Operacionais Renato O. Violin
Conteúdo • Introdução ao S.O • Gerenciamento de processos. • Gerenciamento de memória. • Dispositivos de Entrada/Saída. • Sistemas de arquivos.
Definição do problema • Um sistema de computação consiste de diversos dispositivos. • Todos os dispositivos são complexos de manipular. • Escrever programas que fazem usos desses dispositivos é uma tarefa difícil.
Como solucionar o problema? • Utilizar uma camada de software chamada sistema operacional. • Ele gerencia todos esses dispositivos e fornece uma interface de mais alto nível para acesso ao hardware.
O que é um Sistema Operacional? • É um software que realiza duas funções: • Estende a máquina, isto é, esconde do programador a “verdade” sobre a programação do hardware e apresenta uma forma mais simples de acessar o hardware. • Gerencia recursos,isto é, controla todo o hardware e controla a concorrência entre os diversos processos que tentam usar esse hardware.
Exemplo de acesso ao hardware • Queremos gravar dados em um disquete sem um S.O: • O controlador do disquete tem 16 funções de baixo nível; • Funções de leitura/escrita têm 13 parâmetros; • Retornam 23 informações de status. • É preciso verificar o status do motor.
Resumindo... • Sistema operacional é um software utilizado para facilitar a utilização do hardware, fornecendo ao usuário uma abstração maior, evitando que o programador acesse as instruções de hardware. • O SO gerencia os recursos de hardware, como por exemplo: endereçamento de memória, fila de processos para execução, concorrência entre processos.
Estrutura de um computador moderno • Dispositivos físicos: circuitos, unidades de disco etc. • Microprogramação: constituída por softwares capaz de interpretar e executar as instruções de máquina recebidas da camada superior.
Estrutura de um computador moderno • Linguagem de máquina: instruções que movem os dados pela maquina efetuando operações lógicas e aritméticas. • Sistema operacional: esconde a complexidade do hardware e gerencia os recursos compartilhados.
Estrutura de um computador moderno • Utilitários: compiladores, editores texto, interpretador de comando. • Aplicativos: navegador web, bate-papo etc.
Os sistemas operacionais evoluíram com o passar dos anos, acompanhando a arquitetura dos computadores que executavam.
1ª geração (1940 – 1955) • Foi marcada pelo invento das válvulas. • Computadores eram formados por milhares de válvulas ocupando salas imensas. • Não havia conceito de sistema operacional. • O acesso era feito diretamente nos painéis do equipamento, onde o usuário programa seus cálculos. • Surge o ENIAC, onde a programação era por fios e pinos.
1ª geração (1940 – 1955) (cont.) Computador baseado em válvulas Computador ENIAC
2ª geração (1955 – 1965) • Marcada por três avanços: • Utilização dos transistores em grande quantidade. • Sistema de processamento em batch. • Surgimento de linguagens de programação de alto nível (Fortran, Algol e Cobol). • Criação de mainframes. • Programas deixam de ter relação direta com o hardware.
2ª geração (1955 – 1965) • Processamento em batch: • Programas eram gravados em cartões perfurados. Após a leitura, eles eram salvos em uma fita magnética de entrada. • A fita de entrada era colocada no computador de grande porte (IBM 7094). Ao final do processamento, gravava o resultado em uma segunda fita (de saída). • A segunda fita (de saída) era colocada em um computador (IBM 1401) que lia a fita de saída e imprimia seu conteúdo.
2ª geração (1955 – 1965) (cont.) Sistema de processamento batch
3ª geração (1965 – 1980) • Surgimento dos circuitos integrados. • Surgimento das técnicas de: • Multiprogramação: execução de vários programas por meio da divisão de memória em partes. • Timesharing: divide o tempo de uso do processador entre todos os programas.
4ª geração (1980 – 1990) • Surgimentos dos PCs (personalcomputers). • Surgimento dos sistemas operacionais mais modernos: • MS-DOS: linha de comando. • Novel network : sistemas operacional de rede. • Macintosh: baseado em janelas.
5ª geração (1990 – ...) • Surgimento da computação distribuída • Um programa em execução que pode ser dividido em subprocessos para serem executados em outros computadores na rede. • Surgimento do protocolo TCP/IP, padrão Ethernet e o modelo cliente/servidor. • Surgimento da computação ubíqua.
Monotarefa • Os primeiros S.O executavam um programa de cada vez. • Os outros programas deveriam esperar o termino para poder executar. • Todos os recursos ficavam dedicados a uma única tarefa.
Multitarefa • Suporta a execução concorrente de vários programas, dividindo os recursos. • Classificado como: • Monousuário e Multiusuário. • Pode ser: • Cooperativo: o processo libera a CPU voluntariamente (i.e não há interrupções) • Preemptivo: quando o sistema gera uma interrupção e dá lugar a outro processo na CPU.
Processos • É uma abstração de um programa em execução. • Cada programa tem ao menos um processo concorrendo os recursos de sistema. • Possui um espaço de endereçamento na memória. • Pode assumir três estados: • Execução • Bloqueado • Pronto
Multiprocessamento • Sistemas com múltiplos processadores. • Compartilham a mesma memória e dispositivos de entrada. • Aumentam a capacidade computacional.
Interpretador de comandos (Shell) • Interface entre o usuário e o sistema operacional. • É onde o usuário solicita a execução de programas.
Chamadas do sistema (System Calls) • Interface entre softwares aplicativos e o sistema operacional. • Exemplo: • Criar arquivos. • Acessar drive de disquete, CD-Rom etc.
Processos • Um processo é tudo aquilo que o processador executa. • E a entidade pela qual a utilização da memória de um programa, tempo de processador e recursos de E/S podem ser gerenciados e monitorados pelo sistema operacional. • O processo pode ser visto como a abstração de um programa em execução.
Processos • Exemplo • João vai fazer um bolo. Ele vai utilizar uma receita para saber quais ingredientes e saber como preparar tudo. • Quem é o processador? • Quem é o programa? • Quem é o processo?
Processos • Todo software executável em um computador moderno, até mesmo o sistema operacional, é organizado em processos. • Os sistemas atuais permitem ao usuário a chaveamento de vários processos. • Esse chaveamento nos dá a sensação de que os programas são executados paralelamente.
Troca de processos • Como funciona a troca de processos? • Salvar o conteúdo atual dos registradores da CPU referentes a um processo que esta deixando o processador. • Carregar os registradores com o conteúdo do processo que esta ganhando a CPU.
Processos • Principais eventos que levam à criação de processos • inicialização do sistema • execução de chamada ao sistema de criação de processos • solicitação do usuário para criar um novo processo
Processos • Condições que levam ao término de processos • saída normal (voluntária) • saída por erro (voluntária) • erro fatal (involuntário) • cancelamento por um outro processo (involuntário)
Estados do processo • O processador não pode ser ocupado por todos os processos ao mesmo tempo. • Existe uma competição entre os processos para entrar em execução. • O sistema operacional deve controlar essa competição.
Estados do processo • Pronto (aguardando na fila de processos) • Execução (esta no processador) • Bloqueado (aguardando E/S)
Subprocessos • Uma aplicação pode ser dividida em partes que trabalham concorrentemente. • Consiste em particionar o processo gerado para controlar a aplicação (processo pai) em outros subprocessos subordinados a este que são chamados de processos filhos, ou apenas subprocessos
Subprocessos • Conforme aumenta-se a utilização de subprocessos, há um desperdício de tempo para criar e destruir estes. • Para resolver este problema, criou-se o conceito de threads.
Threads • São consideradas processos mais leves. • Enquanto os processos são usados para agrupar recursos, as threads são as entidades escalonadas para a execução na CPU. • Um processo possui pelo menos uma thread (linha de controle).
Exemplo Threads • Aplicação: Processador de textos • Uso: 3 threads • Interação com o usuário (teclado) • Formatação de texto • Gravando o documento
Escalonamento • Vimos que o estado de pronto possui uma fila de processos aguardando a liberação da CPU. • O componente que tenta manter o processador ocupado o tempo todo, escolhendo que será o próximo processo a ser executado é o escalonador.
Escalonamento • Categorias de algoritmos • Não-preemptivos • Preemptivos