Engenharia de Software e Tópicos de Programação ... · • Um sistema operacional fornece o...

30
Sistemas Operacionais Prof. André Y. Kusumoto [email protected]

Transcript of Engenharia de Software e Tópicos de Programação ... · • Um sistema operacional fornece o...

Sistemas Operacionais

Prof. André Y. Kusumoto

[email protected]

Prof. André Y. Kusumoto – [email protected]

Estruturas de Sistemas Operacionais

• Um sistema operacional fornece o ambiente no qual os programas são

executados.

• Internamente, os sistemas operacionais variam muito em sua constituição,

sendo organizados em muitas linhas diferentes.

2/13

Prof. André Y. Kusumoto – [email protected]

Estrutura e funções dos Sistemas Operacionais

• Um sistema operacional não é um único programa. Ele é constituído ou formado por um

conjunto de programas ou rotinas que vão realizar tarefas por meio do controle do

hardware e suas partes.

• Um sistema computacional pode ser visto em termos de níveis de programação para

facilitar seu entendimento para as pessoas que ingressam na área de TI.

• Uma das divisões mais conhecidas é a da máquina de

níveis, proposta por Tanenbaum, que apresenta os

seis níveis seguintes (Tabela 1):

3/12

O conjunto de rotinas de um sistema operacional é

denominado núcleo do sistema ou kernel.

Prof. André Y. Kusumoto – [email protected]

Estrutura e funções dos Sistemas Operacionais

• Existe uma preocupação em se manter a integridade do sistema operacional, pois, se o

mesmo falhar, o computador trava ou para de funcionar.

• Para manter a integridade, a segurança é realizada fazendo com que o sistema não

atenda diretamente os pedidos dos usuários.

• O atendimento é feito pelas chamadas de sistema, ou system calls.

4/12

System calls são portas de acesso

ao núcleo do sistema operacional e

a seus serviços.

Prof. André Y. Kusumoto – [email protected]

Chamadas ao Sistema

• As chamadas ao sistema (system calls) fornecem a interface entre um

processo e o sistema operacional.

• As chamadas ao sistema para as plataformas Microsoft Windows

modernas fazem parte da API Win32

Gerência de Arquivos

• Em primeiro lugar, é preciso criar e excluir arquivos, através das

chamadas create e delete.

• Cada chamada ao sistema requer o nome do arquivo e talvez alguns

atributos do arquivo.

• Uma vez criado o arquivo, é preciso abri-lo (open) e usá-lo.

5/13

Prof. André Y. Kusumoto – [email protected]

Chamadas ao Sistema

• Como um exemplo da forma em que as chamadas ao sistema são

usadas, considere escrever um programa simples para ler dados de um

arquivo e copiá-los para outro arquivo:

• Depois que os dois nomes de arquivos tiverem sido obtidos, o programa deve abrir o

arquivo de entrada e criar o arquivo de saída. Cada uma dessas operações requer

outra chamada ao sistema.

• Com os dois arquivos prontos, entramos em um laço que lê dados do arquivo de

entrada (uma chamada de sistema) e os grava no arquivo de saída (outra chamada

ao sistema).

• Finalmente, depois que o arquivo todo tiver sido copiado, o programa poderá fechar

os dois arquivos (outra chamada ao sistema), gravar uma mensagem na console

(mais uma chamada ao sistema) e finalmente terminar normalmente (a chamada final

ao sistema).

• Como podemos ver, os programas fazem uso pesado do sistema

operacional.

6/13

Prof. André Y. Kusumoto – [email protected]

Chamadas ao Sistema

Gerência de Dispositivos

• Um programa, à medida que está sendo executado, talvez precise de

recursos adicionais para prosseguir. Os recursos adicionais podem ser

mais memória, unidades de fita, acesso a arquivos e assim por diante.

Manutenção das Informações

• Muitas chamadas ao sistema existem simplesmente a fim de transferir

informações entre o programa usuário e o sistema operacional.

• Por exemplo, a maioria dos sistemas possui uma chamada ao sistema

