Você está na página 1de 72

Estruturas do sistema operacional

O que é um Sistema
Operacional?
• É uma máquina estendida (visão top-down)
– Implementa abstrações que escondem (do programador e do
usuário final) os detalhes de como acessar e controlar
os recursos de hardware;
– Apresenta ao programador uma máquina virtual, que é mais
fácil de usar (API simples baseada em conceitos
independentes do hardware) e genérica (sem expor a
diversidade dos recursos/dispositivos)
• É um gerenciador de recursos (visão bottom-up)
– Garante o compartilhamento seguro de recursos pelas várias
tarefas executando concorrentemente no sistema;
– Visa maximizar a utilização dos recursos (CPU,
Memória,
Disco, etc.)
6
S.O.visto como gerente de recursos

• Fornecer um esquema de alocação dos recursos


(processador, memórias, canais de I/O, etc) entre os
processos concorrentes,
• Estabelecer critérios de uso dos recursos e ordem de acesso
aos mesmos,
• Impedir a violação de espaço de memória de processos
concorrentes e tentativas de acesso simultâneo a um mesmo
recurso  controle de acesso, segurança e locking
• Garantir a execução eficiente dos programas transferindo dados
e código entre as várias memórias (caches, RAM, HD)

8
Concorrência
• Nos sistemas multiprogramados (multi-tarefa), existem
vários programas que executam concorrentemente
(ao mesmo tempo), aproveitando o fato de que:
– a CPU e os dispositivos de Entrada/Saida (E/S)
poderem operar em paralelo;
• Cada programa em execução intercala períodos de
processamento (uso efetivo da CPU) com períodos de
E/S.
• Seria um desperdício fazer a CPU esperar pelo término
de cada E/S com um dispositivo
• Para tal, é importante que o SO possa inciar uma E/S e
prosseguir com a execução de outra tarefa.
• Ou seja, multiprogramação aumenta a utilização
da CPU.
1
1
Funções essenciais

Apesar das diferenças, todos os SOs provêm


as seguintes funções:
– tratamento de interrupções;
– criação e remoção de processos/tarefas;
– sincronização e comunicação entre processos;
– escalonamento e controle dos processos;
– gerência de memória principal;
– gerência do sistema de arquivos;
– Otimizacões das operações de entrada e
saída;
– contabilização e segurança do sistema.
Serviços do sistema operacional
 Um conjunto de serviços do sistema operacional oferece funções que são
úteis ao usuário:
 Interface com o usuário – Quase todos os sistemas operacionais têm
uma interface com o usuário (UI)
 Varia entre linha de comando (CLI),

interface gráfica com o usuário (GUI),


batch
 Manipulação do sistema de arquivos – O sistema de arquivos é de
interesse particular. Obviamente, os programas precisam ler e gravar
arquivos e diretórios, criá-los e excluí-los, pesquisá-los, listar
informação do arquivo, gerenciamento de permissão
 Operações de E/S – Um programa em execução pode exigir E/S, que
pode envolver um arquivo ou um dispositivo de E/S.
 Execução do programa – O sistema deve ser capaz de carregar um
programa na memória e executar esse programa, terminar a
execução, normal ou anormalmente (indicando erro)
Componentes Típicos de um S.O.

• Núcleo (kernel) e drivers:


• Executam as funções mais básicas para alocacão e
gerenciamento seguro dos recursos
• Acessam diretamente o hardware e todas as
instruções da máquina (modo kernel)
• Drivers: fazem o controle específico de uma (classe
de) dispositivos de Entrada e Saida
Niveis de Privilégio:
Modos Usuário X Supervisor (kernel)
• Arquiteturas modernas permitem a operação do processaror
em dois (ou mais) níveis/modos de privilégio da CPU:
– Modo supervisor/kernel: tem acesso a todas as instruções
de máquina e regiões da memória;
– Modo usuário: apenas um conjunto restrito de
instruções de máquina e acesso controlado à memória
(apenas a certos endereços da memória)
• Exemplo: No modo supervisor é possível acessar as estruturas de dados
do núcleo, executar instruções de mudança de mapeamento de memória,
manipular qualquer processo, desabilitar certas interrupções, etc.

