LEIC/LERC 2010/11

Sistemas Operativos

Aula 2

Processos Unix

 

Objectivo

 


Introdução

1. Observação dos processos no sistema (slide)

Execute o comando seguinte:
  ps -lA
Compreenda o resultado e responda às questões seguintes. Use as páginas do manual como ajuda (man ps).
a) Que processos observa?

b) Que aplicação o processo está a executar?

c) O que significam as colunas PID e PPID?

d) Identifique três processos relacionados hierarquicamente.

2. Principais chamadas sistema para criação de processos

Copie o ficheiro aula2-eg1.tgz para a sua área de trabalho e descomprima o seu conteúdo com o comando:

  tar -zxvf aula2-eg1.tgz

a) Estude o código fonte com a ajuda do slide, compile e execute a aplicação.

b) Confirme que se trata realmente de dois processos em execução:

c) Modifique o código para que o processo pai espere pela terminação do processo filho (slide).

d) Verifique que o pai espera realmente pelo filho:

e) Verifique o que acontece se o pai não esperar pelo filho:

f) Modifique o programa de acordo com o slide.

g) Modifique o programa anterior para que o comando seja executado com a opção -b.

Material de Apoio

 


Exercícios

SO Shell (sosh)

Uma shell é uma aplicação que lê os comandos introduzidos pelo utilizador numa consola e os executa de acordo com uma semântica própria, como por exemplo bash e ksh. O exercício consiste em desenvolver um interpretador de comandos muito simples chamado sosh. A construção do interpretador será feito por etapas (sugestão: crie cópias de segurança sucessivas entre versões).

1. Implemente a sosh 0.1 suportando os seguintes requisitos:

2. Implemente a sosh 0.2:

Sugestões:

3. Implemente a sosh 0.3.

 a) Além dos comandos anteriores, a nova versão deve permitir executar as aplicações localizadas em /usr/bin, com número variável de argumentos.

Sugestões:

b) Organize o código da aplicação colocando a implementação dos comandos da sosh num módulo (.h e .c) independente:


Exercício de Avaliação 2

Interpretador de Comandos mysh (My Shell)

Além das funcionalidades suportadas pelo sosh 0.3, a mysh deve suportar ainda o seguinte comando: