Você está na página 1de 272

SISTEMAS OPERACIONAIS

Prof. MSc. Marco Antonio Alves Pereira


AVISO:
• Todos os slides do curso foram elaborados com
base em conteúdo da Internet, devidamente
referenciados ao seu lado direito.
• Esta “coletânea” de informações tem objetivo
puramente educacional e não será
comercializado, descaracterizando-se o plágio ou
qualquer tipo de utilização indevida.
• Todos os créditos e direitos dos textos, imagens e
vídeos utilizados pertencem aos seus respectivos
proprietários, não estando incorporados ao
presente trabalho.
2
MÓDULO 1
CONCEITOS BÁSICOS DE HARDWARE & SOFTWARE
Parte I

Prof. MSc. Marco Antonio Alves Pereira


Ao final deste Módulo, você estará fera em:

http://www.votepelosanimais.org.br/
Reconhecer os principais
componentes de Hardware de um
computador

Entender como as partes de um


computador se interligam e
interagem

Compreender como os programas


funcionam
4
Hardware e Software

http://mundohoje.com.br/alguns-conceitos-de-hardware-e-software.html
• Hardware é a parte física do computador,
peças encaixes, fios e chips. Software é algo
que não se pode pegar e determina o
comportamento e a função a ser executada.
Ou seja , o hardware é o equipamento. O
software é o programa. Eles trabalham em
estreita colaboração.

5
Hardware e Software
• Tem gente que diz que Hardware é aquilo que
se chuta...
• E Software é aquele que se xinga!

6
Hardware e Software.
Duração: 6’13’’

Fonte: http://www.youtube.com/watch?v=dgkxCLOfB50

Filme

7
HARDWARE

Prof. MSc. Marco Antonio Alves Pereira


Componentes de Hardware
• Um computador completo é composto por:
– CPU (Central Processing Unit) ou UCP
– Memória Principal (ou RAM-Random Access
Memory)

A
– Dispositivos de Entrada/Saída (ou dispositivos de
I/O – Input/Output)
– Barramento, ou BUS

• Estes são os chamados RECURSOS!!!

9
Sistema Computacional Completo

10

http://dc407.4shared.com/doc/7tmsLHeo/preview.html
CPU ou UCP
• A CPU é o principal componente do
computador, pois é o responsável pela
execução das instruções dos programas e do
próprio Sistema Operacional.
• É o “motor” do computador!

11
CPU ou UCP

http://computer.greavek.com/hardware/motherboard2.html
• Fica localizada na placa-mãe (mother board)
do computador

12
CPU ou UCP

http://www.ebah.com.br/content/ABAAAATCcAH/arquitetura-computadores
• A CPU organiza-se basicamente em:
– ULA: Unidade de Lógica e Aritmética
– UC: Unidade de Controle
– Registradores

13
CPU ou UCP

http://minerva.ufpel.edu.br/~guntzel/TD/projeto_ULA.pdf
• A unidade lógico-aritmética (ULA) é
responsável pelas operações lógicas e
aritméticas básicas num processador.
• As operações aritméticas tipicamente
realizadas por uma ULA são adição, subtração,
incremento e decremento.
• Dentre as operações lógicas citam-se o E, o
OU.

14
CPU ou UCP
• A unidade de controle (UC) : é a unidade que

http://www.ufpa.br/dicas/mic/mic-proc.htm
armazena a posição de memória que contém
a instrução que o computador está
executando nesse momento. Ela informa à
ULA qual operação a executar, buscando a
informação (da memória) que a ULA precisa
para executá-la. Depois, transfere o resultado
de volta para o local apropriado da memória.
A seguir, a unidade de controle vai para a
próxima instrução.
15
CPU ou UCP

http://www.di.ufpb.br/raimundo/Hierarquia/Registradores.html
• Registradores
• Em um sistema de computação, a destinação final do
conteúdo de qualquer tipo de memória é o
processador (a CPU). Isto é, o objetivo final de cada
uma das memórias (ou do subsistema de memória) é
armazenar informações destinadas a serem, em algum
momento, utilizadas pelo processador. Ele é o
responsável pela execução das instruções, pela
manipulação dos dados e pela produção dos resultados
das operações.

16
CPU ou UCP

http://www.di.ufpb.br/raimundo/Hierarquia/Registradores.html
• Registradores
• As ações operativas do processador são realizadas nas
suas unidades funcionais: na unidade aritmética e
lógica - ULA (Aritmetic and Logic Unit), na unidade de
ponto flutuante - UFP (Float Point Unit - FPU) ou talvez
em uma unidade de processamento vetorial. No
entanto, antes que a instrução seja interpretada e as
unidades da CPU sejam acionadas, o processador
necessita buscar a instrução de onde ela estiver
armazenada (memória cache ou principal) e armazená-
la em seu próprio interior, em um dispositivo de
memória denominado registrador de instrução.
17
CPU ou UCP

http://www.di.ufpb.br/raimundo/Hierarquia/Registradores.html
• Registradores
• Em seguida a este armazenamento da instrução, o
processador deverá, na maioria das vezes, buscar dados
da memória (cache, principal ou mesmo de unidades
de disco em fita) para serem manipulados na ULA.
Esses dados também precisam ser armazenados em
algum local da CPU até serem efetivamente utilizados.
Os resultados de um processamento (de uma soma,
subtração, operação lógica, etc.) também precisam, às
vezes, ser guardados temporariamente na CPU, ou para
serem novamente manipulados na ULA por uma outra
instrução, ou para serem transferidos para uma
memória externa à CPU. 18
CPU ou UCP

http://www.di.ufpb.br/raimundo/Hierarquia/Registradores.html
• Registradores
• Esses dados são armazenados na CPU em pequenas
unidades de memória, denominadas registradores.

• Portanto, os Registradores são a “memória de trabalho”


da CPU!

19
CPU ou UCP

http://schoolnet.gov.mt/keith.aquilina/resources/storage/Data_registers.htm
• Ou seja, os Registradores armazenam todas as

http://www.di.ufpb.br/raimundo/Hierarquia/Registradores.html

http://www.c-jump.com/CIS77/ASM/Instructions/lecture.html
informações referentes a execução de um programa!

Todos os registradores armazenam


as informações referentes a um
MOMENTO de execução de um
programa!

20
VAMOS PENSAR?
Atividade:
Em equipes de 4 pessoas, relembre o que são os sistemas
multitarefa.
Ok, agora raciocine: quem é que executa os programas
em um computador? É a CPU, ok?
Muito bem, se pensarmos em um computador que tem
apenas uma CPU (com apenas UM núcleo), quantos
programas podem realmente ser executados AO MESMO
TEMPO? Lembre que até pouco tempo atrás esta era a
realidade dos computadores...
Pois bem, discuta com seus colegas da equipe COMO os
computadores conseguiam executar vários programas
simultaneamente, se tinham apenas uma CPU.

Tempo da atividade: 15 minutos.


21
VAMOS PENSAR?
Atividade:
Ainda em equipes de 4 pessoas, responda:
a) O que é uma “variável”?
b) Imagine que existam duas variáveis na memória: X e
Y, cujos valores atuais são 3 e 5.
Existe uma terceira variável, Z, que armazenará o
resultado da expressão: Z := X + Y;
Liste quais serão todos os passos para que esta
operação seja realizada pelo processador.

Tempo da atividade: 15 minutos.

22
Para aprender um pouco mais sobre CPUs,
acesse os links recomendados abaixo.

Artigo: Componentes de um Computador e


Arquiteturas Convencionais:
http://minerva.ufpel.edu.br/~guntzel/icc/arq
conv_2003.pdf

Infoescola
http://www.infoescola.com/informatica/proc
essador/

O que é?
http://www.cultura.ufpa.br/dicas/mic/mic-
proc.htm

Conceitos Básicos de Arquitetura de


Processador
http://www.ime.uerj.br/professores/Mariaclicia/O
c2/Cap2_introprojproc.pdf 23
• Existem diversos tipos de processadores
no mercado, e sua evolução se deu de
modo bastante rápido. Conheça a
evolução dos processadores em:
http://www.coladaweb.com/informatica/modelos-de-processadores

24
Memória Principal ou RAM
• A memória RAM (Random Access Memory) é

http://informatica.hsw.uol.com.br/memoria-ram.htm
a forma mais conhecida de memória de
computador.
• A memória RAM é considerada de "acesso
aleatório" porque é possível acessar
diretamente qualquer célula da memória se
você conhece a linha e a coluna que cruzam
essa célula.

25
Memória Principal ou RAM
• A RAM é volátil, ou seja, perde seu conteúdo
se ficar sem energia elétrica.
• As células da memória RAM possuem, cada
uma, seu “endereço” próprio.
• Além disto, cada célula pode armazenar uma
certa quantidade de bits.
– 8 bits armazenados = 1 byte!

26
O QUE SÃO BIT E BYTE?

Bit é a menor unidade de informação que o


computador é capaz de reconhecer.
Bit (binary digit, ou dígito binário) pode
assumir apenas os valores 0 ou 1.

Byte é a menor unidade de informação


reconhecida pelo ser humano.
O byte é constituído por 8 bits, ou seja, 256
possíveis combinações:

28 = 256

Assim, é possível a representação de até 256


diferentes caracteres com oito bits. Estes
caracteres estão representados em uma tabla
conhecida como ASCII (American Standard
Code for Information Interchange).
27
PESQUISE!

A
28
Memória Principal ou RAM

29

http://ojhemerson.wordpress.com/2011/10/14/sistemas-operacionais-3/
Memória Principal ou RAM
• Quanto de memória RAM um
computador pode ter?
• Depende do Processador!
– Existe um registrador chamado
MAR (Memory Address
Register) que determina
quantas células de memória o
processador consegue
enxergar.

30
Memória Principal ou RAM
• Por exemplo, se o registrador MAR tiver
tamanho de 16 bits:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1
0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0

até
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

• Quantos endereços diferentes de memória o


processador conseguirá endereçar?

Total de Endereços = 216


31
Memória Principal ou RAM
• Portanto, se o registrador MAR tiver tamanho
de ‘n’ bits, a quantidade de células de
memória que este processador será capaz de
endereçar será 2n.

32
• Existem muitos tipos de memória RAM.
Você encontrará todos em:
• http://informatica.hsw.uol.com.br/memoria-
ram3.htm

33
O que é enviado para a CPU quando você
digita uma tecla no teclado? É o caractere
correspondente à tecla? NÃO!
O que é enviado é o código ASCII do
caractere correspondente. Por exemplo,
ao digitar um “M”, o teclado envia o
código binário 01001101.

34
COMO REPRESENTAR CAPACIDADES DE
ARMAZENAMENTO?

Quantos metros existem em um kilômetro?


Esta é fácil: 1.000 metros!
E em kilobyte? 1.024 bytes! E por quê?
Bem, como já vimos, a informação é
armazenada no computador sob a forma de
bits, ou seja, utilizando-se da BASE BINÁRIA
de numeração.
Esta sistema de numeração utiliza a base 2
(dois dígitos: 0 ou 1). Portanto, toda
representação decimal desta base é
resultado de uma operação de base 2. O
número mais próximo de 1000 nesta base é o
1024.
...
29 = 512
210 = 1024
211 = 2048... 35
PESQUISE!