Progr. B
Modo usuário
Progr. A

Modo kernel

t 29
Geração do sistema operacional
 Os sistemas operacionais são projetados para
executar em qualquer uma de uma classe de
máquinas; o sistema precisa ser configurado
para cada ponto de computador específico
 O programa SYSGEN obtém informações
referentes à configuração específica do sistema
de hardware
 Booting – iniciar um computador carregando o
kernel
 Programa de bootstrap – código armazenado na
ROM que é capaz de localizar o kernel,
carregá- lo na memória e iniciar sua execução
Boot do sistema
 O sistema operacional precisa estar disponível ao
hardware, para que o hardware possa iniciá-lo
 Pequeno trecho de código – carregador de
bootstrap, localiza o kernel, carrega-o na
memória e o inicia
 Às vezes, um processo em duas etapas, onde
o bloco de boot no local fixo carrega o
carregador de bootstrap
 Quando o sistema é inicializado, a execução
começa em um local fixo da memória
 Firmware usado para manter o código
inicial de boot
Não chega ser próximo da linguagem de
maquina
Estrutura Tradicional do UNIX
(muito simplificado)
Sistema de vários componentes e
camadas de software

Windows

9
Sistema de vários
componentes e
camadas de software

Android

1
0
Arquitetura do Sistema

Sistemas Reserva
Navegadores
de de
Banco
Web
Passagens APLICATIVOS
Interpretadores
Compiladores Editores de
e Linkers Comando PROGRAMAS
SISTEMA OPERACIONAL DO
SISTEMA
Linguagem de Máquina

Micro Arquitetura HARDWARE

Dispositivos Físicos

22
Máquinas de Vários
Níveis
Nível do Usuário: Programas Aplicativos

Linguagem de Alto Nível

Linguagem de Montagem/Código de Máquina

Controle Microprogramado/Fixo

Unidade Funcionais (memória, ALU, outros)

Portas Lógicas

Transistores e Fios 23
Arquitetura do Sistema

 Hardware: Diversas camadas


 Dispositivos físicos:
 Circuitos (chips)
 Cabos

 Transistores

 Capacitores

 Memória

 Disco rígido
 etc...

24
Arquitetura do Sistema

 Micro Arquitetura: é a arquitetura


construída para implementar o conjunto de
instruções (pipeline, superescalar, etc.).
 CPU – processamento;
 ULA (Unidade Lógica Aritmética) – operações
aritméticas. Essas operações podem ser
controladas por software (micro programas)
ou por circuitos de hardware.

25
Arquitetura do Sistema

 Linguagem de Máquina: conjunto de


instruções interpretadas pelos dispositivos
que compõem a micro arquitetura;
 Possui entre 50 e 300 instruções;
 Realiza operações por meio de registradores;
 Baixo nível de abstração;
 Ex.: Assembly (montador Assembler).

26
Software

Software aplicativo
aplicações criadas para solucionar problemas específicos
Exemplos
contabilidade, folha de pagamento, correção de provas
Software básico
conjunto de softwares que permite ao usuário criar, depurar e modificar as
aplicações criadas por ele
sistema operacional, linguagens de programação, utilitários
Sistema operacional
Gerência de memória
Gerência de processador
Gerência de arquivos
Gerência de dispositivos de E/S

27
Software básico

Linguagens de programação
conjunto de convenções e regras que especificam como instruir o
computador a executar determinadas tarefas
serve como meio de comunicação entre o indivíduo que deseja resolver
um determinado problema e o computador
Gerações de linguagens
1ª geração: linguagens em nível de máquina
2ª geração: linguagens de montagem (Assembly)
3ª geração: linguagens orientadas ao usuário
4ª geração: linguagens orientadas à aplicação
5ª geração: linguagens de conhecimento

