Buscar

Sistemas Operacionais: Chamadas de Sistema, Shell e Concorrência

Prévia do material em texto

U
F
P
A
 -
P
P
G
E
E
 –
L
P
R
A
D
 -
L
IN
C
Sistemas Operacionais
Diego Lisboa Cardoso
diego@ufpa.br
Universidade Federal do Pará
U
F
P
A
 -
P
P
G
E
E
 –
L
P
R
A
D
 -
L
IN
C
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.
U
F
P
A
 -
P
P
G
E
E
 –
L
P
R
A
D
 -
L
IN
C
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.
U
F
P
A
 -
P
P
G
E
E
 –
L
P
R
A
D
 -
L
IN
C
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.
U
F
P
A
 -
P
P
G
E
E
 –
L
P
R
A
D
 -
L
IN
C
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.
U
F
P
A
 -
P
P
G
E
E
 –
L
P
R
A
D
 -
L
IN
C
Conceitos Básicos
Exemplo de Chamada de Sistema:
count = read (file, buffer, nbytes);

READ (chamada de sistema).
U
F
P
A
 -
P
P
G
E
E
 –
L
P
R
A
D
 -
L
IN
C
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;
U
F
P
A
 -
P
P
G
E
E
 –
L
P
R
A
D
 -
L
IN
C
#include <stdio.h> 
#include <fcntl.h> 
int main() {
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);
}
U
F
P
A
 -
P
P
G
E
E
 –
L
P
R
A
D
 -
L
IN
C
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.
U
F
P
A
 -
P
P
G
E
E
 –
L
P
R
A
D
 -
L
IN
C
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.
http://en.wikipedia.org/wiki/Bourne_shell
http://en.wikipedia.org/wiki/Stephen_Bourne
http://en.wikipedia.org/wiki/Bell_Labs
http://en.wikipedia.org/wiki/Version_7_Unix
http://en.wikipedia.org/wiki/Almquist_shell
http://en.wikipedia.org/wiki/FreeBSD
http://en.wikipedia.org/wiki/NetBSD
http://en.wikipedia.org/wiki/POSIX
http://en.wikipedia.org/wiki/Bash_(Unix_shell)
http://en.wikipedia.org/wiki/GNU_Project
http://en.wikipedia.org/wiki/Debian_Almquist_shell
http://en.wikipedia.org/wiki/Debian
http://en.wikipedia.org/wiki/Korn_shell
http://en.wikipedia.org/wiki/David_Korn_(computer_scientist)
http://en.wikipedia.org/wiki/Bell_Labs
http://en.wikipedia.org/wiki/Korn_shell%23Variants
http://en.wikipedia.org/wiki/OpenBSD
http://en.wikipedia.org/wiki/MirOS_BSD
http://en.wikipedia.org/wiki/Z_shell
http://en.wikipedia.org/wiki/Wikipedia:Citation_needed
http://en.wikipedia.org/wiki/Busybox
U
F
P
A
 -
P
P
G
E
E
 –
L
P
R
A
D
 -
L
IN
C
Concorrência
 O que é concorrência?
 O que é concorrer a algo?
U
F
P
A
 -
P
P
G
E
E
 –
L
P
R
A
D
 -
L
IN
C
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;
U
F
P
A
 -
P
P
G
E
E
 –
L
P
R
A
D
 -
L
IN
C
Concorrência
 Pergunta...
 Por que a concorrência é o princípio
básico para o projeto e a implementação
dos sistemas multiprogramáveis ?
U
F
P
A
 -
P
P
G
E
E
 –
L
P
R
A
D
 -
L
IN
C
Concorrência
Os Sistemas Multiprogramáveis surgiram da limitação dos sistemas 
monoprogramáveis
U
F
P
A
 -
P
P
G
E
E
 –
L
P
R
A
D
 -
L
IN
C
Concorrência
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%
Exemplo de Utilização de um sistema Mono.
Programa que executa em média 100 instruções por registro lido.
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?
U
F
P
A
 -
P
P
G
E
E
 –
L
P
R
A
D
 -
L
IN
C
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;
UCP
MP
Controlador
Dispositivos de E/S
• O processador
não se comunica
mais diretamente
com os
periféricos, mas
sim através de
cada controlador.
U
F
P
A
 -
P
P
G
E
E
 –
L
P
R
A
D
 -
L
IN
C
Interrupções e Exceções
U
F
P
A
 -
P
P
G
E
E
 –
L
P
R
A
D
 -