A
36
VAMOS PENSAR?
Atividade:
Considere um computador que tenha um processador
cujo registrador MAR tenha tamanho de 20 bits.
Considere também que cada célula de memória RAM
armazene 8 bits (ou seja, 1 byte).
Quanto será a capacidade máxima de memória RAM que
este processador conseguirá gerenciar?

Tempo da atividade: 30 segundos.

37
VAMOS PENSAR?
Resolução:
Se o processador possui MAR com 20 bits, então 220 será
a quantidade de células que ele conseguirá gerenciar.
220 = 1.048.576 células
Se cada célula armazena 1 byte (8 bits), então este
processador será capaz de gerenciar até 1.048.576 bytes,
correto?
Bem, 1 Kb = 1024 bytes. Então,
1048576 / 1024 = 1024 Kbytes
Também, 1 Mb = 1024 Kbytes. Portanto:
1024 / 1024 = 1 Mbyte

Resposta: este processador conseguirá gerenciar no


máximo 1 Mbyte de memória RAM. 38
Como funciona a memória RAM.
Duração: 2’16’’

Fonte: http://www.youtube.com/watch?v=mYbYGFWeG_Y&feature=relmfu

Filme

39
Dispositivos de I/O
• Os dispositivos de entrada e saída

http://www.cultura.ufpa.br/dicas/mic/mic-e-s.htm
(E/S) ou input/output (I /O) são também
denominados periféricos. Eles permitem a
interação do processador com o homem,
possibilitando a entrada e/ou a saída de
dados.
• Podem, também, fazer o
armazenamento de dados.

40
Dispositivos de I/O
• O que todos os dispositivos de entrada têm

http://www.cultura.ufpa.br/dicas/mic/mic-e-s.htm
em comum é que eles codificam a informação
que entra em dados que possam ser
processados pelo sistema digital do
computador. Já os dispositivos de
saída decodificam os dados em informação
que pode ser entendida pelo usuário.

41
• Exemplos:
Dispositivos de I/O

42

http://arquivos.unama.br/nead/graduacao/ccet/processamento_dados/2semestre/org_computadores/unidade3/unidade_3.html
Dispositivos de I/O
• Controladoras
– Controladoras são interfaces de hardware que
tem como função fazer a interconexão de um
determinado dispositivo ao sistema.

a
– É quem conhece os “detalhes técnicos” do
dispositivo controlado.
• Existem diversos tipos de controladoras, tanto on-board
quanto off-board.

43
Dispositivos de I/O
• Controladoras

a
Contr. SCSI Contr. SATA Placa Rede PCI Placa Gráfica

44
Dispositivos de I/O
• Device Drivers

http://www.thecnica.com/artigos/PnP_08_07.pdf
– O driver nada mais é que um pequeno programa
cuja função é permitir aos aplicativos ou ao
sistema operacional propriamente dito interagir
com um dispositivo físico de hardware como uma
placa de som, vídeo ou rede.
– Independentemente do dispositivo ser do tipo
onboard ou off-board, um driver se comunica com
ele através do barramento no qual esse
dispositivo encontra-se conectado ao resto da
placa mãe. 45
Dispositivos de I/O

46

http://www.acso.uneb.br/leandro/NOVOSITE/academic/docs/soI/107.pdf
Dispositivos de I/O
• Técnica de DMA
– DMA significa Direct Memory Access.
– Esta técnica permite que os dispositivos de um
computador acessem a memória RAM, tanto para
leitura quanto para escrita, de modo
independente, sem auxílio da CPU.

47
Dispositivos de I/O
• Técnica de DMA

http://www.thecnica.com/artigos/PnP_08_07.pdf
– O DMA permite que componentes como discos
rígidos, placas gráficas, de rede e som acessem a
memória diretamente, o que aumenta o
desempenho na transferência de dados

48
Dispositivos de I/O
• Técnica de DMA

http://encyclopedia2.thefreedictionary.com/dma
– Antes do DMA, e CPU era obrigada a controlar
todas as operações de I/O, o que a deixava
ocupada sem necessidade!
“PIO is an older method that has
since been replaced by DMA in most
applications due to certain
advantages. DMA is newer and better
than PIO in many ways and many
devices now use mainly DMA with
only minimal PIO support for
compatibility”
FONTE:
http://www.differencebetween.net/technology/difference-
between-dma-and-pio/

49
Para aprender um pouco mais sobre os
dispositivos de entrada e saída, acesse os
links recomendados abaixo.

http://www.cultura.ufpa.br/dicas/mic/mic-e-
s.htm

http://windows.microsoft.com/pt-
br/windows-vista/What-is-a-driver

http://pcworld.uol.com.br/dicas/2008/09/05
/drivers-saiba-o-que-sao-para-que-servem-e-
como-cuidar-bem-deles/

http://www.differencebetween.net/technolo
gy/difference-between-dma-and-pio/

http://www.clubedohardware.com.br/dicion
ario/termo/360
50
FIM DO MÓDULO 1 – Parte I

Prof. MSc. Marco Antonio Alves Pereira


MÓDULO 1
CONCEITOS BÁSICOS DE HARDWARE & SOFTWARE
Parte II

Prof. MSc. Marco Antonio Alves Pereira


Barramento ou BUS

http://www.forumpcs.com.br/comunidade/viewtopic.php?t=141948
• Barramento é um
conjunto de pequenas
“trilhas” que estão na
placa-mãe, cuja função
é interligar os
componentes do
computador

2
Barramento ou BUS

http://alumni.ipt.pt/~sandrina/trabalhos/como_funciona_um_computador.htm
• Os barramentos podem ser:
– Barramento Local ou Processador-Memória
– Barramento de E/S (I/O)

3
Barramento ou BUS

http://www.tecmundo.com.br/hardware/1736-o-que-e-barramento-.htm
• Há três funções distintas nos principais
barramentos E/S de um computador, que, em
termos simples, conectam o processador, a
memória e os outros componentes
conectados a ele pelo que chamamos de
barramentos de entrada e saída.

4
Barramento ou BUS

http://www.tecmundo.com.br/hardware/1736-o-que-e-barramento-.htm
– Barramento de dados – como o próprio nome já
deixa a entender, é por este tipo de barramento
que ocorre as trocas de dados no computador,
tanto enviados quanto recebidos.
– Barramento de endereços – indica o local onde os
processos devem ser extraídos e para onde devem
ser enviados após o processamento.
– Barramento de controle – atua como um
regulador das outras funções, podendo limitá-las
ou expandi-las em razão de sua demanda.
5
http://www.di.ufpb.br/raimundo/PCaFundo/placa_mae/placamae.htm
• Existem vários tipos de barramentos de
E/S, como por exemplo ISA, AGP, PCI, PCI
Express, AMR e outros

6
Para aprender um pouco mais sobre os
conceitos de Barramentos, acesse os links
recomendados abaixo.

Tipos de Barramentos:
http://www.infowester.com/barramentos.php

Placas-mãe e Barramentos:
http://www.hardware.com.br/guias/placas-mae-
barramentos/

O que é Barramento
http://www.tecmundo.com.br/hardware/1736-o-
que-e-barramento-.htm

7
Memória Cache

http://www.hardware.com.br/termos/memoria-cache
• A memória Cache surgiu quando percebeu-se
que as memórias não eram mais capazes de
acompanhar o processador em velocidade,
fazendo com que muitas vezes ele tivesse que
ficar "esperando" os dados serem liberados
pela memória RAM para poder concluir suas
tarefas, perdendo muito em desempenho

8
Memória Cache
• A Cache sempre será menor que a RAM, e
armazenará apenas uma certa quantidade de
dados desta.
• Ou seja, a Cache simplesmente mantém uma

A
cópia de um pequeno pedaço da RAM
• Para quê?
– Ela é mais rápida que a RAM, diminuindo o tempo
que o processador precisa ficar esperando por um
dado a processar.
9
Memória Cache

10

http://images.yourdictionary.com/cache
Memória Cache

11

http://fourier.eng.hmc.edu/e85/lectures/memory/node5.html
Memória Cache

http://www.forumpcs.com.br/comunidade/viewtopic.php?t=105014
• Funcionamento da Cache:
– O funcionamento da memória Cache baseia-se
nos conceitos de Localidade Espacial e Localidade
Temporal.

A Cache L-1 (level 1, ou nível 1) localiza-


se internamente ao processador,
enquanto a Cache L2 (level 2) localiza-
se fora do processador, na placa-mãe.

12
Memória Cache
– Localidade Espacial: quando o processador acessa
uma determinada posição da memória RAM, há
uma grande chance de que a próxima posição a
ser acessada estar próxima da última

A
– Localidade Temporal: quando o processador
acessa uma determinada posição da memória
RAM, há uma grande chance de acessar esta
mesma posição em um intervalo de tempo
relativamente curto

13
A Saga de um Processador
Duração: 8’14’’

Fonte: http://www.youtube.com/watch?v=3W33ojPv_ws

Filme

14
Para aprender um pouco mais sobre os
Memória Cache, acesse os links
recomendados abaixo.

Ótimo artigo – leitura OBRIGATÓRIA:


http://www.ime.uerj.br/professores/Mariaclicia/O
c2/Cap4_memoria.PDF

Entendendo o funcionamento da Cache


http://www.clubepc.org/entendendo-o-
funcionamento-da-memoria-cache-15-12-2007

15
VAMOS PENSAR?
Atividade:
Em equipes de 4 pessoas.
É muito importante o bom entendimento do conceito de
localidade, tanto o temporal quanto o espacial, para
compreendermos vários aspectos de funcionamento dos
sistemas operacionais.
Portanto, discuta com seus colegas e tente reescrever
este conceito. Refaça a conexão entre este conceito e o
funcionamento da memória cache, reexplicando os seus
benefícios.

Tempo da atividade: 15 minutos.

16
Memórias Secundárias

http://www.laercio.com.br/artigos/HARDWARE/HARD-016/HARD-016.HTM
• São as memórias não-voláteis e com grande
capacidade de armazenamento
– Discos Rígidos, disquetes, CD’s, DVD’s, fitas
magnéticas, pendrive, etc... etc...

17
Hierarquia das Memórias

18

http://www.di.ufpb.br/raimundo/Hierarquia/Hierarquia.html
PESQUISE!

A
19
SOFTWARE

Prof. MSc. Marco Antonio Alves Pereira


Kernel

http://www.tecmundo.com.br/mac-os-x/1636-o-que-e-kernel-.htm
• O Kernel é um componente do Sistema
Operacional, mas fica tão escondido que a
maioria dos usuários domésticos sequer ouviu
falar nele. Isso se deve à sua importância: ao
contrário do que pode parecer, ele é tão
essencial para o funcionamento de um
computador que é melhor mantê-lo a salvo de
pessoas bisbilhoteiras e inexperientes.

21
Kernel

http://www.tecmundo.com.br/mac-os-x/1636-o-que-e-kernel-.htm
• Ele começa a funcionar assim que o
computador é ligado; nesse momento ele
inicia a detecção de todo o hardware
indispensável ao funcionamento da máquina
(monitor, placa de vídeo etc.).

22
Kernel

http://www.tecmundo.com.br/mac-os-x/1636-o-que-e-kernel-.htm
• O Sistema Operacional é carregado em
seguida e, uma vez que o usuário faça seu
login, o Kernel passa a administrar as
principais funções dentro do S.O.: isso inclui o
gerenciamento da memória, dos processos,
dos arquivos e de todos os dispositivos
periféricos