28
Software básico

1ª Geração: Linguagens em nível de máquina


instrução 0010 0001 0110 1100
realiza a soma (código de operação 0010) do dado armazenado no registrador 0001, com
o dado armazenado na posição de memória 108 (0110 1100)
Programa: sequência de zeros e uns
programação trabalhosa, cansativa e fortemente sujeita a erros

2ª geração: Linguagens de Montagem (Assembly)


minimizar as dificuldades da programação em notação binária
Códigos de operação e endereços binários foram substituídos por mnemônicos
ADD R1, TOTAL
R1 representa o registrador 1 e TOTAL é o nome atribuído ao endereço de memória 108
processamento requer tradução para linguagem de máquina

29
Software básico

3ª geração: Linguagens Orientadas ao Usuário


Surgiram na década de 60
FORTRAN, Pascal, COBOL
Programa em C:
if (a>b) printf (“O valor de A eh maior que o valor de B”);
else printf (“O valor de A eh menor que o valor de B”);
4ª geração: Linguagens Orientadas à Aplicação
apressar o processo de desenvolvimento de aplicações
gerar código sem erros a partir de requisitos de expressões de alto nível
tornar fácil o uso de linguagens, tal que, usuários finais possam resolver seus
problemas computacionais sem intermediários
SQL
select nome from alunos where idCurso=“C01”

30
Software básico

5ª geração: Linguagens de Conhecimento


mecanismos da área de inteligência artificial
Sistemas especialistas, processadores de língua natural e sistemas com bases de
conhecimento
Um sistema de 5ª geração armazena conhecimento complexo de modo que a
máquina pode obter inferências a partir da informação codificada
PROLOG, LISP
Have fun!
http://www.pandorabots.com/pandora/talk?botid=f5d922d97e345aa1
Níveis de linguagem
linguagens de baixo nível
primeira e segunda geração
linguagens de alto nível
terceira geração em diante
PS: no site http://www2.latech.edu/~acm/HelloWorld.shtml, você pode encontrar o
programa ‘Hello World’ implementado em dezenas de linguagens

31
Controle de um programa a ser executado pela
UCP

32
Instruções

Código Instrução Comentário


0000 NOP nenhuma operação
0001 STA end armazena acumulador - (store)
0010 LDA end carrega acumulador - (load)
0011 ADD end soma
0100 OR end “ou” lógico
0101 AND end “e” lógico
0110 NOT inverte (complementa) acumulador
1000 JMP end desvio incondicional - (jump)
1001 JN end desvio condicional - (jump on negative)
1010 JZ end desvio condicional - (jump on zero)
1111 HLT término de execução - (halt)
Organização funcional

Sistema Central que contém:


Unidade Central de Processamento (UCP/CPU/microprocessador)
Unidade de Controle
Unidade Aritmética e Lógica
Clock
Memória Principal
Interfaces
Unidades de Entrada e Saída (E/S)
Teclado, mouse, etc...

35
A Arquitetura do Conjunto de Instruções
Arquitetura do Conjunto de Instruções

• A Arquitetura do Conjunto de Instruções (Instruction Set Architecture - ISA) de


uma máquina corresponde aos níveis de linguagem de montagem (assembly) e de
linguagem de máquina.
• O compilador traduz uma linguagem de alto nível, que é independente de
arquitetura, na linguagem assembly, que é dependente da arquitetura.
• O assembler (ou montador) traduz programas em linguagem assembly em
códigos binários executáveis.
• Para linguagens completamente compiladas, como C e Fortran, os códigos
binários são executados diretamente pela máquina-alvo. O Java pára a tradução no
nível de byte code. A máquina virtual Java, que está no nível da linguagem
assembly, interpreta os byte codes (implementações em hardware da JVM também
existem, caso em que o byte code Java é executado diretamente.)
Tradutores de linguagens de programação

PRO G RA M A TRA D UTO R PRO G RA M A EX EC U C A O


FO N TE O B JE TO

