57
Aula 1 Conceitos fundamentais de sistema operacionais O que é um sistema operacional? É um conjunto de programas (software) responsável por: Fazer a interface com os usuários; Gerenciar recursos; Fazer a interface com o hardware. (Segurança e estabilidade) É um intermediário entre o usuário e o hardware. Cada parte (módulo ou função) de um sistema operacional é responsável pelo gerenciamento de um recurso específico. Que recursos são esses? Tempo da CPU Espaço em memória Espaço em disco Acesso aos dispositivos de comunicação Bibliotecas de software Gerenciar recursos é garantir a utilização compartilhada do recurso sem que ocorram erros que possam gerar instabilidade ou falha no sistema. Na visão do usuário, o sistema operacional fornece: Acesso ao sistema; Possibilidade de criar e gerir arquivos e diretórios; Ambiente para execução de programas Acesso aos dispositivos de entrada e saída. Acesso ao conteúdo de arquivos Detecção de erros. Classificação de sistemas operacionais A classificação é utilizada como uma forma sintética de apresentar, em poucas palavras, as características de um sistema operacional. Sistemas monotarefa x Sistemas multitarefa o Monotarefa: Admite e gerencia apenas uma tarefa em execução por vez. Ex: DOS o Multitarefa: Admite e gerencia várias tarefas em Processamento concorrente. Ex: Windows XP, Windows 2003, Linux, MacOS Sistemas monousuário x sistemas multiusuário o Monousuário: Admite e gerencia apenas um usuário – não permite que mais de um usuário esteja “logado” simultaneamente. Ex: Windows XP, Windows NT (exceto versão com Terminal Server). o Multiusuário: Sistema Multiusuário: Admite e gerencia vários usuários – permite que mais de um usuário esteja “logado” simultaneamente. Ex: Linux, VMS OBS: Todo sistema operacional multiusuário é obrigatoriamente multitarefa, pois cada usuário representa, no mínimo, uma tarefa para ser executada. Sistemas monoprocessadores x Sistemas multiprocessadores o Monoprocessadores: Somente reconhecem e utilizam um processador. Ex. Windows 98

Conteúdo Online - Sistemas Operacionais - Aulas 1 a 10

Embed Size (px)

DESCRIPTION

Conteúdo da disciplina de Sistemas Operacionais.