para obter data e hora atuais, por meio de time e date.

• Outras chamadas de sistema podem retornar informações sobre o

sistema, tal como o número de usuários atuais, o número de versão do

sistema operacional, a quantidade de memória ou espaço em disco livre e

assim por diante.

7/13

Prof. André Y. Kusumoto – [email protected]

Gerenciamento de Processos

• Um programa não faz nada a não ser que suas instruções sejam executadas por uma

CPU

• Um processo precisa de determinados recursos – incluindo tempo de CPU, memória,

arquivos e dispositivos de I/O – para realizar sua tarefa. Esses recursos são dados ao

processo quando ele é criado ou alocados a ele durante sua execução.

• Um processo é a unidade de trabalho em um sistema.

• Um sistema desse tipo consiste em uma coleção de processos, alguns dos quais são

processos de sistema operacional e o resto são processos de usuário.

8/13

Um programa por si só não é um processo. Um programa é uma

entidade passiva, como o conteúdo de um arquivo armazenado em

disco, enquanto um processo é uma entidade ativa, com um contador

de programa especificando a próxima instrução a ser executada.

Prof. André Y. Kusumoto – [email protected]

Gerenciamento de Processos

• Uma aplicação pode ser dividida em vários processos.

• Existem processos-pais que chamam processos-filhos.

• Os processos mais leves são denominados threads (pronuncia-se trédis).

• Um processo é um programa em execução e necessita de CPU, memória,

arquivos e dispositivos de E/S.

• Em relação aos estados possíveis para um processo, este pode estar:

pronto, em execução ou bloqueado. Existem trocas de estado durante a

operação normal.

• Note que no estado “pronto” pode existir uma fila de processos

aguardando serem executados na CPU.

9/12

Prof. André Y. Kusumoto – [email protected]

Gerenciamento de Processos

• Para otimizar o funcionamento do processador, o sistema operacional possui um

componente denominado escalonador de processos

• É este componente que determina, por meio de algoritmos de escalonamento, qual

processo será executado num momento

• Algoritmos de escalonamento podem ser: preemptivos, cooperativos ou não preemptivos.

Swapping é a troca de processos que ocorre durante o trabalho de um sistema

operacional.

Papel do SO:

1. criar e terminar processos;

2. suspender e recomeçar processos;

3. prover mecanismos para;

4. sincronização;

5. comunicação entre processos;

10/12

Prof. André Y. Kusumoto – [email protected]

Gerência da Memória Principal

• A memória principal é um grande vetor de palavras e bytes, variando em

seu tamanho. Cada palavra ou byte tem seu próprio endereço.

• A memória principal geralmente é o único dispositivo de armazenamento

grande que a CPU pode endereçar e acessar diretamente.

• Para que um programa seja executado, ele deve ser mapeado para

endereços absolutos e carregados na memória. À medida que o programa

executa, ele acessa instruções e dados do programa. Por fim, o programa

termina, seu espaço de memória é declarado disponível e o próximo

programa pode ser carregado e executado.

• Para melhorar a utilização da CPU e a velocidade de resposta do

computador aos seus usuários, é preciso manter vários programas na

memória.

11/13

Prof. André Y. Kusumoto – [email protected]

Gerenciamento de Memória

Memória principal possui lista endereçável e perde conteúdo se desligada (volátil).

Há também as memórias secundárias, cujo conteúdo não se perde quando se desliga o

equipamento (por exemplo, HD, pendrive, DVD, CD etc.).

Em relação à memória, estarão ocorrendo vários trabalhos:

paginação, memória virtual, substituição de páginas etc..

12/12

Hierarquia das memórias de computador gerenciadas pelos SO.

Prof. André Y. Kusumoto – [email protected]

Gerenciamento de Memória

• Na hierarquia das memórias de computador pode-se notar que no topo estão os

registradores.

• Note que os registradores são as memórias internas dos processadores. Estas memórias

são as mais rápidas e mais caras que existem, embora armazenem pequena quantidade

de informação.

• Quando se fala que um processador é de 32 bits, significa que os registradores internos

