Post on 09-Jan-2016
description
Prof. Carlos Alberto Seixas
Sistemas Operacionais – Aulas 7,8 e 9
Agenda da aulaParte I - Interpretando a notícia Parte II – Respondendo QuestionárioParte III – Revisão dos ConceitosParte IV - Teoria de SO - Classificação
Interpretando a Notícia
Parte I
SO no mundo...Blog do Planalto Fonte: IDG NOW
Parte IIRespondendo o questionário:
Questões1. 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 11. 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 22. Quais as características um sistema
operacional deve manter?Eficiência
Baixo tempo de resposta, pouca ociosidade da UCP e alta taxa de processamento.
ConfiabilidadePouca incidência de falhas e exatidão dos dados computados.
MantenabilidadeFacilidade de correção ou incorporação de novas
características.Pequena dimensão
Simplicidade e baixa ocupação da memóriaConcorrência
Capacidade de manutenção de tarefas concorrentesCompartilhamento de recursos
Gerencia de recursos de hardware e software compartilhados
Questão 33. 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óriaResponsá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 ArquivosResponsável pelo acesso e integridade dos dados
residentes na memória secundária.Processador de Comandos / Interface com o
UsuárioResponsável pela interface conversacional com o usuário.
Questão 44. 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.exeMemória: 2.308 Kb
Questão 55. 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çãoProcessosSã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 IIIBreve revisão dos conceitos
Recordando...O QUE É UM SISTEMA OPERACIONAL.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.
SO
Recordando.... Kernel
Kernel
Recordando ...KernelO 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.
ProcessosProcesso é 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.
Programa
P1
P2 P3
Processo
Execução
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 SISTEMASAs 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 CallsA System Calls ReadPara podermos acessar a System Calls Read é
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 AcessoPara 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 CallsO 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
Syste
m
Calls
Núcleo
Syste
m
Calls
SO
Shell
Classificação de SO
Parte IV
Classificação de SOPodemos classificar os SOs segundo dois enfoques:A arquitetura de seu kernelCapacidade de processamento
Classificação de SOSegundo 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óriaAs 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 virtualA 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árioO 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 sistemaOs 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 VirtualCada 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 experimentaisUma 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íticoMais 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íticoLinux, BSD, DOS, Windows 95 a ME, Solaris.
Problemas no kernel monolíticoMesmo 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.
VantagemOs 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.
Modo usuário e Modo Kernel
M odo kernel
M odo u suá rio
M icrokernel
men
sage
m
mensagem
H ardw are
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.
MicrokernelA 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-KernelO Micro-Kernel basicamente provê serviços :
gerenciamento do espaço de memóriagerê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.
ThreadsUm 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.
ThreadThread, 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).
Programas, Processos e Threads
•Um thread não é um programa, mas executa dentro de um programa (ver figura)
MultithreadÉ mais vantajoso quando temos mais de um
thread no mesmo programa
Exemplo aplicação multithreaded •Em um navegador várias coisas podem ocorrer ao mesmo tempo:
oscroll odownload de um applet odownload de uma imagem otocar uma animação otocar um som oimprimir uma página em background odownload de uma nova página
Processos <> ThreadsUm thread parece ser um processo mas :
Compartilha o mesmo "espaço de endereçamento" É muito rápido chavear a execução entre threads
mas não entre processos Um thread recebe alguns recursos próprios
durante a execução :Uma pilha de execução para poder chamar métodos,
passar parâmetros, alocar variáveis locais Um "Program Counter"
Chamamos isso o "contexto de execução do thread" Alguns autores chamam thread de "contexto de
execução"
ExemploUm jogo onde o mesmo pode ser modelado
com linhas de execução diferentes, sendo uma para desenho de imagem e outra para áudio;
Neste caso, há um thread para tratar rotinas de desenho e outro thread para tratar áudio;
No ponto de vista do usuário, a imagem é desenhada ao mesmo tempo em que o áudio é emitido pelos auto-falantes; Porém, para sistemas com uma única CPU, cada linha de execução é processada por vez;
Na prática...Uma linha de execução permite que o usuário de
programa, por exemplo, utilize uma funcionalidade do ambiente enquanto outras linhas de execução realizam outros cálculos e operações.
Em hardwares equipados com uma única CPU, cada linha de execução(Thread) é processada de forma aparentemente simultânea, pois a mudança entre uma linha e outra é feita de forma tão rápida que para o usuário isso está acontecendo paralelamente. Em hardwares com multiplos CPUs ou multi-cores as linhas de execução(Threads) podem ser realizadas realmente de forma simultânea;
Exemplos de Microkernel Os Sistemas que possuem um microkernel,
possuem casos de sucesso como é o exemplo do sistema QNX, usado em sistemas de braços de robôs nos Ônibus Espaciais. Alguns desenvolvedores afirmam que o microkernel podem ser mais rápidos e mais fáceis de atualizar e modificar que os sistemas de Kernel monolítico como Linux.
Microkernel x Kernel MonolíticoUma corrente de desenvolvedores
incluindo naturalmente o Linus, argumentam que apesar de a princípio um microkernel ser mais simples, a implementação de aplicações para estes SOs é mais complexa, pois lidar com a troca de dados entre os vários componentes é muito mais complicado do que simplesmente agrupar todos num kernel monolítico.
Linus Torvalds – Kernel MonolíticosNo seu livro "Just For Fun" (Só por Prazer,
editora Campus) o Linus dedica várias passagens a defender a idéia de Kernel monolítico, chegando classificar a idéia de um microkernel como "uma estupidez".
Andrew Tanenbaum – Micro-KernelAndrew Tanenbaum, grande professor de
Sistemas Operacionais, escreveu um artigo sobre segurança e confiabilidade em ambientes críticos. Nesse artigo, descreveu que o paradigma de Micro-Kernels leva vantagem sobre o Kernel Monolítico.
MinixSO com kernel leve e pequeno, menos de
5000 linhas de códigoRoda em micros Pentium com 16Mb de
Ram e 50 Mb de HDDesenvolvido para rodar em:
PC de baixo-custo, Computador de $100 Sistemas embarcadosSistemas Educacionais
KERNEL HÍBRIDO É um kernel compacto, com apenas as
funções principais e alguns serviços não essenciais, que se comunica com módulos "servidores", por exemplo o serviço de impressão. Se o serviço de impressão dá erro o SO continua em pé, pois são separados. O desempenho é mais contido pois o Kernel tem que se comunicar com os "servidores" via mensagens, ou seja, são outros processos.
Kernel híbrido Define um kernel baseado em microkernel no qual
módulos externos podem executar operações em modo kernel (protegido), a fim de evitar trocas de contexto e melhorar o desempenho geral do sistema.
Porém sendo híbrido, tem a capacidade de agregar ou desagregar funcionalidades, sem perder performance ou estabilidade presentes na sua estrutura inicial, proporcionais a sua organização.
SO de Kernel Híbrido - ExemplosBeOS / Haiku Microsoft Windows NT Microsoft Windows XPXNU (núcleo do Darwin utilizado no Mac OS
X)
Esquema do Kernel Híbrido
Por outro lado, o fato de poucos serviços estarem dentro do kernel, normalmente gera uma latência (lag, delay, etc) que era a crítica principal aos micro-kernél.
SISTEMAS OPERACIONAIS E SEUS TIPOS DE KERNELKernel Monolítico: BSD; Linux; MS-DOS e
derivados, incluindo Windows 95, Windows 98 e Windows ME; Solaris.
Microkernel: Hurd; Minix; QNX.Kernel Híbrido: Windows NT; Windows
XP. MacOS
Tipos de Sistemas OperacionaisEm relação à sua capacidade de
processamento o SO pode ser classificado em:MONOTAREFA (MONOPROGRAMÁVEL). MULTITAREFA (MULTIPROGRAMÁVEL).
MULTIPROCESSAMENTO (MULTIPROGRAMAÇÃO). MULTITAREFA PREEMPTIVA. MULTITAREFA DE COOPERAÇÃO.
Múltiplos Processadores
Sistemas Operacionais68
Tipos de SistemasOperacionais
SistemasMonoprogramáveis / Monotarefa
SistemasMultiprogramáveis / Multitarefa
Sistemas comMúltiplosProcessadores
TIPOS DE SISTEMAS OPERACIONAIS
SO MONOTAREFAMONOTAREFA (MONOPROGRAMÁVEIS). Permite a realização de apenas uma tarefa de cada vez. Nesses sistemas, enquanto o programa aguarda a
ocorrência de um evento qualquer, o processador ficará ocioso (“idle”);
A memória ficará subutilizada, caso o programa não a ocupe totalmente e os periféricos também ficarão ociosos se não utilizados.
Os processos são executados em seqüência e um só inicia após o término do anterior.
Exemplo:Um dos mais famosos sistemas operacionais monotarefa
é o MS-DOS.
70
UCP
Memória
Dispositivosde E/S
Programa /Tarefa
71
SISTEMAS MULTIPROGRAMÁVEIS / MULTITAREFAMais complexos e mais eficientes;Vários programas dividem os mesmos
recursos;Aumento da produtividade dos seus
usuários e a redução de custos;
Sistemas Operacionais72
UCP
Memória
Dispositivosde E/S
Programa /Tarefa
Programa /Tarefa
Programa /Tarefa
Programa /Tarefa
Sistemas Operacionais73
SISTEMAS COM MÚLTIPLOS PROCESSADORES
Caracterizam por possui duas ou mais UCPs interligadas, trabalhando em conjunto;
O fator chave neste tipo de S.O. é a forma de comunicação entre as UCPs e o grau de compartilhamento da memória e dos dispositivos de I/O;
Sistemas Operacionais74
Sistemas com Múltiplos Processadores
SistemasFortementeAcoplado
SistemasFracamenteAcoplado
SistemasSimétricos
SistemasAssimétricos
SistemasOperacionaisde Rede
SistemasOperacionaisDistribuídos
WebibliografiaArquitetura de Sistemas Operacionais Francis Berenger Machado &
Luiz Paulo Maia 4a Edição - 2007 - Ed. LTC Francisco Jos´e da Silva e Silva Grupo de
Engenharia de Sistemas e Mobilidade (SisMo) Departamento de Informatica / UFMA http://www.sismo.deinf.ufma.br