Lista 2
Lista 2
Lista 2
038-7
Lista 2
Text: é a seção que contém o código executável do programa. Essa seção é somente leitura e contém
as instruções que serão executadas pelo processador.
Data: é a seção que contém as variáveis globais e estáticas do programa. Essas variáveis têm um
escopo global em todo o programa e são inicializadas antes do início da execução.
Heap: é a seção que contém a memória dinamicamente alocada durante a execução do programa. Essa
seção cresce conforme novos blocos de memória são alocados e diminui quando a memória é liberada.
Stack: é a seção que contém a pilha de execução do programa, que é usada para armazenar variáveis
locais e endereços de retorno de chamadas de função. Essa seção cresce e diminui conforme as
funções são chamadas e retornam.
Em resumo, a figura representa um processo em execução na memória, com suas diferentes seções
representando as várias áreas de memória usadas pelo programa em execução.
2- Multiprogramação é uma técnica utilizada pelos sistemas operacionais para permitir que vários
processos sejam executados simultaneamente na CPU. A ideia é manter a CPU ocupada a maior parte
do tempo possível, alternando entre a execução de vários processos. As vantagens da
multiprogramação incluem o aumento da utilização da CPU, a melhoria da eficiência do sistema, o
aumento do throughput e a redução do tempo de resposta para as tarefas do usuário. As desvantagens
incluem o aumento da complexidade do sistema operacional, a necessidade de gerenciamento de
recursos e a possibilidade de contenção de recursos.
3- Os processos podem ser criados em resposta a vários tipos de eventos, como a chegada de uma
solicitação do usuário, a execução de um programa, a resposta a uma interrupção ou a execução de
uma tarefa em segundo plano. Os processos são terminados quando concluem a execução de suas
tarefas, quando são encerrados pelo usuário ou quando ocorre um erro fatal que impossibilita a
continuação da execução.
6- Durante as trocas/mudanças de contexto, o kernel realiza várias ações para garantir a correta
execução dos processos, incluindo a interrupção da execução do processo atual, a seleção de um novo
processo para execução, a atualização das estruturas de controle de processos, a mudança de contexto
da CPU para o novo processo e a retomada da execução do novo processo a partir do ponto em que foi
interrompido.
7- Uma tabela de processos é uma estrutura de dados utilizada pelos sistemas operacionais para
armazenar informações sobre os processos em execução no sistema. Essa tabela é geralmente mantida
pelo kernel do sistema operacional e contém informações como o ID do processo, o estado atual do
processo, a prioridade do processo, a quantidade de memória utilizada pelo processo, os recursos
alocados ao processo, entre outras informações relevantes.
Essa tabela é utilizada pelo sistema operacional para gerenciar os processos e suas interações com
outros processos e recursos do sistema. Além disso, a tabela de processos é usada para permitir que o
sistema operacional gerencie a alocação de recursos compartilhados entre os processos, como CPU,
memória e dispositivos de entrada e saída.
10- A saída da linha A será "PARENT: value = 5". Quando a chamada de sistema "fork()" é feita, o
valor da variável "value" é copiado para o processo filho. Portanto, o processo filho tem sua própria
cópia da variável "value" e pode modificá-la sem afetar o valor da variável no processo pai. No
processo filho, o valor da variável "value" é incrementado em 15, mas essa alteração não é refletida no
processo pai. Quando o processo pai imprime o valor da variável "value", ele ainda é igual a 5.