Prévia do material em texto
Sistemas Operacionais
Dunfrey Pires Aragão
Departamento de Computação
CCT – CENTRO DE CIÊNCIAS E TECNOLOGIA
dunfrey.aragao@servidor.uepb.edu.br
Agenda
● Estrutura de um SO
2
Estrutura de um SO
Não é um bloco único e
fechado de software
executando sobre o
hardware
Alguns dos componentes mais
relevantes de um sistema
operacional típico
é o coração do SO, responsável pela
gerência dos recursos do hardware usados
pelas aplicações. Também implementa as
principais abstrações utilizadas pelos
aplicativos e programas utilitários.
a inicialização que requer uma série de tarefas
como reconhecer os dispositivos instalados,
testá-los e configurá-los adequadamente para
uso, e carregar o núcleo do sistema operacional
em memória para iniciar sua execução.
módulos de código específicos para acessar os
dispositivos físicos. Existe um driver para cada
tipo de dispositivo, como discos rígidos SATA,
portas USB, placas gráfica, etc.
são programas que facilitam o uso do SO,
fornecendo funcionalidades complementares
ao núcleo, como formatação de discos e
mídias, configuração de dispositivos,
manipulação de arquivos (mover, copiar,
apagar), interpretador de comandos,
terminal, interface gráfica, gerência de
janelas, etc
Neste tipo de camada,
usualmente é executado em
um modo especial de
operação do processador,
denominado modo privilegiado
ou modo Sistema. Os demais
programas e aplicaçÕes
executam em modo usuário
Arquitetura do computador
A principal característica desse modelo é a ideia de “programa armazenado”, ou
seja, o programa a ser executado reside na memória junto com os dados.
O centro do
sistema de
computação
ULA:
- Cálculos
- op. lógicas
- Reg. dados de
trabalho
- Reg. func.
especiais
(contador,
ponteiros, flags)
Posição de memória a ser acessadaTransporta a informação a ser transferida entre processador e memoriaIndica a operação a efetuar
Modelo de John
von Neumann
Mediador de
acesso entre
processador e
memória
Acessados por circuitos
eletrônicos específicos,
denominados controladores
Interrupções e exceções
A comunicação processador e dispositivos se dá
através do acesso às portas de E/S.
Esse acesso é feito por iniciativa do processador,
quando este precisa ler ou escrever dados.
Se, por acaso, ocorra o que ocorre muitas vezes,
que é um dispositivo precisando informar o
processador sobre um evento interno:
- chegada de um pacote de rede
- um clique de mouse
- conclusão de uma operação de disco.
Quais são as possíveis opções/ações
do processador?
Rotina de tratamento de interrupção
Interrupt handler
1. O processador está executando um programa qualquer (em outras
palavras, um f luxo de execução). Um pacote vindo da rede é recebido pela
placa Ethernet. O que acontece agora?
2. O controlador Ethernet envia uma solicitação de interrupção (IRQ –
Interrupt ReQuest) ao processador;
3. O processamento é desviado do programa em execução para a rotina de
tratamento de interrupções, e a rotina de tratamento é executada para
interagir com o controlador de rede (via barramentos de dados e de
endereços) para transferir os dados do pacote de rede do controlador para a
memória;4. A rotina de tratamento da interrupção é finalizada e o processador retorna
à execução do programa que havia sido interrompido.
● Para distinguir interrupções
geradas por dispositivos
distintos, cada interrupção é
identificada pelo hardware por
um número inteiro.
○ Cada IRQ deve disparar sua
própria rotina de tratamento de
interrupção. A maioria das
arquiteturas atuais define uma
tabela de endereços de funções
denominada Tabela de
Interrupções (IVT- Interrupt Vector
Table);
3C20h
Entrada 5 recebe
valor 3c20h, então a
rotina de tratamento
da IRQ 5 iniciará na
posição 3C20h da
memória RAM
● O que seriam Exceções então?
São eventos gerados pelo próprio processador e que podem ocasionar
desvios de execução.
• Então é o mesmo que interrupção?
• Instruções ilegais
• Operandos inválidos
• Tentativas de divisão por 0 (zero)
• E ainda existem o comando Trap.
Desvia a execução a pedido do software em execução
Níveis de Privilégio
● Nível núcleo: kernelspace – flag 00
● Nível usuário: userspace – flag 11
○ RESET (reiniciar o processador) e
○ IN/OUT (acessar portas de entrada/saída)
● Flags que definem nível de privilégio
só podem ser modificados por código
executando no nível núcleo
Os níveis me permitem criar uma estrutura segura no SO
Wifi - SSD
SYSTEM CALL
• Java não permite chamadas diretas ao sistema como em C, ele fornece
abstrações de alto nível (como System.out) que encapsulam essas
operações.
• A JVM gerencia as interações com o sistema operacional.
import java.io.*;
public class CopiarArquivo {
public static void main(String[] args) {
// Caminhos dos arquivos de origem e destino
String caminhoOrigem = "arquivo_origem.txt";
String caminhoDestino = "arquivo_destino.txt";
}
}
Olá, mundo!
Este é um exemplo de manipulação de arquivos em Java.
Java é uma linguagem poderosa e versátil.
OLÁ, MUNDO!
ESTE É UM EXEMPLO DE MANIPULAÇÃO DE ARQUIVOS EM JAVA.
JAVA É UMA LINGUAGEM PODEROSA E VERSÁTIL.
Onde estão as Syscalls?
● Leitura de Arquivo (BufferedReader):
○ Quando você usa BufferedReader para ler um arquivo, a JVM internamente faz chamadas ao sistema
como open() (para abrir o arquivo) e read() (para ler o conteúdo do arquivo).
● Escrita de Arquivo (BufferedWriter):
○ Quando você usa BufferedWriter para escrever em um arquivo, a JVM internamente faz chamadas
ao sistema como open() (para abrir ou criar o arquivo) e write() (para escrever o conteúdo no
arquivo).
● Fechamento de Recursos:
○ Quando os recursos (BufferedReader e BufferedWriter) são fechados (automaticamente pelo
try-with-resources), a JVM faz uma chamada ao sistema close() para liberar os descritores de
arquivo.
Entender como funciona Linux e Windows
● LINUX
○ javac CopiarArquivo.java
○ java CopiarArquivo
○ strace -f -o syscalls.log java CopiarArquivo
■ Analise o arquivo syscalls.log:
■ Procure por chamadas como open(), read(), write() e close(), que estão relacionadas à
manipulação de arquivos.
● WINDOWS
○ Clique em Filter > Add Filter e configure o filtro para mostrar apenas as atividades do
processo Java.
sudo apt-get install
strace
Acesse o site da Microsoft e baixe o Process Monitor
Atividade (entrega até 24/02)
Escreva um código, que contém classe Processador. Neste, uma thread está em execução, que deve ser
interrompido por um pacote da classe PacoteRede, que pede para ser processado. Ao final do processamento do
pacote de rede, a thread retorna ao processo que parou e estava interrompida.
Processando...
Processando... 1 segundo(s)
Processando... 2 segundo(s)
Pacote de rede chegou!
Interrompendo o processo atual.
Processando pacote de rede...
Retornando ao processamento inicial...
Processando... 3 segundo(s) após retorno.
Processando... 4 segundo(s) após retorno.
Processando... 5 segundo(s) após retorno.
Processamento concluído com sucesso.