23
Kernel
• O kernel não é, necessariamente, um software

http://www.infowester.com/historia_linux.php
manipulável pelo usuário. Ou seja, não se
trata de algo tão simples a ponto de poder ser
instalado e, logo em seguida, estar pronto
para uso, como um programa de edição de
textos, por exemplo. O kernel é uma base
complexa, que serve de estrutura para o
sistema, atuando nos "bastidores". Assim, o
usuário sequer precisa saber de sua existência
para poder utilizar o computador.
24
Kernel

25

http://www.vivaolinux.com.br/artigo/Novidades-do-Kernel-2.6.35
Tipos de Kernel
• Um Kernel pode ser estruturado de duas
formas:
– Kernel Monolítico
– Microkernel

A
26
Kernel Monolítico

http://members.multimania.co.uk/bootpro/articles/pt_intro_prj-kernel.pdf
• Os kernels monolíticos são aqueles que
contém todos os sub-sistemas (serviços
fornecidos pelo kernel, como por exemplo um
sistema de arquivos) em um único executável
binário. Andrew S. Tanenbaum os define como
“A grande bagunça”. É verdade, drivers,
serviços e tudo mais estão contidos neste
mesmo binário. Esta é a forma mais comum
de kernel.
27
Kernel Monolítico

http://members.multimania.co.uk/bootpro/articles/pt_intro_prj-kernel.pdf
• Vantagens
– Normalmente um kernel monolítico tem um
desempenho melhor que outras formas de desenho
de kernel
• Desvantagens
– Um kernel monolítico tende a ser inseguro pois há um
livre acesso a todas as funções de todos os sub-
sistemas
– A manutenção do kernel em nível de programação é
muito prejudicada pois o kernel deve ser recompilado
e substituído por completo para ter acesso a um novo
recurso do kernel

28
Kernel Monolítico

29

http://under-linux.org/blogs/code/linus-torvalds-afirma-o-linux-esta-inchado-1335/
http://members.multimania.co.uk/bootpro/articles/pt_intro_prj-kernel.pdf
• Exemplos de sistemas com kernel
monolítico:

• FreeDOS, MS-DOS, Unixes antigos, Linux


(quando compilados como kernel
monolítico), ModulOS, entre outros.

30
Microkernel

http://members.multimania.co.uk/bootpro/articles/pt_intro_prj-kernel.pdf
• Os microkernels são kernels que tem um
“framework” básico que através de troca de
mensagens, “conversa” como os sub-sistemas
que estão em nível de usuário, funcionando
como programas normais. Por exemplo, o sub-
sistema que implementa um sistema de
arquivos é executado como se fosse um
programa qualquer

31
Microkernel

http://members.multimania.co.uk/bootpro/articles/pt_intro_prj-kernel.pdf
• Vantagens
– Os microkernels são modulares, cada sub-sistema do
microkernel funciona como plug-ins e por isso o
microkernel é extremamente flexível
– Há também a vantagem de um microkernel também pode
ter um executável binário menor que um kernel monolítico
por que o microkernel permite a utilização plug-ins que
podem ser usados de acordo com as necessidades do
projeto
• Desvantagens
– Os microkernels tem um desempenho menor comparado
com um kernel monolítico justamente pelo fato de fazer
um uso muito intenso de troca de mensagens

32
Monolítico x Microkernel

http://mobile.osnews.com/printer.php?news_id=15814
Na arquitetura Monolítica todas Na arquitetura Microkernel as
as rotinas do sistema ficam rotinas do sistema estão fora do
agrupadas em um único bloco de núcleo, sendo executadas como
programa. se fossem programas comuns.

33
Para aprender um pouco mais sobre os Kernel,
acesse os links recomendados abaixo.

LINUX – leitura OBRIGATÓRIA:


http://pt.wikipedia.org/wiki/Linux_(n%C3%BAcleo)

Linux: Kernel e Distribuições


http://www.vivaolinux.com.br/artigo/Linux-kernel-
e-distribuicoes/

34
Linus Torvalds na Globo
Duração: 5’16’’

Fonte: http://www.youtube.com/watch?v=owrai0okB3A

Filme

35
VAMOS PENSAR?
Atividade:
Em equipes de 4 pessoas.
Discuta com seus colegas, pesquise e responda:
É possível proceder algum tipo de alteração no kernel de
um sistema operacional? Exemplifique.

Tempo da atividade: 15 minutos.

36
System Call
• Como viram, o kernel pode ser entendido
como o principal componente do sistema
operacional, e desta forma deve estar de
algum modo protegido do acesso

a
indiscriminado por parte das aplicações.

37
System Call
• Uma System Call (chamada de sistema)

http://pt.scribd.com/doc/27743176/System-Call
é usado pela aplicação (programas) para
solicitação de serviços ao sistema operacional.
Um sistema operacional pode acessar o
hardware de um sistema diretamente, mas
um programa do usuário não tem acesso
direto ao hardware. Isto é feito para que
o kernel possa manter o sistema seguro de
programas de usuário mal-intencionados.
38
System Call
• Muitas vezes, um programa do usuário

http://pt.scribd.com/doc/27743176/System-Call
requer algumas informações do hardware
(por exemplo, de uma câmera web
para mostrar-lhe a imagem), mas não pode
obter as informações diretamente. Assim,
solicita ao sistema operacional para fornecer-
lhe a informação. Esta solicitação é feita
usando uma chamada de sistema adequada.

39
System Call
• As System Calls protegem o kernel:

40

http://ksearch.wordpress.com/2010/09/12/system-call-vs-library-function/
System Call

http://coep.vlab.co.in/?sub=29&brch=88&sim=230&cnt=351
• As aplicações só conseguem utilizar os
serviços do kernel fazendo solicitações via
System Calls:

41
• O termo system call é tipicamente
utilizado em sistemas Unix, porém em
outros sistemas o mesmo conceito é

a
apresentado com diferentes nomes,
como system services no Open VMS e
Application Program Interface (API) no
Windows da Microsoft.

42
Para aprender mais sobre system calls e sua
programação, acesse os links:

A Quest for Technical Expertise


http://ksearch.wordpress.com/2010/09/12/system-
call-vs-library-function/

Introduction to Linux and Embedded Linux


http://coep.vlab.co.in/?sub=29&brch=88&sim=230
&cnt=351

http://www.docstoc.com/docs/55683423/Chapter-
5-The-Kernel-API---System-Calls

Developing C Language Portable System Call


Libraries
http://www.amazon.com/Developing-Language-
Portable-System-Libraries/dp/0471606944

43
Shell
• O Shell (ou Interpretador de comandos) é um

http://www.guiabrasilblog.com/o-que-e-shell/
programa que recebe e em seguida interpreta
e executa os comandos, e aparece na tela
como uma linha de comando, que é
representada por um prompt, e aguarda na
tela o comando do usuário. Então é o Shell
que faz a interpretação de comandos
digitados pelo usuário e chama os programas

44
Shell

http://blogote.com/windows/top-windows-7-themes-for-xp/6938/
http://www.remontti.com.br/blog/archives/tag/shell
• O Shell é o programa que faz o intermédio
entre o computador e usuário, é basicamente
a interface entre o mouse o teclado e o
cérebro do computador.

45
Shell
• O Shell é a camada que faz a interface entre o

http://www.icefusion.com.br/o-shell/
usuário e o Kernel do Sistema Operacional.

46
Loader

http://home-dns.certto.com.br/~aguerra/capitulo1.pdf
• É o utilitário responsável por colocar
fisicamente na memória um programa para
execução. O procedimento de carga varia com
o código gerado pelo linker e, em função
deste, o loader é classificado como sendo do
tipo absoluto ou relocável.

47
Loader

http://home-dns.certto.com.br/~aguerra/capitulo1.pdf
• Se o código executável for do tipo absoluto, o
loader só necessita conhecer o endereço de
memória inicial e o tamanho do módulo para
realizar o carregamento. Então, o loader transfere
o programa da memória secundária para a
memória principal e inicia sua execução (loader
absoluto).
• No caso do código relocável, o programa pode ser
carregado em qualquer posição de memória, e o
loader é responsável pela relocação no momento
do carregamento (loader relocável).

48
VAMOS PENSAR?
Atividade:
Em equipes de 4 pessoas.
Pesquise e defina:

a) Programa-fonte;
b) Programa-objeto;
c) Programa executável
d) Compilador;
e) Linker;
f) Bibliotecas de linguagem;
g) Interpretador.

Tempo da atividade: 45 minutos.


49
É importante que você conheça um pouco sobre
programação e os componentes para
desenvolvimento de sistemas para que possa
compreender como o sistema operacional atua no
momento da carga e da sua execução.

Para isto, acesse os links abaixo e estude seus


conteúdos:

Conceitos Básicos de Programação:


http://www.inf.pucrs.br/~pinho/LaproI/ConceitosBa
sicos/ConceitosBasicos.htm

Diferenças entre Compiladores e Interpretadores:


http://www.oficinadanet.com.br/artigo/1527/difere
ncas_entre_compiladores_e_interpretadores

Interpretadores, Compiladores e Tradutores:


http://www.inf.ufsc.br/~barreto/cca/arquitet/arq4.
htm

Nos próximos “PESQUISE!” você deverá encontrar