EXECUC AO DE TODO O
C O M P ILA D O R PROGRA MA
LING UA GEM
DE MAQUINA

LING UA GEM

DE ALTO
NIVEL EXECUTA A IN STRUC AO
IN TE RP RETA D O R E VOLTA

OPERA C AO GERENC IA DA PELO SISTEMA O PERAC IO NA L

38
O que é um conjunto de instruções?

Coleção completa das instruções que são entendidas


por uma CPU

Código de máquina
Binário

Representada por códigos em assembly (linguagem


de montagem)
Elementos de uma instrução

Código de operação (Cod.Op ou Opcode)


Especifica a operação a ser efetuada
Ex. ADD
Referência a operando fonte
Operandos para a operação
Dados de entrada
Referência a operando de resultado
Resultado da operação
Referência à próxima instrução
Indica onde a CPU deve buscar a próxima instrução
Normalmente a próxima instrução
Excessões: jumps
Categorias de Instruções

Instruções de E/S
leituras de fita, disco magnético, pendrive, cd, dvd, gravação etc
Instruções de transferência
da memória para a CPU, de um registrador para outro
Instruções Aritméticas
adição, subtração, multiplicação, divisão
Instruções Lógicas
E (AND), OU (OR), NÃO (NOT)

42
Localização dos Operandos

Memória principal (ou virtual ou cache)


Registradores da CPU
Dispositivos de I/O
Organização de um Computador Simples

(fonte: Tanenbaum)
O Modelo de Barramento de Sistemas Revisitado

• Um programa compilado é copiado do disco rígido na memória. A CPU lê


as instruções e os dados da memória, executa as instruções, e armazena os
resultados de volta na memória.

Principles of Computer Architecture by M. Murdocca and V. Heuring © 1999 M. Murdocca and V. Heuring
Visão Abstrata de uma CPU
• A CPU consiste de uma seção (ou caminho) de dados
(datapath) que contém registradores e uma ALU, e uma seção
de controle, que interpreta instruções e efetua transferências
entre registradores.

Principles of Computer Architecture by M. Murdocca and V. Heuring © 1999 M. Murdocca and V. Heuring
Diagrama de Blocos de uma UCP

Fluxo de Controle
Fluxo de Dados/Endereços
Unidade Central de Processamento 47
Processador (cont.)

Caminho de dados de uma típica máquina de Von Neumann


(fonte: Tanenbaum) @ 2000-2001 by Prentice-Hall, Inc.
Ciclo de Busca e Execução

• Os passos que a Unidade de Controle segue durante a


execução de um programa são:
(1) Busca na memória da próxima instrução a ser executada.
(2) Decodificação do opcode.
(3) Leitura dos operandos da memória, se necessário.
(4) Execução da instrução e armazenamento dos resultados.
(5) Volta ao passo 1.

Este é conhecido como ciclo de busca e execução (fetch-


execute cycle), ou busca-decodificação-execução.

Principles of Computer Architecture by M. Murdocca and V. Heuring © 1999 M. Murdocca and V. Heuring
Busca e Execução (det.)
1 - Busca da próxima instrução na memória e
armazenamento da instrução em IR

2 - Atualização de PC

3 - Determinação do tipo de instrução do IR

4 - Caso necessário, busca dos dados que estão na


memória e armazenamento dos mesmos em registradores

5 - Execução da instrução

6 - Caso necessário, armazenamento do resultado na


memória
Execução de Instruções

Unidade de controle “dispara” cada um dos passos

Registradores armazenam temporariamente dados e


instruções

Unidade lógica e aritmética “trata” os dados e permite


a atualização dos apontadores
Processador (cont.)

Busca na memória
Processador (cont.)

CPU 8080 simplificada (adaptado de Brafman)


RE (16)
B.End.
Int (16)

PC (16) DC (16) R3 (16) A (8) B (8)


M
B. Dados
Int (8) E
RD (8) M

RD/WR
IR (8) VI (8) SP (16) T1 (8) T2 (8)

