Você está na página 1de 44

UFPA - PPGEE – LPRAD - LINC

Universidade Federal do Pará

Sistemas Operacionais

Diego Lisboa Cardoso


diego@ufpa.br
UFPA - PPGEE – LPRAD - LINC

Conceitos Básicos
 Chamadas de Sistema
◼ A interface entre o S.O. e os programas de usuário é
definida pelo conjunto de instruções estendidas que o
sistema operacional proporciona.
◼ Essas instruções são conhecidas como chamadas de
sistema (system calls) → manipulam diversos objetos
gerenciados pelo S.O.
UFPA - PPGEE – LPRAD - LINC

Conceitos Básicos
 Chamadas de Sistema
◼ Pode-se dizer que são métodos utilizados para que os
programas de usuários solicitem serviços providos
pelo sistema operacional.
◼ Algumas peculiaridades:
⚫ Cada chamada corresponde a um procedimento de uma
biblioteca contida no sistema operacional.
⚫ As chamadas de sistema executam em modo protegido,
sem a interferência do usuário.
UFPA - PPGEE – LPRAD - LINC

Conceitos Básicos
 Processo de Execução de uma Chamada de
Sistema:
◼ Os serviços são requisitados através da colocação de
parâmetros em lugares muito bem determinados (por
exemplo, em registradores).
◼ Segue-se a execução de uma instrução especial de trap
(Chamada ao Supervisor ou Chamada ao Kernel).
◼ A execução deste tipo de instrução chaveia a máquina do
Modo Usuário para o Modo Kernel, e transfere o controle
para o S.O.
UFPA - PPGEE – LPRAD - LINC

Conceitos Básicos
Processo de Execução de uma Chamada de
Sistema (Continuação):
◼ O S.O. examina os parâmetros para determinar qual
das chamadas de sistema deve ser executada.
◼ A seguir, o S.O. verifica em uma tabela indexada, o
endereço do procedimento que executa a chamada ao
sistema.
◼ Após a conclusão da chamada de sistema, o controle
retorna ao programa do usuário.
UFPA - PPGEE – LPRAD - LINC

Conceitos Básicos
Exemplo de Chamada de Sistema:

count = read (file, buffer, nbytes);



READ (chamada de sistema).
UFPA - PPGEE – LPRAD - LINC

Conceitos Básicos
 Chamadas de Sistema para manipular arquivos no
UNIX
◼ open(): Specifies file name to be used;
◼ close(): Release file descriptor;
◼ read(): Input a block of information;
◼ write(): Output a block of information;
#include <stdio.h>
#include <fcntl.h>
int main() {
UFPA - PPGEE – LPRAD - LINC

int inFile, outFile;


char *inFileName = "in_test.txt";
char *outFileName = "out_test.txt";
int len;
char c;

inFile = open(inFileName, O_RDONLY);


outFile = open(outFileName, O_WRONLY);
/* Loop through the input file */
while ((len = read(inFile, &c, 1)) > 0)
write(outFile, &c, 1);
/* Close files and quite */
close(inFile);
close(outFile);
}
UFPA - PPGEE – LPRAD - LINC

Conceitos Básicos
 Interpretador de Comandos (Shell)
◼ É a interface entre os usuários e o sistema
operacional.

◼ Um comando vindo do usuário, se com uma sintaxe


válida, é interpretado pelo shell, que chama o
procedimento responsável pela execução do
comando.
UFPA - PPGEE – LPRAD - LINC

Conceitos Básicos
 Bourne shell (sh) -- Written by Steve Bourne, while at Bell Labs. First distributed
with Version 7 Unix, circa 1978, and enhanced over the years.
 Almquist shell (ash) -- Written as a BSD-licensed replacement for the Bourne Shell;
often used in resource-constrained environments. The sh of FreeBSD, NetBSD (and
their derivatives) are based on ash that has been enhanced to be POSIX conformant
for the occasion.
 Bourne-Again shell (bash) -- Written as part of the GNU Project to provide a superset
of Bourne Shell functionality.
 Debian Almquist shell (dash) -- Dash is a modern replacement for ash in Debian.
 Korn shell (ksh) -- Written by David Korn, while at Bell Labs.
 mksh -- Descendant of the OpenBSD /bin/ksh and pdksh, developed as part of MirOS
