TrabalhosGratuitos.com - Trabalhos, Monografias, Artigos, Exames, Resumos de livros, Dissertações
Pesquisar

Problemas de Programação com Processos

Por:   •  4/6/2016  •  Exam  •  1.463 Palavras (6 Páginas)  •  339 Visualizações

Página 1 de 6

LIC_COMP: SISTEMAS OPERACIONAIS

LISTA DE PROGRAMAÇÃO - PROCESSOS

DATA DE ENTREGA: 17/05/2015 DATA DE DEFESA: 18/05/15

VALOR: 10; PESO: 4; DECREMENTO DE 0,5 pt POR DIA DE ATRASO.

Prof. Fábio Cristiano

Problemas de Programação com Processos – Parte I

Objetivo

Com esta lista espera-se que os alunos possam assimilar conceitos relacionados com processos de um SO. Dentre os conceitos estão:

Sincronização e operações sobre processos.

Pretende-se com isso

Fornecer experiência neste importante tópico de sistemas Operacionais.

Problemas

1. Como vimos em aula, à estrutura básica de um SO é composta de: (1) Kernel; (2) Shell; e (3) aplicativos de usuário. Especificamente, O Shell é possibilita a execução de comandos. Basicamente, o Shell recebe o comando interpreta e executa o comando, que na verdade é um programa. Para verificar os processos em execução execute o comando “ps” pressione “ENTER”. O comando “ps” mostra várias

propriedades do processo. Por exemplo, usuário e PID (process ID). A maior parte dos comandos executados são programas. O comando “ls” corresponde ao programa “/bin/ls”. Quando executamos o comando executamos um programa. Dessa forma, ao executar um comando o Shell lança um novo processo no SO. A execução do “ps” mostra pelo menos dois processos: (1)o shell e o próprio “ps” que está em execução. O “ps” possui muitas variantes, como:

• ps -u user;

• ps -l t2;

• Veja mais opções para uso do “ps” com “man ps” no terminal.

2. Abra duas seções de terminal. No segundo terminal, veja o número dos processos de Shell em uso. Capture a tela do resultado e descreva o que ocorreu.

Na segunda captura da tela é possível perceber que o números de processos (PID) variam mesmo sendo a mesma ferramenta, juntamente com a identificação do shell a qual foi requisitado demonstrado no TTY sendo cada Terminal com seu próprio nº.

3. Em um terminal execute o comando “cat /etc/services |more”, e em outra seção verifique com o “ps” o número do PID. Quais parâmetros você usou para obter o resultado?

No terminal da esquerda estão sendo mostrados as portas de cada serviços que podem ser utilizados e por qual porta e tipo entre UTP e TPC, enquanto o PID do bash continuou o mesmo de antes de executar o comando “cat /etc/services |more” e o PID do ps -C cat continuou o mesmo após a execução do comando “cat /etc/services |more”.

Em outras palavras: apesar do shell estar executando o processo cat, seu Pid não foi alterado mesmo saindo do estado de pronto (sem execução de processos) para executando.

4. O processo init é o principal processo em operação no sistema GNU/Linux. O init é o processo pai de todos os processos, pois é o primeiro a ser executado, logo após o carregamento do Kernel na memória. Sua função é controlar todos os outros processos que são executados no SO. Digite o comando “ps -C init” e capture o resultado. Comente o resultado. Qual a função “-C”? PS.O GNU/Linux diferencia letras maiúsculas de minúsculas.

Professor para a distribuição Debian 8.4 instalada na minha máquina virtual percebi dentro de minhas pesquisas que ao executar o comando top, exibindo a lista de processos gerenciados pela CPU, essa distro não utiliza o “init” como o primeiro processo (Pid 1), mas, sim com a denominação de systemd (Pid 1) como processo pai de todos os outros processos, executados logo após o carregamento do kernel.

5. Programando um Shell em C. O Shell é um programa relativamente simples. Basicamente é composto por um momento de recepção do comando, dessa forma, recebe e executa comandos conhecidos, caso contrário uma mensagem de erro é emitida para o usuário que interage com o terminal e

assim corrigir a entrada. Escreva um interpretador de comandos que receba comandos e retorne o resultado da execução do comando. Para isso, se aceita dois tipos de implementação:

(1) O usuário digita um comando e o interpretador executa o comando quando conhecido. Em caso de comando não conhecido uma mensagem de erro deve ser enviada ao usuário. O interpretador de comandos deve ser encerrado com “exit”.

nano 5_1.c

main(){system(“bin/sh”);}/*Com essa linha de comando foi possível através desse programa em C utilizar todos os processos e programas do shell através do meu código utilizado na distro Debian 8.4.*/

(2) A segunda alternativa considera os mesmos requisitos apresentados na anteriormente, porém considera o uso da chamada de sistema system() para a execução dos comandos presentes no GNU/Linux, especificamente, em “/bin/” e “/sbin”.

5. Incluindo o processo pai inicial, quantos processos são criados

pelo programa mostrado a seguir:

#include<stdio.h>

#include<unistd.h>

int main(){

/*gera um processo filho*/

fork();

/*gera um processo filho*/

fork();

/*gera um processo filho*/

fork();

/*gera um processo filho*/

fork();

/*gera mais um processo filho*/

fork();

return 0; }

32 processos são criados no total. Sendo que 1º é criado o processo do programa em c,

no primeiro fork são realizadas duplicações da quantidade de subprocessos para 2,

no segundo fork são realizadas duplicações da

...

Baixar como (para membros premium)  txt (10.6 Kb)   pdf (92.8 Kb)   docx (574 Kb)  
Continuar por mais 5 páginas »
Disponível apenas no TrabalhosGratuitos.com