0% acharam este documento útil (0 voto)
8 visualizações34 páginas

Módulo 1

O documento fornece uma visão geral dos sistemas operacionais, descrevendo sua função como intermediários entre usuários e hardware, além de detalhar componentes de um sistema de computador, como hardware, sistema operacional e programas de aplicação. Ele aborda a inicialização do computador, a organização dos sistemas de computação, a gestão de processos, memória e armazenamento, bem como a proteção e segurança em sistemas distribuídos. O texto também discute a arquitetura de sistemas, incluindo multiprocessamento e computação em cluster.
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
8 visualizações34 páginas

Módulo 1

O documento fornece uma visão geral dos sistemas operacionais, descrevendo sua função como intermediários entre usuários e hardware, além de detalhar componentes de um sistema de computador, como hardware, sistema operacional e programas de aplicação. Ele aborda a inicialização do computador, a organização dos sistemas de computação, a gestão de processos, memória e armazenamento, bem como a proteção e segurança em sistemas distribuídos. O texto também discute a arquitetura de sistemas, incluindo multiprocessamento e computação em cluster.
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

SISTEMAS OPERACIONAIS

Notas da Palestra

DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO E ENGENHARIA


DEPARTAMENTO DE CIÊNCIA E ENGENHARIA DA INFORMAÇÃO
COLEGIO DE ENGENHARIA GHOUSIA
(Aprovado pelo AICTE, Acreditado pelo NBA, Filtrado pela VTU Belgaum)
Módulo1
Capítulo 1
VISÃO GERAL DO SISTEMA DE COMPUTADOR E DO SISTEMA OPERACIONAL

VISÃO GERAL DO SISTEMA OPERACIONAL


O que é um Sistema Operacional?
Um programa que atua como um intermediário entre um usuário de um computador e o hardware do computador.
Objetivos do sistema operacional:
Executar programas de usuário e resolver problemas do usuário
tornar o sistema computacional conveniente de usar
Use o hardware do computador de maneira eficiente
Estrutura do Sistema de Computador
O sistema de computação pode ser dividido em quatro componentes
Hardware – fornece recursos básicos de computação
CPU, memória, dispositivos de I/O
Sistema operacional
Controla e coordena o uso de hardware entre várias aplicações e usuários
Programas de aplicação – definem as maneiras pelas quais os recursos do sistema são utilizados para resolver a computação
problemas dos usuários
Processadores de texto, compiladores, navegadores web, sistemas de banco de dados, videogames
Usuários
Pessoas, máquinas, outros computadores
Quatro Componentes de um Sistema de Computador

Figura 1.1 Visão abstrata dos Componentes de um Sistema Computacional


Definição de Sistema Operacional

O sistema operacional é um alocador de recursos.


Gerencia todos os recursos
Decide entre solicitações conflitantes por recursos eficientes e justos
o sistema operacional é um programa de controle

Controla a execução de programas para prevenir erros e uso inadequado do computador


Nenhuma definição universalmente aceita
Tudo que um vendedor envia quando você pede um sistema operacional é bom
aproximação Mas varia muito
"O único programa em execução o tempo todo no computador" é o kernel. Tudo o mais é ou
programa de sistema (embarca com o sistema operacional) ou um programa de aplicativo

1
Inicialização do Computador
O programa bootstrap é carregado na inicialização ou reinicialização.
Normalmente armazenado em ROM ou EPROM, geralmente conhecido como firmware
Inicializa todos os aspectos do sistema
Carrega o núcleo do sistema operacional e começa a execução

Organização de Sistemas de Computador


Operação do sistema de computador
Uma ou mais CPUs, controladores de dispositivo se conectam através de um barramento comum fornecendo acesso à memória compartilhada
Execução concorrente de CPUs e dispositivos competindo por ciclos de memória

Figura 1.2 Um Sistema de Computador Moderno


Operação de Sistema de Computador
Dispositivos de I/O e a CPU podem executar concorrentemente
Cada controlador de dispositivo é responsável por um dispositivo específico
Cada controlador de dispositivo possui um buffer local
A CPU move dados de/para a memória principal para/de buffers locais
I/O é do dispositivo para o buffer local do controlador
O controlador do dispositivo informa à CPU que concluiu sua operação causando uma interrupção.

Funções Comuns de Interrupções


A interrupção transfere o controle para a rotina de serviço de interrupção, geralmente, através do vetor de interrupção, que
contém os endereços de todas as rotinas de serviço
A arquitetura de interrupção deve salvar o endereço da instrução interrompida
As interrupções de entrada estão desativadas enquanto outra interrupção está sendo processada para evitar uma interrupção perdida.
trapis é uma interrupção gerada pelo software causadas por um erro ou por um pedido do usuário
Um sistema operacional é acionado por interrupções
Tratamento de Interrupções
O sistema operacional preserva o estado da CPU armazenando registros e o contador de programa.
Determina qual tipo de interrupção ocorreu:
Votação
sistema de interrupção vetorizada
Segmentos separados de código determinam qual ação deve ser tomada para cada tipo de interrupção

2
Figura 1.3 Cronograma de Interrupções para um único processo realizando saída

Chamada de sistema – solicitação ao sistema operacional para permitir que o usuário aguarde a conclusão da I/O. Status do dispositivo
A tabela contém uma entrada para cada dispositivo de I/O indicando seu tipo, endereço e estado do sistema operacional.
índices na tabela de dispositivos de I/O para determinar o status do dispositivo e modificar a entrada da tabela para incluir a interrupção

Estrutura de Acesso Direto à Memória


Usado para dispositivos de I/O de alta velocidade capazes de transmitir informações próximas às velocidades da memória
O controlador de dispositivo transfere blocos de dados do armazenamento em buffer diretamente para a memória principal sem
Intervenção da CPU
Apenas uma interrupção é gerada por bloco, em vez de uma interrupção por byte.
Estrutura de Armazenamento
Memória principal - apenas grandes meios de armazenamento que a CPU pode acessar diretamente
Armazenamento secundário - extensão da memória principal que fornece grande capacidade de armazenamento não volátil
Discos magnéticos - platôs rígidos de metal ou vidro cobertos com material de gravação magnética
A superfície do disco é logicamente dividida em trilhas, que são subdivididas em setores.
O controlador de disco determina a interação lógica entre o dispositivo e o computador
Hierarquia de Armazenamento
Sistemas de armazenamento organizados em hierarquia
Velocidade
Custo
Volatilidade
Cache – copiando informações para um sistema de armazenamento mais rápido; a memória principal pode ser vista como um último cache
para armazenamento secundário

3
Figura 1.4 Hierarquia de Dispositivos de Armazenamento

Cache
Princípio importante, realizado em muitos níveis em um computador (em hardware, sistema operacional,
software) Informações em uso copiadas de armazenamento mais lento para armazenamento mais rápido temporariamente
Armazenamento mais rápido (cache) verificado primeiro para determinar se a informação está lá
Se for, informações usadas diretamente do cache (rápido)
Se não, dados copiados para o cache e usados lá
Cache menor que o armazenamento sendo armazenado
Gerenciamento de cache é um problema de design importante
Tamanho do cache e política de substituição

Arquitetura de Sistemas de Computadores


A maioria dos sistemas utiliza um único processador de propósito geral (PDAs a mainframes)
A maioria dos sistemas possui processadores de propósito especial também
Sistemas multiprocessadores crescendo em uso e importância
Também conhecidos como sistemas paralelos, sistemas fortemente acoplados
As vantagens incluem
1. Aumento do rendimento
Economia de escala
3. Aumentada confiabilidade – degradação elegante ou tolerância a falhas
Dois tipos
[Link] Assimétrico
2. Multiprocessing Simétrico

4
Figura 1.5 Como um Computador Moderno Funciona Arquitetura de Multiprocessamento Simétrico

Figura 1.6 Um Design de Duplo Núcleo

Sistemas Clusterizados

Como sistemas multiprocessadores, mas múltiplos sistemas trabalhando juntos


Normalmente, compartilhando armazenamento por meio de uma rede de armazenamento (SAN)

Oferece um serviço de alta disponibilidade que sobrevive a falhas


O clustering assimétrico tem uma máquina em modo de espera ativa
O agrupamento simétrico possui múltiplos nós executando aplicativos, monitorando cada um.
Outros clusters são para computação de alto desempenho (HPC)
As aplicações devem ser escritas para utilizar paralelização

Estrutura do Sistema Operacional


A multiprogramação é necessária para eficiência
Um único usuário não pode manter a CPU e os dispositivos de I/O ocupados o tempo todo
Multiprogramação organiza trabalhos (código e dados) para que a CPU tenha sempre um para executar.
Um subconjunto do total de trabalhos no sistema é mantido na memória

Um trabalho selecionado e executado via agendamento de trabalho

