780 likes | 1.06k Views
Sistemas Operacionais – Aulas 7,8 e 9. Prof. Carlos Alberto Seixas. Agenda da aula. Parte I - Interpretando a notícia Parte II – Respondendo Questionário Parte III – Revisão dos Conceitos Parte IV - Teoria de SO - Classificação. Parte I. Interpretando a Notícia. SO no mundo.
E N D
Sistemas Operacionais – Aulas 7,8 e 9 Prof. Carlos Alberto Seixas
Agenda da aula • Parte I - Interpretando a notícia • Parte II – Respondendo Questionário • Parte III – Revisão dos Conceitos • Parte IV - Teoria de SO - Classificação
Parte I Interpretando a Notícia
SO no mundo... • Blog do Planalto • Fonte: IDG NOW
Parte II • Respondendo o questionário:
Questões • 1. Qual a função do kernel para o sistema operacional? • 2. Quais as características um sistema operacional deve manter? • 3. Quais os componentes de um SO? • 4. Cite um exemplo: • De um programa e um processo criado por ele no SO Windows XP. • Localize e descreva a quantidade de memória utilizada pelo processo criado. • 5. Defina e diferencie: programa e processo. • Editar arquivo com as respostas e enviar para: • seixas.alberto@gmail.com
Questão 1 • 1. Qual a função do kernel para o sistema operacional? • “Um Sistema Operacional pode ser definido como um gerenciador dos recursos que compõem o computador (processador, memória, I/O, arquivos, etc). Os problemas centrais que o Sistema Operacional deve resolver são o compartilhamento ordenado, a proteção dos recursos a serem usados pelas aplicações do usuário e o interfaceamento entre este e a máquina.” Stemmer. • - tratamento de interrupções; - gerenciamento de processos (criação e destruição de processos; -sincronização e comunicação entre processos, ...); - gerenciamento de memória; - gerenciamento do sistema de arquivos; - operações de E/S
Questão 2 • 2. Quais as características um sistema operacional deve manter? • Eficiência • Baixo tempo de resposta, pouca ociosidade da UCP e alta taxa de processamento. • Confiabilidade • Pouca incidência de falhas e exatidão dos dados computados. • Mantenabilidade • Facilidade de correção ou incorporação de novas características. • Pequena dimensão • Simplicidade e baixa ocupação da memória • Concorrência • Capacidade de manutenção de tarefas concorrentes • Compartilhamento de recursos • Gerencia de recursos de hardware e software compartilhados
Questão 3 • 3. Quais os componentes de um SO? • Núcleo • Responsável pela gerência do processador, tratamento de interrupções, comunicação e sincronização de processos. • Gerente de Memória • Responsável pelo controle e alocação de memória aos processos ativos. • Sistema de E/S • Responsável pelo controle e execução de operações de E/S e otimização do uso dos periféricos. • Sistema de Arquivos • Responsável pelo acesso e integridade dos dados residentes na memória secundária. • Processador de Comandos / Interface com o Usuário • Responsável pela interface conversacional com o usuário.
Questão 4 • 4. Cite um exemplo: • De um programa e um processo criado por ele no SO Windows XP. • Localize e descreva a quantidade de memória utilizada pelo processo criado. • Programa: Paint, Processo mspaint.exe • Memória: 2.308 Kb
Questão 5 • 5. Defina e diferencie: programa e processo. • Programa: é um conjunto de instruções ordenadas e armazenadas em determinado sistema de arquivos, que possui uma finalidade específica. • Processo: é um programa ou parte integrante deste em seu estado de execução, ocupando memória principal e processamento, em outras palavras, é a ação de execução de um determinado programa.
Recordando a definiçãoProcessos • São execuções em andamento no sistema, para realização de tarefa, o Kernel e o escalonador são responsáveis por criarem as threads (organiza e exercuta processos), o Kernel ele controla a parte do hardware é faz com que os processos sejam executados na cpu, diferente do escalonador que organiza qual dos processos tem mais prioridades para serem processados.
Parte III • Breve revisão dos conceitos
Recordando... • O QUE É UM SISTEMA OPERACIONAL. • Sistema Operacional é um programa que atua como um intermediário entre o usuário (seja ele um usuário "real" ou aplicativo) e o hardware do computador. O Sistema Operacional cria uma camada de abstração entre o usuário e o hardware facilitando a vida do usuário e também possui rotinas (bibliotecas) que gerencia todo o seu hardware.
Recordando.... Kernel Kernel
Recordando ...Kernel • O QUE É UM KERNEL. • O Kernel é o software que fornece serviços básicos para todas as outras partes de um SO. De forma mais detalhada, o Núcleo é um conjunto de rotinas que oferecem serviços aos usuários do sistema e suas aplicações, bem como a outras rotinas do próprio SO.
Processos • São execuções em andamento no sistema, para realização de tarefa, o Kernel é o escalonador são responsável por criarem as threads (organiza e exercuta processos), o Kernel ele controla a parte do hardware é faz com que os processos sejam executados na cpu, diferente do escalonador que organiza qual dos processos tem mais prioridades para serem processados.
Processos • Processo é o conceito central em qualquer sistema operacional, uma abstração de um programa em execução, ou seja, o programa é o código e o processo é a execução. P1 Execução P2 P3 Processo Programa
Na prática... • Os computadores podem fazer várias tarefas ao mesmo tempo: enquanto executa um programa do usuário, ele pode estar lendo os dados de um disco e também enviando algo para ser impresso. • Na realidade ele esta executando vários processos, saltando um a um tão rápido que nos dá a falsa impressão que estão sendo executados todos ao mesmo tempo, é o que chamamos de processos seqüenciais.
CHAMADAS DE SISTEMAS • As chamadas ao Sistemas são um mecanismo que tem por objetivo proteger o Núcleo do sistema e de acessar os seus serviços. • Quando uma aplicação ou um programa deseja utilizar algum serviço do Sistema Operacional, realiza a chamada por meio de uma Rotina( procedimento de biblioteca) e essa rotina acessa a System Calls que retorna o dado(objeto, instrução) requerida.
Exemplo System Calls • A System CallsRead • Para podermos acessar a System CallsReadé necessário fazer uma chamada através da rotina da biblioteca, que por ocasião tem o mesmo nome Read. • E quem faz essa chamada a biblioteca é o programa ou o usuário. • Que no caso se o programa é escrito em C ficaria assim: contador = read (arquivo,buffer,nbytes) • A System Calls após receber a chamada da biblioteca, vai no lugar alocado e retorna o resultado de nbytes do arquivo ao usuário.
Níveis de Acesso • Para melhor proteção do núcleo do S.O, existe dois níveis de acesso: • Modo de acesso privilegiado: que pode entrar no Kernel e interagir com ele, tem o poder de comprometer o sistema pois atuam diretamente no hardware. Mas só o S.O, por segurança, tem acesso a esse modo e acesso total de instrução do processador; • Modo usuário ou não privilegiado: que não fornece nenhum tipo de perigo pois tem acesso a um número reduzido de instruções.
Shell e System Calls • O interpretador de comando chamado de Shell é extremamente útil. • É a interface primária entre o usuário e o S.O, • Ele e o núcleo são programas separados que se comunicam através de um conjunto de System Calls . Nele o usuário digita um comando e o Shell comunica-se com o núcleo e pede que crie um processo filho. O processo filho executará o comando através de uma System Calls .
Esquema Shell e System Calls Shell System Calls System Calls SO Núcleo
Parte IV Classificação de SO
Classificação de SO • Podemos classificar os SOs segundo dois enfoques: • A arquitetura de seu kernel • Capacidade de processamento
Classificação de SO • Segundo a arquitetura de seu kernel: • Monolítico; • Microkernel; • Híbrido;
Kernel monolítico ou mono-bloco • É um kernel que implementa uma interface de alto nível para possibilitar chamadas específicas do sistema para gestão de processos, concorrência e gestão de memória por parte dos módulos dedicados que são executados com privilégios especiais.
Kernel monolítico ou mono-bloco • É uma arquitetura de kernel onde todo o kernel é executado no espaço do kernel no modo de privilegiado ou de supervisão. • Como em outras arquiteturas (microkernel e kernel híbrido), o kernel define uma camada de alto nível de abstração sobre o hardware do computador, com um conjunto de primitivas ou chamadas de sistema para implementar os serviços do sistema operacional como gerenciamento de processos, concorrência e gestão de memória em um ou mais módulos.
Utilização da memória pelo kernel e pelo usuário • Um sistema operacional convencional separa a memória virtual em espaço do kernel e espaço do usuário.
Esquema de utilização da memória • As aplicações funcionam aparentemente com uma grande gama de endereços contíguos, mas, na realidade, as partes estão dispersas em torno da RAM e as partes inativas são guardadas em um arquivo em disco. Aplicações Fisicamente
Memória virtual • A memória virtual consiste num conjunto de recursos de hardware e software que possui três funções básicas: • Assegurar que cada processo (aplicação) tenha o seu próprio espaço de endereçamento, começando em zero (problema de recolocação), • proteção de memória, para impedir que um processo utilize um endereço de memória que não lhe pertença, • possibilitar que uma aplicação utilize mais memória do que a fisicamente existente (essa é a função mais conhecida)
Espaço do kernel e espaço do usuário • O espaço do kernel é estritamente reservado para o kernel, extensões do kernel e alguns drivers de dispositivos. Em muitos sistemas operacionais, o espaço de memória ocupada pelo kernel nunca é paginada no disco. • O espaço de memória do usuário (no qual funcionam todos os aplicativos de modo usuário) pode ser paginada no disco sempre que necessário.
Espaço do Kernel (Kernel Space) • É o modo protegido, onde rodam os serviços/servidores/módulos essenciais. • No caso dos SO com Microkernel eles são o mínimo possível, no caso dos monolíticos, vários serviços. • Qualquer problema no kernel space pode derrubar o sistema • Os defensores dos SO com microkernel acreditam que uma abordagem simples no kernel aumenta a estabilidade e confiabilidade do sistema, já que qualquer serviço problemático pode ser desativado, reinicializado, substituído ou atualizado sem precisar rebootar o sistema.
Processos e Memória Virtual • Cada processo no espaço de usuário executa no seu próprio espaço de memória virtual e, exceto se requisitado, não pode acessar a memória de outro processo. • Essa é a base de proteção de memória nos principais sistemas operacionais de hoje. • Dependendo do privilégio, os processos podem requisitar ao kernel o mapeamento de parte de outros espaços de memória de processos para os seus próprios como é o caso de depuradores. • Os programas podem, inclusive, requisitar áreas de memória compartilhadas com outros processos.
SO experimentais • Uma outra abordagem de sistemas operacionais experimentais é ter um único espaço de endereços para todo software e invocar a linguagem de programação da máquina virtual para certificar-se de que memória RAM não possa ser acessada. • Os aplicativos simplesmente não podem adquirir nenhuma referência dos objetos os quais não são permitidos o acesso. Essa abordagem tem sido implementada no JXOS (Jnode), Unununium bem como no projeto de pesquisa da Microsoft Singularity
Kernel Monolítico • Mais da metade dos grandes sistemas operacionais usam a arquitetura monolítica. • Os sistemas operacionais de kernel monolítico tem seus problemas. • Há um grande campo de pesquisas para outros meios de se criar um kernel, dentre os mais famosos, se destaca o microkernel.
Exemplos de SO com kernel monolítico • Linux, • BSD, • DOS, • Windows 95 a ME, • Solaris.
Problemas no kernel monolítico • Mesmo que cada módulo tenha suas operações independentes é muito difícil fazer a integração entre todos estes módulos, uma vez que todos os módulos executam num mesmo espaço de endereçamento, um erro em um módulo pode derrubar todo o sistema.
Desvantagens do kernel monolítico • É complexo "debugar" (É extremamente difícil de se usar um debugger em nível de fonte); • O kernel se torna mais suscetível a bugs; • Reiniciar o computador é necessário freqüentemente (principalmente quando é necessário atualizar o kernel ou adicionar novas funções ao mesmo); • Bugs tendem a ser mais danosos, já que como todas as funções do kernel têm todos os privilégios, um bug em uma função é capaz de afetar áreas, mesmo que sem nenhuma relação direta.
Vantagem • Os SOs Monolíticos ainda conseguem atrair a atenção de desenvolvedores devido a uma complexidade menor do que Sistemas que possuem um microkernel.
Microkernel • É um termo usado para caracterizar o sistema cujas funcionalidades do sistema saíram do kernel e foram para servidores, que se comunicam com um núcleo mínimo, usando o mínimo possível o "espaço do sistema" (nesse local o programa tem acesso à todas as instruções e a todo o hardware) e deixando o máximo de recursos rodando no "espaço do usuário" (no espaço do usuário, o software sofre algumas restrições, não podendo acessar alguns hardwares, nem tem acesso a todas as instruções).
Definição 2: Micro-kernel = Microkernel • É uma designação de um Sistema Operacional que possui apenas um núcleo que provê recursos mínimos necessários ao ambiente. Outras funcionalidades são oferecidas através de programas chamados servidores, que se localizam na user-space ou espaço do usuário.
Esquema do Micro-Kernel • A figura abaixo representa a interação entre os softwares que são executados sobre o sistema e sua relação com o kernel.
Microkernel • A maioria dos Sos com microkernel de hoje são mono-servidores, ou seja, possuem apenas um programa no espaço do usuário fazendo todas as funções do kernel.
Funcionamento do Micro-Kernel • O Micro-Kernel basicamente provê serviços : • gerenciamento do espaço de memória • gerência de threads e comunicação entre os processos (IPC – Inter-Process Communication). • Serviços que ficam no user space: • Serviços como rede, vídeo, são considerados não essenciais.
Threads • Um processo tem duas partes: • Parte ativa (fluxo de controle) e passiva (espaço de endereçamento) • Um thread consiste somente do fluxo de controle • É chamado também de processo leve ou diet.
Thread • Thread, ou linha de execução em português, é uma forma de um processo dividir a si mesmo em duas ou mais tarefas que podem ser executadas simultaneamente. O suporte à thread é fornecido pelo próprio sistema operacional (SO), no caso da Kernel-Level Thread (KLT), • Se implementada através de uma biblioteca de uma determinada linguagem, no caso de uma User-Level Thread (ULT).