Atividade 01 - Sistemas Operacionais

16
1 Pontifícia Universidade Católica de Minas Gerais – Unidade Betim Curso de Sistemas da Informação Disciplina: Sistemas Operacionais 2º Semestre/2010 Professor: Caio Júlio Martins Veloso Alunos: Eduardo Matias - Gabriella Fonseca Ribeiro - 402409 1ª Lista de Exercícios 1. Quais as duas principais funções de um Sistema Operacional? O sistema operacional tem como função controlar o hardware e permitir executar os softwares. É também sua função a interface com o usuário, oferecendo a esse uma interface que possa ser utilizada. O Windows, por exemplo, tem uma interface que é controlada pelo EXPLORER. O MacOS X tem uma interface que é controlada pelo Aqua e pelo FINDER. O Linux tem uma interface gráfica que é controlada pelo X Window System, mas este ainda depende de gerenciadores de janelas que o usuário poderá escolher, como o KDE, Gnome, Xfce, Fluxbox, OpenBox, Enlghtenment, dentre outros. Assim, o sistema operacional funciona como uma ponte entre o hardware e o software, possibilitando a comunicação entre ambos e lidando com os requisitos necessários para que tal comunicação seja efetiva sem que o usuário necessite saber como ela é feita. Além disso, o sistema operacional gerencia os recursos do sistema e guarda quem está usando cada recurso, mediando pedidos conflitantes. 2. O que é multiprogramação? Cite duas razões para se ter multiprogramação? Em um sistema de multiprogramação a CPU fica se alternando entre a execução de vários processos, cada um por dezenas ou centenas de milisegundos. Através da execução “simultânea” de vários programas, a multiprogramação torna mais eficiente o aproveitamento dos recursos do computador, tais como: tempo do processador, espaço de memória,etc. Na

Transcript of Atividade 01 - Sistemas Operacionais

Page 1: Atividade 01 - Sistemas Operacionais

1

Pontifícia Universidade Católica de Minas Gerais – Unidade

Betim

Curso de Sistemas da Informação

Disciplina: Sistemas Operacionais 2º Semestre/2010

Professor: Caio Júlio Martins Veloso

Alunos: Eduardo Matias -

Gabriella Fonseca Ribeiro - 402409

1ª Lista de Exercícios

1. Quais as duas principais funções de um Sistema Operacional?

O sistema operacional tem como função controlar o hardware e

permitir executar os softwares. É também sua função a interface com o

usuário, oferecendo a esse uma interface que possa ser utilizada. O

Windows, por exemplo, tem uma interface que é controlada pelo

EXPLORER. O MacOS X tem uma interface que é controlada pelo Aqua e

pelo FINDER. O Linux tem uma interface gráfica que é controlada pelo X

Window System, mas este ainda depende de gerenciadores de janelas que

o usuário poderá escolher, como o KDE, Gnome, Xfce, Fluxbox, OpenBox,

Enlghtenment, dentre outros.

Assim, o sistema operacional funciona como uma ponte entre o hardware e

o software, possibilitando a comunicação entre ambos e lidando com os

requisitos necessários para que tal comunicação seja efetiva sem que o

usuário necessite saber como ela é feita. Além disso, o sistema operacional

gerencia os recursos do sistema e guarda quem está usando cada recurso,

mediando pedidos conflitantes.

2. O que é multiprogramação? Cite duas razões para se ter

multiprogramação?

Em um sistema de multiprogramação a CPU fica se alternando entre

a execução de vários processos, cada um por dezenas ou centenas de

milisegundos. Através da execução “simultânea” de vários programas, a

multiprogramação torna mais eficiente o aproveitamento dos recursos do

computador, tais como: tempo do processador, espaço de memória,etc. Na

Page 2: Atividade 01 - Sistemas Operacionais

2

realidade a execução é feita de forma concorrente (máquinas

monoprocessadas). Em um sistema multiprogramado vários programas são

mantidos na memória ao mesmo tempo.

3. O que é Spooling?

Spooling é a técnica de escrever dados em um local temporário (no

disco, por exemplo) para que eles possam ser acessados no futuro. É