F (1) ULA
UC
Processador (cont.)

CPU 8080 simplificada (adaptado de Brafman)


RE (16)
B.End.
Int (16)

PC (16) DC (16) R3 (16) A (8) B (8)


M
B. Dados
Int (8) E
RD (8) M

RD/WR
IR (8) VI (8) SP (16) T1 (8) T2 (8)

F (1) ULA
UC
Processador (cont.)

CPU 8080 simplificada (adaptado de Brafman)


RE (16)
B.End.
Int (16)

PC (16) DC (16) R3 (16) A (8) B (8)


M
B. Dados
Int (8) E
RD (8) M

RD/WR
IR (8) VI (8) SP (16) T1 (8) T2 (8)

F (1) ULA
UC
Processador (cont.)

CPU 8080 simplificada (adaptado de Brafman)


RE (16)
B.End.
Int (16)

PC (16) DC (16) R3 (16) A (8) B (8)


M
B. Dados
Int (8) E
RD (8) M

RD/WR
IR (8) VI (8) SP (16) T1 (8) T2 (8)

F (1) ULA
UC
Processador (cont.)

CPU 8080 simplificada (adaptado de Brafman)


RE (16)
B.End.
Int (16)

PC (16) DC (16) R3 (16) A (8) B (8)


M
B. Dados
Int (8) E
RD (8) M

RD/WR
IR (8) VI (8) SP (16) T1 (8) T2 (8)

F (1) ULA
UC
Processador (cont.)

Determinação do tipo de instrução do IR


Processador (cont.)

CPU 8080 simplificada (adaptado de Brafman)


RE (16)
B.End.
Int (16)

PC (16) DC (16) R3 (16) A (8) B (8)


M
B. Dados
Int (8) E
RD (8) M

RD/WR
IR (8) VI (8) SP (16) T1 (8) T2 (8)

F (1) ULA
UC
Processador (cont.)

Execução da instrução
Processador (cont.)

CPU 8080 simplificada (adaptado de Brafman)


RE (16)
B.End.
Int (16)

PC (16) DC (16) R3 (16) A (8) B (8)


M
B. Dados
Int (8) E
RD (8) M

RD/WR
IR (8) VI (8) SP (16) T1 (8) T2 (8)

F (1) ULA
UC
Processador (cont.)

Distinção entre CPUs


Registradores (número, tamanho)
ULA (número de operações, tamanho)
UC (máquina de estado convencional, microprogramada)
Tamanhos do B. Dados, do B. interno e da ULA
definem a categoria do processador
8 bits: 8085, Z80, 8031
16 bits: 8086, 8088 (B. Dados de 8 bits), 68000
Tamanhos de Tipos de Dados Comuns

• Um byte (ou octeto) é composto de 8 bits. Dois nibbles formam um byte.


• meias-palavras, palavras (words), palavras duplas (doublewords), e quadwords são
compostas de bytes como abaixo:

Principles of Computer Architecture by M. Murdocca and V. Heuring © 1999 M. Murdocca and V. Heuring
ISA – Aspectos principais:
- Repertório de operacões
- Quantas, quais e complexidade:
Ex.: ULA, tranf de dados, I/O, controle
- Tipo e tamanho dos operandos
- (dados: byte, palavra, meia palavra)
- Endereçamento dos operandos (aponta reg, mem,…)
- Formato da Instrução
- Número de operandos (explicitos), tamanho dos bits,…
- Armazenamento dos operandos
- Registrador (numero), memória

64
65
66
67
68
Como funciona um conjunto de instruções?

Coleção completa das instruções que são entendidas


por uma CPU

Código de máquina
Binário

Representada por códigos em assembly (linguagem


de montagem)
Representação de Instruções

Cada instrução é representada por um único padrão


de bits

Para a compreensão humana, uma representação


simbólica é usada: mnemônicos
e.x. ADD, SUB, LOAD
Operandos também podem ser representados dessa
maneira
ADD A,B
71
72
73

Você também pode gostar