Escolar Documentos
Profissional Documentos
Cultura Documentos
SISTEMAS OPERACIONAIS
LISTA DE EXERCÍCIOS 1
BETIM - MG
2010
Luiz Henrique Diniz Sousa
SISTEMAS OPERACIONAIS
LISTA DE EXERCÍCIOS 1
BETIM - MG
2010
1- Quais as duas principais funções de um Sistema Operacional?
3. O que é Spooling?
a. Batch
b. Time-Sharing
c. Tempo-real
d. Distribuído
A computação distribuída, ou sistema distribuído, é uma referência à
computação paralela e descentralizada, realizada por dois ou mais computadores
conectados através de uma rede, cujo objetivo é concluir uma tarefa em comum.
Simétrico Assimétrico
Cada processador executa uma cópia A cada processador é atribuída uma
idêntica do SO. tarefa específica.
Muitos processos podem executar de Processador mestre escalona e
uma vez sem deterioração do aloca trabalho para os processos
desempenho. escravos.
É suportado pela maioria dos SO´s Mais comum em sistemas muito
modernos. grandes.
Vantagens:
aumento de desempenho;
são econômicos;
aumento da confiabilidade;
degradação controlada (fail-soft systems).
Desvantagens:
problemas de sincronização;
controle de concorrência;
consistência das informações.
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. O problema acontece quando o usuário tenta executar
muitos processos ao mesmo tempo. O próprio sistema operacional precisa de alguns
ciclos de CPU para salvar todos os registradores, filas e pilhas dos processos e
realizar a alternância entre eles. Se uma determinada quantidade de processos é
iniciada, e se o sistema operacional não foi cuidadosamente planejado, o sistema
pode começar a usar a maioria dos ciclos de CPU disponível para alternar os
processos em vez de executá-los. Isso se chama thrashing e geralmente requer
algum tipo de intervenção direta do usuário para interromper os processos e
reorganizar o sistema.
Uma forma de reduzir o thrashing é diminuir a necessidade de criação de novos
processos para realizar as tarefas. Alguns sistemas operacionais utilizam um
processo mais "leve" chamado thread. Uma thread pode controlar o trabalho mas,
geralmente, não lida com os vários tipos de entrada/saída e não estabelece
estruturas que exijam o longo bloco de controle de processo de um processo regular.
Um processo pode iniciar muitas threads ou outros processos, mas uma thread não
pode iniciar um processo.
Em um sistema com duas ou mais CPUs, o trabalho é dividido. O sistema
operacional deve equacionar a demanda de cada processo para as diferentes
CPUs. Os sistemas operacionais assimétricos utilizam uma CPU para suas
próprias necessidades e dividem os processos dos aplicativos entre as outras CPUs.
Os sistemas operacionais simétricos compartilham as várias CPUs e equacionam
a demanda e a disponibilidade da CPU, mesmo quando o sistema operacional é o
único aplicativo em execução.
A CPU não é o único recurso requisitado mesmo quando somente o sistema
operacional está sendo executado. O gerenciamento da memória é um passo crucial
para que todos os processos sejam executados de maneira tranqüila.
Um processo passa por diferentes estados desde sua criação até seu término.
Enquanto ele é criado, seu estado é considerado "Novo"; em ação, muda para
"Executando"; quando depende da ocorrência de algum evento, vira "Esperando";
quando não mais necessário, o processo é "Terminado". O sistema operacional reúne
todas essas informações através de estruturas específicas chamadas PCB (sigla
de Process Control Blocks, o que em tradução livre seria Blocos de Controle de
Processos).
Os processos pai criam processos filhos, que, por sua vez, criam outros processos,
formando 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
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.
Calculado através da Moda(Estatística) que reza pelo valor que tem mais frequência
na situação, então seguindo a razão 0,9, o tempo de acesso é 20ns referente ao
acesso em cache.
int main()
{
int pid;
int pid2;
int i;
pid = getpid(); // RETORNA A ID DO PROCESSO
printf("PID = %4d \n", pid); // MOSTRA A ID DO PROCESSO
for (i=0; i<3; ++i)
{
pid = getpid(); // RETORNA A ID DO PROCESSO
printf("i = %4d, PID = %4d \n", i, pid); //MOSTRA A ID DO PROCESSO
pid2=fork(); //DUPLICA O PROCESSO ATUAL
if (pid2 != 0) printf("I am the parent %4d, i = %4d \n", pid2, i); //MOSTRA O PROCESSO
PAI
if (pid2 == 0) printf("I am a child %4d, i = %4d \n", pid2, i); //MOSTRA O PROCESSO
FILHO
sleep(5); //pausa o processo
}
}
Resp.: O código acima, faz referencia a criação de processos “pai e filho”, a instrução
“getpid”, retorna a ID do processo, neste caso, a ID do processo “PAI”, quando se usa
a instrução “FORK”, o processo “PAI” é duplicado, gerando o processo “FILHO”, se
“FORK” retornar zero, então o processo “FILHO” foi criado, se retorna um numero
diferente de zero, então o processo “PAI” foi criado. Como a instrução “FORK”
duplica o processo atual, ao entrar na instrução “FOR” o processo é duplicado 2,4 e
8, dando um total de 15 processos gerados.