geralmente utilizado quando dois devices possuem velocidades de

leitura/escrita muito diferentes; assim é possível ajustar a mesma a cada

um deles. O Spooling é útil porque os dispositivos acessam dados em

diferentes velocidades, o buffer provê uma estação de espera onde o dado

pode ficar armazenado enquanto o dispositivo mais lento fica carregando.

O mais comum exemplo de spooling é o da impressora: Como a impressora

é um periférico muito mais lento que o microcomputador, este teria de ficar

esperando a impressão terminar para, então, executar uma nova tarefa.

Para resolver esse problema, a maioria das impressoras tem um buffer, ou

seja, uma memória interna utilizada para armazenar temporariamente os

dados que estão vindo do microcomputador. Com isso, os dados são

transferidos do microcomputador para o buffer, liberando o micro mais

rapidamente. Quanto maior o buffer da impressora, mais cedo esta liberará

o micro.

No entanto, mesmo existindo esse recurso, o tamanho do buffer da

impressora não é o suficiente para armazenar documentos grandes de uma

só vez. Em outras palavras, na impressão de documentos pequenos, o

aplicativo transfere os dados para o buffer da impressora, ficando livre para

executar outra tarefa. No caso de documentos grandes, mesmo com o

buffer, a impressora "prende" a atenção do aplicativo.

A solução adaptada por todos os sistemas operacionais (com exceção

do DOS) chama-se spooler. O aplicativo gera a impressão e transfere os

dados a serem impressos para o spooler, um programa que ficará sendo

executado em segundo plano. Esse programa ficará gerenciando a

impressão, enquanto o aplicativo ficará livre para executar outra tarefa ou

trabalhar com outro documento. É possível, inclusive, fechar o aplicativo

que gerou a impressão.

Page 3: Atividade 01 - Sistemas Operacionais

3

4. Defina as propriedades essenciais dos seguintes tipos de

Sistemas Operacionais:

a. Batch: Os sistemas batch (lote) foram os primeiros sistemas

multiprogramáveis a serem implementados e caracterizam-se por terem

seus programas, quando submetidos, armazenados em disco ou fita, onde

esperam para ser executados seqüencialmente. Normalmente, os

programas, também chamados de jobs, não exigem interação com os

usuários, lendo e gravando dados em discos e fitas. Alguns exemplos de

aplicações originalmente processadas em batch são compilações, link,

edições, sorts, backups e todas aquelas onde não é necessária a interação

com o usuário.

b. Time-Sharing: Os sistemas de tempo compartilhado (time-sharing)

permitem a interação dos usuários com o sistema, basicamente através de

terminais que incluem vídeo, teclado e mouse. Dessa forma, o usuário pode

interagir diretamente com o sistema em cada fase do desenvolvimento de

suas aplicações e, se preciso, modificá-las imediatamente. Devido a esse

tipo de interação, os sistemas de tempo compartilhado também ficaram

conhecidos como sistemas on-line.

Para cada usuário, o sistema operacional aloca uma fatia de tempo

(time-slice) do processador. Caso o programa do usuário não esteja

concluído nesse intervalo de tempo, ele é substituído por um de outro

usuário, e fica esperando por uma nova fatia de tempo. Não só o

processador é compartilhado nesse sistema, mas também a memória e os

periféricos, como discos e impressoras. O sistema cria para o usuário um

ambiente de trabalho próprio, dando a impressão de que todo o sistema

está dedicado, exclusivamente, a ele.

Sistemas de tempo compartilhado são de implementação complexa,

porém, se levado em consideração o tempo de desenvolvimento e

depuração de uma aplicação, aumentam consideravelmente a produtividade

dos seus usuários, reduzindo os custos de utilização do sistema.

c. Tempo-real: Os sistemas de tempo real (real time) são bem

semelhantes em implementação aos sistemas de tempo compartilhado. A

Page 4: Atividade 01 - Sistemas Operacionais

4

maior diferença é o tempo de resposta exigido no processamento das

aplicações. Enquanto em sistemas de tempo compartilhado o tempo de

resposta pode variar sem comprometer as aplicações em execução, nos

sistemas de tempo real os tempos de resposta devem estar dentro de

