Buscar

Aula02 Sistemas Operacionais

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 11 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 11 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 11 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Estrutura de dados 
Tipo abstrato de dados 
(TAD) 
Sistemas Operacionais
Processos
Fundamentos de Sistemas Operacionais – Processos 2 
Processos 
 
2.1 O que são processos? 
 
Antes de definir o que é um processo, vamos iniciar lembrando o que é 
um programa de computador. Um programa é um conjunto de códigos que 
poder ser interpretado e executado por um computador. Normalmente, esse 
código está gravado no HD de um computador e dizemos que este código é 
uma entidade passiva, ou seja, ele está simplesmente armazenado no HD, 
mas não tem nenhum efeito, não faz nenhuma ação: ele está simplesmente 
ocupando espaço sem interação. Quando esse programa de computador é 
colocado em execução, ele se torna uma entidade ativa, que interage com o 
sistema e passa a ser chamado processo. Então um processo pode ser 
definido como um programa em execução. 
Um processo ocupa necessariamente espaço em memória, pois tem 
suas instruções executadas pelo processador a partir da memória. Além 
disso, um processo pode consumir outros recursos do sistema, como 
dispositivos de E/S. 
Dentro do sistema operacional, é possível observar e gerenciar os 
processos em execução em um determinado instante. Por exemplo, no 
Windows utilizamos o Gerenciador de Processos, como pode ser visto na 
figura 1. Observe que a janela mostrada traz algumas informações 
importantes a respeito de cada processo, como o nome, o número de 
identificação (PID), nome do usuário que ativou o processo, quantidade de 
memória que o processo está utilizando, o número de threads que o processo 
possui, entre outras. 
Fundamentos de Sistemas Operacionais – Processos 3 
 
2.2 Controle de processos 
 
Assim como podemos ver o sistema operacional, como um gerente de 
recursos físicos, como memória e dispositivos de E/S, ele também é o 
responsável por realizar o gerenciamento dos processos. Esse papel envolve 
as seguintes operações: 
 Criar processos: a partir do momento em que um programa for 
colocado em execução, como vimos na definição, um processo 
é gerado. Para isso, o sistema operacional deve alocar recursos 
para o processo, como espaço em memória para o código e 
dados, tempo de uso do processador. 
 Terminar um processo: Quando o processo terminar sua 
execução, todos os recursos que estavam em uso por ele 
devem ser liberados, como o espaço em memória. 
 Bloquear um processo: Em alguns momentos, durante a 
execução de um processo, ele pode ser suspenso enquanto 
aguarda a conclusão de alguma tarefa. Durante esse período, o 
processador passa a ser utilizado por outro processo. Uma das 
operações que provoca o bloqueio de um processo é leitura ou 
Figura 1. Gerenciador de Processos Windows 7. 
Fundamentos de Sistemas Operacionais – Processos 4 
gravação de arquivo em disco que tenha sido solicitada pelo 
processo em execução. 
 Retomar um processo: Depois do período em que um 
processo fica bloqueado, ele volta a ser colocado em execução. 
 Escalonar um processo: é sinônimo de escolher um processo. 
Nos equipamentos modernos, existem diversos processos em 
execução, mas não há tantos processadores disponíveis para 
que cada um seja executado por um processador. Desta forma, 
o sistema operacional deve escolher a cada momento os 
processos que serão colocados em execução e quais deverão 
ser colocados na fila de espera. 
 Alternar entre processos: essa operação é realizada diversas 
vezes por minuto, cada vez que um novo processo é 
escalonado, outro que estava em execução deve ter sua 
execução temporariamente suspensa, para que o processo 
escalonado seja executado. 
 
Curiosidade 
 
O primeiro sistema de tempo compartilhado, que permitia a execução 
de diversos processos controlados pelo sistema operacional, foi concebido no 
início da década de 1960 no MIT (Massachusetts Institute of Technology) e 
foi chamado CTSS (Compatible Time-Sharing System – Sistema de Tempo 
Compartilhado Compatível). Em 1965, em conjunto com o Bell Labs, o 
mesmo grupo começou a trabalhar no sucessor deste sistema, o Multics 
(Multiplexed Information adn Computing Service), o sistema operacional que 
influenciou a origem de outros sistemas operacionais, como o UNIX. 
(DEITEL, 2005). 
 