L
IN
C
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);
U
F
P
A
 -
P
P
G
E
E
 –
L
P
R
A
D
 -
L
IN
C
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 rotinaresponsável pelo
tratamento da interrupção.
U
F
P
A
 -
P
P
G
E
E
 –
L
P
R
A
D
 -
L
IN
C Mecanismo de Interrupção
Interrupção
Programa
Salvar os 
Registradores 
Identifica a 
origem da 
interrupção
Obtém 
endereço da 
rotina
Restaura os 
Registradores 
Rotina de 
tratamento
U
F
P
A
 -
P
P
G
E
E
 –
L
P
R
A
D
 -
L
IN
C
Mecanismo de Interrupção
U
F
P
A
 -
P
P
G
E
E
 –
L
P
R
A
D
 -
L
IN
C
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.
U
F
P
A
 -
P
P
G
E
E
 –
L
P
R
A
D
 -
L
IN
C
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.
U
F
P
A
 -
P
P
G
E
E
 –
L
P
R
A
D
 -
L
IN
C
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.
U
F
P
A
 -
P
P
G
E
E
 –
L
P
R
A
D
 -
L
IN
C
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.
U
F
P
A
 -
P
P
G
E
E
 –
L
P
R
A
D
 -
L
IN
C
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.
U
F
P
A
 -
P
P
G
E
E
 –
L
P
R
A
D
 -
L
IN
C
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.
U
F
P
A
 -
P
P
G
E
E
 –
L
P
R
A
D
 -
L
IN
C
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.
U
F
P
A
 -
P
P
G
E
E
 –
L
P
R
A
D
 -
L
IN
C
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.
U
F
P
A
 -
P
P
G
E
E
 –
L
P
R
A
D
 -
L
IN
C
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
U
F
P
A
 -
P
P
G
E
E
 –
L
P
R
A
D
 -
L
IN
C
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.
U
F
P
A
 -
P
P
G
E
E
 –
L
P
R
A
D
 -
L
IN
C
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.
U
F
P
A
 -
P
P
G
E
E
 –
L
P
R
A
D
 -
L
IN
C
Reentrância
Código
reentrante
Usuário A
Usuário BUsuário D
Usuário C
Á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
U
F
P
A
 -
P
P
G
E
E
 –
L
P
R
A
D
 -
L
IN
C
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.
U
F
P
A
 -
P
P
G
E
E
 –
L
P
R
A
D
 -
L
IN
C
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.
U
F
P
A
 -
P
P
G
E
E
 –
L
P
R
A
D
 -
L
IN
C
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.
U
F
P
A
 -
P
P
G
E
E
 –
L
P
R
A
D
 -
L
IN
C Estrutura de um Sistema Operacional
O THE possuía seis níveis:
5 Operador
4
3
0
1
2
Programas de Usuário
Gerenciador Dispositivo de E/S
Comunicação processo-usuário
Gerência de Memória
Multiprogramação
U
F
P
A
 -
P
P
G
E
E
 –
L
P
R
A
D
 -
L
IN
C
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.
U
F
P
A
 -
P
P
G
E
E
 –
L
P
R
A
D
 -
L
IN
C
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.
U
F
P
A
 -
P
P
G
E
E
 –
L
P
R
A
D
 -
L
IN
C
Lembrando
 Familiarizaçãocom o Minix/Linux;
 (todos) - instalação - sugestão: usar
máquinas virtuais – VirtualBox, etc;
U
F
P
A
 -
P
P
G
E
E
 –
L
P
R
A
D
 -
L
IN
C
Exercício
 Utilizar o programa “chamadas de
sistemas”, compilá-lo em Linux.
 Descrever como funcionam as chamadas de
sistemas geradas pelas funções do
programa C.
U
F
P
A
 -
P
P
G
E
E
 –
L
P
R
A
D
 -
L
IN
C
Trabalho 1
 (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.
U
F
P
A
 -
P
P
G
E
E
 –
L
P
R
A
D
 -
L
IN
C
Entregar
 Relatório com:
 Objetivo
 programa explicado e comentado
 cópias das telas do emulador mostrando o
programa rodando.
 Código executável
 Apresentação com powerpoint e telas da saída do
emulador.
U
F
P
A
 -
P
P
G
E
E
 –
L
P
R
A
D
 -
L
IN
C
Sistemas Operacionais
Diego Lisboa Cardoso
diego@ufpa.br
Universidade Federal do Pará

Continue navegando