seus sites para pesquisar os assuntos propostos! 
50
RESUMINDO...
Neste Módulo você aprendeu a função dos principais componentes
de Hardware de um computador (CPU, Memória, Dispositivos de
E/S e Barramento), e também os principais componentes de
Software de um sistema operacional (kernel, system calls, loader,
shell).
Ainda, foram propostos estudos complementares sobre o
desenvolvimento de programas e seus componentes (compilador,
linker, interpretador, programa-fonte, programa-objeto e programa-
executável.
FIM DO MÓDULO 1 – Parte II

Prof. MSc. Marco Antonio Alves Pereira


SISTEMAS OPERACIONAIS

Prof. MSc. Marco Antonio Alves Pereira


AVISO:
• Todos os slides do curso foram elaborados com
base em conteúdo da Internet, devidamente
referenciados ao seu lado direito.
• Esta “coletânea” de informações tem objetivo
puramente educacional e não será
comercializado, descaracterizando-se o plágio ou
qualquer tipo de utilização indevida.
• Todos os créditos e direitos dos textos, imagens e
vídeos utilizados pertencem aos seus respectivos
proprietários, não estando incorporados ao
presente trabalho.
2
MÓDULO 2
VISÃO GERAL DOS SISTEMAS OPERACIONAIS

Prof. MSc. Marco Antonio Alves Pereira


Ao final deste Módulo, você estará fera em:

http://www.votepelosanimais.org.br/
Entender a diferença entre os
diferentes tipos existentes de S.O.

Conhecer a evolução histórica dos


Sistemas Operacionais.

Compreender COMO os Sistemas


Operacionais executam os programas.
4
A grande pergunta...

O que é um Sistema Operacional?

5
http://www.oficinadanet.com.br/artigo/851/o_que_e_um_sistema_operacional
O que é um Sistema Operacional?
• O sistema operacional é uma coleção de
programas que:

– Inicializa o hardware do computador


– Fornece rotinas básicas para controle de
dispositivos
– Fornece gerência, escalonamento e interação de
tarefas
– Mantém a integridade de sistema
6
http://www.sypnet.com.br/index.php?option=com_content&view=article&id=24:sistema-operacional&catid=1:recentes
Quais são as funções de um S.O.?
• Um Sistema Operacional é um conjunto de
rotinas executadas pelo processador, da
mesma forma como qualquer outro programa.
• Sua principal função é controlar
o funcionamento do computador,
gerenciando os diversos recursos disponíveis
no sistema. O Sistema Operacional executa
basicamente duas funções principais:

7
http://www.sypnet.com.br/index.php?option=com_content&view=article&id=24:sistema-operacional&catid=1:recentes
Duas principais funções do S.O.:
• Facilitar o acesso as recursos do sistema
• Compartilhar de forma organizada e protegida
os recursos do sistema

– RECURSOS: processador, memória, dispositivos de


entrada/saída, etc… etc… etc…

8
Visão Geral do S.O.

Fonte: Arquitetura de Sistemas Operacionais – Machado e Maia


usuários
programadores programas,
e analistas sistemas e
aplicativos

O S.O. é aquele que Usuários

permite ao usuário usar


o hardware de uma
maneira simples!
Sistema Operacional

memória discos

Hardware

fitas
UCP

impressoras monitores

9
História do Computador em minutos.
Duração: 4’56’’

Fonte: http://www.youtube.com/watch?v=F3qWg1JBPZg

Filme

10
Conceitos Básicos e Histórico
• Quais são os conceitos básicos de um Sistema
Operacional?
– Década de 1960
– Década de 1970
– Década de 1980
– Década de 1990
– Década de 2000

11
Para aprender um pouco mais sobre a
evolução dos sistemas operacionais, acesse:

A História dos Sistemas Operacionais


http://www.tecmundo.com.br/sistema-
operacional/2031-a-historia-dos-sistemas-
operacionais-infografico-.htm

12
Introdução aos Sistemas Operacionais.
Duração: 37’33’’

Fonte: http://www.youtube.com/watch?v=Zl9w2HbUecU

Filme

13
Mainframes.
Duração: 4’37’’

Fonte: http://www.youtube.com/watch?v=Cwj6pfhWBps

Filme

14
Tipos de Sistemas Operacionais

http://informatica.hsw.uol.com.br/sistemas-operacionais3.htm
• Existem 4 tipos básicos de sistemas
operacionais. Eles são divididos em grupos
relacionados com o tipo de computador que
controlam e o tipo de aplicativos que
suportam:
– S.O. de Tempo Real
– S.O. Monousuário/Monotarefa
– S.O. Monousuário/Multitarefa
– S.O. Multiusuário

15
Tipos de Sistemas Operacionais

http://informatica.hsw.uol.com.br/sistemas-operacionais3.htm
• Sistema operacional de tempo real
– (RTOS - Real-time operating system). É utilizado
para controlar máquinas, instrumentos científicos
e sistemas industriais. Geralmente um RTOS não
tem uma interface para o usuário muito simples e
não é destinado para o usuário final, desde que o
sistema é entregue como uma "caixa selada". A
função do RTOS é gerenciar os recursos do
computador para que uma operação específica
seja sempre executada durante um mesmo
período de tempo.
16
Tipos de Sistemas Operacionais

http://informatica.hsw.uol.com.br/sistemas-operacionais3.htm
• Monousuário, monotarefa.
– O sistema operacional foi criado para que um
único usuário possa fazer uma coisa por vez. O
Palm OS dos computadores Palm é um bom
exemplo de um moderno sistema operacional
monousuário e monotarefa.

17
Tipos de Sistemas Operacionais

http://informatica.hsw.uol.com.br/sistemas-operacionais3.htm
• Monousuário, multitarefa.
– Este tipo de sistema operacional é o mais utilizado
em computadores de mesa e laptops. As
plataformas Microsoft Windows e Apple MacOS
são exemplos de sistemas operacionais que
permitem que um único usuário utilize diversos
programas ao “mesmo tempo”. Por exemplo, é
perfeitamente possível para um usuário de
Windows escrever uma nota em um processador
de texto ao mesmo tempo em que faz download
de um arquivo da Internet e imprime um e-mail.
18
Tipos de Sistemas Operacionais

http://informatica.hsw.uol.com.br/sistemas-operacionais3.htm
• Multiusuário.
– Um sistema operacional multiusuário permite que
diversos usuários utilizem simultaneamente os
recursos do computador. O sistema operacional
deve se certificar de que as solicitações de vários
usuários estejam balanceadas. Cada um dos
programas utilizados deve dispor de recursos
suficientes e separados, de forma que o problema
de um usuário não afete toda a comunidade de
usuários. Unix, VMS e sistemas operacionais
mainframe como o MVS são exemplos de sistemas
operacionais multiusuário.
19
Tipos de Sistemas Operacionais

http://informatica.hsw.uol.com.br/sistemas-operacionais3.htm
• Sistemas de Tempo Compartilhado:
– Um sistema operacional comercial multitarefa
e/ou multiusuário é classificado como sendo de
Tempo Compartilhado.
• Ou seja, os programas que estão carregados na verdade
não estão sendo executados ao mesmo tempo!
• O S.O. compartilha o tempo do processador (CPU) por
entre estes programas (roda um pouquinho um, para,
roda um pouquinho outro, para, e assim por diante).
• O usuário tem a sensação de que eles estão rodando ao
mesmo tempo!
20
Como seriam classificados os sistemas operacionais mais utilizados
atualmente?

A família Windows, sem dúvida a mais usada, pode ser classificado como
um sistema multitarefa , pois permite a execução de vários programas
simultâneos.
Apesar de poder gerenciar vários usuários (multiusuário), a Microsoft
bloqueia este recurso, que só pode ser usado nas versões server, com a
aquisição de licenças de Terminal Services (TS).

Os sistemas operacionais baseados em Unix (Linux, BSD, p.ex.) são todos


multitarefa e multiusuário.

21
Sistema Operacional:
uma máquina de níveis?

http://informatica.hsw.uol.com.br/sistemas-operacionais3.htm
• Existe um conceito de níveis na arquitetura de
computadores. A ideia básica é que existem
muitos níveis nos quais o computador pode
ser considerado, do nível mais alto, onde o
usuário executa programas, ao nível mais
baixo, que consiste de transistores e fios.

22
Sistema Operacional:
uma máquina de níveis?

Fonte: Arquitetura de Sistemas Operacionais – Machado e Maia


Aplicativos

Utilitários

Sistema Operacional

Linguagem de Máquina

Microprogramação

Circuitos Eletrônicos

23
Para aprender um pouco mais sobre os
conceitos de Sistemas Operacionais, acesse
os links recomendados abaixo.

Leia os textos e complemente seus


conhecimentos!

Excelente site! How Stuff Work:


http://informatica.hsw.uol.com.br/sistemas-
operacionais.htm

Muito boa apostila! Leitura OBRIGATÓRIA:


http://www.gta.ufrj.br/ensino/EEL580/apres
entacoes/Parte1.pdf

24
VAMOS PENSAR?
Atividade:
Em equipes de quatro pessoas.

Realize uma pesquisa e descubra quais são as


características dos sistemas operacionais Windows
Server e Linux, com relação às características estudadas
neste capítulo.

Tempo da atividade: 20 minutos.

25
VAMOS PENSAR?
Atividade:
Em equipes de quatro pessoas.

Realize uma pesquisa e descubra quais são as


características dos sistemas operacionais Windows
Server e Linux, com relação às características estudadas
neste capítulo.

Tempo da atividade: 20 minutos.

26
RESUMINDO...
Neste módulo você aprendeu o que são e quais são os tipos de
sistemas operacionais existentes (monousuário, monotarefa e
multitarefa).
Também entendeu como os sistemas operacionais evoluíram, e por
fim compreendeu que um sistema computacional pode ser
entendido como uma máquina de níveis, onde o nível mais alto está
próximo ao usuário e o mais baixo refere-se aos circuitos eletrônicos
do sistema.
FIM DO MÓDULO 2

Prof. MSc. Marco Antonio Alves Pereira


SISTEMAS OPERACIONAIS

Prof. MSc. Marco Antonio Alves Pereira


AVISO:
• Todos os slides do curso foram elaborados com
base em conteúdo da Internet, devidamente
referenciados ao seu lado direito.
• Esta “coletânea” de informações tem objetivo
puramente educacional e não será
comercializado, descaracterizando-se o plágio ou
qualquer tipo de utilização indevida.
• Todos os créditos e direitos dos textos, imagens e
vídeos utilizados pertencem aos seus respectivos
proprietários, não estando incorporados ao
presente trabalho.
2
MÓDULO 3
TÉCNICAS E OPERAÇÕES

Prof. MSc. Marco Antonio Alves Pereira


Ao final deste Módulo, você estará fera em:

Identificar os tipos de programas

http://www.votepelosanimais.org.br/
existentes e entender como são
executados.

Entender os conceitos de
Interrupção e Exceção.

Entender como funcionam Buffers,


Spool de Impressão e Reentrância.
4
O que é um Programa?

http://pt.wikipedia.org/wiki/Programa_de_computador
• O programa de computador surgiu antes do
desenvolvimento do computador eletrônico.
Um trabalho publicado em 1843 por Ada
Lovelace, sugerindo uma forma para calcular
os números de Bernoulli através da máquina
analítica de Charles Babbage, é tido como o
primeiro programa de computador.

5
O que é um Programa?

Ada Lovelace

Máquina Analítica

Charles Babbage
6
O que é um Programa?

http://pt.wikipedia.org/wiki/Programa_de_computador
• A primeira aplicação prática da programação
surgiu com os dispositivos baseados em
cartões perfurados, que eram utilizados desde
o século XVIII na indústria da confecção. O
empresário estadunidense Hermann
Hollerith utilizou o conceito no processamento
dos dados do censo dos Estados Unidos em
1890.

7
O que é um Programa?

Perfuradora de cartões

Máquina Tabuladora

Herman Hollerith
8
O que é um Programa?

http://pt.wikipedia.org/wiki/Programa_de_computador
• Os primeiros computadores eletrônicos eram
programados somente através de linguagens de
baixo nível. Essas linguagens não disponibilizavam
um nível de abstração sobre o hardware e os
comandos eram interpretados diretamente
pelos circuitos eletrônicos. No ENIAC, um dos
equipamentos mais emblemáticos na história da
computação, a programação era realizada através
de ligações manuais, que uniam as unidades de
processamento do computador, formando uma
sequência de execução. 9
O que é um Programa?
• ENIAC

Válvula Eletrônica
10
História do ENIAC.
Duração: 6’20’’

Fonte: http://www.youtube.com/watch?v=gQbTeayG6Dg

Filme

11
O que é um Programa?

http://pt.wikipedia.org/wiki/Programa_de_computador
• As linguagens de alto nível surgiram por volta
da década de 1940 e tiveram grande impulso
com o desenvolvimento dos compiladores,
que tornaram a programação uma atividade
possível para um grande número de pessoas.
Na década de 1950 surgiu a primeira
linguagem de grande aceitação, o Fortran.

12
O que é um Programa?
• Normalmente, programas de computador são

http://pt.wikipedia.org/wiki/Software
escritos em linguagens de programação, pois
estas foram projetadas para aproximar-se das
linguagens usadas por seres humanos.
Raramente a linguagem de máquina é usada
para desenvolver um programa. Atualmente
existe uma quantidade muito grande de
linguagens de programação, dentre elas as
mais populares no momento são Java, Visual
Basic, C, C++, PHP, dentre outras.
13
Para aprender um pouco mais sobre os
pioneiros da computação e também dar boas
risadas, tente encontrar o livro:

“Introdução Ilustrada à Computação – com


muito humor”, de Larry Gonick.

É um livro maravilhoso! Pena que está fora de


edição, sendo encontrado apenas em pdf e
em “sebos” na Internet...

Leitura OBRIGATÓRIA!

14
Como um programa é executado?
• Um programa de computador é composto por

http://pt.wikipedia.org/wiki/Software
uma sequência de instruções, que é
interpretada e executada por um processador
• Em um programa correto e funcional, essa
sequência segue padrões específicos que
resultam em um comportamento desejado.

15
Como um programa é executado?
• Quando um software está representado como

http://pt.wikipedia.org/wiki/Software
instruções que podem ser executadas
diretamente por um processador dizemos que
está escrito em linguagem de máquina.

16
Como um programa é executado?
• A execução de um software também pode ser

http://pt.wikipedia.org/wiki/Software
intermediada por um programa interpretador,
responsável por interpretar e executar cada
uma de suas instruções. Uma categoria
especial e notável de interpretadores são
as máquinas virtuais, como a Máquina virtual
Java (JVM), que simulam
um computador inteiro, real ou imaginado.

17
VAMOS PENSAR?
Qual outro interpretador também é muito usado
atualmente, por muuuuuita gente?

Os _ _ _ _ _ _ _ _ _ _ _ !

18
Jeliot – a Java program visualization system.
Duração: 0’45’’

Fonte: http://www.youtube.com/watch?v=f5ahEgu5Ba0

Filme

19
http://www.cristiancechinel.pro.br/my_files/algorithms/bookhtml/node19.html
Linguagem de Máquina e Assembly
• A linguagem de máquina é composta
somente por números, representados de
forma binária, que, sob o ponto de vista
do computador, representam as
operações e os operandos que serão
usados no processamento do programa.
Para um ser humano, a linguagem de
máquina é dificílima de se compreender.
Assim, existe uma linguagem
representada por comandos mas que
reproduz as tarefas que serão executadas
dentro do computador, a linguagem de
montagem (assembly).
20
http://www.cristiancechinel.pro.br/my_files/algorithms/bookhtml/node19.html
Linguagem de Máquina e Assembly
• Abaixo é mostrado o início de um programa que escreve a
frase “Olá Mundo” no monitor. Na coluna da esquerda está o
endereço relativo de memória, na coluna do centro o
programa escrito em linguagem de máquina e na coluna da
direita a representação em caracteres ASCII

00000000 7F 45 4C 46 01 01 01 00 00 00 00 00 00 00 00 00 .ELF............
00000010 02 00 03 00 01 00 00 00 D0 82 04 08 34 00 00 00 ............4...
00000020 BC 0C 00 00 00 00 00 00 34 00 20 00 07 00 28 00 ........4. ...(.
00000030 24 00 21 00 06 00 00 00 34 00 00 00 34 80 04 08 ..!.....4...4...
00000040 34 80 04 08 E0 00 00 00 E0 00 00 00 05 00 00 00 4................

21
Interrupção e Exceção
• Durante a execução de um programa, alguns

http://www.truenet.com.br/vivianef/SOI.html
eventos podem ocorrer durante seu
processamento, obrigando a intervenção do S.O.
Este tipo de intervenção é denominado
interrupção ou exceção e pode ser resultado da
execução de instruções do próprio programa,
gerado pelo SO ou por algum dispositivo de
hardware.
• Nestas situações o fluxo de execução do
programa é desviado para uma rotina especial de
tratamento. O que diferencia uma interrupção de
uma exceção é o tipo de evento que gera esta
condição. 22
Interrupção
• Quando algo acontece no ambiente e
necessita da atenção do processador, o
programa que está sendo executado precisa
ser interrompido para que o S.O. rode uma de

a
suas rotinas de tratamento.
Hmmm... Lembro de ter
visto isto no filme “A Saga
de um Processador”!
Este evento é chamado de
Interrupção.

23
Interrupção

http://www.inf.puc-rio.br/~inf1018/2010.2/interrupcoes.html
• Interrupções geradas por algum dispositivo
externo à CPU, como teclado ou controlador
de disco, são exemplos de
interrupções assíncronas (ocorrem
independentemente das instruções que a CPU
está executando).

24
Interrupção

http://www.inf.puc-rio.br/~inf1018/2010.2/interrupcoes.html
• Quando ocorre uma interrupção, a CPU
interrompe o processamento do programa em
execução e executa um pedaço de código
(tipicamente parte do sistema operacional)
chamado de tratador de interrupção. Em
muitos casos, após a execução do tratador, a
CPU volta a executar o programa
interrompido.

25
Interrupção

http://pt.scribd.com/doc/5565518/02CONCORRENCIA
• Procedimento do tratamento de Interrupções:

26
Interrupção

http://www.inf.puc-rio.br/~inf1018/2010.2/interrupcoes.html
• Um tipo importante de interrupção de
hardware é a interrupção do relógio. Em
particular, esse mecanismo permite ao
sistema operacional atribuir quotas de tempos
de execução (fatias de tempo) para cada um
dos programas em um sistema multitarefa.

27
Interrupção

http://www.inf.puc-rio.br/~inf1018/2010.2/interrupcoes.html
• A cada interrupção do relógio, o tratador pode
verificar se a fatia de tempo do programa em
execução já se esgotou e, se for esse o caso,
suspendê-lo e acionar o escalonador para que
esse escolha outro programa para colocar em
execução.

28
Exceção
• A exceção ocorre quando a execução do
programa é interrompida, mas não por causa
de um evento externo (como na interrupção),
mas sim em função de algum evento interno

a
ao programa.

29
Exceção
• Ao contrário da interrupção, a exceção é um
evento síncrono, ou seja, quando um
determinado evento acontece em um
programa, se este programa for novamente

a
executado com os mesmos dados de entrada,
o evento ocorrerá novamente, no mesmo
ponto onde já havia ocorrido.

30
Exceção
• Considere:
A := 20
B := 0

a
• O que vai
acontecer?

31
Exceção
• Exemplo de
tratamento de
Exceção:

a
32
http://pt.kioskea.net/contents/langages/langages.php3
Certas linguagens pertencem, em certa medida, às duas categorias:
interpretadas e compiladas (LISP, Java, Python), porque o programa
escrito com estas linguagens pode, em certas condições, sofrer uma fase
de compilação intermédia para um arquivo escrito numa linguagem que
não é compreensível (por conseguinte, diferente do arquivo fonte) e não
executável (necessidade de um intérprete).
Os applets Java, pequenos programas inseridos às vezes nas páginas
Web, são arquivos que são compilados mas que se podem executar
apenas a partir de um navegador Internet.

33
34

http://pt.kioskea.net/contents/langages/langages.php3
VAMOS PENSAR?
Atividade: Formem uma equipe de quatro pessoas e
discuta os seguintes assuntos. Façam um resumo do que
entenderam de cada um deles:

1) Programas em linguagem de máquina, assembly e de


alto nível
2) Diferenças entre Interrupção e Exceção
3) Linguagens compiladas, interpretadas e
intermediárias.