limites rígidos, que devem ser obedecidos, caso contrário poderão ocorrer

problemas irreparáveis. Não existe ideia de fatia de tempo, um programa

detém o processador o tempo que for necessário, ou até que apareça outro

prioritário em função de sua importância no sistema. Esta importância ou

prioridade de execução é controlada pela própria aplicação e não pelo

sistema operacional, como nos sistemas de tempo compartilhado. Esses

sistemas, normalmente, estão presentes em controle de processos, como

no monitoramento de refinarias de petróleo, controle de tráfego aéreo, de

usinas termelétricas e nucleares, ou em qualquer aplicação onde o tempo

de resposta é fator fundamental.

d. Distribuído: Uma rede de computadores pode ser vista como uma

coleção de processadores que não compartilham memória ou clock. Nela os

processadores comunicam-se entre si por várias linhas de comunicação que

podem ser barramentos ou linhas telefônicas. Estes sistemas são

conhecidos como sistemas fracamente acoplados, loosely coupled systems

ou ainda sistemas distribuídos. Como as linhas de comunicação entre os

processadores não são compostas exclusivamente de barramentos, a

eficiência desta comunicação é menor do que a dos sistemas fortemente

acoplados. Um sistema fracamente acoplado com todos os hosts

executando um mesmo grupo de aplicações é um cluster, onde dois ou mais

servidores são interligados, normalmente, por algum tipo de conexão de

alto desempenho. O usuário não conhece os nomes dos membros do cluster

e nem sabe quantos são. Estes sistemas também são chamados de

Beowulf. Sistemas em cluster são utilizados para serviços de bancos de

dados, garantindo alta disponibilidade, escalabilidade e balanceamento de

carga. Um formato específico de cluster é a computação em grade (grid

computing) onde são utilizados recursos heterogêneos (diferentes

plataformas, arquiteturas de software e hardware e sistemas operacionais),

localizados em diferentes lugares, conectados por redes com padrões

abertos. Graças aos recursos de rede surgiu o conceito de sistema

Page 5: Atividade 01 - Sistemas Operacionais

5

operacional de rede, que fornece métodos de compartilhamento de arquivos

e dispositivos. Eles implementam a troca de mensagens entre diferentes

computadores.

5. Descreva as diferenças entre multiprocessamento simétrico e

assimétrico. Quais as vantagens e desvantagens dos sistemas

multiprocessador?

Na organização assimétrica ou mestre/escravo (master/slave),

somente um processador (mestre) pode executar serviços do sistema

operacional, como, por exemplo, realizar operações de entrada/saída.

Sempre que um processador do tipo escravo precisar realizar uma operação

de entrada/saída terá de requisitar o serviço ao processador mestre.

Dependendo do volume de operações de entrada/saída destinadas aos

processadores escravos, o sistema pode se tornar ineficiente, devido ao

elevado número de interrupções que deverão ser tratadas pelo mestre. Se

o processador falhar, todo o sistema ficará incapaz de continuar o

processamento. Neste caso, o sistema deve ser reconfigurado, fazendo um

dos processadores escravos assumir o papel do mestre. Mesmo sendo uma

organização simples de ser implementada e quase um extensão dos

sistemas multiprogramáveis, esse tipo de sistema não utiliza eficientemente

o hardware, devido à assimetria dos processadores, que não realizam as

mesmas funções.

O multiprocessamento simétrico (Simmetric Multiprocessing- SMP),

ao contrário da organização mestre/escravo, implementa a simetria dos

processadores, ou seja, todos os processadores realizam as mesmas

funções. Apenas algumas poucas funções ficam a cargo de um único

processador, como, por exemplo, a inicialização (boot) do sistema. Como

vários processadores estão utilizando, independentemente, a mesma

memória e o mesmo sistema operacional, é natural a ocorrência de acessos

simultâneos às mesmas áreas de memória. A solução desses conflitos fica a

cargo do hardware e do sistema operacional. No processamento simétrico,

um programa pode ser executado por qualquer processador, inclusive por

vários processadores ao mesmo tempo (paralelismo). Além disso, quando