do mesmo trabalham com 32 bits por vez.

• Abaixo dos registradores vêm as memórias cache, que são as memórias RAM (Random

Access Memories), mas do tipo estática. Estas memórias são mais rápidas que as

memórias RAM dinâmicas.

• Em outras palavras, as memórias RAM estáticas armazenam as informações que estão

sendo mais solicitadas pelo computador, de modo a evitar que se tenha que procurar

pelas mesmas no HD da máquina.

• E estas informações também não são voláteis, ou seja, não se apagam com facilidade.

13/12

Prof. André Y. Kusumoto – [email protected]

Gerenciamento de Memória

• Já as memórias RAM dinâmicas são aquelas correspondentes aos

pentes de memória que se adquire no mercado para aumentar a

capacidade de RAM das máquinas.

• As memórias RAM dinâmicas são mais baratas e lentas em relação às

RAM estáticas, porém, são mais caras e mais rápidas em relação à

memória de massa.

• As memórias de massa são aquelas destinadas a guardar grande

quantidade de informações.

• Apesar de serem mais lentas, o custo por quantidade de informação

armazenada é relativamente pequeno.

• Nesta categoria, encontram-se os HDs, os DVDs, os CDs, as fitas DAT

etc.

14/12

Prof. André Y. Kusumoto – [email protected]

Gerenciamento de Memória

• Há uma categoria de memórias que são mais rápidas que os HDs, mas

mais lentas que as memórias RAM, que são as memórias flash.

• Os HDs são memórias relativamente lentas, pois dependem

mecanicamente de motores para posicionar as agulhas de leitura e

gravação.

• Enquanto um HD leva alguns milisegundos para localizar uma

informação, uma memória RAM dinâmica leva milionésimos de segundo

para realizar a mesma operação.

15/12

Prof. André Y. Kusumoto – [email protected]

Gerência de armazenamento secundário

• O principal objetivo de um sistema de computação é executar programas.

• Esses programas, com os dados que acessam, devem estar na memória

principal, ou armazenamento primário, durante a execução.

• Como a memória principal é pequena demais para acomodar todos os

dados e programas, e como é uma forma de armazenamento volátil, o

sistema de computação deve fornecer armazenamento secundário para

dar suporte à memória principal.

• A maioria dos sistemas de computação modernos usa discos como o

principal meio de armazenamento secundário para programas e dados.

• Os programas e dados são armazenados em disco até serem carregados

na memória

• Portanto, a gerência adequada do armazenamento em disco é de

importância crucial para um sistema de computação.

16/13

Prof. André Y. Kusumoto – [email protected]

Gerência do Sistema de I/O

• Um dos objetivos de um sistema operacional é ocultar as peculiaridades

de dispositivos de hardware específicos do usuário.

• Apenas o driver de dispositivo conhece as peculiaridades do dispositivo

específico ao qual foi atribuído.

Gerenciador de dispositivos possibilita, segundo a Microsoft (2009):

• Determinar se o hardware de seu computador está funcionando

adequadamente.

• Alterar as definições de configuração de hardware.

• Identificar os drivers de dispositivo que estão carregados para cada

dispositivo e obter informações sobre cada driver de dispositivo.

• Identificar conflitos de um dispositivo e definir manualmente as

configurações de dispositivo.

17/13

Prof. André Y. Kusumoto – [email protected]

Gerenciamento de Armazenamento

• Em relação a um sistema de arquivos, diz Alecrim (2007):

(...) é uma estrutura que indica como os dados devem ser gravados em

dispositivos de gravação.

• De acordo com os recursos oferecidos por essa estrutura que é possível

determinar o espaço disponível e ocupado em disco, e gerenciar como

partes de um arquivo podem ficar “distribuídas” nas áreas de

armazenamento.

• É também o sistema de arquivos que determina como os dados podem

ser acessados, copiados, movidos, renomeados, protegidos e eliminados.

• Portanto, sem um sistema de arquivos, é impossível utilizar um disco

rígido (e outros dispositivos) para armazenamento de informações.