Tempo da atividade: 20 minutos.

35
Para aprender um pouco mais sobre
linguagens de programação, acesse os links
recomendados abaixo.

Leia os textos e complemente seus


conhecimentos!

http://pt.kioskea.net/contents/langages/lang
ages.php3

http://www.oficinadanet.com.br/artigo/prog
ramacao/diferencas_entre_linguagem_compi
lada_e_linguagem_interpretada

http://www.dee.feis.unesp.br/graduacao/dis
ciplinas/langc/apostila/c_04_linguagem_de_
programacao.pdf
36
Buffer

http://pt.wikipedia.org/wiki/Buffer_(ci%C3%AAncia_da_computa%C3%A7%C3%A3o)
• Em ciência da computação, buffer (retentor) é uma
região de memória temporária utilizada para escrita e
leitura de dados. Os dados podem ser originados de
dispositivos (ou processos) externos ou internos ao
sistema. Os buffers podem ser implementados
em software (mais usado) ou hardware. Normalmente
são utilizados quando existe uma diferença entre a taxa
em que os dados são recebidos e a taxa em que eles
podem ser processados, ou no caso em que essas taxas
são variáveis.
• Os buffers são mecanismos muito utilizados em
aplicações multimídia, em especial nas aplicações
de streaming. 37
Spool de Impressão (Spooling)

http://cemshost.com.br/bcc/w/Cap%C3%ADtulo_1_-_Introdução
• Spooling é a técnica de escrever dados em um
local temporário (no disco, por exemplo) para
que eles possam ser acessados no futuro. É
geralmente utilizado quando dois devices
possuem velocidades de leitura/escrita muito
diferentes; assim é possível ajustar a mesma a
cada um deles.

• Spool = Simultaneous Peripheral Operation Online

38
• Exemplos de Spool:
Spool de Impressão (Spooling)

39

http://www.freebsd.org/doc/en/books/corp-net-guide/printserving-network.html
Reentrância

http://www.ebah.com.br/content/ABAAABlZUAH/apostila-sistemas-operacionais
• É comum, em sistemas multiprogramáveis,
vários usuários utilizarem os mesmos
aplicativos simultaneamente, como editores
de texto, compiladores e outros utilitários.
Nesta situação, se cada usuário que utilizasse
um destes aplicativos trouxesse o código
executável para a memória, haveria então
diversas cópias de um mesmo programa
ocupando espaço na memória, o que causaria
um grande desperdício de espaço. 40
Reentrância

http://www.ebah.com.br/content/ABAAABlZUAH/apostila-sistemas-operacionais
• Reentrância é a capacidade de um código
executável (código reentrante) ser
compartilhado por vários usuários, exigindo
apenas uma cópia do programa em memória.
A reentrância permite que cada usuário esteja
executando um trecho diferente do código
reentrante, manipulando dados próprios,
exclusivos de cada usuário.

41
RESUMINDO...
Você aprendeu que os processadores (CPU’s) só conseguem executar código
binário, portanto todos os programas devem estar neste formato para serem
reconhecidos. Desta forma, ou os programas precisam ser compilados ou
interpretados.
Aprendeu também que os buffers ajudam no desempenho do sistema, uma vez
que ajudam a diminuir a diferença de velocidade entre processador e dispositivos
de E/S. O spooling também tem esta função, porém exclusivamente para com as
impressoras.
Por fim, viu que a reentrância ajuda a economizar a memória principal do
sistema, pois mantém apenas uma cópia de um programa carregada e que pode
ser compartilhada por vários usuários ou várias sessões de um mesmo usuário.
FIM DO MÓDULO 3

Prof. MSc. Marco Antonio Alves Pereira


SISTEMAS OPERACIONAIS

Prof. MSc. Marco Antonio Alves Pereira


MÓDULO S.A.:
SISTEMAS DE ARQUIVOS

Prof. MSc. Marco Antonio Alves Pereira


