INSTITUTO FEDERAL DE
EDUCAÇÃO, CIÊNCIA E TECNOLOGIA
BAHIA
Sistemas Operacionais
Prf. Msc. Igor de Oliveira CostaINSTITUTO FEDERAL DE
EDUCAÇÃO, CIÊNCIA E TECNOLOGIA
PROCESSOS
Um SO executa uma variedade de programas:
• Sistemas Batch
• Programas de usuários ou tarefas
– Processo
• É uma entidade dinâmica e efêmera
• O Processo é um programa em execução.
• Associado a ele temos: espaço de endereçamento, uma lista de posições de memória e um conjunto de
PROCESSOS
• Primeiros SOs
– Somente um programa era executado em cada momento;
• SOs atuais
– Multiprogramação vários programas executando concorrentemente
PROCESSOS
• Tabela de Processos
Vetor de estruturas( Uma lista encadeada) de estrutura uma para cada processo.
PROCESSOS
• Principais chamadas ao sistema de
gerenciamento de processos são aquelas que lidam com a criação e o término de processos.
– Exemplo compilar um programa em C no DEV, após a compilação o compilador se auto finaliza;
• Processos filhos
– É quando um processo cria outro processo, e assim por diante;
PROCESSOS
• Principais chamadas ao sistema de
gerenciamento de processos são aquelas que lidam com a criação e o término de processos.
– Exemplo compilar um programa em C no DEV, após a compilação o compilador se autofinaliza;
• Processos filhos
– É quando um processo cria outro processo, e assim por diante;
• Processos podem se comunicar quando
trabalham em cooperação, isto é chamado comunicação interprocessos;
PROCESSOS
• Cada pessoa a utilizar um sistema é atribuída uma UID(user identification), dessa forma todo processo iniciado tem uma UID de quem iniciou; • Usuários com permissões específicas tem
poderes para finalizar e alterar processos;
• Para visualizar os processos no windows, utiliza-se o gerenciador de tarefas, com o comando crtl + alt + del, no linux o comando PS AUX
O Modelo de Processos
Todo software em execução no computador, incluindo o SO, é um processo sequencial, ou simplesmente processo.
Um processo é um programa em execução, incluindo valores atuais do PC, dos registradores e das variáveis.
Conceitualmente, cada processo possui sua CPU virtual.
Na realidade, a CPU está sendo trocada rapidamente de programa para programa.
O Modelo de Processos
O Modelo de Processos
Processo x Programa
Analogia Cozinheiro(CPU), Receita(Programa), Ingredientes e Preparação do Bolo.
Criação de Processos
• Os sistemas operacionais precisam assegurar de algum modo a existência de todos os processos necessários.
• Em sistemas que executam apenas uma única aplicação, é possível ter todos os processos que serão necessários,
presentes quando sistema é ligado (alimentado).
• Para sistemas de propósito geral é necessário algum modo de criar e terminar processos durante a operação, quando for preciso.
• Principais eventos que causam a criação de
processos:
– Inicialização do sistema
– Execução de um sistema de criação de processo – Solicitação do usuário para criar novo processo – Inicialização de um trabalho de lote
• Inicialização do sistema
Criação de Processos
São processos em primeiro plano, interagem com o
usuário e realizam tarefas para ele. Podem ser
também processos em segundo plano que não
• Exemplo de processos em segundo plano:
– Processos que fiquem designado para aceitar mensagens eletrônicas;
– Processos que fiquem esperando requisições para páginas web hospedadas naquela máquina;
• Processos que ficam em segundo plano com a finalidade de tratar alguma atividade como
mensagens eletrônicas, páginas WEB, notícia, impressão, entre outros são chamados de
daemons.
• Execução de um sistema de criação de processos:
– Muitas vezes, um processo em execução emitirá chamadas ao sistema para criar um ou mais novos processos para ajudá-lo em seu trabalho.
– Programas em módulos (Contabilidade, RH, Compras, etc)
– Grande quantidade dados transmitida pela Rede. – Pode ser necessário a criação de processo para
• Solicitação do usuário para criar novo
processo
– Em sistemas interativos, abertura de várias janelas do mesmo sistema a CPU está
desempenhado processos diferentes para cada janela.
• Início de um job em lote
– Essa situação para programas em lote, nesses sistemas os usuários podem submeter até
remotamente jobs em lote para o sistema.
• Tecnicamente todos os casos um novo
processo é criado por um processo existente
executando uma chamada ao sistema de
Finalização dos Processos
• Condições de término do Processo
– Saída normal (voluntária) – Saída com erro (voluntária) – Erro Fatal (involuntária)
Hierarquia de Processos
• Processos pais criam processos filhos, processos filhos podem criar seus próprios processos
• Formam uma hierarquia
– UNIX chama esta hierarquia de ”grupo de processos“ • Windows não possui conceitos para hierarquia de
processos
Estados dos Processos
• Em um SO com multiprogramação, um
processo, durante sua existência, passa por
uma série de estados;
– Novo: O processo é criado;
– Execução/rodando: está associado a um
processador que está executando suas instruções; – Pronto: aguarda sua vez para executar
– Bloqueado/espera: o processo aguarda que
ocorra algum evento para continuar a execução. (termino E/S, recepção do sinal);
– Término: o processo terminou sua execução;
• Desde o instante que um processo é iniciado,
o seu estado passa alternar várias vezes.
– 1 – A CPU fica disponível para o processo, que passa do estado de pronto para o de execução.
2 – O processo necessita de algo que NÃO está disponível para continuar a ser executado, assim, passa de em execução para
bloqueado, aguardando a satisfação de sua necessidade;
Ex: cat livro1 livro2 livro3 |grep SO
– 3 - A necessidade do processo é satisfeita, podendo então passar de bloqueado/espera para pronto.
– 4 – O uso da CPU exclusivamente por um processo deve ser evitado, para isso o SO gerência um tempo máximo em execução contínua, após o qual o
– 5 – Término
Concorrência
• Em ambientes multipragramáveis/multitarefa,
vários programas podem ser residentes na
memória, concorrendo pela utilização do
processador. Assim, quando um programa
solicita uma operação de E/S outro programa
poderá utilizar o processador.
Concorrência
E/S CPU Tempo E/S CPU Tempo Sistema Monotorefa Sistema MultitarefaLivre 1 2 1
Implementação dos Processos
• Para implementar o modelo de processos o SO mantém uma tabela de processos (array de
estruturas) podendo ser chama de blocos de controle de Processo (BCP).
• A entrada de cada processo contém informações do PC, registradores, pilha, informações sobre o escalonamento e tudo mais que precisa ser salvo.
• Ideia Básica:
• Processos: programa em execução que
contém um único fluxo de execução.
• Threads: programa em execução com
múltiplos fluxos de execução.
• Um thread é uma sequência de instruções que vão ser executadas num programa;
• Os threads encontram-se dentro de um
processo, utilizando os recursos desse processo; • Em duas ou mais tarefas que podem ser
executadas simultaneamente.
• Uma linha de execução permite que o usuário de um determinado programa, por exemplo, utilize uma funcionalidade do ambiente enquanto
outras linhas de execução realizam outros cálculos e operações.
Modelo de Thread
• Possuir várias threads executando em paralelo em um processo é análogo a ter vários processos
executando em um computador.
• As threads contidas em um mesmo processo
compartilham o endereço de memória, registradores e outros recursos.
Modelo de Thread
Itens compartilhados por todas as threads em um
• Um benefício do uso das linhas de execução (Thread)
• É pelo fato do processo poder ser dividido em mais de uma linha de tarefas;
• Quando uma linha está esperando determinado dispositivo de I/O ou qualquer outro recurso do sistema, o processo como um todo não fica
parado, pois quando uma linha de execução entra no estado de bloqueio uma outra thread aguarda na fila de PRONTO para executar.
Utilização de Threads
• Entidades paralelas que compartilham espaço
de endereço;
• É mais fácil de criar e destruir que processos,
criar um thread é cem vezes mais rápido do
que criar processos;
Utilização de Threads
• Um browser é um exemplo de uma aplicação multithreaded
• Várias coisas podem ocorrer ao mesmo tempo:
– Scroll
– Download de um applet – Download de uma imagem – Tocar uma animação
– Tocar um som
– Imprimir uma página em background – Download de uma nova página
Implementando Threads no
Espaço do Usuário
Implementando Threads no
Kernel
Implementação de Threads
• Na área do Usuário
– Vantagens:
• É mais rápida
• Tem o escalonamento personalizado
• Possui possibilidade de implementação em sistemas operacionais que não suportam nativamente este recurso;
• No Kernel
– Vantagens:
• Permite chamadas Blocks individuais, sem bloquear processo como um todo;
Comunicação entre Processos
• Frequentemente dois processos precisam se comunicar– A saída de um processo será utilizado como entrada para outro
• Problemas Encontrados
• Como as informações podem ser passadas?
• Como resolver conflitos de programas competindo pelo
mesmo recurso?
• Tratamento de dependências:
– Se o processo A recebe como entrada a saída do processo B então o processo A não pode executar até que o B tenha produzido sua saída
Comunicação entre Processos
• Vejamos o seguinte problema:
– Spool de impressão (fila de documentos a serem impressos)
– Variáveis compartilhadas:
• in aponta para a próxima entrada livre no spool onde o próximo arquivo a ser impresso será armazenado
• out aponta para o nome do próximo arquivo a ser impresso.
– Um processo 1 lê o valor de in (por exemplo 2) e é
interrompido. Um outro processo 2 vai usar o spool e também lê o valor de in = 2, envia seu arquivo para impressão e segue com sua execução.
Comunicação entre Processos
– Antes de o arquivo ser impresso, o controle retorna para o processo 1 que submete seu arquivo a ser impresso para a posição que ele
tinha lido de in (na ocasião 2). Assim, este último arquivo sobrescreve a anterior enviado pelo processo 2.
Comunicação entre Processos
Regiões Críticas
• Uma forma de impedir a ocorrência de condições de corrida é
simplesmente impedindo que dois ou mais processos leiam ou escrevam na mesma variável compartilhada ao mesmo tempo, em outras palavras, se deseja a exclusão mútua.
• Muitas vezes o programa está ocupado realizando alguma computação que não gera condições de corrida, em outros casos está acessando variáveis compartilhadas.
• A parte do programa que ecessa variáveis ou recursos compartilhados é chamada de região crítica.
Regiões Críticas
• Se pudermos organizar os processos de forma que nunca dois processos estejam em regiões críticas ao mesmo tempo,
eliminamos as possibilidades de condições de corrida.
• Entretanto, esta condição não é necessária para garantir que processos paralelos cooperem corretamente e eficientemente. Temos que garantir as quatro seguintes condições:
Não existem dois processos simultâneos em uma região crítica Nenhuma suposição pode ser feita em relação ao número ou