5
Quando precisa esperar (por I/O, por exemplo), o sistema operacional troca para outro trabalho.
O compartilhamento de tempo (multitarefa) é uma extensão lógica na qual a CPU alterna de tarefas com tanta frequência que os usuários
pode interagir com cada trabalho enquanto está em execução, criando computação interativa
O tempo de resposta deve ser < 1 segundo
Cada usuário tem pelo menos um programa executando na memória [processo
vários trabalhos prontos para serem executados ao mesmo tempo [agendamento de CPU
Se os processos não cabem na memória, a troca os move para dentro e para fora para serem executados.

A memória virtual permite a execução de processos que não estão completamente na memória.

Figura 1.7 Layout de Memória para Sistema Multiprogramado

Operações do Sistema Operacional


Interrupção acionada por hardware
Erro de software ou solicitação cria exceção ou captura
Divisão por zero, solicitação de serviço do sistema operacional
Outros problemas de processo incluem loop infinito, processos modificando uns aos outros ou o sistema operacional.
A operação em modo duplo permite que o sistema operacional proteja a si mesmo e outros componentes do sistema
Modo de usuário e modo de núcleo
Modo de bit fornecido pelo hardware

Oferece a capacidade de distinguir quando o sistema está executando código do usuário ou código do kernel
Algumas instruções designadas como privilegiadas, somente executáveis em modo de kernel
A chamada de sistema muda o modo para o kernel, o retorno da chamada redefine-o para o usuário.
Transição do Modo de Usuário para o Modo de Kernel
Temporizador para evitar loop infinito / processo consumindo recursos
Defina o interrupção após um período específico
O sistema operacional decrementa o contador
Quando o contador zero gerar uma interrupção
Configurar antes do processo de agendamento para retomar o controle ou encerrar o programa que excede o tempo limite

6
Figura 1.8 Transição do modo usuário para o modo kernel

FUNÇÕES DO SISTEMA OPERACIONAL

Gestão de Processos
Um processo é um programa em execução. É uma unidade de trabalho dentro do sistema. Programa é uma entidade passiva.
o processo é uma entidade ativa.
O processo precisa de recursos para cumprir sua tarefa
CPU, memória, I/O, arquivos
Dados de inicialização
A terminação do processo requer a recuperação de quaisquer recursos reutilizáveis
Um processo de thread única tem um contador de programa que especifica a localização da próxima instrução a ser executada.
O processo executa instruções sequencialmente, uma de cada vez, até a conclusão
Um processo multithreaded tem um contador de programa por thread
Normalmente, o sistema tem muitos processos, alguns de usuário, alguns do sistema operacional, executando concorrentemente em um ou
mais CPUs
Concorrência por multiplexação dos CPUs entre os processos / threads

Atividades de Gestão de Processos


O sistema operacional é responsável pelas seguintes atividades em conexão com o processo
management:
Criando e excluindo tanto usuários quanto sistemas
Suspensão e retomada de processos
Fornecendo mecanismos para sincronização de processos
Fornecendo mecanismos para comunicação de processos
Providing mechanisms for deadlock handling

Gerenciamento de Memória
Todos os dados na memória antes e depois do processamento
Todas as instruções na memória para serem executadas
A gestão de memória determina o que está na memória quando
Otimização da utilização da CPU e da resposta do computador aos usuários

7
Atividades de gerenciamento de memória
Mantendo o controle de quais partes da memória estão atualmente sendo usadas e por quem
Decidindo quais processos (ou partes deles) e dados mover para dentro e para fora da memória
Alocando e desalocando espaço de memória conforme necessário

Gerenciamento de Armazenamento
O sistema operacional fornece uma visão uniforme e lógica do armazenamento de informações.
Abstratos das propriedades físicas para unidades de armazenamento lógicas - arquivo
Cada meio é controlado por um dispositivo (ou seja, unidade de disco, unidade de fita)
As propriedades variáveis incluem velocidade de acesso, capacidade, taxa de transferência de dados, método de acesso (sequencial ou
aleatório)
Gerenciamento de Sistema de Arquivos

Arquivos geralmente organizados em diretórios


Controle de acesso na maioria dos sistemas para determinar quem pode acessar o quê
As atividades de OS incluem
Criando e excluindo arquivos e diretórios
Primitivas para manipular arquivos e diretórios
Mapeando arquivos para armazenamento secundário
Faça backup dos arquivos em mídias de armazenamento estáveis (não voláteis)

Gerenciamento de Armazenamento em Massa

Normalmente, discos são usados para armazenar dados que não cabem na memória principal ou dados que devem ser mantidos por um
período longo de tempo
A gestão adequada é de importância central
Toda a velocidade da operação do computador depende do subsistema de disco e seus algoritmos
atividades de ARMAZENAMENTO EM MASSA

Gestão de espaço livre


Alocação de armazenamento
Escalonamento de disco
Algum armazenamento não precisa ser rápido
O armazenamento terciário inclui armazenamento óptico, fita magnética
Ainda deve ser gerenciado
Varía entre WORM (escrever uma vez, ler muitas vezes) e RW (ler-escrever)

8
Figure 1.9 Performances ofVarious Levels of Storage

Migração do Inteiro A do Disco para o Registro


Ambientes de multitarefa devem ter cuidado para usar o valor mais recente, não importa onde ele esteja armazenado.
hierarquia de armazenamento

Figura 1.10 Migração do Inteiro A do Disco para o Registrador


O ambiente multiprocessador deve fornecer coerência de cache em hardware de modo que todas as CPUs tenham
o valor mais recente em seu cache
A situação em um ambiente distribuído é ainda mais complexa
Várias cópias de um dado podem existir

Subsistema de I/O
Um dos propósitos do sistema operacional é esconder as peculiaridades dos dispositivos de hardware do usuário.
Subsistema de I/O responsável por
Gerenciamento de memória de I/O, incluindo buffer (armazenamento de dados temporariamente enquanto estão sendo transferidos),
cache (armazenando partes dos dados em armazenamento mais rápido para desempenho), spooling (o sobreposição da saída de)
um trabalho com a entrada de outros trabalhos)
Interface geral de driver de dispositivo
Drivers para dispositivos de hardware específicos

9
Proteção e Segurança
Proteção – qualquer mecanismo para controlar o acesso de processos ou usuários a recursos definidos pelo SO
Segurança – defesa do sistema contra ataques internos e externos
Ampla gama, incluindo negação de serviço, worms, vírus, roubo de identidade, roubo de serviço
Os sistemas geralmente primeiro distinguem entre os usuários, para determinar quem pode fazer o quê
As identidades dos usuários (IDs de usuário, IDs de segurança) incluem nome e número associado, um por usuário
O ID do usuário então associado a todos os arquivos, processos desse usuário para determinar o controle de acesso
O identificador de grupo (ID do grupo) permite que um conjunto de usuários seja definido e gerenciado, e também associado.
com cada processo, arquivo
A elevação de privilégio permite que o usuário altere para um ID efetivo com mais direitos.

SISTEMAS DISTRIBUÍDOS
Ambientes de Computação
Computador tradicional
Desfoque ao longo do tempo
Ambiente de escritório
Computadores conectados a uma rede, terminais ligados a mainframes ou minicomputadores fornecendo processamento em lote
e compartilhamento de tempo

Agora portais permitindo que sistemas em rede e remotos acessem o mesmo


recursos Redes domésticas
Era um sistema único, depois modems
Agora com firewall, em rede
Computação Cliente-Servidor
Terminais burros substituídos por PCs inteligentes
Muitos sistemas agora servidores, respondendo a solicitações geradas por clientes
O servidor de computação fornece uma interface ao cliente para solicitar serviços (ou seja, banco de dados)
O servidor de arquivos fornece uma interface para os clientes armazenarem e recuperarem arquivos.

Figura 1.1 Estrutura geral de um sistema cliente-servidor


Computação Peer-to-Peer

Outro modelo de sistema distribuído


P2P não distingue clientes e servidores
Em vez disso, todos os nós são considerados pares
Que cada um possa atuar como cliente, servidor ou ambos
O nó deve se juntar à rede P2P
Registra seu serviço no serviço de consulta central na rede, ou
Solicitação de transmissão para serviço e resposta a solicitações de serviço via protocolo de descoberta
Os exemplos incluem Napster e Gnutella
10
Computação Baseada na Web
A web se tornou onipresente
Os PCs são os dispositivos mais prevalentes
Mais dispositivos se tornando conectados à rede para permitir acesso à web
Nova categoria de dispositivos para gerenciar o tráfego da web entre servidores semelhantes: balanceadores de carga

Use of operating systems like Windows 95, client-side, have evolved into Linux and Windows XP,
que podem ser clientes e servidores

Capítulo 2: Estrutura do Sistema

Sistemas Operacionais de Código Aberto


Sistemas operacionais disponibilizados em formato de código-fonte em vez de apenas binário fechado
Fonte contra a proteção de cópias e o movimento de Gestão de Direitos Digitais (DRM)
Iniciado pela Free Software Foundation (FSF), que possui a Licença Pública GNU (GPL) com "copyleft".
Exemplos incluem GNU/Linux, BSD UNIX (incluindo o núcleo do Mac OS X) e Sun Solaris
Serviços do Sistema Operacional
Um conjunto de serviços do sistema operacional fornece funções que são úteis para o usuário:
Interface do usuário - Quase todos os sistemas operacionais têm uma interface do usuário (UI)
Variedades entre Linha de Comando (CLI), Interface Gráfica do Usuário (GUI), Lote
Execução do programa - O sistema deve ser capaz de carregar um programa na memória e executá-lo.
programa, finalizar execução, seja normalmente ou anormalmente (indicando erro)
Operações de I/O - Um programa em execução pode exigir I/O, que pode envolver um arquivo ou um dispositivo de I/O
Manipulação de sistema de arquivos - O sistema de arquivos é de particular interesse. Obviamente, os programas precisam de
ler e escrever arquivos e diretórios, criá-los e excluí-los, procurá-los, listar informações de arquivos,
gestão de permissões.

Uma Visão dos Serviços do Sistema Operacional

Serviços de Sistema Operacional


Um conjunto de serviços do sistema operacional fornece funções que são úteis para o usuário
Comunicações – Os processos podem trocar informações, no mesmo computador ou entre computadores
em uma rede As comunicações podem ser feitas por meio de memória compartilhada ou através de passagem de mensagens (pacotes
movido pelo SO)
Detecção de erros - O sistema operacional precisa estar constantemente ciente de possíveis erros que podem ocorrer na CPU
hardware de memória, em dispositivos de I/O, no programa do usuário Para cada tipo de erro, o SO deve tomar a

11
ações apropriadas para garantir computação correta e consistente Faculdades de depuração podem melhorar significativamente
as habilidades do usuário e do programador para usar o sistema de forma eficiente

Outro conjunto de funções do sistema operacional existe para garantir o funcionamento eficiente do próprio sistema via
compartilhamento de recursos
Alocação de recursos - Quando múltiplos usuários ou múltiplos trabalhos estão em execução simultaneamente, os recursos devem ser
alocado para cada um deles
Muitos tipos de recursos - Alguns (como ciclos de CPU, memória principal e armazenamento de arquivos) podem ter especiais
código de alocação, outros (como dispositivos de E/S) podem ter código geral de solicitação e liberação
Contabilidade - Para acompanhar quais usuários utilizam quanto e que tipos de recursos computacionais.
Proteção e segurança - Os proprietários das informações armazenadas em um computador multiusuário ou em rede
o sistema pode querer controlar o uso dessa informação, processos concorrentes não devem interferir uns com os outros
outro
A proteção envolve garantir que todo o acesso aos recursos do sistema seja controlado.
A segurança do sistema contra invasores requer autenticação do usuário, se estende à defesa externa
Dispositivos de I/O de tentativas de acesso inválidas
Se um sistema deve ser protegido e seguro, precauções devem ser instituídas em todo ele. Uma corrente é apenas tão forte quanto...
forte como seu elo mais fraco.

Interface do Sistema Operacional do Usuário - CLI


A Interface de Linha de Comando (CLI) ou interpretador de comandos permite a entrada direta de comandos.
Às vezes implementado no kernel, às vezes por programas de sistema
Às vezes, vários sabores implementados - cascas
Principalmente busca um comando do usuário e o executa
Às vezes, comandos internos, às vezes apenas nomes de programas
Se for o caso, adicionar novos recursos não requer modificação do shell

Interface do Sistema Operacional do Usuário - GUI

Interface metafórica de desktop amigável ao usuário


Normalmente mouse, teclado e monitor
Ícones representam arquivos, programas, ações, etc
Vários botões do mouse sobre objetos na interface causam várias ações (fornecer informações, opções,
executar função, abrir diretório (conhecido como uma pasta)
Inventado na XeroxPARC
Muitos sistemas agora incluem interfaces tanto de CLI quanto de GUI.
Microsoft Windows é uma GUI com shell de linha de comando 'comando'
Apple Mac OS X como interface gráfica "Aqua" com núcleo UNIX por baixo e shells
Solaris disponível é CLI com interfaces GUI opcionais (Java Desktop, KDE)
Interpretador de Comandos do Bourne Shell

12
A interface gráfica do Mac OS X

Chamadas de Sistema

Interface de programação para os serviços fornecidos pelo


OS geralmente escrito em uma linguagem de alto nível (C ou C++)
Principalmente acessado por programas através de uma Interface de Programação de Aplicações (API) de alto nível em vez de direta
A chamada do sistema usa os três APIs mais comuns: API Win32 para Windows, API POSIX para sistemas baseados em POSIX
sistemas (incluindo praticamente todas as versões do UNIX, Linux e Mac OS X), e API Java para o Java
máquina virtual (JVM)
Por que usar APIs em vez de chamadas de sistema? (Note que os nomes das chamadas de sistema usados ao longo deste texto são)
genérico)
Exemplo de Chamadas de Sistema

Figura 2.1 Exemplo de como as chamadas de sistema são usadas

13
Exemplo de API Padrão
Considere a função ReadFile() no
Win32 API—uma função para ler de um arquivo

Uma descrição dos parâmetros passados para ReadFile()


HANDLE file—the file to be read
LPVOID buffer—um buffer onde os dados serão lidos e escritos
DWORD bytesToRead—o número de bytes a serem lidos no buffer
LPDWORD bytesRead—o número de bytes lidos durante a última leitura
LPOVERLAPPED ovl—indica se a I/O sobreposta está sendo utilizada

Implementação de Chamada de Sistema


Normalmente, um número associado a cada chamada de sistema Chamada de sistema
a interface mantém uma tabela indexada de acordo com esses Números

A interface de chamada do sistema invoca a chamada de sistema pretendida no núcleo do sistema operacional e retorna o status da chamada de sistema
e quaisquer valores de retorno
O chamador não precisa saber nada sobre como a chamada do sistema é implementada.
Apenas precisa obedecer à API e entender o que o sistema operacional fará como resultado da chamada.
A maioria dos detalhes da interface do sistema operacional é oculta do programador pela API
Gerenciado pela biblioteca de suporte em tempo de execução (conjunto de funções incorporadas às bibliotecas incluídas com
compilador)API – Chamada de Sistema – Relação com o SO

Figura 2.2 O manuseio de uma aplicação de usuário invocando a chamada de sistema open()

14
Exemplo da Biblioteca Padrão C

Passagem de Parâmetros de Chamada de Sistema


Frequentemente, mais informações são necessárias do que simplesmente a identidade da chamada de sistema desejada.
O tipo e a quantidade exata de informações variam de acordo com o SO e a chamada
Três métodos gerais usados para passar parâmetros para o SO
Simplest: pass the parameters inregisters
Em alguns casos, pode haver mais parâmetros do que registradores
Parâmetros armazenados em um bloco, ou tabela, na memória, e o endereço do bloco passado como um parâmetro em um
registrar
Essa abordagem adotada pelo Linux e Solaris
Parameters placed, orpushed,onto thestackby the program andpoppedoff the stack by the operating
sistema
Os métodos de bloco e pilha não limitam o número ou o comprimento dos parâmetros sendo passados.

Passagem de Parâmetros via Tabela

Figura 2.3 Passando parâmetros como uma tabela

15
Tipos de Chamadas de Sistema
Controle de processo
Gerenciamento de arquivos
Gerenciamento de dispositivos

Manutenção de informações
Comunicações
Proteção

Exemplos de Chamadas de Sistema Windows e Unix

Figura 2.5 Execução do MS-DOS (a) Na inicialização do sistema executar um programa

Figura 2.6 FreeBSD Executando Múltiplos Programas

16
Programas do Sistema
Os programas de sistema fornecem um ambiente conveniente para o desenvolvimento e execução de programas. Eles podem ser
dividido em:
Manipulação de arquivos
Informações de status
Modificação de arquivo
Suporte a linguagens de programação
Carregamento e execução do programa
Comunicações
Application programs
Most users’ view of the operation system is defined by system programs, not the actual system calls
Fornecer um ambiente conveniente para o desenvolvimento e execução de programas
Alguns deles são simplesmente interfaces de usuário para chamadas de sistema; outros são consideravelmente mais complexos
Gerenciamento de arquivos - Criar, deletar, copiar, renomear, imprimir, despejar, listar e manipular arquivos em geral
diretórios
Informação de status
Alguns pedem ao sistema informações - data, hora, quantidade de memória disponível, espaço em disco, número de usuários
Outros fornecem informações detalhadas sobre desempenho, registro e depuração
Normalmente, esses programas formatam e imprimem a saída no terminal ou em outros dispositivos de saída.
Alguns sistemas implementam um registro - usado para armazenar e recuperar informações de configuração
Modificação de arquivo
Editores de texto para criar e modificar arquivos
Comandos especiais para pesquisar conteúdos de arquivos ou realizar transformações do texto
Suporte a linguagens de programação - Compiladores, montadores, depuradores e interpretadores
às vezes fornecido
Carregamento e execução de programas - Carregadores absolutos, carregadores relocáveis, editores de ligação e sobreposição -
carregadores, sistemas de depuração para linguagens de alto nível e de máquina

Comunicações - Fornecer o mecanismo para criar conexões virtuais entre processos, usuários,
e sistemas de computador
Permitir que os usuários enviem mensagens para as telas uns dos outros, naveguem em páginas da web, enviem e-mail eletrônico
messages, log in remotely, transfer files from one machine to another
Projeto e Implementação de Sistemas Operacionais
Design e Implementação de OS não é "solucionável", mas algumas abordagens têm se mostrado bem-sucedidas
A estrutura interna de diferentes sistemas operacionais pode variar amplamente
Comece definindo metas e especificações
Afetado pela escolha de hardware, tipo de sistema
Usergoals andSystemgoals
User goals – operating system should be convenient to use, easy to learn, reliable, safe, and fast
Objetivos do sistema - o sistema operacional deve ser fácil de projetar, implementar e manter, bem como
flexível, confiável, sem erros e eficiente
Princípio importante para separar
Policy:What will be done?
Mecanismo: Como fazer isso?
Mecanismos determinam como fazer algo, políticas decidem o que será feito
A separação da política do mecanismo é um princípio muito importante, pois permite máxima flexibilidade.
se as decisões de política devem ser alteradas posteriormente

17
Estrutura do Sistema Operacional

Estrutura Simples
MS-DOS - escrito para fornecer a maior funcionalidade com o menor
espaço Não dividido em módulos
Embora o MS-DOS tenha alguma estrutura, suas interfaces e níveis de funcionalidade não estão bem separados.

Figura 2.7 Estrutura de Camadas do MS-DOS

Abordagem em Camadas

O sistema operacional é dividido em várias camadas (níveis), cada uma construída sobre camadas inferiores. O
a camada inferior (camada 0) é o hardware; a mais alta (camada N) é a interface do usuário.
Com modularidade, as camadas são selecionadas de forma que cada uma utiliza funções (operações) e serviços de apenas
camadas de nível inferior

Estrutura Tradicional do Sistema UNIX

Figura 2.8 Arquitetura do Sistema Unix

18
UNIX

UNIX - limitado pela funcionalidade de hardware, o sistema operacional UNIX original tinha limitação de estrutura.
O sistema operacional UNIX consiste em duas partes separáveis
Programas de sistema
O núcleo
Consiste em tudo abaixo da interface de chamada de sistema e acima do hardware físico
Fornece o sistema de arquivos, agendamento de CPU, gerenciamento de memória e outros componentes do sistema operacional
funções; um grande número de funções para um nível

Figura 2.9 Sistema Operacional em Camadas

Estrutura de Sistema de Microkernel


Move o máximo possível do kernel para o espaço do "usuário"
A comunicação ocorre entre os módulos de usuário usando passagem de mensagens
Benefícios:
Mais fácil de estender um microkernel
Mais fácil portar o sistema operacional para novas arquiteturas
Mais confiável (menos código está rodando em modo kernel)

More secure
Detriments:
Sobrecarga de desempenho da comunicação do espaço do usuário para o espaço do kernel

Figura 2.10 Estrutura do Mac OS X

19
Módulos

A maioria dos sistemas operacionais modernos implementa módulos de kernel


Usa abordagem orientada a objetos
Cada componente principal é separado
Cada um fala com os outros por meio de interfaces conhecidas
Cada um é carregável conforme necessário dentro do kernel
No geral, semelhante a camadas, mas com mais flexibilidade

Figura 2.11 Módulos carregáveis do Solaris

Máquinas Virtuais
Uma máquina virtual leva a abordagem em camadas à sua conclusão lógica. Ela trata o hardware e o
operating system kernel as though they were all hardware

Uma máquina virtual fornece uma interface idêntica ao hardware básico subjacente.
O sistema operacional host cria a ilusão de que um processo tem seu próprio processador e (virtual
memória) Cada convidado fornecido com uma cópia (virtual) do computador subjacente

História e Benefícios das Máquinas Virtuais


Apareceu pela primeira vez comercialmente em mainframes da IBM em 1972
Fundamentalmente, múltiplos ambientes de execução (diferentes sistemas operacionais) podem compartilhar o mesmo
hardware
Proteger um ao outro
Alguma compartilhamento de arquivo pode ser permitido, controlado
Commutar entre si, outros sistemas físicos por meio de rede
Useful for development, testing
Consolidação de muitos sistemas de baixo uso de recursos em menos sistemas mais ocupados

20
"Formato de Máquina Virtual Aberta", formato padrão de máquinas virtuais, permite que uma VM funcione em muitas
diferentes plataformas de máquinas virtuais (host)

Figure 2.12 System Modules a)Non virtual Machine b) Máquina Virtual