Introdução a Sistemas de Arquivos
• Necessidade de armazenar informação de
modo permanente;
• Informação: perdurar ao fim do processo que
a criou;

a
• Que possa ser acessada concorrentemente
por vários processos;
Tipicamente, a necessidade de armazenar
grandes volumes de informação!
Introdução a Sistemas de Arquivos
• Arquivo: um conjunto de bytes armazenado
em um dispositivo não volátil.
• Além dos bytes de dados, Arquivos têm
Metadados:

a
– Identificar a informação armazenada (nome e
extensão, opcionalmente);
– Permissões de acesso aos dados;
– Local onde os dados estão armazenados;
– Outras informações...
Existem regras e exceções para a criação de
nomes de arquivos, tanto no sistema
operacional Windows quanto nos Unix-like,
como o Linux.

Faça uma busca no Google com “regras para


nomes de arquivos em {windows,linux} “ e
encontrará muitos artigos interessantes, como
estes:

https://www.cursosdeinformaticabasica.com.br/q
uais-sao-os-caracteres-invalidos-para-a-criacao-
de-arquivos-e-pastas/

https://www.oficinadanet.com.br/artigo/linux/list
a_de_comandos_em_arquivos_e_diretorios_no_li
nux
Introdução a Sistemas de Arquivos
• Duas principais funções do Sistema de
Arquivos :
– define a forma como o sistema operacional
organiza os dados e os metadados dos arquivos

a
em um dispositivo de armazenamento
permanente.
– Organização de um cache e suas estruturas de
dados em memória com parte das informações do
disco: eficiência.
Introdução a Sistemas de Arquivos
• Tudo em um S.O. é arquivo!
• Diretório: é um arquivo especial que
armazena parte dos metadados de outros
arquivos.

a
https://www.jntelecom.com.br/conhecendo-a-estrutura-de-diretorios-do-linux/
Introdução a Sistemas de Arquivos
• Diretórios contém arquivos (de dados ou
outros diretórios);
• Os diretórios são organizados em Árvore:
Introdução a Sistemas de Arquivos
• Caminhos: junção de nomes de diretórios até
chegar a um determinado arquivo.

– Caminhos absolutos

a
– Caminhos relativos
Introdução a Sistemas de Arquivos
• Diretório Corrente: local onde o processo está
executando na árvore de diretórios.

a
• Exemplos sobre caminhos:
Introdução a Sistemas de Arquivos

http://www.cassic.com.br/tutoriais/lenny/caminho_de_diretorios
Introdução a Sistemas de Arquivos

https://www.qconcursos.com/questoes-de-concursos/questoes/a39fca0c-5d
• Como os arquivos são gravados no disco?
– Disco: organizado em setores, trilhas e cilindros.

https://slackspace.com.br/
https://www.profissionaisti.com.br/diferenca-entre-cluster-e-setor-de-um-disco-rigido-hd/
Introdução a Sistemas de Arquivos
• Formatação Física do disco:
– Na fábrica: é gravada, na placa lógica, a tabela de
endereçamento das áreas de armazenamento do
HD;
– Processo onde o disco é “mapeado” em setores,
cada um com seu endereço físico  utilizado pelo
S.O. para organizar as informações gravadas;
– Setor: menor porção física de um HD  mapeado
no disco rígido, com tamanho de 512 bytes cada.
https://www.profissionaisti.com.br/diferenca-entre-cluster-e-setor-de-um-disco-rigido-hd/
Introdução a Sistemas de Arquivos
• Formatação Lógica do disco:
– Habilitar no disco a capacidade de se instalar um
Sistema Operacional;
– Organização dos setores em Clusters, dentre
outras ações.
Introdução a Sistemas de Arquivos
• Cluster:

https://www.hardware.com.br/termos/cluster
– Um conjunto de setores do HD que são
endereçados pelo sistema operacional como uma
única unidade lógica;
– Um cluster é a menor parcela do HD que pode ser
acessada pelo sistema operacional;
– Cada cluster tem um endereço único;
– Um arquivo grande é dividido em vários clusters,
mas um cluster não pode conter mais de um
arquivo, por menor que seja.
Introdução a Sistemas de Arquivos

http://scxo1oc06c.blogspot.com/2012/03/slack-space.html
• Slack Space:
– Por exemplo, um sistema com Cluster de 2K ao
armazenar um arquivo de 768 bytes:
Exemplos de Sistemas de Arquivos
• FAT16 (DOS): cluster de 32KB; gerenciamento
máximo de 2GB;
• FAT32 (Windows 98 até 2000): clusters de 4, 8,
16 e 32KB, chegando a gerenciar até 2TB.

a
• ExFAT/FAT64 (desenv. pela MS em 2006):
clusters de até 32MB  usado principalmente
em memórias flash, para arquivos únicos
maiores do que 4GB.
Exemplos de Sistemas de Arquivos
• NTFS : amplamente utilizado atualmente nos

https://www.infowester.com/ntfs.php
Sistemas Operacionais da Microsoft.
– Sua primeira aparição foi no Windows NT, sistema
operacional para uso em servidores cuja primeira
versão foi lançada em 1993.
– A Microsoft não possuía nenhum sistema operacional
capaz de fazer frente ao Unix e suas variações em
aplicações de servidores. Seus principais produtos
eram o MS-DOS e a linha Windows 3.x, sistemas
operacionais para uso doméstico ou em escritório. Era
preciso criar algo novo, capaz de disputar mercado
com as soluções baseadas em Unix. Foi aí que surgiu o
Windows NT.
Exemplos de Sistemas de Arquivos
• NTFS – Principais características:

https://www.infowester.com/ntfs.php
– Clusters de 512 bytes a 64KB, com tamanho
máximo de gerenciamento chegando a 256TB.
– Escrita única de arquivos maiores do que 4GB;
– Journaling;
– Controle de acesso a arquivos/permissões;
– Criptografia;
– Suporte à replicação de dados;
– Compactação.
https://minaslinux.trimabo.com/2015/08/o-ex-engenheiro-do-google-acelera-um.html
Exemplos de Sistemas de Arquivos
• Os sistemas baseados
em Unix (Unix-like
systems), o que inclui
os sistemas com
kernel Linux, podem
utilizar-se de uma
grande variedade de
Sistemas de Arquivos.
Exemplos de Sistemas de Arquivos
• A família EXTFS (Extended File System) foi e

https://hackerculture.com.br/?p=537#_ftn1
continua sendo a mais usada, sendo o EXT4FS
atualmente o padrão habilitado para a maioria
das distribuições.
Exemplos de Sistemas de Arquivos
• EXT4FS

https://hackerculture.com.br/?p=537#_ftn1
– Utilizado a partir de 2008;
– Gerencia até 1EB (exabyte) de disco;
– 16TB de tamanho máximo de arquivo único;
– Número ilimitado de subdiretórios;
– Partições de até 1024 petabytes;
– Suporta journaling.
Exemplos de Sistemas de Arquivos
• Outros destaques:

https://e-tinet.com/linux/sistema-de-arquivos/
– XFS: padrão do sistema Red Hat – semelhante ao
EXT4FS, destaca-se por gerenciar arquivos de até 8
exbibytes (8 milhões de terabytes).
– BTRFS: desenvolvido de maneira independente por
diversas instituições e gigantes do mercado (Linux
Foundation, Intel, Oracle, Facebook, Red Hat, SuSe,
Fujistu). O formato se caracteriza pela tolerância a
falhas, manutenção, gerenciamento e sua capacidade
de trabalhar com arquivos de até 16 exbibytes. É, sem
dúvida alguma, um dos mais poderosos sistemas de
arquivos (e se encontra em franco desenvolvimento).
FIM DO MÓDULO S.A.

Prof. MSc. Marco Antonio Alves Pereira


SISTEMAS OPERACIONAIS

Prof. MSc. Marco Antonio Alves Pereira


AVISO:
• Todos os slides do curso foram elaborados com
base em conteúdo da Internet, devidamente
referenciados ao seu lado direito.
• Esta “coletânea” de informações tem objetivo
puramente educacional e não será
comercializado, descaracterizando-se o plágio ou
qualquer tipo de utilização indevida.
• Todos os créditos e direitos dos textos, imagens e
vídeos utilizados pertencem aos seus respectivos
proprietários, não estando incorporados ao
presente trabalho.
2
MÓDULO 4
PROCESSO
Parte 1

Prof. MSc. Marco Antonio Alves Pereira


Ao final deste Módulo, você estará fera em:
Entender o conceito de processo e sua importância

http://www.votepelosanimais.org.br/
para os sistemas operacionais.

Compreender como os processos se comportam


durante sua existência, seus estados e suas
mudanças de estado.

Identificar os tipos de processos, subprocessos,


threads e o conceito de sinais.

4
Programas e Processos

http://pt.scribd.com/doc/5565560/03PROCESSOS
• O conceito de processo é a base para a imple-
mentação de um sistema multitarefa.
• O processador é projetado apenas para
executar instruções, não sendo capaz de
distinguir qual programa se encontra em
execução.

5
http://gsd.di.uminho.pt/members/jpo/2006-2007/processos_handout_2x2.pdf
Programas e Processos
• Então, podemos definir que:
– Um programa é um arquivo executável que reside
em um diretório de um disco.
• Quando um programa é carregado para a
memória e executado pelo kernel, passa a ser
chamado de processo.
• Portanto, uma instância em execução de um
programa é designada por processo.

6
http://www.tecmundo.com.br/memoria/3197-o-que-sao-processos-de-um-sistema-operacional-e-por-que-e-importante-saber.htm
Um sistema operacional não executa somente os programa que
podemos ver. Imagine que os aplicativos que você roda reúnem diversas
instruções e comandos, porém, são os processos que efetivamente
executam esses comandos.
Isso significa que um único aplicativo pode ter vários processos
relacionados a ele. Por exemplo, o navegador Google Chrome, que
executa uma nova tarefa a cada aba aberta. Essa medida permite que
cada aba seja gerenciada individualmente e, mesmo que uma trave, as
outras continuam trabalhando normalmente.

Os processos representam tarefas em execução, mas nem todas têm


relação direta com algum aplicativo. Muitas delas são executadas em
pano de fundo e mantêm o sistema trabalhando - gerenciando redes,
memória, disco, checagem antivírus, etc.

7
Processos
• Como você viu, o processador apenas executa
instruções, sejam de quem for!
• Portanto, quem deve gerenciar os vários
processos que serão executados pelo

a
processador é o sistema operacional.

8
Processos
• Mas... Gerenciar o quê??? Que informações
um programa em execução (processo) tem???

a
Qual é o estado deste processo?
Onde na memória foi carregado?
Que dia e hora foi carregado?
Qual é sua identificação?

Qual usuário o carregou?

9
Processos
• Na verdade, cada vez que um programa é
carregado (passando a ser chamado de
processo), uma estrutura é criada para
gerenciá-lo. Esta estrutura é chamada de PCB

a
(Process Control Block – ou Bloco de Controle
do Processo).

10
Processos
• O PCB é uma estrutura
de dados que armazena
todas as informações de
um processo enquanto

a
ele existir.

11
Processos

Machado e Maia – Arquitetura de Sistemas Operacionais


• Ok... nome

• O PCB armazenará estas PID registradores


gerais
owner (UID)

informações, divididas prioridade de


execução registrador PC

em três grandes grupos: data/ hora