BSD.
 Z shell (zsh) -- considered as the most complete (read: the one with the most
features) shell: it is the closest thing that exists to a superset of sh, ash, bash, csh, ksh,
and tcsh.[citation needed]
 Busybox -- Tiny utilities for small and embedded systems, include a shell.
UFPA - PPGEE – LPRAD - LINC

Concorrência
 O que é concorrência?

 O que é concorrer a algo?


UFPA - PPGEE – LPRAD - LINC

Concorrência
 A possibilidade de o processador executar instruções
ao mesmo tempo que outras operações, como, por
exemplo, operações de E/S, permite que diversas
tarefas sejam executadas concorrentemente pelo
sistema.
 Existem diversos mecanismos de concorrência, como:
◼ Interrupções e Exceções;

◼ Buffering;

◼ Spooling;

◼ Reentrância;
UFPA - PPGEE – LPRAD - LINC

Concorrência
 Pergunta...

 Por que a concorrência é o princípio


básico para o projeto e a implementação
dos sistemas multiprogramáveis ?
UFPA - PPGEE – LPRAD - LINC

Concorrência
Os Sistemas Multiprogramáveis surgiram da limitação dos sistemas
monoprogramáveis
UFPA - PPGEE – LPRAD - LINC

Concorrência
Exemplo de Utilização de um sistema Mono.
Programa que executa em média 100 instruções por registro lido.

Leitura de um registro 0,0015s


Execução de 100 instruções 0,0001s
Total 0,0016s
% Utilização da CPU (0,001/0,0015)=0,066 = 6,6%
Neste caso o processador gasta 93,4% do tempo esperando o dispositivo de
E/S concluir a operação para continuar processando.
Como podemos solucionar este problema?
UFPA - PPGEE – LPRAD - LINC

Interrupções e Exceções
 Os periféricos do computador (discos, teclado, monitor, etc) são
acessados através de circuitos específicos genericamente
denominados controladores: a placa de vídeo, por exemplo
permite o acesso ao monitor;

MP • O processador
UCP
não se comunica
mais diretamente
com os
Controlador periféricos, mas
sim através de
cada controlador.
Dispositivos de E/S
UFPA - PPGEE – LPRAD - LINC

Interrupções e Exceções
UFPA - PPGEE – LPRAD - LINC

Interrupções e Exceções
 Durante a execução de um programa podem ocorrer
alguns eventos inesperados, ocasionando um desvio
forçado do fluxo de execução → Interrupção;
 Quando um controlador de periférico possui uma
informação importante a fornecer ao processador, ele
tem duas alternativas de comunicação;
◼ Aguarda até que o processador o consulte →

Demorado;
◼ Notifica o processador através do barramento de

controle, enviando a ele uma requisição de


interrupção (IRQ – Interrupt Request);
UFPA - PPGEE – LPRAD - LINC

Conceitos Básicos
 Interrupção:
◼ Gerada pelo S.O. ou por algum dispositivo,
independente do programa que está sendo
executado.
⚫ Exemplo de Interrupção: periférico avisa à CPU
que está pronto para transmitir algum dado.
⚫ No momento em que a UC detecta a interrupção, o
programa em execução é interrompido, e o controle
é desviado para uma rotina responsável pelo
tratamento da interrupção.
UFPA - PPGEE – LPRAD - LINC

Mecanismo de Interrupção
Salvar os
Programa Registradores

Rotina de
tratamento
Identifica a
origem da
interrupção
Interrupção

Obtém
endereço da
rotina

Restaura os
Registradores
UFPA - PPGEE – LPRAD - LINC

Mecanismo de Interrupção
UFPA - PPGEE – LPRAD - LINC

Conceitos Básicos
◼ No momento da interrupção, um conjunto de
informações sobre a execução do programa deve ser
preservado.
◼ Essas informações consistem no conteúdo de alguns
registradores, que deverão ser restaurados
posteriormente para a continuação do programa.
◼ Existem diferentes tipos de interrupções → cada uma
tratada por uma rotina de tratamento.
UFPA - PPGEE – LPRAD - LINC

Conceitos Básicos
◼ No momento em que uma interrupção acontece, a
CPU deve saber para qual rotina de tratamento deverá
ser desviado o fluxo de instrução.
◼ Essa informação deve estar em uma estrutura
chamada Vetor de Interrupção, que contém todas as
rotinas de tratamento existentes, associadas a cada
tipo de interrupção.
UFPA - PPGEE – LPRAD - LINC