Paravirtualização
Apresenta ao convidado um sistema semelhante, mas não idêntico ao hardware
O convidado deve ser modificado para rodar em hardware paravirtualizado.
O convidado pode ser um SO, ou no caso de aplicativos Solaris 10 executando em contêineres
Solaris 10 com Dois Contêineres

Arquitetura VMware

Figura 2.13 Arquitetura VMware


21
A Máquina Virtual Java

Figura 2.14 Máquina Virtual Java


Depuração de Sistema Operacional

Depuração é encontrar e corrigir erros, ou bugs


OSes geram arquivos de log contendo informações de erro
A falha de um aplicativo pode gerar um arquivo de despejo de memória capturando a memória do processo
A falha do sistema operacional pode gerar um arquivo de despejo de memória contendo memória do kernel.
Além de falhas, a otimização de desempenho pode otimizar o desempenho do sistema
A Lei de Kernighan: "Depurar é duas vezes mais difícil do que escrever o código em primeiro lugar. Portanto, se você
escreva o código da maneira mais inteligente possível, você, por definição, não é inteligente o suficiente para depurá-lo.” DTrace
ferramenta no Solaris, FreeBSD, Mac OS X permite instrumentação ao vivo em sistemas de produção Probes disparam
when code is executed, capturing state data and sending it to consumers of those probes