um processador falha, o sistema continua em funcionamento sem nenhuma

interferência manual, porém com menor capacidade de computação. Os

Page 6: Atividade 01 - Sistemas Operacionais

6

sistemas simétricos são mais poderosos que os assimétricos, permitindo um

melhor balanceamento do processamento e das operações de

entrada/saída, apesar de sua implementação ser bastante complexa.

Nos sistemas monotarefas, apenas uma tarefa é executa por vez, e o

sistema dedica-se para a tarefa sim. Se por um lado é bom ter todos os

recursos à disposição de uma única tarefa, por outro lado perdemos pois

esses recurso passa a ficar muito tempo ociosos e não há recursos de

segurança.

Já nos sistemas de multitarefas, uma série de trabalhos são

executados simultaneamente, compartilhando os recursos existentes na

máquina. Há aumento da produtividade e redução de custos, mas é

necessário definição de rotinas de entrada e saída, gerenciamento de

memória, agendamento de CPU para as tarefas prontas para execução e

alocação de dispositivos, consumindo maior energia e gerando mais calor,

necessitando também de um bom dissipamento do mesmo.

6. O que é uma chamada de sistema (ou interrupção)? Qual é o

uso dessa função?

O usuário (ou aplicação), quando deseja solicitar algum serviço do

sistema, realiza uma chamada a uma de suas rotinas ( ou serviços) através

de system calls (chamadas ao sistema), que são a porta de entrada para se

ter acesso ao núcleo do sistema operacional. Para cada serviço existe uma

system call associada e cada sistema operacional tem o seu próprio

conjunto (biblioteca) de chamadas, com nomes, parâmetros e formas de

ativação específicos.

Através dos parâmetros fornecidos na system call, a solicitação é

processada e uma resposta é retornada à aplicação, em um dos parâmetros

fornecidos na chamada. O mecanismo de ativação e comunicação entre a

aplicação e o sistema é semelhante ao mecanismo implementado quando

um programa modularizado ativa um dos seus procedimentos ou funções.

As system call podem ser divididas em grupos de função:

Gerência de processos

Criação e eliminação de processos

Alteração das características do processo

Sincronização e comunicação entre processos

Page 7: Atividade 01 - Sistemas Operacionais

7

Gerência de memória

Alocação e desalocação de memória

Gerência de entrada/saída

Operações de entrada/saída

Manipulação de arquivos e diretórios

7. Para que tipos de operações o DMA é útil? Quais as

implicações de uma organização sem DMA na multiprogramação?

O DMA (Direct Memory Acess, ou Acesso Direto à Memória) é útil

para operações de Entrada e Saída de Dados. Utilizar um sistema de

multiprogramação sem o DMA causa a impossibilidade de controle das

rotinas de Input/Output fornecidas pelo sistema. Além disso, com o DMA

blocos de dados são transferidos entre o buffer e a memória principal, sem

intervenção da CPU, gerando apenas uma interrupção por bloco, e não uma

interrupção por byte, como nos casos sem a utilização do DMA.

8. Que características de hardware (máquina) são necessárias

para suportar proteção para o kernel do SO ? Explique brevemente

cada característica e como elas permitem o kernel controlar os

programas de usuário.

O Kernel de um sistema operacional é entendido como o seu núcleo.

Ele representa a camada mais baixa de interface com o Hardware, sendo

responsável por gerenciar os recursos do Sistema Operacional como um

todo. É no kernel que estão definidas funções para operação com periféricos

(mouse, disco, impressora, interface serial/interface paralela),

gerenciamento de memória, entre outros. Resumidamente, o kernel é um

conjunto de programas que fornece para os programas de usuário

(aplicativos) uma interface para utilizar os recursos do sistema.

Sistemas Operacionais de 64bits suportam a tecnologia de proteção

ao patch Kernel. Esse mecanismo impede que programas não autorizados

interfiram no kernel do Sistemas. A proteção de patch de Kernel melhora a

confiabilidade do SO, pois ajuda a desabilitar os golpes não documentados e

não suportados de kernel. Esses golpes podem causar problemas de

confiabilidade e desempenho, gerando problemas potenciais de segurança

ao sistema também.