de criação Contexto de
Software
Contexto de
Hardware

– Contexto de Software tempo de


processador
registrador SP

– Contexto de Hardware quotas


Programa registrador
privilégios de status
– Espaço de Espaço de
Endereçamento

Endereçamento
endereços de memória
principal alocados

12
Processos
• Contexto de Software:
– Armazena as informações de identificação do
processo:
• Nome do processo

a
• PID (Process Identifier) – número/código do processo
• PPID (Parental Process Identifier) – PID do processo pai
• UID (User Identifier) – Usuário que carregou o processo
• Prioridade do processo
• Data e hora de criação
• Tempo de processador
• Outras informações que estudaremos mais tarde... 13
Processos
• Espaço de Endereçamento:
– Armazena as informações referentes aos
endereços de memória principal alocados para
este processo:

a
• Endereços de memória usados pelo código
• Endereços de memória usados pelos dados do processo

14
Processos
• Contexto de Hardware:
– Este é o local onde serão salvos os valores que se
encontram nos registradores da CPU quando o
relógio interromper o processo que está em

a
execução.

15
Processos
• Estrutura do PCB na memória:

Contexto de Software Espaço de Endereç. Contexto de Hardware

a
Nome PID PPID UID Prior. Dt/Hr End1 End2 End3… Reg1 Reg2 Reg3…

PCBa

PCBb

PCBc

16
http://atikum.ueuo.com/atikum_bibliotecaonline/computacao/so/teoria/tutorapido01/so_intro_frame.htm
Estados dos Processos
• Os sistemas de computadores atualmente
permitem que vários programas sejam
colocados na memória e executados
simultaneamente. Com isso, a divisão de
tarefas entre os diversos programas tem que
ser feita com um maior controle.

17
Aguardando...
Aguardando... Aguardando...
Aguardando...

Estados dos Processos


• Um processador só consegue executar UM
programa/núcleo por vez, enquanto outros
ficam aguardando sua chance de serem
Aguardando...
executados:

a
Execução!
Execução! 18
Então, quer dizer que...

http://www.inf.ufrgs.br/~johann/sisop1/aula04.ciclo.processo.pdf
• Processos nascem
– No momento de sua criação (via chamada de
sistema
• Processos vivem
– Executam na CPU, liberam a CPU (E/S)…
– Executam:
• Programas dos usuários
• Programas do sistema (daemons)
• Processos morrem
– Ou porque terminaram sua execução
– Ou porque um outro processo os matou:
• Erro, acesso não-autorizado, falha
19
Estados dos Processos
• Assim, é importante você entender que os
processos passam por diversos ESTADOS
durante sua existência:
– Novo (New)

a
– Pronto (Ready)
– Execução (Running)
– Espera (Waiting)
– Terminado (Terminated)

20
Estados dos Processos
• Novo (new)
– Quando um programa é carregado, o seu PCB
precisa ser criado, recursos alocados...
– Enquanto tudo isto não estiver pronto, o processo

a
se encontra no estado de Novo.
• Ou seja, ele ainda não pode ser colocado no estado de
Pronto, por um motivo óbvio: ele não está pronto! 

21
Estados dos Processos
• Pronto (ready)
– Agora sim! O PCB já foi criado e todos os recursos
necessários à execução do processo estão
garantidos.

a
– Assim, ele está pronto para ser executado!
• Por que não está executando, então???

RESPONDAM!!! POR QUÊ???


22
Estados dos Processos
• Execução (running)
– Finalmente chega a vez do processo executar!
– Seu contexto de hardware (conteúdo dos
registradores salvo no PCB) é lido e carregado nos

a
registradores.
– O processo agora vai executar durante alguns
milissegundos e... pode mudar para:
• Pronto, novamente
• Espera, ou
• Terminado
23
Estados dos Processos
• Espera (waiting) Também chamado de Bloqueado (Blocked)
– Um processo mudará para o estado de espera
quando for colocado na fila de espera de E/S
devido ao processador de E/S ser mais lento que a
CPU principal.

a
• O processo tornaria a CPU escrava dele se não
houvesse esse estado, pois como ele não está
concorrendo à CPU ao executar uma E/S, pode-se então
colocá-lo no estado de espera para que os demais
processos do estado pronto possam concorrer a CPU.
– Ou seja, quando precisar realizar uma operação
de E/S!
24
Estados dos Processos

http://pt.scribd.com/doc/5565560/03PROCESSOS
• Terminado (terminated)
– Acabou de rodar... Quando a execução do
processo chega ao fim (ou se ele for morto!),
então ele vai para o estado de Terminado.
• Um processo no estado de terminado não poderá mais
ser executado, porém o sistema operacional ainda
mantém suas informações de controle presentes em
memória. Como o seu PCB ainda existe, o sistema
operacional pode recuperar informações sobre a
contabilização de uso de recursos do processo, como o
tempo total gasto do processador, por exemplo.
25
Mudança de Estados dos Processos
• Ou seja, um processo não fica o tempo todo
executando!
– Ou ele está executando
– Ou está esperando uma operação de E/S

a
– Ou está pronto para executar, aguardando a sua
chance de usar o processador.

26
Mudança de Estados dos Processos

a
P2 Pronto Execução P1
P4 Pronto Execução P5
P6 Pronto Execução P9
P8Pronto ...

P3 – Imprimindo
P7 – Aguardando teclado

27
Mudança de Estados dos Processos
• O tempo máximo que um processo pode usar
o processador é chamado de Time Slice ou
Quantum.
• O valor do Time Slice depende do sistema

a
operacional.
– No Windows, este valor está entre 10 e 15 ms
(milissegundos).
– No Linux é um múltiplo de 10 ms, inferior a 100
ms. (processos podem ter TS diferentes).
28
Mudança de Contexto
• Você entendeu que um processo não fica em
execução todo o tempo.
• Na verdade o processador é compartilhado por
entre os diversos processos carregados, certo?
• Mas, quando o processo é interrompido pelo
sistema operacional, o seu ponto de execução
deve ser preservado para que, quando voltar ao
processador, volte a executar exatamente do
mesmo ponto onde parou!
29
Mudança de Contexto
• O segredo para que isto aconteça é que o
sistema operacional, no momento que
interrompe o processo que está no
processador, salva o conteúdo de todos os
registradores do processador no seu PCB.
• Quando voltar ao processador, basta que o
sistema leia os valores que foram salvos no PCB
deste processo e leve-os de volta aos
registradores.

30
Mudança de Contexto
• Esta troca dos valores armazenados nos

http://train-srv.manipalu.com/wpress/?p=39175
registradores de um processo pelo de outro é
chamada de Mudança de Contexto.

31
Exemplo de três processos
compartilhando a CPU:

http://www.metropoledigital.ufrn.br/aulas/disciplinas/sist_operacional/aula_10.html
1) Inicialmente a CPU não está
executando nenhum deles.
2) A CPU executa o Processo 1
3) A CPU deixa de executar o
Processo 1, salva o conteúdo
dos registradores no PCB1, lê
os valores dos registradores
em PCB2 e começa a executar
o Processo 2.
4) A CPU deixa de executar o
Processo 2, salva o conteúdo
dos registradores no PCB2, lê
os valores dos registradores
em PCB3 e começa a executar
o Processo 3.

32
VAMOS PENSAR?
Quando você está usando o computador, normalmente
com o Windows, é possível abrir várias janelas, certo?
Cada janela corresponde a um programa em execução,
ou seja, um processo.
Você não tem a impressão de que todos estão sendo
executados ao mesmo tempo?

Atividade: discuta com seus colegas por que existe esta


impressão, mesmo sabendo que os processos não estão
executando o tempo todo e nem ao mesmo tempo.

Outra: é possível a um processador executar vários


processos realmente ao mesmo tempo? Se sim, quantos?

Tempo: 10 minutos.

33
http://pt.kioskea.net/contents/langages/langages.php3
É possível ver quais processos estão em execução? Sim!
No Windows basta acessar o Gerenciador de Tarefas e
clicar na aba Processos.
No Linux você pode usar o comando top para visualizar
os processos em execução.

34
Para aprender mais sobre processos, acesse os
links abaixo e estude-os!

http://www.inf.ufrgs.br/~johann/sisop1/aula04.cic
lo.processo.pdf

http://pt.wikipedia.org/wiki/Processo_(informátic
a)

http://atikum.ueuo.com/atikum_bibliotecaonline/
computacao/so/teoria/tutorapido01/so_intro_fra
me.htm

http://www.metropoledigital.ufrn.br/aulas/discipli
nas/sist_operacional/aula_10.html

35
Tipos de Processos
• Os processos podem ser:
– Foreground ou Background
– CPU Bound ou I/O Bound

a
36
Tipos de Processos
• Processos Foreground:
– São aqueles executados em primeiro plano, ou
seja, aqueles que interagem com o usuário.
• Processos Background:

a
– São aqueles que estão sendo executados em
segundo plano; não interagem com o usuário.
• Por exemplo: anti-virus.

37
Tipos de Processos
• Processos CPU Bound:
– São aqueles que usam muito o processador, fazem
muitos cálculos (aplicações científicas, por
exemplo).

a
38
Tipos de Processos
• Processos I/O Bound:
– Passam a maior parte do seu tempo de existência
realizando operações de E/S (lendo teclado,
imprimindo, lendo ou gravando dados em disco,

a
transmitindo dados pela rede...).
• Aplicações comerciais são tipicamente I/O Bound!

39
Na ciência da computação, I/O bound é um
termo utilizado para designar os processos
que fazem uso intensivo
de entrada/saída (I/O). Todos os sistemas
operacionais executam processos de entrada
e saída, como por exemplo algum usuário
querendo copiar um arquivo para o Pen
Drive. Esses processos são conhecidos
como I/O bound porque fazem pouco uso
da CPU.
No entanto existem processos conhecidos
como CPU bound, que fazem muito uso da
CPU, a citar alguns jogos eletrônicos que
utilizam recursos gráficos em 3D de alta
complexidade.

Fonte: http://pt.wikipedia.org/wiki/I/O_bound
40
SOsim: Simulador para o Ensino de
Sistemas Operacionais

O SOsim foi desenvolvido pelo prof. Luiz Paulo


Maia como parte de sua tese de mestrado no
Núcleo de Computação Eletrônica da Universidade
Federal do Rio de Janeiro (NCE/UFRJ), defendida
em 2001 e orientada pelo prof. Ageu Pacheco. O
objetivo deste trabalho foi desenvolver uma
ferramenta gratuita que permitisse facilitar e
melhorar as aulas de sistemas operacionais para
alunos e professores.

Seu download pode ser efetuado em:


http://www.training.com.br/aso

OBRIGATÓRIO: FAÇA O DOWNLOAD E


INSTALE EM SEU COMPUTADOR!

41
Simulador de sistemas operacionais SOsim
Duração: 6’40’’

Fonte: http://www.youtube.com/watch?v=6KUeMwXmU_A

Filme