Solaris 10 dtrace Seguindo Chamada de Sistema

22
Geração de Sistema Operacional
Sistemas operacionais são projetados para rodar em qualquer uma de uma classe de máquinas; o sistema deve ser configurado para
cada site de computador específico
O programa SYSGEN obtém informações sobre a configuração específica do hardware
inicialização do sistema – iniciando um computador ao carregar o kernel
Programa de inicialização - código armazenado em ROM que é capaz de localizar o kernel, carregá-lo na memória e iniciar.
sua execução
Inicialização do Sistema
O sistema operacional deve ser disponibilizado ao hardware para que o hardware possa iniciá-lo.
Pequeno trecho de código - carregador bootstrap, localiza o kernel, carrega-o na memória e o inicia
Às vezes, um processo de dois passos onde o bloco de inicialização em uma localização fixa carrega o carregador de bootstrap.
Quando a energia é inicializada no sistema, a execução começa em um local de memória fixo onde o firmware é usado para manter.
código de inicialização

Chapter3: PROCESS MANAGEMENT

Conceito de Processo
Um sistema operacional executa uma variedade de programas:
Sistema em lote – trabalhos
Sistemas de tempo compartilhado - programas ou tarefas do usuário

Textbook uses the termsjobandprocessalmost interchangeably


Processo - um programa em execução; a execução do processo deve progredir de forma sequencial
Um processo inclui:
contador de programa
pilha
seção de dados