2.3 Estados de um processo 
 
A partir das operações definidas em 2.1, a cada momento um 
processo pode estar em um dos estados mostrados na figura 2. 
Fundamentos de Sistemas Operacionais – Processos 5 
 
 
A seguir, há a descrição de cada um dos estados indicados na figura 
2. 
 
 Novo (new): Um processo está no estado de novo, 
imediatamente após ser acionado, por um clique de mouse ou 
uma chamada no prompt de comando por exemplo. Nesse 
estado, um processo é preparado para execução, seu código é 
carregado em memória, suas variáveis e tudo mais que for 
necessário à sua execução. 
 Pronto (ready): Logo após processo estar disponível para ser 
executado, ele entra no estado de pronto, o que significa que o 
processo tem tudo o que precisa para ser executado. 
Normalmente, existem diversos processos nesse estado 
durante a execução do sistema operacional. Todos eles 
aguardam apenas seu momento no processador. 
 Executando (running): Nesse status, o processo fato está 
sendo executado no processador naquele momento. Caso a 
máquina na qual esse processo esteja sendo executado tenha 
um único processador e seja single core (tem apenas um 
núcleo de processamento), podemos afirmar que há apenas um 
processo em execução por vez. Por outro lado, caso a máquina 
em questão possua mais de um processador, ou possua um 
processador multi-core (com mais de um núcleo de 
processamento), podem existir mais de um processo em 
execução ao mesmo tempo. 
 Bloqueado (waiting): Um processo encontra-se no estado de 
Figura 2. Estados de um processo (SILBERSCHATZ, 2000). 
Fundamentos de Sistemas Operacionais – Processos 6 
bloqueado ou espera quando ele não tem todos os recursos 
necessários para continuar sua execução, ou está aguardando 
a conclusão de alguma tarefa pelo sistema operacional ou pelo 
hardware. Como exemplo, podemos citar o caso de um 
processo que precisa aguardar a conclusão da gravação de um 
arquivo em disco. Nesse caso, o processo só voltara ao estado 
de pronto quando o arquivo tiver sido gravado no disco. 
 Finalizado (terminated): Neste estado, um processo é 
finalizado, o que significa que a memória e os demais recursos 
que eram utilizados estão sendo liberados para o sistema 
operacional, para que estes recursos possam ser 
disponibilizados para outros processos. 
 
Observe que, de acordo com a figura 2, a transição de um estado para 
outro não é possível para qualquer outro. Somente são possíveis as 
transições seguindo os caminhos indicados na figura 1. Por exemplo, não é 
possível um processo sair do estado bloqueado para o estado executando de 
forma direta. 
 
2.4 Bloco de controle de processos 
 
Para que o sistema operacional possa gerenciar um processo, é 
necessário armazenar uma série de informações a respeito desse processo. 
Para isso o sistema operacional mantém, para cada processo, uma tabela de 
informações, chamada Bloco de Controle do Processo (PCB – Process 
Control Block). Algumas destas informações são: 
 
 ID do processo: Um número que identifica de forma única um 
processo, ou seja, é como se fosse o RG ou CPF de um 
processo dentro do sistema. 
 Estado: Indica em qual dos estados do ciclo de vida um 
processo se encontra. 
 Prioridade: É um número que indica a importância do processo 
comparado a outros. No momento do escalonamento, o sistema 
operacional pode utilizareste número para definir que processo 
será executado primeiro. 
 Registradores: É um conjunto de valores que é utilizado para 
instruções de baixo nível no processador. Por meio destes 
valores, são realizadas operações no processador. 
 Endereço de memória: Armazena endereços de memória que 
Fundamentos de Sistemas Operacionais – Processos 7 
estão sendo utilizados pelo processo. 
 Arquivos abertos: Indicam quais são os arquivos que estão 