42
FAÇA VOCÊ MESMO!
Você já ouviu falar em softwares como VirtualBox, VMWare
Workstation e VMWare Player?
São programas que permitem a criação de Máquinas Virtuais
em seu computador.
Ou seja, em sua máquina doméstica você consegue
“simular”um hardware sobre seu Windows e “configurar” um
hardware virtual, instalando depois um sistema operacional
real neste computador.
Acesse: http://www.virtualbox.org e faça o download do
programa. É gratuito!
Depois, crie uma máquina virtual e instale um sistema
operacional (Windows, Linux ou BSD).
Você pode também fazer o download do VMware Player em
https://my.vmware.com
O Player permite executar máquinas prontas. Você encontra
várias imagens prontas para download na Internet.
43
VirtualBox – Video Aula
Duração: 14’54’’

Fonte: http://www.youtube.com/watch?v=S73JlL8bjuA

Filme

44
FIM DO MÓDULO 4
Parte 1

Prof. MSc. Marco Antonio Alves Pereira


SISTEMAS OPERACIONAIS

Prof. MSc. Marco Antonio Alves Pereira


AVISO:
• Todos os slides do curso foram elaborados com
base em conteúdo da Internet, devidamente
referenciados ao seu lado direito.
• Esta “coletânea” de informações tem objetivo
puramente educacional e não será
comercializado, descaracterizando-se o plágio ou
qualquer tipo de utilização indevida.
• Todos os créditos e direitos dos textos, imagens e
vídeos utilizados pertencem aos seus respectivos
proprietários, não estando incorporados ao
presente trabalho.
2
MÓDULO 4
PROCESSO
Parte 2

Prof. MSc. Marco Antonio Alves Pereira


http://www.ppgia.pucpr.br/~laplima/ensino/soee/materia/02_processos.html
Subprocessos
• Em um sistema operacional, todos os
processos são “filhos” de outro processo.
– O processo que cria um outro processo é
chamado de processo pai, enquanto o processo
criado é chamado de processo filho ou sub-
processo:

4
Subprocessos

http://pt.scribd.com/doc/56258529/65/Subprocesso-e-Thread
• O subprocesso, por sua vez, pode criar outros
subprocessos.
• Como consequência desta estrutura, caso um
processo deixe de existir, os subprocessos
subordinados são eliminados.

5
Subprocessos

http://equipe.nce.ufrj.br/thome/grad/so_old/apostila/Processos.pdf
• Nos sistemas operacionais mais antigos, cada
processo possuía um único fluxo de controle, ou
seja, as instruções eram executadas
sequencialmente, uma de cada vez.
• Já nos sistemas mais modernos, um processo
pode, por sua vez, dar início a um ou mais
subprocessos, que são executados em paralelo
ou de forma concorrente com o processo pai e,
para todos os efeitos, apresentam as mesmas
características e particularidades de um processo
qualquer, no tocante a contexto e fluxo de
controle. 6
Subprocessos
• Quer dizer então que...

• Um programa pode solicitar ao sistema


operacional para colocar em execução um
outro programa???

7
Subprocessos
• Considerações sobre subprocessos:
– Um subprocesso é tratado pelo S.O. como um
processo;
– Todo subprocesso tem PCB próprio e compartilha

a
o processador como os processos;
– Os subprocessos passam pelos mesmos estados
que um processo;
– Relação hierárquica: o subprocesso é “filho” do
pai, assim, em eliminado o pai, o subprocesso
também é eliminado!
8
Threads
• Como você viu os subprocessos são tratados
como processos, inclusive tendo seu próprio
PCB e passando pelos mesmos estados.
• Com o intuito de reduzir o tempo gasto na

a
criação ou eliminação de processos
e economizar recursos, surgiu o conceito de
thread.

9
Threads

http://pt.scribd.com/doc/56258529/65/Subprocesso-e-Thread
• Threads compartilham o processador da
mesma maneira que um processo.
• Por exemplo, enquanto um thread espera por
uma operação de E/S, outro thread pode ser
executado.

10
Threads

http://pt.scribd.com/doc/56258529/65/Subprocesso-e-Thread
• A grande diferença entre subprocessos e
threads é em relação ao espaço de
endereçamento: enquanto subprocessos
possuem, cada um, espaços de
endereçamento independentes e protegidos,
threads compartilham o mesmo espaço de
endereçamento do processo, sem nenhuma
proteção, permitindo assim que um thread
possa alterar dados de outro thread.
11
Threads

http://equipe.nce.ufrj.br/thome/grad/so_old/apostila/Processos.pdf
• Threads representam uma nova concepção na
forma de um processo paralelizar a execução
de partes do seu código. Os threads,
conceitualmente, se assemelham a
subprocessos porém não possuem identidade
própria e, portanto, não são independentes.
Cada thread possui seu próprio contador de
programa, sua pilha e seus registradores
porém compartilham todos o mesmo espaço
de endereçamento, isto é, como se fossem
uma única entidade.
12
Threads

http://equipe.nce.ufrj.br/thome/grad/so_old/apostila/Processos.pdf
• Exemplo: Processo Y com 3 subprocessos e
Processo X com 3 Threads

13
Threads
• Traduzindo...
• Threads são “pedaços” de um mesmo
programa que são executados de modo
concorrente, ou seja, como se fossem outros

a
programas.
• O programador pode criar quantos threads
quiser a partir de um programa (processo).
• A estrutura que controla os threads é
chamada de TCB (Thread Control Block).
14
DotNet Minutes - Trabalhando com Threads
Duração: 6’33’’

Fonte: http://www.youtube.com/watch?v=xiPahPWUI6U

Filme

15
Processos Independentes
• São processos criados por outro processo,
porém não existindo nenhuma relação
hierárquica entre eles.
– Se o processo pai for morto, o filho continuará

a
sendo executado;
– Na prática, é quando um programa chama para
execução outro programa totalmente diferente.
• Exemplo???

16
Ambientes Monothread e Multithread
• Monothread:
– Cada processo tem apenas um thread.
– Concorrência se dá apenas com processos
independentes ou subprocessos.

a
– Problema - criar, gerenciar e eliminar processos é
computacionalmente caro.
– Compartilhar o espaço de endereçamento é
complexo, por conta dos mecanismos
empregados.
– Processo → Unidade de alocação e de
escalonamento.
17
Ambientes Monothread e Multithread
• Multithread:
– Permite que tenhamos aplicações concorrentes de forma
mais eficiente:
• Aumenta o desempenho, por dispensar mecanismos de
comunicação dentro do processo.
• Aumenta a eficiência, por termos menos sobrecarga do sistema

a
como um todo
– Menos processos e mais threads.
– Programas associados a threads.
– Os threads sofrem mudança de estado (pronto, espera e
execução), e tem seu próprio bloco de controle(o TCB).
– Processo -> Unidade de alocação.
– Thread -> Unidade de escalonamento.
– O S. O. vê e escalona os threads de cada processo
18
VAMOS PENSAR?
Atividade: EM QUE SITUAÇÃO PODEM SER USADOS
THREADS???

Imagine um programa em execução (ou seja, um


processo), que você desenvolveu.
Em que situação este processo pode precisar criar um ou
mais threads?

Discuta esta questão com seus colegas, em equipes de 3


pessoas. Faça anotações.

Duração da atividade: 10 minutos.

19
Para aprender mais sobre Threads, acesse os
seguintes sites e ESTUDE-OS:

O que são threads em um processador?


http://www.tecmundo.com.br/9669-o-que-sao-
threads-em-um-processador-.htm

O que é um thread? – Fazendo mais de uma coisa


ao mesmo tempo (ÓTIMA ANIMAÇÃO):
http://www.dsc.ufcg.edu.br/~jacques/cursos/map
/html/threads/threads1.html

O que são threads e como usá-las em seus


programas
http://www.arquivodecodigos.net/dicas/java-o-
que-sao-threads-e-como-usa-las-em-seus-
programas-2762.html

Utilizando Threads – Parte1


http://www.devmedia.com.br/utilizando-threads-
parte-1/4459
20
Processos do Sistema

Machado e Maia – Arquitetura de Sistemas Operacionais


• O conceito de processo, além de estar
associado a aplicações de usuários, pode
também ser implementado na própria
arquitetura do sistema operacional, conforme
visto nos sistemas com arquitetura
microkernel.
• Quando processos são utilizados para a
implementação de serviços do
sistema,estamos retirando código de seu
núcleo, tornando-o menor e mais estável. 21
http://pt.kioskea.net/contents/langages/langages.php3
Em um computador com o sistema Linux instalado, a última etapa da
inicialização do sistema é a criação do processo init pelo kernel.
A partir daí, todos os outros processos são criados.

O init é o pai de todos os processos e é o último passo executado no


processo de inicialização do sistema Linux.
O init procura pelo arquivo /etc/inittab que descreve os processos a
serem inicializados para o funcionamento do sistema.

Para aprender mais sobre o procedimento de inicialização do sistema


Linux, acesse e leia o texto disponível em:
http://www.cin.ufpe.br/~phmb/sysadm/boot.html

Conheça um pouco mais sobre a criação de processos em Linux em:


http://www.juliobattisti.com.br/tutoriais/paulocfarias/linuxbasico014.asp

22
http://pt.wikipedia.org/wiki/Sinal_(ci%C3%AAncia_da_computa%C3%A7%C3%A3o)
Sinais
• Os sinais são meios usados para que os
processos possam se comunicar e para que o
sistema possa interferir em seu
funcionamento.
• Essencialmente, um sinal é uma notificação
assíncrona enviada para um processo com o
objetivo de notificar a ocorrência de um
evento. Quando um sinal é enviado a um
processo, o sistema operacional interrompe o
seu fluxo normal de execução.
23
http://pt.wikipedia.org/wiki/Sinal_(ci%C3%AAncia_da_computa%C3%A7%C3%A3o)
Sinais
• Determinadas combinações de teclas, ao serem
pressionadas no terminal de controle de um
processo em execução, fazem com que o sistema
envie determinados sinais a este processo:
– CTRL-C (DEL em versões antigas do Unix) envia um
sinal INT (SIGINT); normalmente causa o término do
processo.
– CTRL-Z envia um sinal TSTP (SIGTSTP); normalmente
causa a suspensão da execução do processo.
– CTRL-\ envia um sinal QUIT (SIGQUIT); normalmente
causa o término da execução do processo e a geração
de um core dump.
24
http://pt.wikipedia.org/wiki/Sinal_(ci%C3%AAncia_da_computa%C3%A7%C3%A3o)
Sinais
• A chamada de sistema kill envia um sinal ao
processo, se o usuário tiver permissão para
tal. De maneira parecida, o comando kill do
Unix permite que um "usuário" envie sinais a
um processo.
• As exceções causadas por divisão por zero ou
violação de segmento de memória geram
sinais (SIGFPE e SIGSEGV, respectivamente,
gerando um core dump).
25
Para entender melhor os sinais, veja os
seguintes textos:

http://pt.wikipedia.org/wiki/Sinal_(ci%C3%AAncia
_da_computa%C3%A7%C3%A3o)

http://www.vivaolinux.com.br/artigo/Processos-
no-Linux?pagina=2

http://doc.fug.com.br/handbook/basics-
daemons.html

26
PESQUISE!

A
27
RESUMINDO...
Neste módulo você aprendeu que processo nada mais é do que um
programa em execução.
Entendeu que os processos não ficam o tempo todo utilizando o
processador, mas passam por diversos estados durante sua
existência.
Também entendeu que existem classificações de processos, e como
estes são criados e controlados pelo sistema operacional.
FIM DO MÓDULO 4
Parte 2

Prof. MSc. Marco Antonio Alves Pereira

Você também pode gostar