Figura 3.1 Processo na Memória

Process State

À medida que um processo é executado, ele muda de estado

O processo está sendo criado


executando: Instruções estão sendo executadas
waiting: The process is waiting for some event to occur
pronto: O processo está aguardando para ser atribuído a um processador
terminado: O processo foi finalizado

23
Figura 3.2 Diagrama do Estado do Processo

Bloco de Controle de Processos (PCB)

Informações associadas a cada processo


Estado do processo
Contador de programa
Registradores da CPU
Informações de escalonamento de CPU
Informações de gerenciamento de memória
Informação contábil
Informação de status de I/O

Figura 3.3 Bloco de Controle de Processo

Figura 3.4 Mudança de CPU de Processo para Processo

24
Filas de Agendamento de Processos

Fila de trabalho - conjunto de todos os processos no sistema


Fila pronta – conjunto de todos os processos residindo na memória principal, prontos e aguardando para executar
Filas de dispositivos – conjunto de processos aguardando um dispositivo de I/O
Os processos migram entre as várias filas

Figura 3.5 Fila Pronta e Várias Filas de Dispositivos de I/O

Figura 3.6 Diagrama de fila Representação do Agendamento de Processos

25
Agendadores
Escalonador de longo prazo (ou escalonador de trabalhos) – seleciona quais processos devem ser trazidos para o estado pronto
queue
Escalonador de curto prazo (ou escalonador de CPU) – seleciona qual processo deve ser executado a seguir e
aloca CPU