• Um arquivo é um conjunto de informações, programas e dados.

18/12

Prof. André Y. Kusumoto – [email protected]

Gerenciamento de Armazenamento

Gerência de Arquivos

• A gerência de arquivos é um dos componentes mais visíveis de um

sistema operacional.

• Os computadores podem armazenar informações em vários tipos

diferentes de meios físicos.

• Cada meio é controlado por um dispositivo, que também tem suas

características exclusivas. Essas propriedades incluem velocidade de

acesso, capacidade, taxa de transferência de dados e método de acesso

(sequencial ou aleatório).

19/13

Prof. André Y. Kusumoto – [email protected]

Gerenciamento de Armazenamento

Gerência de Arquivos

• Para uso conveniente do sistema de computação, o sistema operacional

fornece uma visão lógica uniforme do armazenamento de informações, o

arquivo.

• Um arquivo consiste em uma sequência de bits, bytes, linhas ou registros

cujos significados são definidos pelos seus criadores.

• Os arquivos são normalmente organizados em diretórios para facilitar o

seu uso. Quando vários usuários têm acesso aos arquivos, pode ser

desejável controlar quem pode acessar os arquivos, e de que forma pode

faze-lo (por exemplo, para leitura, escrita, etc).

20/13

Prof. André Y. Kusumoto – [email protected]

Serviços de sistemas operacionais

• Um sistema operacional fornece um ambiente para a execução de programas. Fornece

certos serviços a programas e aos usuários desses programas.

• Execução de programas: o sistema deve ser capaz de carregar um programa na memória e

executar esse programa.

• Operações de I/O: um programa em execução pode precisar de I/O. O sistema operacional

deve fornecer os meios para realizar as operações de entrada e saída.

• Manipulação do sistema de arquivos: obviamente, os programas precisam ler e gravar

arquivos.

• Comunicações: As comunicações podem ser implementadas via memória compartilhada

(mesmo computador) ou pela técnica de troca de mensagens (computadores interligados).

• Detecção de erros: o sistema operacional precisa estar constantemente ciente de possíveis

erros. Para cada tipo de erro, o sistema operacional deve tomar uma medida adequada para

garantir uma computação correta e consistente.

• Contabilização: é preciso manter um registro dos usuários que utilizam os recursos do

computador, em que quantidade e que tipos de recursos.

21/13

Prof. André Y. Kusumoto – [email protected]

Sistemas em lote (batch)

• A introdução da tecnologia de disco permitiu que o sistema operacional mantivesse todos

os jobs em um disco

• Com acesso direto a vários jobs, o escalonamento de jobs poderia ser executado para

usar recursos e realizar tarefas de forma eficiente.

• O aspecto mais importante do escalonamento de jobs é a capacidade de

multiprogramação.

• A multiprogramação aumenta a utilização de CPU organizando jobs de forma que a CPU

sempre tenha um job a executar

• O sistema operacional mantém vários jobs na memória ao mesmo tempo. Assim, escolhe

e começa a executar um dos jobs. Em alguns momentos, o job terá de esperar a

conclusão de alguma tarefa, com uma operação de I/O.

• Em um sistema não-multiprogramado, a CPU ficaria ociosa. Em um sistema de

multiprogramação, o sistema operacional simplesmente passa para outro job e o executa.

22/12

Prof. André Y. Kusumoto – [email protected]

Sistemas de tempo compartilhado

• Tempo compartilhado, ou multitarefa, é uma extensão lógica da

multiprogramação.

• A CPU executa vários jobs alternando entre eles, mas as trocas ocorrem

com tanta frequência que os usuários podem interagir com cada programa

durante sua execução.

• Como o sistema alterna rapidamente de um usuário para outro, cada

usuário tem a impressão de que todo o sistema de computação está

dedicado ao seu uso, enquanto, na verdade, um computador está sendo

compartilhado por muitos usuários.

• Embora alguns processamentos em batch ainda ocorram, a maioria dos

sistemas de hoje é de tempo compartilhado.

• Por essa razão, a multiprogramação e o tempo compartilhado são os