sendo utilizados pelo processo. 
 
Leitura complementar 
 
Os processos em execução no sistema operacional normalmente 
obedece a uma hierarquia. Para saber mais acesse o artigo: 
<www.devmedia.com.br/hierarquia-de-processos-no-unix-e-windows/24739>. 
Acesso em: jul. 2013. 
 
Curiosidade 
 
O sistema operacional Linux permite gerencial de forma bastante 
detalhada o que acontece com um processo via linha de comando. Para 
saber mais detalhes de como fazer e quais são os comandos permitidos 
acesse o link: 
<www.infowester.com/linprocessos.php>. Acesso em: jul. 2013. 
 
2.5 O que são threads 
 
Um thread é uma linha de execução, ou seja, uma sequência de 
código em execução. Da maneira como apresentamos o processo até este 
momento, existe uma única linha de execução no processo, ou seja, ele é 
capaz de realizar apenas uma instrução de cada vez. Este é um processo de 
thread único (single-thread). Já um processo com várias linhas de execução 
paralelas é chamado de processo com múltiplos threads (multithreads). A 
figura 3 ilustra os dois tipos de processos. 
 
 
 
 
 
 
 
 
 
Fundamentos de Sistemas Operacionais – Processos 8 
 
 
 
 
 
 
 
 
 
 
 
 
Todo processo tem pelo menos uma linha de execução, porém os 
sistemas operacionais modernos podem gerenciar processos que possuem 
mais de uma linha de execução, significando que é possível para um mesmo 
processo ter mais de uma linha de execução simultaneamente. Para 
exemplificar esse conceito, imagine que um processador de textos esteja em 
execução. Se esse processo possui uma única linha de execução, então não 
é possível digitar e executar o corretor ortográfico simultaneamente. Mas se 
este processo possui mais de uma linha de execução, significa que à medida 
que o usuário digita o texto, simultaneamente o corretor ortográfico revisa o 
texto que está sendo digitado. 
É importante salientar que a execução de threads simultaneamente 
somente é possível se o processo foi programado para ser múltiplos threads, 
se o sistema operacional no qual o processo está executando possui recurso 
para gerenciar processos com múltiplos threads e também que o processador 
possui múltiplos núcleos. 
Os threads são conhecidos também como processos leves, porque 
são criados a partir de um processo e compartilham alguns dos itens 
presentes neste processo. Por exemplo, a área de memória do processo é 
compartilhada com o thread. Se houverem múltiplos threads em execução 
para um mesmo processo, todos irão acessar a mesma área de memória. 
Por outro lado, a pilha de execução deverá ser única para cada um dos 
threads. Este fato pode ser observado na figura 3, na qual código, dados e 
arquivos são compartilhados, e os registrados e a pilha não são 
compartilhados. 
O fato de um thread não possuir exclusivamente todos os itens 
presentes em um processo, faz com que a criação dele seja mais rápida do 
que a de um processo. Estima-se que a criação de um thread é cerca de 30% 
Figura 3. Processos de um ou mais threads (Silberschatz, 2000). 
Fundamentos de Sistemas Operacionais – Processos 9 
mais rápida. 
 Uma das vantagens imediatas da utilização de threads na construção 
de um programa é que há a possibilidade de ganho no tempo de execução. 
 
2.5.1 Estados de um thread 
 
Assim como um processo pode estar em diferentes estados a cada 
momento, o thread também pode assumir diferentes estados. A figura 4 
ilustra os diferentes estados em que um thread criado na linguagem Java 
pode estar a cada momento, e que estão relacionados à máquina virtual 
Java. 
 
 
 
 
 
 
 
 
2.5.2 Benefícios do uso de threads 
 
Ao utilizar threads no desenvolvimento de um programa há uma série 
de benefícios obtidos. 
 Economia: Em geral, alocar memória e recursos para um 
processo é demorado. Como threads compartilham recursos e 
áreas de memória com o processo que as criou, torna-se mais 
rápido a criação de um thread em relação à criação de um 
processo. 
 Capacidade de resposta: Se uma aplicação não faz uso de 