Page 8: Atividade 01 - Sistemas Operacionais

8

O Windows Vista 64 bits, por exemplo, exige que todos os drivers de

modo kernel sejam assinados digitalmente. A assinatura digital fornece

identidade e integridade do código. Um módulo de kernel que esteja

corrompido ou tenha sido submetido à falsificação não será carregado.

Qualquer driver que não esteja devidamente assinado não consegue inserir

o espaço de kernel e irá falhar para ser carregado.

9. O que são processos e quais as vantagens da adoção desse

método?

A unidade básica do software com a qual o sistema operacional

trabalha para organizar as tarefas realizadas pelo processador é

representada pelo processo ou thread, dependendo do sistema operacional.

Podemos até pensar em um processo como um aplicativo, mas isso

dá uma ideia incompleta de como os processos se relacionam com o

sistema operacional e com o hardware. O aplicativo que vemos é de fato

um processo. Porém, os aplicativos podem ativar outros processos para se

comunicarem com outros dispositivos ou computadores. Também existe

uma série de processos que são executados sem que você perceba. O

Windows e o UNIX podem executar, em background, dezenas de processos

para lidar com a rede, gerenciar a memória e o disco rígido, verificar vírus

etc.

Em resumo, um processo é um software que executa ações e pode

ser controlado pelo usuário, por outros aplicativos ou pelo sistema

operacional.

São os processos, e não os aplicativos, que o sistema operacional

controla e faz sua escala para que a CPU os execute. Em um sistema

monotarefa, este trabalho é bastante simples. O sistema operacional

permite que o aplicativo seja iniciado, suspendendo sua execução somente

para tratar as interrupções e inserções do usuário.

10. Como o sistema operacional trata um processo?

Um processo é a unidade básica de execução em um SO. Diferentes

processos podem executar várias instâncias do mesmo programa. A

execução de um processo requer, no mínimo, os seguintes recursos do

Sistema Operacional:

Page 9: Atividade 01 - Sistemas Operacionais

9

Memória para conter o código e dados do programa;

Um conjunto de registradores para suportar a execução.

O SO é responsável pelas seguintes atividades com relação a

gerência de processos:

• Criação e deleção de Processos.

• Suspensão e retomada de processos.

• Fornecimento de mecanismos para:

• sincronização de processo

• comunicação de processo

São utilizados algoritmos para determinar qual processo será

executado em determinado momento e por quanto tempo.

Além disso, os processos podem comunicar-se, isto é conhecido como

IPC (Inter-Process Communication). Os mecanismos geralmente utilizados

são:

sinais;

pipes;

named pipes;

memória compartilhada;

soquetes (sockets);

trocas de mensagens.

O sistema operacional, normalmente, deve possibilitar o

multiprocessamento (SMP ou NUMA). Neste caso, processos diferentes e

threads podem ser executados em diferentes processadores. Para essa

tarefa, ele deve ser reentrante e interrompível, o que significa que pode ser

interrompido no meio da execução de uma tarefa.

Figura 01: Tratamento de Processos

Page 10: Atividade 01 - Sistemas Operacionais

10

11. Quais os atributos são usualmente atribuídos a um processo

para que o mesmo possa ser controlado pelo sistema operacional?

Todas as informações necessárias para controlar a mudança dos

processos são armazenadas num pacote de dados chamado de bloco de

controle de processo, que contém:

um número ID que identifica o processo;

ponteiros para as localizações do programa e seus dados quando o

último processamento ocorreu;

conteúdo dos registradores;

estado de vários flags e switches;

ponteiros para os limites superior e inferior da memória requisitada

para o processo;

uma lista de arquivos abertos pelo processo;

a prioridade do processo;

o status de todos os dispositivos de entrada/saída requisitados pelo

processo.

12. Quais os estados de um processo e suas possíveis transições

de estados?

Cada processo tem um status associado a ele. Muitos processos não

consomem tempo da CPU até que recebam algum tipo de comando. O

processo pode estar, por exemplo, esperando que o usuário aperte alguma

tecla, enquanto ele espera, a CPU não é utilizada. Neste momento, o

processo está "suspenso". Quando o usuário aperta a tecla, o sistema