Figura 3.7 Adição de Agendamento de Médio Prazo

O escalonador de curto prazo é invocado com muita frequência (milissegundos) Þ (deve ser rápido)
O escalonador de longo prazo é invocado com pouca frequência (segundos, minutos) Þ (pode ser lento)
The long-term scheduler controls thedegree of multiprogramming
Os processos podem ser descritos como:
Processos vinculados a I/O – passam mais tempo fazendo I/O do que computações, muitos pequenos picos de CPU
Processos dependentes da CPU - passam mais tempo realizando cálculos; poucos e muito longos picos de CPU

Troca de contexto
Quando a CPU troca para outro processo, o sistema deve salvar o estado do processo antigo e carregar o
estado salvo para o novo processo via uma troca de contexto
O contexto de um processo representado no PCB O tempo de troca de contexto é sobrecarga; o
o sistema não realiza trabalho útil enquanto troca dependente do tempo com o hardware
apoio

Criação de Processo
O processo pai cria processos filhos, que, por sua vez, criam outros processos, formando uma árvore de
processos
Geralmente, o processo é identificado e gerenciado por meio de um identificador de processo (pid)
Compartilhamento de recursos
Os pais e os filhos compartilham todos os recursos
As crianças compartilham um subconjunto dos recursos dos pais
Pais e filhos não compartilham recursos
Execução
Pai e filhos executam concorrentemente
Os pais esperam até que as crianças terminem
Espaço de endereço
Cópia duplicada do pai
A criança tem um programa carregado nele

26
Exemplos de UNIX
a chamada do sistema fork cria um novo processo
chamada execsystem usada após um fork para substituir o espaço de memória do processo por um novo programa

Figura 3.10 Criação de Processos

int main()
{
pid_t pid;
/* criar outro processo */
pid = fork();
se (pid < 0) { /* ocorreu um erro */
fprintf(stderr, "Falha ao criar processo");
sair(-1);
}
senão se (pid == 0) { /* processo filho */
execlp("/bin/ls", "ls", NULL);
}
outro { /* processo pai */ }
/* o pai vai esperar o filho terminar */
esperar (NULL);
printf ("Filho Completo");
sair(0);
}
}

Figura 3.9C Programa Forking Processo Separado

27
Figura 3.8 Uma árvore de processos em um Solaris típico
ProcessTermination
O processo executa a última instrução e solicita ao sistema operacional que a delete (saia)
Saída de dados do filho para o pai (via wait)
Os recursos do processo são desalocados pelo sistema operacional
O pai pode terminar a execução dos processos filhos (abortar)
A criança excedeu os recursos alocados
A tarefa atribuída à criança não é mais necessária
Se o pai estiver saindo, alguns sistemas operacionais não permitem que o filho continue se seu pai
termina Todos os filhos terminados -terminação em cascata
Comunicação Interprocessos
Os processos dentro de um sistema podem ser independentes ou cooperantes
O processo de cooperação pode afetar ou ser afetado por outros processos, incluindo o compartilhamento de dados.
Razões para cooperar com processos:
Compartilhamento de informações
Aceleração de computação
Modularidade
Conveniência
Processos cooperantes precisam de comunicação entre processos (IPC)
Dois modelos de IPC
Memória compartilhada

Troca de mensagens

Figura 3.12 Modelos de Comunicação a) Passagem de Mensagem b) Memória Compartilhada

Processos Cooperativos
Processo independente não pode afetar ou ser afetado pela execução de outro processo
Processos cooperantes podem afetar ou ser afetados pela execução de outro processo
Vantagens da cooperação entre processos
Compartilhamento de informações

Aceleração da computação
Modularidade
Conveniência

28
Problema Produtor-Consumidor
Paradigma para processos cooperantes, o processo produtor gera informações que são consumidas por um
processo de consumo
o buffer sem limites não impõe um limite prático ao tamanho do
o buffer de tamanho fixo assume que há um tamanho de buffer fixo
Buffer Limitado – Solução de Memória Compartilhada
Dados compartilhados
#define TAMANHO_DO_BUFFER 10
typedef struct {
...
}
item buffer[BUFFER_SIZE];
int in = 0;
int out = 0;
A solução está correta, mas só pode usar elementos BUFFER_SIZE-1

