Carregar apresentação
A apresentação está carregando. Por favor, espere
1
Processos no Unix e Linux
2
Controle de processo Um processo é um programa em execução.
Os processos são identificados pelos seus identificadores de processos, números inteiros. Chamadas ao sistema para controle de processos fork cria um novo processo exec é usada após um fork para substituir a memória virtual do processo filho com um novo programa carregado de um arquivo exit termina um processo Um processo pai pode esperar pelo filho através da chamada wait que fornece o identificador do processo filho terminado de forma que o pai possa saber qual filho foi terminado. wait permite o pai coletar estatísticas de desempenho sobre o processo filho Um processo zumbi é resultado da terminação do pai antes da terminação do filho.
3
Ilustração das chamadas
4
Controle de processos (Cont.)
Os processos se comunicam através de pipes, que são filas de bytes entre dois processos disponíveis ou acessáveis através dos descritores de arquivos. Todos os processos de usuário são descendentes do processo original, init. init cria um processo getty que inicializa os parâmetros de um terminal e transfere os caracteres de login do usuário para o processo login. login seta o identificador de usuário do processo referente ao usuário recém-logado e executa um shell que cria os subprocessos a partir dos comandos do usuário.
5
Controle de processos (Cont.)
6
Controle de processos (Cont.)
Os bit setuid são os identificadores efetivos do usuário do processo referentes ao dono do arquivo executável, ao passo que o identificador real de usuário é o usuário que ativou o arquivo. O esquema setuid permite que certos processos possam ter privilégios acima do usuário comum que ativou o comando ou arquivo executável.
7
Rotinas de biblioteca A interface das chamadas ao sistema no UNIX tem suporte e é melhorada através de uma grande coleção de rotinas de biblioteca. Arquivos de cabeçalho fornecem a definição das estruturas de dados complexas usadas nas chamadas ao sistema. Suporte adicional da biblioteca é fornecido para funções matemáticas, acesso à rede, conversão de dados.
8
Interface de usuário Os programadores e usuários lidam principalmente com os programas de sistemas já existentes: as chamadas ao sistema necessárias estão embutidas dentro dos programas e não precisam estar explicitamente disponíveis para o usuário. Os programas de sistema mais comuns são orientados para a manipulação de arquivos e diretórios: Diretórios: mkdir, rmdir, cd, pwd Arquivos: ls, cp, mv, rm Outros programas estão associados aos editores (ex., emacs, vi) formatadores de texto (ex., troff, TEX), e outras atividades.
9
E/S padrão A maioria dos processos espera encontrar 3 descritores de arquivos abertos quando são iniciados: Entrada padrão – programa pode ler o que o usuário digita. Saída padrão – programa envia saída para a tela do usuário. Saída de erro padrão – saída de erro. A maioria dos programas podem também aceitar um arquivo (ao invés de terminal) como entrada ou saída padrão. Os shells normalmente tem uma sintaxe simples para permitir a mudança da entrada e saída padrão para arquivos – conhecido como redirecionamento de E/S.
10
Redirecionamento padrão de E/S
11
Gerência de processo A representação de processos é uma grande questão de projeto para um sistema operacional. UNIX se distingue de outros sistemas no sentido de que processos múltiplos podem ser criados e manipulados com facilidade. Estes processos são representados no UNIX por vários blocos de controle. Blocos de controle associados com um processo são armazenados no núcleo. Informação nestes blocos de controle são usados pelo kernel para controle de processo e escalonamento de UCP.
12
Bloco de controle de processo
A estrutura de dados mais básica associada com os processos é a estrutura de processo. Identificador único de processo Informação de escalonamento (ex. prioridade) Ponteiros para outros blocos de controle O espaço de endereçamento virtual de um processo de usuário é dividido em segmentos texto (código do programa), dados e pilha. Cada processo com texto compartilhado tem um ponteiro de sua estrutura de processo para uma estrutura de texto. Sempre residente na memória. Registra quantos processos estão usando o segmento de texto. Registra onde a tabela de páginas para aquele segmento de texto pode ser encontrada no disco quando permutada.
13
Segmento de dados do sistema
A maior parte do trabalho ordinário é feita no modo usuário, sendo as chamadas ao sistema feitas no modo núcleo. As fases de usuário e de sistema de um processo nunca executam simultaneamente. Uma pilha de núcleo (ao invés da pilha de usuário) é utilizada por um processo quando executando em modo núcleo. A pilha de núcleo e a estrutura de usuário juntas compõe o segmento de dados do sistema para o processo.
14
Uso da estrutura do processo
15
Alocando uma nova estrutura de processo
fork aloca uma nova estrutura de processo para o processo filho e copia a estrutura de usuário. Uma nova tabela de página é construída Memória principal nova é alocada para os segmentos de dados e de pilha para o processo filho A cópia da estrutura de usuário preserva os descritores de arquivos abertos, identificadores de usuário e grupo, tratamento de sinais entre outras.
16
Alocando uma nova estrutura de processo
vfork não copia os dados e a pilha para o novo processo; o novo processo simplesmente compartilha a tabela de páginas com o processo antigo. Uma nova estrutura de usuário e uma nova estrutura de processo são ainda criadas Comumente usada pelo shell para executar um comando e esperar pelo seu término Um processo pai usa vfork para produzir um processo filho; o processo filho usa exec para mudar seu espaço de endereço virtual, e portanto não há necessidade de uma cópia do pai. O uso de vfork com um processo pai grande economiza tempo de UCP, mas pode ser perigoso pois qualquer mudança de memória ocorre em ambos os processos até a ocorrência de exec. A chamada exec não cria um novo processo ou estrutura de usuário; apenas o segmento de texto (código) e dados do processo filho é substituído.
17
Estados dos processos - Unix
18
Estados do processo - Unix
19
Criação de processos
20
Chamadas ao sistema para processos
21
Shells e comandos Shell – o processo de usuário que executa programas (também conhecido como interpretador de comandos). Chamado de shell (concha) porque envolve o núcleo. O shell indica sua condição de estar pronto para aceitar um comando através da impressão do prompt, permitindo que o usuário digite uma linha de comandos. Um comando típico é um arquivo binário executável, embora existam comandos internos. O shell busca no caminho de busca o arquivo correspondente ao comando (quando este é externo) para ser carregado e executado. Os diretórios /bin e /usr/bin estão quase sempre no caminho de busca.
22
Shells e comandos (Cont.)
Busca típica em um sistema BSD: ( ./home/prof/avi/bin /usr/local/bin /usr/ucb/bin/usr/bin ) O shell usualmente suspende sua execução até que o comando complete sua própria execução. Exceção: comando termina com & (execução em background).
23
Exemplo – execução do comando ls
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.