Você está na página 1de 2

Universidade Federal de Mato Grosso do Sul

Faculdade de Computação

Aluno: __________________________________________________________________________

Sistemas Operacionais
Lista de Exercícios 02 - Processos
Profª Valéria Q. Dos Reis

1. Qual é a diferença entre processo e programa? A Figura 1 representa um programa ou um processo


em memória? Explique cada seção da figura (text, data, heap, stack).

Figura 1 Figura 2

2. O que é multiprogramação? Quais são suas vantagens? A multiprogramação apresenta desvantagens?


Justifique.
3. Quais são os tipos de eventos em que processos são criados? E as razões em que eles são
terminados?
4. A Figura 2 ilustra os possíveis estados de um processo. Descreva as seis possíveis transições entre
esses estados. Por exemplo: a transição do estado novo (new) para o estado pronto (ready) se dá
quando um novo processo é criado.
5. Na Figura 2, não há transições do estado pronto (ready) para bloqueado (waiting) e nem do estado
bloqueado para o estado executando (running). Por que? Há alguma situação em que alguma delas
pudesse ocorrer?
6. Descreva as ações executadas pelo kernel durante as trocas/mudanças de contexto.
7. O que é uma tabela de processos? Para que ela é utilizada? Que informações ela armazena?
8. Incluindo o processo pai inicial, quantos processos são criados pelo programa a seguir?
int main () {
fork();
fork();
fork();}
9. Usando o programa a seguir, identifique os valores de pid nas linhas A, B, C e D. (Suponha que os
pids reais do pai e do filho sejam 2600 e 2603, respectivamente.)
int main() {
pid_t pid, pid1;
pid = fork();
if(pid == 0) {
pid1 = getpid();
printf(“Child: pid = %d”, pid); /* A */
printf(“Child: pid1 = %d”, pid1); /* B */
}
else {
pid1 = getpid();
printf(“Parent: pid = %d”, pid); /* C */
printf(“Parent: pid1 = %d”, pid1); /* D */
}}
10. Usando o programa a seguir, explique qual será a saída da linha A.
int value = 5;
int main() {
pid_t pid;
pid = fork();
if(pid == 0) {
value += 15;
return 0;
}
else {
if(pid > 0) {
wait(NULL);
printf(“PARENT: value = %d”, value); /* A */
return 0;
}
}}

Você também pode gostar