Conceitos Básicos
◼ As interrupções podem ser classificadas como:
⚫ Mascaráveis: podem ser desabilitadas pelo processador
(Todos os dispositivos de E/S utilizam interrupções
mascaráveis)
⚫ Não Mascaráveis: não podem ser desabilitadas (usadas
para sinalizar “quase catástrofes”, como um erro de
paridade de memória)
◼ No caso da ocorrência de múltiplas interrupções, o
processador deve saber qual interrupção terá de
atender primeiro.
UFPA - PPGEE – LPRAD - LINC

Conceitos Básicos
◼ O controlador de pedidos de interrupção é um
dispositivo responsável por avaliar as interrupções
geradas e suas prioridades de atendimento.
◼ A interrupção tornou possível a implementação da
concorrência nos computadores, sendo o fundamento
básico dos sistemas multiprogramáveis.
UFPA - PPGEE – LPRAD - LINC

Conceitos Básicos
◼ Interrupção de Hardware: pelo dispositivos periféricos
ou pelo relógio (timer).
◼ Interrupção de Software: são system calls (chamadas
ao sistema) ou trap (armadilha).

◼ Diferença: conhecendo-se um programa e seus dados,


é possível prever quando as interrupções de software
irão acontecer - o que não é possível no caso das
interrupções de hardware.
UFPA - PPGEE – LPRAD - LINC

Conceitos Básicos
 Exceção:
◼ Resultado direto da execução de uma instrução do
próprio programa.
⚫ Exemplo: Situações como a divisão por zero ou a
ocorrência de um overflow.

◼ Diferença fundamental entre exceção e interrupção:


⚫ Exceção gerada por um evento síncrono.
⚫ Interrupção gerada por um evento assíncrono.
UFPA - PPGEE – LPRAD - LINC

Buffering
 A técnica de buffering consiste na utilização de um buffer, para a
transferência de dados entre os dispositivos de E/S e a memória,
liberando imediatamente o dispositivo de entrada para realizar uma
nova leitura.
 Nesse caso, enquanto o processador manipula o dado no buffer o
dispositivo realiza outra operação.
 Permitindo minimizar o problema da disparidade da velocidade de
processamento existente entre o processador e os dispositivos de E/S.
UFPA - PPGEE – LPRAD - LINC

Buffering
 Qual seria o objetivo da técnica do BUFFERING?

 Manter, na maior parte do tempo, processador e


dispositivos de E/S ocupados, aumentando assim a
concorrência.
UFPA - PPGEE – LPRAD - LINC

Spooling
 É uma técnica semelhante à técnica de buffering, sendo que esta
técnica utiliza uma área em disco como se fosse um grande
buffer;
◼ Ex.: No momento em que um comando de impressão é

executado, as informações que serão impressas são gravadas


antes em um arquivo em disco, conhecido como arquivo de
spool, liberando imediatamente o programa para outras
atividades. Posteriormente o SO encarrega-se de direcionar o
conteúdo do arquivo de spool para a impressora.
◼ C:\WINDOWS\system32\spool\PRINTERS
UFPA - PPGEE – LPRAD - LINC

Spooling
 Pergunta...
 Qual a vantagem da técnica do spooling?

 O uso do spooling permite desvincular o


programa do dispositivo de impressão,
impedindo que um programa reserve a
impressora para uso exclusivo.
UFPA - PPGEE – LPRAD - LINC

Reentrância
 É comum vários usuários utilizarem os mesmos aplicativos
simultaneamente, então para evitar que vários códigos
executáveis fossem carregados na memória, e evitar o
desperdício de espaço → Reentrância;

 É a capacidade de um código executável (código reentrante) ser


compartilhado por diversos usuários, exigindo que apenas uma
cópia do programa esteja na memória. A reentrância permite que
cada usuário possa estar em um ponto diferente do código
reentrante, manipulando dados próprios, exclusivos de cada
usuário.
UFPA - PPGEE – LPRAD - LINC

Reentrância
Usuário A
Usuário C

Código

Usuário D reentrante Usuário B

Área de dados do usuário A

Área de dados do usuário B

Área de dados do usuário C

Área de dados do usuário D


UFPA - PPGEE – LPRAD - LINC