multithreads e, por algum motivo, o processo é bloqueado, toda 
a aplicação também será. Por outro lado, com o uso de 
multithreads, se um dos threads for bloqueada, isso não impede 
as demais de continuar a executar, não bloqueando a aplicação 
como um todo. 
 Desempenho: Ao utilizar multithreads, um processo pode ter 
diversas linhas de execução de seu código executadas em 
paralelo, o que faz com que haja um ganho de tempo de 
execução para a aplicação. 
Figura 4. Estados de um thread em Java (Silberschatz, 2000). 
Fundamentos de Sistemas Operacionais – Processos 10 
Naturalmente, não há apenas ganhos no uso de threads. Uma 
desvantagem é a complexidade do código que se torna maior, dificultando 
também algumas questões implícitas, como tratar acesso concorrente a 
recursos. Esse assunto será abordado em outra unidade do curso. 
 
2.5.3 Implementação de threads 
 
Existem dois modelos básicos de implementação de threads em um 
sistema operacional. Na primeira forma, conhecida como threads de 
aplicação, uma aplicação possui diversos threads em execução, porém o 
sistema operacional irá “enxergar” apenas um processo. O gerenciamento de 
threads é feito pela aplicação por meio de bibliotecas, fornecidas pela 
linguagem na qual a aplicação foi desenvolvida. O outro modelo é conhecido 
como threads de kernel, nas quais a aplicação possui diversos threads e o 
sistema operacional gerencia cada uma delas. 
 
2.4 Comunicação entre processos 
 
Dentro de um sistema que permita a execução concorrente de 
processos, é muito comum que haja comunicação entre eles. Por exemplo, 
um editor de textos precisa enviar um arquivo para ser impresso pelo 
gerenciador de impressão, ou um aplicativo pode solicitar dados a um 
gerenciador de banco de dados. O sistema operacional deve fornecer 
mecanismos para que essa comunicação seja possível. 
Uma das técnicas utilizadas quando os processos estão em execução 
na mesma máquina é por meio do envio de interrupções, que são enviadas a 
partir de um processo ou hardware para indicar que certo evento aconteceu 
ou que há um processo ou recurso aguardando ser atendido. Cada 
interrupção é distinguida por um número, e um processo pode mascarar uma 
destas interrupções disponíveis no sistema operacional para sua utilização, 
de tal forma que sempre que esta interrupção for detectada, o sistema 
redirecionará o sinal para o processo que mascarou a interrupção. 
Outra técnica utilizada nos sistemas atualmente é a troca de 
mensagens, especialmente quando estamos falando sobre sistemas 
distribuídos, no qual dois processos estão se comunicando a partir de duas 
máquinas diferentes, por meio de uma rede. Nesse caso, a comunicação 
pode ser feita de forma assíncrona e bidirecional, ou seja, não é necessário 
que o processo seja interrompido durante a comunicação e que a mensagem 
pode ser enviada a partir de qualquer um dos processos envolvidos na 
comunicação. 
A figura 5 ilustra dois processos se comunicando na mesma máquina 
Fundamentos de Sistemas Operacionais – Processos 11 
(a) e dois processos se comunicandoem duas máquinas diferentes por meio 
de rede (b). 
 
 
 
 
 
 
 
 
BIBLIOGRAFIA 
 
SILBERSCHATZ, A.; GALIN, P.; GAGNE, G. Sistemas operacionais: 
Conceitos e aplicações. Rio de Janeiro: Campus, 2000. 
 
TANENBAUM, A. S. Sistemas operacionais modernos. São Paulo: Pearson 
Prentice Hall, 2009. 
 
DEITEL, H. M; DEITEL, P. J.; CHOFFNES, D. R. Sistemas operacionais. São 
Paulo: Pearson Prentice Hall, 2005. 
 
P1 P2 P1 P2 
(a) (b) 
Figura 5. Comunicação entre processos.

Outros materiais