operacional muda o status do processo. Quando o status do processo muda

de "pendente" para "ativo" ou de "suspenso" para "em execução", as

informações no bloco de controle de processo devem ser usadas, assim

como os dados de programa, para direcionar a execução da alternância de

tarefas do sistema operacional. Essa troca de processo acontece sem a

interferência direta do usuário e cada processo consegue ciclos de CPU

suficientes para realizar suas tarefas em um período razoável de tempo.

Os estados comuns de um processo são:

Novo: O processo está sendo criado

Executando: As instruções estão sendo executadas

Esperando: O processo está esperando que ocorra algum evento

Pronto: O processo está esperando para ser atribuído a um

processador

Terminado: O processo terminou sua execução

Page 11: Atividade 01 - Sistemas Operacionais

11

Figura 02: Estados de Um Processo

13. Considere o diagrama de transição entre estados do processo

no caso de cinco estados (Novo, Pronto, Rodando, Bloqueado,

Terminado). Por que não há uma transição do estado Bloqueado

para o estado Rodando?

Assim que um processo sai do status Bloqueado ou Esperando, por

exemplo, ele deve entrar na fila dos processos com o status Pronto. O

Sistema Operacional gerencia essa fila conforme prioridade e outras

heurísticas para assim decidir quem será o próximo processo a ser definido

com Rodando. Um processo só terá seu status definido como Rodando se

imediatamente antes teve seu status definido como Pronto.

14. O que significa o termo “árvore de processos”?

Os processos pai criam processos filhos, que, por sua vez, criam

outros processos, formando uma então uma árvore de processos. Esta

criação é feita por chamadas de sistema.

Um processo filho pode receber recursos diretamente do sistema

operacional, obter um subconjunto dos recursos do processo pai ou mesmo

compartilhar todos os recursos do processo pai. Dados de inicialização

podem ser passados do processo pai para o processo filho. Ao criar um

processo filho o processo pai pode continuar a executar concorrentemente

com o processo filho ou esperar até que alguns ou todos os processos filhos

tenham terminado. O espaço de endereçamento do processo filho pode ser

uma duplicata do processo pai ou ter um programa carregado para ele.

Page 12: Atividade 01 - Sistemas Operacionais

12

Figura 03: Exemplo de uma Árvore de Processos

15. Que eventos podem motivar a criação ou finalização de um

processo?

Processos são criados e eliminados por motivos diversos; A criação de

um processo ocorre quando o sistema operacional adiciona um novo PCB

(Process Control Block - ou Bloco de Controle de Processos) à sua estrutura

e aloca um espaço de endereçamento na memória para seu uso. Como foi

dito, um processo pode ser criado por diversos motivos, dentre os quais os

mais comuns são:

Logon interativo: estabelecimento de uma sessão interativa do

usuário através de um terminal;

Criação por um outro processo: um processo que já existe pode

criar outros processos, sendo estes novos processos

independentes ou subprocessos;

Criação pelo sistema operacional: O SO pode criar novos

processos a fim de oferecer algum tipo de serviço.

No caso da eliminação de um processo, todos os recursos associados

ao processo são desalocados e o PCB eliminado pelo sistema operacional.

Da mesma forma, algumas das principais razões para a finalização de um

processo são:

Término normal de execução;

Eliminação por outro processo;

Page 13: Atividade 01 - Sistemas Operacionais

13

Eliminação forçada por ausência de recursos do sistema.

16. Como ocorre a execução de múltiplos processos em um

sistema de computação?

Um processo ocupa certa quantidade de memória RAM. Ele também

utiliza os registradores, pilhas e filas da CPU e memória do sistema

operacional. Quando dois processos acontecem “ao mesmo tempo”, o

sistema operacional aloca certa quantidade de ciclos da CPU para um

programa. Depois que os ciclos são executados, o sistema operacional faz

uma cópia de todos os registradores, pilhas e filas utilizados pelos processos

e registra o ponto em que a execução foi interrompida. Ele então carrega

todos os registradores, pilhas e filas utilizados pelo segundo processo e

aloca outra quantidade de ciclos de CPU para ele. Quando os ciclos