Estrutura de um Sistema Operacional


 Sistemas Monolíticos
◼ Não há estruturação visível.
◼ SO é escrito como um conjunto de procedimentos,
que geralmente implementa mais que as funções
básicas de um Sistema Operacional.
◼ Comprometimento do desempenho, devido à
grande funcionalidade atribuída ao SO.
◼ Maior complexidade em programação de mais
baixo nível.
UFPA - PPGEE – LPRAD - LINC

Estrutura de um Sistema Operacional

 Sistemas em Camadas
◼ O S.O. é organizado em hierarquia de níveis.
◼ O sistema é dividido em níveis de complexidade,
sendo que os níveis inferiores prestam serviços
para os superiores.
◼ Implementam apenas a funcionalidade básica de
um sistema operacional, isto é, as Gerências de
processos/processador, de memória, de dispositivos
de entrada/saída e do sistema de arquivos.
UFPA - PPGEE – LPRAD - LINC

Estrutura de um Sistema Operacional


 Sistemas em Camadas
◼ Desempenho melhor, pelo fato de menos
funcionalidade estar implementada em nível de
kernel.
◼ Primeiro SO em camadas foi o THE (Technische
Hogeschool Eindhoven), na Holanda, em 1968.
UFPA - PPGEE – LPRAD - LINC

Estrutura de um Sistema Operacional


O THE possuía seis níveis:
5 Operador

4 Programas de Usuário

3 Gerenciador Dispositivo de E/S

2 Comunicação processo-usuário

1 Gerência de Memória

0 Multiprogramação
UFPA - PPGEE – LPRAD - LINC

Estrutura de um Sistema Operacional


 Sistema Cliente-Servidor
◼ Processo Cliente.
◼ Processo Servidor.
◼ O trabalho do kernel é prover a comunicação entre
o cliente e o servidor.
◼ O S.O. realiza tarefas bem definidas:
⚫ Serviço de arquivo.
⚫ Processos.

⚫ Memória.

⚫ Entre outros.
UFPA - PPGEE – LPRAD - LINC

Exercício
 Exercício 01:
 1) Defina SO.
 2) Como seria utilizar um computador sem um SO?
 3) Qual o objetivo de um SO?
 4) Quais elementos compõe um SO?
 5) Qual a diferença entre Multiprogramação e monoprogramação e porque dizemos que
existe subutilização de recursos em sistemas monoprogramáveis?
 6) O que são sistemas com múltiplos processadores e quais as suas vantagens?
 7) O que são sistemas fortemente acoplado e fracamente acoplado?
 8) Qual a grande diferença entre Sistemas operacionais de rede e sistemas distribuído?
 9) O que é concorrência e como este conceito está presente nos sistemas
multiprogramáveis?
 10) Explique o mecanismo de funcionamento das interrupções.
 11) Explique o funcionamento das técnicas de Buffering, Spooling e Reentrância.
UFPA - PPGEE – LPRAD - LINC

Lembrando

 Familiarização com o Minix/Linux;

 (todos) - instalação - sugestão: usar


máquinas virtuais – VirtualBox, etc;
UFPA - PPGEE – LPRAD - LINC

Trabalho 1

 Utilizar o programa “chamadas de


sistemas”, compilá-lo em Linux.
 Descrever como funcionam as chamadas de
sistemas geradas pelas funções do
programa C.
 Data da apresentação: A definir
UFPA - PPGEE – LPRAD - LINC

Trabalho 2
 (um por grupo) - criar aplicativos na linguagem C para
rodar no Linux utilizando as chamadas do sistema
operacional.

 a- programa que concatena dois arquivos. Entrada: o


nome dos dois arquivos. Saida: o arquivo concatenado
 b- programa que imprime os nomes e datas dos arquivos
no diretório corrente.
 c- troca o nome dos arquivos de um diretório colocando a
string "L" na frente.
 d- troca o password de um usuário.
UFPA - PPGEE – LPRAD - LINC

Entregar

 Relatório com:
 Objetivo

 programa explicado

 cópias das telas do emulador mostrando o


programa rodando.

 Apresentação com powerpoint e telas da saída do


emulador.
UFPA - PPGEE – LPRAD - LINC

Universidade Federal do Pará

Sistemas Operacionais

Diego Lisboa Cardoso


diego@ufpa.br

Você também pode gostar