Bounded-Buffer – Producer
enquanto (verdadeiro) {

Produzir um item
enquanto (((in = (in + 1) % TAMANHO DO BUFFER contagem) == out)
;/* não fazer nada -- sem buffers livres
*/ buffer[in] = item;
(in + 1) % TAMANHO DO BUFFER;
}

Buffer Limitado – Consumidor


enquanto (verdadeiro) {
enquanto (in == out)
; -- não fazer nada -- nada para
consumir // remover um item do
item do buffer = buffer[out];
out = (out + 1) % TAMANHO DO BUFFER;
retornar item;
}
Comunicação entre Processos – Troca de Mensagens
Mecanismo para processos se comunicarem e sincronizarem suas ações
Sistema de mensagens – processos comunicam-se entre si sem recorrer a variáveis compartilhadas
A instalação IPC fornece duas operações:
enviar(mensagem) – tamanho da mensagem fixo ou variável
receber(mensagem)
Se P e Q desejam se comunicar, eles precisam de:
estabelecer um link de comunicação entre eles
trocar mensagens via enviar/receber
Implementação do link de comunicação
físico (por exemplo, memória compartilhada, barramento de hardware)
lógico (por exemplo, propriedades lógicas)

29
Direct Communication
Os processos devem se nomear explicitamente uns aos outros:
send(P,mensagem) – enviar uma mensagem para o processo P
receber(Q, mensagem) – receber uma mensagem do processo Q
Propriedades do link de comunicação Os links são estabelecidos
automaticamente
Um link está associado a exatamente um par de processos em comunicação.
Entre cada par, existe exatamente um link
O link pode ser unidirecional, mas geralmente é bidirecional

Comunicação Indireta
As mensagens são direcionadas e recebidas de caixas de correio (também referidas como portas)
Cada caixa de correio tem um ID único
Os processos só podem se comunicar se compartilharem um
Propriedades da caixa de correio do link de comunicação
Link estabelecido apenas se os processos compartilharem uma caixa de correio comum
Um link pode estar associado a muitos processos
Cada par de processos pode compartilhar vários links de comunicação
O link pode ser unidirecional ou bidirecional Operações

criar uma nova caixa de correio


enviar e receber mensagens através da caixa de correio
destruir uma caixa de correio
Os primitivos são definidos como:
enviar(A, mensagem) – enviar uma mensagem para a caixa de correio A
receber(A, mensagem) – receber uma mensagem da caixa de entrada A
Companhia de correio
P1, P2 e P3 compartilham a caixa de correio A

P1, envia; P2 e P3 recebem


Quem recebe a mensagem?
Soluções
Permitir que um link seja associado a no máximo dois processos Permitir
apenas um processo por vez para executar uma operação de recebimento
Permita que o sistema selecione arbitrariamente o receptor. O remetente é notificado sobre quem foi o receptor.
Sincronização
A passagem de mensagens pode ser bloqueante ou não
bloqueandoO bloqueio é considerado síncrono
O envio bloqueante faz com que o remetente fique bloqueado até que a mensagem seja recebida.
O bloqueio de recebimento faz com que o receptor fique bloqueado até que uma mensagem esteja disponível

Não bloqueante é considerado assíncrono


O envio não bloqueante faz com que o remetente envie a mensagem e continue
A recepção não bloqueante faz com que o receptor receba uma mensagem válida ou nula

30
Carregando
Fila de mensagens anexada ao link; implementada de uma das três maneiras
1. Capacidade zero – 0 mensagens

2. Capacidade limitada - comprimento finito das mensagens


O remetente deve esperar se o link estiver completo

3. Unbounded capacity – infinite length


O remetente nunca espera
Exemplos de Sistemas IPC - POSIX
Memória Compartilhada POSIX
O processo primeiro cria um segmento de memória compartilhada
segmento id = shmget(IPC PRIVADO, tamanho, S IRUSR | S IWUSR);
O processo que deseja acessar aquela memória compartilhada deve se anexar a ela
memória compartilhada = (char *) shmat(id, NULL, 0); Agora o processo
poderia escrever na memória compartilhada
printf(memória compartilhada, "Escrevendo na memória compartilhada");
Quando terminado, um processo pode desanexar a memória compartilhada do seu endereço
espaço shmdt(memória compartilhada);
Exemplos de Sistemas IPC - Mach
A comunicação Mach é baseada em mensagens
Até chamadas de sistema são mensagens
Each task gets two mailboxes at creation- Kernel and Notify
Apenas três chamadas de sistema são necessárias para a transferência de mensagens
msg_send(), msg_receive(), msg_rpc() Caixas de correio necessárias
para comunicação, criado através de
port_allocate()
Exemplos de Sistemas IPC – Windows XP
Centros de passagem de mensagens via instalação de chamada de procedimento local (LPC)
Funciona apenas entre processos no mesmo sistema
Usa portas (como caixas de correio) para estabelecer e manter canais de comunicação
A comunicação funciona da seguinte maneira:
O cliente abre uma alça para o objeto do porta de conexão do subsistema
O cliente envia uma solicitação de conexão
O servidor cria duas portas de comunicação privadas e retorna o identificador de uma delas para o cliente.
o cliente e o servidor usam o manipulador de porta correspondente para enviar mensagens ou callbacks e para ouvir por
respostas

31
Chamadas de Procedimento Local no Windows XP

Comunicações em Sistemas Cliente-Servidor


Sockets
Chamadas de Procedimento Remoto
Invocação de Método Remoto (Java)
Tomadas
Um soquete é definido como um ponto final para comunicação
Concatenação de endereço IP e porta
O socket [Link]:1625 refere-se à porta 1625 no host [Link]
A comunicação consiste entre um par de soquetes
Comunicação de Socket

Chamadas de Procedimento Remoto


A chamada de procedimento remoto (RPC) abstrai chamadas de procedimento entre processos em sistemas conectados em rede
Stubs - proxy do lado do cliente para o procedimento real no servidor
O stub do lado do cliente localiza o servidor e marshall os parâmetros
O stub do lado do servidor recebe esta mensagem, desempacota os parâmetros marshalled e realiza
o procedimento no servidor

32
Execução de RPC

Invocação de Método Remoto


A Invocação Remota de Métodos (RMI) é um mecanismo Java semelhante aos RPCs
RMI permite que um programa Java em uma máquina invoque um método em um objeto remoto

Marshalling de Parâmetros

33

Você também pode gostar