terminam, o sistema operacional copia todos os registradores, pilhas e filas

utilizadas pelo segundo programa e carrega o primeiro programa.

17. Um computador tem: memória cache, memória principal e um

disco usado para memória virtual. Se uma palavra procurada estiver

na cache serão necessários 20 ns para acessá-la. Se essa palavra

estiver na memória principal, mas não na cache, serão precisos 60

ns para carregá-la na cache, seguidos de 20 ns para ler a palavra na

cache. Se a palavra não estiver na memória principal, são precisos

12 ms para buscar a palavra no disco, seguidos por 60 ns para

copiá-la na cache, e depois 20 ns para ler a palavra. A razão de

ocorrência na cache é de 0.9 e a razão de ocorrência na memória

principal é de 0.6. Qual o tempo médio (em ns) para acesso a uma

palavra procurada neste sistema?

Considerando que 12ms = 12 *10^6 ns; que em 90% dos casos, a

palavra é encontrada na cache e que nos 10% de casos restantes, em 60%

desses a palavra é encontrada na memória principal e somente em 40% é

necessária a busca em disco, temos a equação abaixo que nos dá uma

média de 480.021,6 ns como tempo de acesso.

(0,9 * 20) + (0,1 * ((0,6 * 60) + (0,4 * 12 * (10^6)))) = 480 021,6

Page 14: Atividade 01 - Sistemas Operacionais

14

18. Considere o código em C abaixo sobre o uso da instrução

fork(). Descreva o funcionamento do código. Rodando esse código,

quantos processos são gerados?

int main()

{

int pid;

int pid2;

int i;

pid = getpid();

printf("PID = %4d \n", pid);

for (i=0; i<3; ++i)

{

pid = getpid();

printf("i = %4d, PID = %4d \n", i, pid);

pid2=fork();

if (pid2 != 0) printf("I am the parent %4d, i = %4d \n", pid2, i);

if (pid2 == 0) printf("I am a child %4d, i = %4d \n", pid2, i);

sleep(5);

A instrução “fork()” cria um novo processo filho a partir do comando

do processo pai. A instrução “getpid()” pega o id do processo.

O programa acima cria uma estrutura de repetição que roda três

vezes; em cada uma dessa três repetições é criado um novo processo filho

através da instrução “fork()”, exibindo uma mensagem ao usuário que é

condicionada ao estado do processo (Se ele é pai ou filho). O comando

“sleep(5)” faz com que o processo seja adormecido a cada cinco segundos.

Page 15: Atividade 01 - Sistemas Operacionais

15

Bibliografia

COUSTAN, Dave e FRANKLIN, Curt . Como funcionam os sistemas

operacionais. http://informatica.hsw.uol.com.br/ - Acessado em 2 de

Setembro de 2010

BARRETO, Fabio. Introdução aos Sistemas Operacionais.

http://www.fabiobarreto.com.br/ - Acessado em 3 de Setembro de 2010

BARRETO, Fabio. Processos – Como Funcionam.

http://www.fabiobarreto.com.br/ - Acessado em 3 de Setembro de 2010

MACHADO, Francis Berenger e MAIA, Luiz Paulo. Arquitetura de

Sistemas Operacionais, 2a. edição. Ed. LTC, 1997.

OLIVEIRA, R. S.; CARISSIMI, A. S. e TOSCANI, S. S. Sistemas

Operacionais. Sagra Luzzatto, Porto Alegre, 2001.

TETERA, Eduardo. Diferenças entre Windows 32 e 64 bits – O Kernel.

http://teteraconsultoria.com.br . Acessado em 12 de Setembro de 2010.

ZANINI, Alessandro. Sistemas Operacionais. http://www.unisul.rct-

sc.br/so1 . Acessado em 2 de Setembro de 2010.

__ . O que é Batch . http://perfecthacker.forumeiros.com . Acessado

em 8 de Setembro de 2010.

__. Sistemas Operacionais.

http://cemshost.com.br/bcc/w/P%C3%A1gina_principal . Acessado em 4 de

Setembro de 2010.

Page 16: Atividade 01 - Sistemas Operacionais

16