Citation preview

  • Aula 1

    Conceitos fundamentais de sistema operacionais

    O que um sistema operacional? um conjunto de programas (software) responsvel por:

    Fazer a interface com os usurios;

    Gerenciar recursos;

    Fazer a interface com o hardware. (Segurana e estabilidade)

    um intermedirio entre o usurio e o hardware.

    Cada parte (mdulo ou funo) de um sistema operacional responsvel pelo gerenciamento de um recurso

    especfico. Que recursos so esses?

    Tempo da CPU

    Espao em memria

    Espao em disco

    Acesso aos dispositivos de comunicao

    Bibliotecas de software

    Gerenciar recursos garantir a utilizao compartilhada do recurso sem que ocorram erros que possam gerar

    instabilidade ou falha no sistema.

    Na viso do usurio, o sistema operacional fornece:

    Acesso ao sistema;

    Possibilidade de criar e gerir arquivos e diretrios;

    Ambiente para execuo de programas

    Acesso aos dispositivos de entrada e sada.

    Acesso ao contedo de arquivos

    Deteco de erros.

    Classificao de sistemas operacionais

    A classificao utilizada como uma forma sinttica de apresentar, em poucas palavras, as caractersticas de um

    sistema operacional.

    Sistemas monotarefa x Sistemas multitarefa

    o Monotarefa: Admite e gerencia apenas uma tarefa em execuo por vez. Ex: DOS

    o Multitarefa: Admite e gerencia vrias tarefas em Processamento concorrente. Ex: Windows XP,

    Windows 2003, Linux, MacOS

    Sistemas monousurio x sistemas multiusurio

    o Monousurio: Admite e gerencia apenas um usurio no permite que mais de um usurio esteja

    logado simultaneamente. Ex: Windows XP, Windows NT (exceto verso com Terminal Server).

    o Multiusurio: Sistema Multiusurio: Admite e gerencia vrios usurios permite que mais de um

    usurio esteja logado simultaneamente. Ex: Linux, VMS

    OBS: Todo sistema operacional multiusurio obrigatoriamente multitarefa, pois cada usurio representa, no

    mnimo, uma tarefa para ser executada.

    Sistemas monoprocessadores x Sistemas multiprocessadores

    o Monoprocessadores: Somente reconhecem e utilizam um processador. Ex. Windows 98

  • o Multiprocessadores: Sistemas multiprocessados: Reconhecem e utilizam mais de um processador. Ex.

    Windows XP, Windows Vista, Windows 7, Linux.

    OBS.: Sistemas com suporte a multiprocessamento podem executar mais de uma tarefa ao mesmo tempo;

    uma em cada processador.

    Sistema de tempo real e sistema embarcado:

    o Tempo Real: Sistemas que possuem um forte vnculo com o tempo. O resultado s considerado

    correto se a execuo acontecer no tempo previsto. O sistema deve garantir que uma tarefa possua

    todos os recursos necessrios para sua execuo em um intervalo de tempo pr-definido.

    OBS.: No se trata de velocidade de processamento e sim garantia de tempo de resposta.

    o Embarcado: Sistemas inseridos em produtos com funes especficas como telefones celulares. OBS.:

    Nem todo dispositivo eletrnico possui um microcontrolador e nem todo aparelho com icrocontrolador

    possui um sistema operacional.

    EXTRA: Os SO multiprogramaveis ou multitarefa, podem ainda ser classificados pela forma com que suas

    aplicaes so gerenciadas, podem ser divididos em sistema bath, de tempo compartilhada ou de tempo

    real. Um SO pode suporte um ou mais destes tipos de processamento, dependendo de sua implementao

    Estruturas dos sistemas operacionais modernos

    A partir do 80386, esse problema foi solucionado em termos de hardware atravs da possibilidade de 2 modos de

    execuo: o modo protegido e o modo real. Ficava a cargo do sistema operacional a comutao entre esses dois modos

    por questes de compatibilidade. A instabilidade evidenciada pela tela azul tem razes histricas. Os primeiros

    processadores da linha x86 possuam um nico modo de operao: o modo real. Dessa forma, todas as operaes

    poderiam ser executadas diretamente pelas aplicaes que, ao produzir erros, geravam panes no sistema.

    Modo Usurio x Modo Kernel:

    Modo usurio o que trabalhamos normalmente onde no tenho acesso as funo do sistema operacional que

    podem comprometer o sistema. (Instrues no privilegiadas).

    System Call = Porta de acesso ao Kernel. Verifica se o modo de usurio pode executar determinada tarefa sem

    comprometer o sistema.

    Modo Kernel s (Instrues Privilegiadas)

    As aplicaes so executadas em modo usurio, ou seja, modo que no possui privilgios para operaes que

    coloquem o sistema em risco tais como escrever no disco, criar novas tarefas etc.

    Quando essas aplicaes precisam executar tarefas crticas, necessrio que haja uma mudana para modo

    Kernel. Essa mudana ocorre atravs de uma system call ou chamada ao sistema.

    Chamadas ao sistema (system call): Mecanismo responsvel pela mudana de modo usurio para modo kernel.

    Ao invs de executar diretamente funes do kernel a aplicao executa uma funo intermediria que verifica

    se o acesso ao kernel seguro e, s ento, completa a operao.

    Voltando tela azul: As aplicaes podiam executar diretamente as funes do kernel sem a proteo da

    mudana de modo, ou seja, o erro acontecia aps a execuo de uma funo do kernel. Com a mudana de

    modo, se a execuo no for segura, a aplicao ser impedida de continuar a execuo e o sistema

    permanecer estvel.

  • Exemplo: Chama uma funo XYZ que chama uma biblioteca de funes, que chama o modo kernel. O system

    call verifica se est tudo ok e aciona a funo ou retorna um erro.

    Execuo no protegida: d tela azul porque acessa diretamente ao kernel.

    o Execuo protegica: no d tela azul, apresenta um erro do programa, pois ocorre a mudana do modo de

    usurio para o modo kernel, pela chamada ao sistema (system call)

  • o

    Tipo de estruturas:

    Os sistemas so classificados em relao s atribuies do kernel e a relao entre seus mdulos em

    monolticos, camadas e microkernel.

    Os sistemas modernos so divididos em dois grandes grupos: arquitetura monoltica e microkernel. A diferena

    entre elas est nas atribuies do ncleo do sistema operacional, denominado KERNEL.

    Essa caracterstica muito importante no projeto de um Sistema Operacional e foi alvo de discusso entre dois

    grandes nomes da computao: Andrew Tanenbaum (autor de sistema minix para fins educacionais) e Linus

    Torvalds (Autor do Linux)

    Arquitetura monoltica: Todo o kernel compilado e linkado em um nico bloco, tornando o cdigo eficiente, porm

    de difcil manuteno. A incluso ou excluso de um mdulo requer que todo o kernel seja recriado.

    Arquitetura microkernel: Somente as funes crticas fazem realmente parte do kernel. Demais funes so tratadas

    como tarefas e executam em modo usurio fazendo chamadas ao kernel quando necessrio. Essa arquitetura simplifica

    a manuteno, incluso e excluso de mdulos do sistema operacional no sendo necessrio gerar um novo kernel a

    cada modificao e nem mesmo reiniciar o computador para ativao e desativao do mdulo.

    Interrupes

    So sinais de hardware fundamentais para a existncia de sistemas multitarefa, pois provocam a suspenso da tarefa

    em execuo pela ocorrncia de um evento externo permitindo que outras tarefas compartilhem o tempo de uso do

    processador.

    Neste caso, o que est sendo compartilhado o TEMPO DE USO do processador e NO o processador em si. Cada tarefa

    utiliza 100% do processador.

    Parte do mecanismo executada pelo hardware (identificao do dispositivo, empilhamento dos registradores de

    sistema) e parte feita por software atravs da rotina de tratamento da interrupo (interrupt handler).

  • Tipo de interrupes

    As interrupes so geradas por dispositivos de hardware e podem ocorrer de forma sncrona ou assncrona.

    Relgio (temporizador) -> sncrona

    Dispositivos de E/S (sinalizao de concluso) -> assncrona

    Falha de hardware (paridade de memria, erro de disco etc.) -> assncrona

    O termo interrupo muitas vezes utilizado para qualquer atividade que suspenda a execuo de uma tarefa, mesmo

    que seja solicitada pelo prprio programa. Utilizaremos, para este fim, o termo estado de exceo.

    Estados de exceo: so provocados pela prpria aplicao.

    Estouro aritmtico.

    Diviso por zero.

    Instruo ilegal.

    Acesso no permitido.

    Chamadas ao sistema.

    ATENO:

    Mascaramento de interrupes: Capacidade de inibir a ao de uma interrupo. As interrupes de segurana no

    podem ser mascaradas.

    As Interrupes podem acontecer de forma sequencial ou em cascata.

    Sequencial: uma interrupo s poder ser atendida se nenhuma outra estiver em atendimento.

    A Rotina de Servio desabilita as interrupes.

    Uma nova interrupo s tratada aps o retorno.

    A interrupo pode demorar a ser tratada, o que pode eventualmente ocasionar uma perda de dados.

    Finalizada a Rotina de Servio de interrupo, o processador verifica por interrupes adicionais.

  • Cascata: Uma interrupo pode interromper a ao de uma rotina de tratamento de outra interrupo.

    Interrupes tm prioridade.

    Interrupes com alta prioridade interrompem rotinas de servio de interrupes de menor prioridade.

    Exemplos de prioridade: Impressora, disco, comunicao

    Conceitos de concorrncia.

    Compartilhar recursos significa que diferentes usurios ou programas usam os recursos de forma concorrente.

    Como administrar recursos compartilhados?

    Os recursos so limitados e, assim, o uso dos mesmos pelos diferentes programas ou usurios precisa ser controlado e

    administrado de forma a evitar possveis conflitos ou uma alocao por tempo indeterminado de algum recurso.

    Concorrncia

    a capacidade de execuo concorrente de tarefas permitindo um melhor aproveitamento de recursos.

    Uma tarefa pode deixar a CPU por vontade prpria, quando precisa aguardar por um recurso, ou por uma

    interrupo.

    Em particular, uma interrupo de temporizador provoca a substituio da tarefa em execuo criando uma

    alternncia entre as tarefas.

    Ateno: A alternncia entre as tarefas pode dar a impresso de execuo simultnea de tarefas, mas no o que

    ocorre.

  • Aula 2 - Processo

    Conceito: Processo a instncia de um programa em execuo. a unidade de carga e alocao de uma tarefa. Em

    sistemas mais antigos, tambm considerado a unidade de execuo, mas veremos, na prxima aula, que isso no

    verdade nos sistemas modernos.

    Cada processo nico em um sistema.

    O processo criado quando o programa carregado para a memria principal para ser executado.

    Um programa carregado para a memria onde aloca uma determinada rea para cdigo e dados.

    Componentes

    Um processo dividido em partes que so armazenadas na memria em uma estrutura denominada PCB (process

    control block).

    Ciclo de vida de um processo: CRIAO -> EXECUO -> TRMINO

    CRIAO

    Quando um processo criado?

    Quando executamos um programa.

    Quando um usurio acessa o sistema.

  • Quando um processo gera um processo-filho. (mouse over em processo-filho com o seguinte texto:

    processo gerado internamente por outro processo)

    Etapas de criao

    Atribui um identificador nico.

    Aloca uma entrada na tabela de processos.

    Aloca espao para o processo.

    Inicializa o PCB (Process Control Block).

    Coloca o processo na fila apropriada.

    Cria estruturas auxiliares

    EXECUO DE UM PROCESSO

    A execuo concorrente de processos leva s seguintes situaes:

    Trocas de Contexto: substituio do processo em execuo.

    Causas: Interrupo: Reao a um evento assncrono.

    Trap: Associado a erro na execuo de uma instruo.

    System Call: Requisio explcita.

    Aes:

    Salva o estado do processador.

    Muda o estado do processo.

    Muda o processo para a fila apropriada.

    Seleciona o novo processo.

    Atualiza o PCB do novo processo.

    Modifica os mapeamentos de memria.

    Restaura o estado do processador.

    Trocas de Modo de Execuo

    uma troca menor e mais rpida que a troca de contexto.

    O estado do processo corrente no alterado. Ocorre geralmente quando o processador, ao final de um ciclo de

    instruo, detecta a existncia de interrupo pendente. Nesses casos, o processador realiza os seguintes passos:

    Salva o contexto do processo em execuo.

    Carrega o PC com o endereo inicial da rotina de interrupo.

    Troca o modo de execuo de usurio para kernel (privilegiado) para que instrues privilegiadas do

    tratador de interrupes possam ser executas.

    TRMINO DO PROCESSO

    Quando acaba o programa que est em execuo.

    Quando ocorre um erro.

    Quanto forado pelo usurio a terminar.

  • Estados

    No que diz respeito aos estados de um processo, o diagrama mais comum possui cinco estados e suficiente para o

    entendimento dos demais estados intermedirios. Observe-o abaixo:

    Novo

    o Estado de admisso onde so geradas as estruturas de dados e alocado espao para o processo. O

    processo recm-criado configurado como pronto;

    Pronto

    o Aps a admisso, o processo est pronto para ser executado, mas aguarda sua vez.

    Bloqueado

    o Um processo bloqueado quando precisa aguardar um recurso. Esse bloqueio sncrono, ou seja,

    sempre que o programa executar um determinado trecho, o bloqueio acontecer (Ex.: Acesso a disco)

    Executando

    o Apenas um processo por vez pode estar nesse estado. Aps ser selecionado, o processo recupera seu

    contexto que guardado aps ter sua execuo interrompida.

    Fim

    o Ao terminar a execuo do processo, as estruturas criadas so removidas e a rea alocada liberada.

    Ateno: A substituio do processo em execuo denominada troca de contexto. Quando o processo interrompido

    seu contexto armazenado. Quando o processo retorna para o estado de execuo, seu contexto recuperado. O

    sistema operacional NO pode provocar troca de contexto, uma vez que um software e para gerar uma ao

    precisaria estar em execuo.

    Tipos

    Os processos podem ser classificados em funo de caractersticas de execuo:

    Processos CPU-Bound: So processos que passam a maior parte do tempo em estado de execuo ou pronto.

    Realiza poucas operaes de E/S.

    Processo I/O-Bound: So processos que passam a maior parte do tempo em estado de espera, pois realizam um

    elevado nmero de operaes de E/S.

    Processos em foreground: Permitem a comunicao direta do processo com o usurio durante sua execuo.

    Em geral, o canal de entrada est associado ao teclado/mouse e de sada a um monitor.

    Processos em background: Processos em que no existe interao direta com o usurio.

    A estratgia utilizada para ordenar a execuo de processos pode variar em funo dos tipos de processo em um

    sistema.

  • Aula 3 - Threads

    Conceito de threads

    Threads so fluxos de execuo distintos dentro de um mesmo processo, um executvel. Atualmente, uma thread

    considerada a unidade de execuo de um sistema ao invs do processo como um todo.

    Um processo pode ter uma ou mais threads. Veja o exemplo.

    Estrutura

    Um processo que contenha threads composto pelo seu PCB (Process Control Block) e pelos blocos especficos para

    cada thread que contm uma estrutura de contexto de software e uma estrutura de contexto de hardware.

    Cada thread possui contextos prprios de hardware e software, porm compartilham o mesmo espao de

    endereamento alocado ao processo.

    Tipo de threads

    As threads podem ser classificadas em:

  • Threads de KERNEL: As threads de Kernel so criadas e gerenciadas pelo Kernel do sistema operacional, mas

    no podem ser diretamente utilizadas pelo usurio. O suporte a mltiplas threads uma caracterstica do

    sistema operacional. Exemplo: Bibliotecas de threads: POSIX Pthreads , Win32 threads, Java threads.

    Threads de USURIO: As threads de usurio facilitam aspectos de portabilidade e so criadas e gerenciadas por

    uma biblioteca no nvel do usurio. O Kernel no enxerga essas threads e, por esse motivo, no podem ser

    gerenciadas individualmente.

    Processo leve ou LWP.

    A combinao entre os dois tipos de threads promove uma associao entre threads de usurio e de Kernel, porm a

    forma de associao depende do sistema operacional.

    Esta a soluo mais utilizada nos sistemas modernos.Pois o uso combinado de threads de usurio e de Kernel permite

    melhor aproveitamento do tempo de CPU, possibilidade de paralelismo e facilidade de programao.

    Vamos conhecer agora os modelos de associao entre threads de usurio e de Kernel.

    Muitos para um:

    Gerenciamento da thread feito no espao do usurio;

    Usadas em sistemas que no suportam threads;

    Uma thread bloqueada bloqueia todo o processo.

    Um para um:

    Cada thread de usurio mapeada para uma Kernel thread;

    Criar uma user thread requer a criao de uma thread de Kernel;

    Algumas implementaes restringem o nmero de threads suportada pelo sistema;

    utilizada pelo Windows e pelo Linux.

  • Muitos para muitos:

    Permite que vrias threads de usurio sejam mapeadas para um nmero menor ou maior de threads de Kernel

    dinamicamente;

    Permite que o SO crie um nmero suficiente de threads de Kernel.

    Motivao para o uso de threads

    Imagine a seguinte situao: Precisamos armazenar os tijolos produzidos por um equipamento que, ao trmino da

    fabricao de um tijolo, espera que haja algum no final da esteira para peg-lo.

    Se o procedimento de pegar o tijolo e lev-lo at o depsito for feito por uma nica pessoa, provavelmente diversos

    tijolos caram no cho enquanto essa pessoa leva um dos tijolos para o depsito.

    O que fazer? Se houver uma pessoa que fique na sada da esteira retirando os tijolos e os entregando para seus

    assistentes, a chance de que um tijolo caia no cho ser muito reduzida, pois cada tijolo ser entregue em um perodo

    de tempo constante ao assistente que o levar ao depsito. O encarregado de pegar os tijolos est a postos em um

    tempo conhecido, permitindo, assim, calibrar o equipamento.

    Pode haver muitos assistentes congestionando o caminho? Sim, identificando que o caminho no suficiente para a

    demanda.

    Pensando agora em uma aplicao, como um servidor para transferncias de arquivos. Uma thread fica a postos para

    receber requisies que sero entregues a novas threads criadas sob demanda para atender a cada uma das

    requisies. A cada requisio, uma nova thread criada e a thread principal retorna imediatamente para aguardar

    novas requisies, evitando (ou reduzindo muito) o descarte de mensagens. Poderemos ter vrias threads sendo

    executadas concorrentemente, podendo gerar um tempo de resposta maior, mas as requisies no sero perdidas.

    S para registrar: esse tipo de servidor chamado de servidor concorrente.

    As threads contribuem para o melhor uso dos recursos com:

    Melhor aproveitamento da fatia de tempo - Permite que a execuo do processo continue mesmo que algumas

    de suas Threads estejam bloqueadas.

    Compartilhamento de Recursos - Threads compartilham memria e outros recursos do processo.

    Economia de tempo de gerenciamento - Threads so mais econmicas de serem criadas e o custo da troca de

    contexto menor. Todas as threads de um mesmo processo compartilham o mesmo espao de endereamento.

  • Utilizao de Mltiplos Processadores - Cada Thread pode ser executada em paralelo em um processador

    distinto.

    AULA 04 COMUNICAO ENTRE PROCESSOS

  • Caso 2

  • Espera ocupada: O processo em espera ocupada continua no estado de pronto e, a cada execuo, tenta

    continuamente o acesso regio crtica. Esse procedimento consome tempo de CPU desnecessariamente.

    Bloqueio: O processo ser bloqueado e, acordado quando o acesso a regio crtica estiver liberado.

    Deadlock (impasse) : situao em que dois ou mais processos entram em um impasse aguardando um recurso que

    nunca estar disponvel. Essa situao so desfeita por um agente externo (ex.: interromper um dos processos).

    Starvation: Condio em que no h garantia de execuo de um processo. A execuo pode ser adiada por um tempo

    inderteminado.

  • AULA 05 SINCRONIZAO ENTRE PROCESSOS

  • AULA 06 GERENCIA DE TEMPO DE CPU

  • Escalonador

  • AULA 07 GERENCIA DE ALOCAO DE MEMRIA

  • Estratgias de organizao lgica do espao de memria - Paginado

    Quando um processo carregado, suas pginas so alocadas em quaisquer molduras disponveis, no

    necessariamente contguas.

    O S.O. precisa manter uma tabela de pginas por processo e uma lista de molduras disponveis.

    Cada processo pode ter fragmentao interna APENAS NA LTIMA PGINA.

  • AULA 08 MEMRIA VIRTUAL

  • Princpio da localidade

    As referncias de memria tendem a ser agrupadas em termos espaciais e/ou temporais.

    Em um programa bem construdo, a probabilidade mdia da prxima instruo a ser executada ser a seguinte

    ou estar nas redondezas da instruo corrente mais elevada do que outras hipteses.

  • Somente alguns trechos do cdigo so necessrios para a execuo num curto espao de tempo.

    possvel ter uma razovel noo dos trechos de cdigo que sero utilizados num futuro prximo, reduzindo os

    riscos de trashing.

    Reduo de trashing:

    Poderia ser traduzido como fazendo lixo

    Ocorre quando o sistema passa a maior parte do tempo removendo e trazendo partes de processos ao invs de

    executar instrues dos mesmos.

    A memria normalmente est toda ocupada com partes de diversos processos; ento, quando o SO precisa

    carregar uma nova parte, outra parte precisar ser removido para abrir espao.

    Se for removida uma parte que seja referenciada logo a seguir, esta precisar ser carregada novamente.

    PAGINAO

    Estudaremos a organizao Paginada por ser a implementao mais usual de memria virtual.

  • AULA 09 DISPOSITIVOS DE ENTRADA E SADA

  • AULA 10 SISTEMA DE ARQUIVOS.