Escolar Documentos
Profissional Documentos
Cultura Documentos
Faculdade de Engenharia
Departamento de Electrotécnica
1.1 Contextualização
1.2 Objectivos
Geral:
Específicos:
Descrever a gestão de eventos que é feita pelo núcleo de um sistema multiprogramado.
Descrever as Interrupções de Processos
Descrever a Concorrência e sincronização de Processos
1.3 Metodologia
Sistemas operacionais precisam de alguma maneira para criar processos. Em sistemas muito
simples, ou em sistemas projectados para executar apenas uma única aplicação (por exemplo, o
controlador em um forno microondas), pode ser possível ter todos os processos que serão em
algum momento necessários quando o sistema for ligado. Em sistemas para fins gerais, no
entanto, alguma maneira é necessária para criar e terminar processos, na medida do necessário,
durante a operação.
Tanto no sistema UNIX quanto no Windows, após um processo ser criado, o pai e o filho têm
os seus próprios espaços de endereços distintos. Se um dos dois processos muda uma palavra no
seu espaço de endereço, a mudança não é visível para o outro processo. No UNIX, o espaço de
endereço inicial do filho é uma cópia do espaço de endereço do pai, mas há definitivamente dois
espaços de endereços distintos envolvidos; nenhuma memória para escrita é compartilhada.
Algumas implementações UNIX compartilham o programa de texto entre as duas, tendo em vista
que isso não pode ser modificado. Alternativamente, o filho pode compartilhar toda a memória do
pai, mas nesse caso, a memória é compartilhada no sistema copy-on-write (cópia-na- -escrita), o
que significa que sempre que qualquer uma das duas quiser modificar parte da memória, aquele
pedaço da memória é explicitamente copiado primeiro para certificar-se de que a modificação
ocorra em uma área de memória privada. Novamente, nenhuma memória que pode ser escrita é
compartilhada. É possível, no entanto, que um processo recentemente criado compartilhe de alguns
dos outros recursos do seu criador, como arquivos abertos. No Windows, os espaços de endereços
do pai e do filho são diferentes desde o início.
2.1.1 Concorrência
2.1.2 Sincronização
Com o chaveamento rápido da CPU entre os processos, a taxa pela qual um processo
realiza a sua computação não será uniforme e provavelmente nem reproduzível se os mesmos
processos forem executados outra vez. Desse modo, processos não devem ser programados com
suposições predefinidas sobre a temporização. Considere, por exemplo, um processo de áudio
que toca música para acompanhar um vídeo de alta qualidade executado por outro dispositivo.
Como o áudio deve começar um pouco depois do que o vídeo, ele sinaliza ao servidor do vídeo
para começar a execução, e então realiza um laço ocioso 10.000 vezes antes de executar o áudio.
Se o laço for um temporizador confiável, tudo vai correr bem, mas se a CPU decidir trocar para
outro processo durante o laço ocioso, o processo de áudio pode não ser executado de novo até
que os quadros de vídeo correspondentes já tenham vindo e ido embora, e o vídeo e o áudio
ficarão irritantemente fora de sincronia. Quando um processo tem exigências de tempo real,
críticas como essa, isto é, eventos particulares, têm de ocorrer dentro de um número específico
de milissegundos e medidas especiais precisam ser tomadas para assegurar que elas ocorram. Em
geral, no entanto, a maioria dos processos não é afectada pela multiprogramação subjacente da
CPU ou as velocidades relativas de processos diferentes.
Ao fazer a CPU atrasar esse reconhecimento até que ela esteja pronta para lidar com a
próxima interrupção, podem ser evitadas condições de corrida envolvendo múltiplas (quase
simultâneas) interrupções. Como nota, alguns computadores (mais velhos) não têm um
controlador de interrupções centralizado, de maneira que cada controlador de dispositivo solicita
as suas próprias interrupções. O hardware sempre armazena determinadas informações antes de
iniciar o procedimento de serviço. Quais informações e onde elas são armazenadas varia muito
de CPU para CPU. No mínimo, o contador do programa deve ser salvo, de maneira que o
processo interrompido possa ser reiniciado. No outro extremo, todos os registadores visíveis e
um grande número de registadores internos podem ser salvos também. Uma questão é onde
salvar essas informações. Uma opção é colocá-las nos registadores internos que o sistema
operacional pode ler conforme a necessidade. Um problema com essa abordagem é que então o
controlador de interrupções não pode ser reconhecido até que todas as informações
potencialmente relevantes tenham sido lidas, a fim de que uma segunda informação não
sobreponha os registadores internos durante o salvamento. Essa estratégia leva a longos períodos
de tempo desperdiçados quando as interrupções são desabilitadas e possivelmente a interrupções
e dados perdidos. Em consequência, a maioria das CPUs salva as informações em uma pilha. No
entanto, essa abordagem também tem problemas.
3 Conclusão
Neste trabalho ficamos a saber da gestão de eventos que é feita no núcleo de um sistema
multiprogramado, Onde vimos que as chamadas do sistema podem ser feitas em threads que são
executas dentro do processador e que são criadas durante a execução de um processo .
Entretanto, As interrupções são eventos que são causados a nível do hardware, sendo assim é um
evento que ocorre a nível dos dispositivos mas que o núcleo do sistema deve ser capaz de
gerenciar.
BOYD-WICKIZER, S. et al. Corey: an Operating System for Many Cores. Proc. Eighth Symp.
on Operating Systems Design and Implementation, USENIX, p. 43-57, 2008.
CLEMENTS, A. T. et al. The Scalable Commutativity Rule: Designing Scalable Software for
Multicore Processors. Proc. 24th Symp. on Operating Systems Principles, ACM, p. 1-17, 2013
HAUSER, C. et al. Using Threads in Interactive Systems: A Case Study. Proc. 14th Symp. on
Operating Systems Principles, ACM, p. 94-105, 1993.