temas centrais dos sistemas operacionais modernos..

23/12

Prof. André Y. Kusumoto – [email protected]

Sistemas de computadores pessoais

• Os computadores pessoais (PCs) apareceram nos anos 70.

• Os sistemas operacionais para PC não eram nem multiusuário nem

multitarefa. No entanto, as metas desses sistemas mudaram com o

tempo; em vez de maximizar a utilização de CPU e periféricos, os

sistemas optam por maximizar a conveniência e a capacidade de resposta

ao usuário.

• Os sistemas operacionais para esses computadores se beneficiaram de

várias formas do desenvolvimento de sistemas operacionais para

mainframes.

• Por exemplo, a proteção de arquivos em princípio não era necessária em

uma máquina pessoal. No entanto, esses computadores muitas vezes

estão ligados a outros computadores em redes locais ou conexões

Internet.

24/12

Prof. André Y. Kusumoto – [email protected]

Sistemas paralelos

• Existe uma tendência em direção aos sistemas multiprocessadores.

• Tais sistemas têm mais de um processador em comunicação ativa,

compartilha o barramento, o clock e, às vezes, a memória e os

dispositivos periféricos.

• Esses sistemas são chamados de sistemas fortemente acoplados

• Existem vários motivos para construir sistemas assim:

• Uma vantagem é a maior produção (throughput). Aumentando o

número de processadores, espera-se realizar mais trabalho em menos

tempo.

• Outro motivo para a existência de sistemas com múltiplos

processadores é o aumento da confiabilidade.

25/12

Prof. André Y. Kusumoto – [email protected]

Sistemas paralelos

• Se as funções puderem ser distribuídas adequadamente entre vários

processadores, a falha de um processador não vai interromper o sistema,

apenas reduzirá sua velocidade.

• Se houver dez processadores e um falhar, cada um dos nove

processadores restantes deverá pegar uma parte do trabalho do

processador que falhou.

• Os sistemas projetados com esta capacidade de continuar a fornecer

serviço mesmo com uma degradação são chamados de tolerante a

falhas.

26/12

Prof. André Y. Kusumoto – [email protected]

Sistemas de tempo real

• Um sistema de tempo real é usado quando existem requisitos rígidos de

tempo

• Geralmente é usado como um dispositivo de controle em uma aplicação

dedicada.

• Os sistemas que controlam experimentos científicos, sistemas de controle

industrial e sistemas de injeção de combustível em motores de veículos

são de tempo real.

• Um sistema de tempo real tem limitações de tempo bem definidas.

• O processamento tem de ser feito dentro dos limites definidos ou o

sistema falhará.

27/12

Prof. André Y. Kusumoto – [email protected]

Sistemas distribuídos

• Em contraste com os sistemas chamados de fortemente acoplados

(sistemas paralelos) discutidos anteriormente, as redes de computadores

usadas nesses tipos de aplicações consistem em uma coleção de

processadores que não compartilham memória ou clock.

• Em vez disso, cada processador tem sua própria memória local.

• Os processadores se comunicam entre si através de várias linhas de

comunicação, tais como linhas telefônicas de alta velocidade.

28/12

Prof. André Y. Kusumoto – [email protected]

Sistemas distribuídos

Taxonomia de Tanenbaum

• Esses sistemas geralmente são chamados de sistemas fracamente

acoplados.

29/12

A principal diferença entre eles é que, em um sistema distribuído, a existência

de diversos computadores autônomos é transparente (ou seja, o usuário não

tem conhecimento deles).

Prof. André Y. Kusumoto – [email protected]

Referências

SILBERSCHATZ, A. GALVIN, P. B. GAGNE, G. Sistemas Operacionais

com Java. Rio de Janeiro : Elsevier, 2008.

TANENBAUM, A. S.; WOODHULL, A. S. Sistemas Operacionais. Porto

Alegre: Bookman, 2003.

Notas de aula Prof. Dr. Carlos Henrique Neto Lahoz - UNIP.

Conteúdo da UNIPVirtual

30/12