Quais as vantagens e desvantagens do compartilhamento do espaço de endereçamento entre threads de um mesmo processo?

Classificado em Computação

Escrito em em português com um tamanho de 19,87 KB.

1)PPT 1 – Nível ISA   

O que significa? 

Nível da Arquitetura do Conjunto das Instruções ou Nível ISA - Instruction Set Architecture. 

Em uma máquina multinível, onde ela se localiza? 

Ela está localizada acima do Nível da Microarquitetura (2) e abaixo do Nível do Sistema Operacional (4). 

Quais as carácterísticas de um bom projeto de Nível ISA? 

Definir um conjunto de instruções que possa ser implementado com eficiência tanto nas tecnologias atuais como nas futuras. Fornecer uma interface eficiente com o compilador e com o hardware. 

Quais são as propriedades do Nível ISA? 

As instruções do nível ISA são aquelas pára as quais o compilador deve gerar código. 

Qual a principal carácterística do Nível ISA? 

É o seu conjunto de instruções de máquina. Essas instruções controlam tudo áquilo que a máquina pode fazer. LOAD e STORE, são instruções usadas pára permitir o movimento de dados entre a memória e os registradores. 

Formato das instruções 

Um programa é constituído de uma sequência de instruções, cada uma especificando alguma ação em particular. As instruções contêm, obrigatoriamente, “códigos de óperação” que irão gerar a ação desejada. Em algumas máquinas todas as instruções têm o mesmo tamanho, O fato de todas as instruções terém o mesmo tamanho (mesmo número de bits) simplifica muito o projeto do hardware. 

Quais são os critérios pára a determinação do formato das instruções? 

Instruções curtas são melhores que as longas, por serem menos complexas e ocuparem menos memória. Cada memória tem uma determinada taxa de transferência, a qual é maior pára instruções mais curtas, o que aumenta a velocidade de processamento. 

Pára que serve a Expansão dos Códigos de Óperação?  

A técnica da expansão dos códigos de óperação é utilizada pára permitir que todas as instruções de um conjunto possam manter o mesmo tamanho. 

Endereçamento 

Uma instrução pode ter mais de um endereço associado a ela. As formas de se endereçar uma determinada posição de memória ou registrador, são diversas, depende a óperação a ser executada. 

Tipos de Endereçamento 

Endereçamento Imediato, Endereçamento Direto, Endereçamento do Registrador, Endereçamento Indireto, Endereçamento Indireto Múltiplo, Endereçamento por Indexação, Endereçamento por Base Deslocamento e Endereçamento por Pilha. 

Fluxo de controle 

Entende-se por fluxo de controle a sequência na qual instruções são dinamicamente executadas no decorrer de um programa. Se não houver desvios ou chamadas de procedimentos, as instruções são executadas na sequência. Se houver chamada tem alteração no fluxo de controle, fazendo com que o procedimento corrente pára de ser executado e comece a execução do novo procedimento.  

Fluxo de Controle - Procedimentos (Sub-rotina) 

O procedimento (sub-rotina) é a técnica mais importante pára a estruturação de programas. De um lado, uma chamada a procedimento altera o fluxo de controle exatamente do mesmo modo que um desvio, mas o procedimento, ao contrário do desvio, quando termina sua tarefa retorna o controle pára o comando ou instrução seguinte à instrução de chamada. Uma sub-rotina é um grupo de instruções que executa alguma tarefa, e pode ser chamada em vários pontos do programa. Ao final da sub-rotina há uma instrução de retorno ao programa chamador. 

Fluxo de Controle - Co-Rotinas 

Os dois procedimentos podem considerar um ao outro como procedimento chamador e chamado. Quando uma co-rotina é retomada, a execução começa no comando suspenso anteriormente, e não no início. 

Fluxo de Controle - Traps 

Um trap é uma chamada a procedimento automática, iniciada sempre que ocorrer alguma condição específica causada pela execução de um programa. Por exemplo, Divisão por zero, Violação de proteção, Código de óperação inválido, Tentativa de acessar periférico de E/S que não existe, e etc. O trap é disparado pára evitar que uma anormalidade cause danos ao processamento. O trap detecta o problema pára o qual foi planejado, pára o processamento e alerta pára a ocorrência. O trap não tem, contudo, recursos pára uma eventual recuperação do problema e nem pára reiniciar o processamento. 

Fluxo de Controle - Interrupções 

As interrupções são modificações no fluxo de controle de um programa causadas por um evento externo ao processamento do programa, usualmente relacionados a óperações de E/S. 

Fluxo de Controle - Trap x Interrupções  

Se um programa for processado milhões de vezes, com as mesmas entradas, os traps vão ocorrer nos mesmos instantes relativos, a cada nova execução do programa. A ocorrência das interrupções irá variar a cada processamento, dependendo das ações dos dispositivos de E/S a cada instante. 


PPT 2 – SÓ TINHA EXERCICIOS (ACHO QUE NÃO CAI NA PROVA) 


PPT 3 – Nível ISA, INTERRUPÇÕES  

Ações do Hardware  

1- O controlador do dispositivo ativa uma linha de interrupção no barramento do sistema.  2- O processador ativa no barramento um sinal de reconhecimento da interrupção. 3- Quando o controlador do dispositivo enxerga o reconhecimento do sinal de interrupção, coloca um pequeno valor inteiro nas linhas de dados, pára identificação dele próprio. Esse número é conhecido como vetor de interrupção. 4- O processador remove o vetor de interrupção do barramento e salva seu valor temporariamente. 5- Em seguida o procedimento coloca na pilha o conteúdo do registrador Contador de Programa e do registrador contendo a PSW (Program Status Word). 6- Depois disso o processador localiza um novo Contador de Programa com a ajuda do vetor de interrupção que funciona como um índice pára uma tabela situada na parte baixa da memória. Muitas vezes a PSW é carregada e modificada (como no caso de ser necessário desabilitar outras interrupções por algum tempo).   

Ações do Software  

1- A primeira coisa que a rotina de tratamento de interrupção deve fazer é salvar o conteúdo de todos os registradores a fim de possibilitar que eles sejam restaurados mais tarde. Esses valores podem ser salvos na pilha ou em uma tabela do sistema. 2- Cada vetor de interrupção é compartilhado por todos os dispositivos de um mesmo tipo, de maneira que nesse momento ainda não se conhece qual dos terminais causou a interrupção. O número do terminal será conhecido a partir da leitura de um registrador do dispositivo. 3- Qualquer outra informação sobre a interrupção, como códigos de estado, pode ser obtida a partir desse momento. 4- Caso tenha ocorrido algum erro de E/S, ele poderá ser tratado agora. 5- Se necessário, é gerado um código especial pára informar ao dispositivo ou ao controlador do dispositivo que uma interrupção está sendo processada. 6- Todos os valores originais dos registradores são restaurados. 7. É executada a instrução RETURN FROM INTERRUPT, colocando o processador de novo no modo e no estado que ele tinha imediatamente antes da ocorrência da interrupção. O processador continua o processamento do programa como se nada tivesse acontecido. 


PPT 4 – Nível DO SISTEMA OPERACIONAL  

Em uma máquina multinível, onde ele se localiza? 

Ela está localizada acima do Nível ISA (3) e abaixo do Nível da Linguagem de Montagem (5). 

O que é um Só? 

Um Sistema Operacional - Só é um programa que, do ponto de vista do programador, adiciona um conjunto de novas instruções e de funcionalidades, além daquelas suportadas no nível ISA. O conjunto de instruções do nível do Só é aquele que está disponível pára os programadores de aplicações. Uma Chamada de Sistema ativa um determinado serviço prestado pelo Só ao nível da aplicação. 

Memória Virtual 

É uma estratégia de utilização combinada da memória principal com a memória dando aós processos a impressão de estarem fazendo uso de uma memória principal muito maior do que a real. 

O que são Overlays? 

São pedaços de um programa que ficam em disco, e são chamados pára a memória no momento de serem executados. A evolução deste método é a Páginação. 

Páginação 

Esta técnica de “overlay” automátiço é denominada páginação, e o conjunto de endereços lidos do disco é chamado de página. A páginação permite que o programa possa ser espalhado por área não contíguas de memória. O espaço de endereçamento lógico de um processo é divido em páginas lógicas de tamanho fixo. A memória física é dividia em páginas com tamanho fixo, com tamanho igual ao da página lógica. O Programa é carregado página a página, cada página lógica ocupa uma página física. Não existe fragmentação externa, somente interna. 

Fragmentação Interna 

É a memória alocada e não utilizada pelo programa. Este tipo de fragmentação ocorre sempre que o programa não utilizar toda a memória disponível na partição pára a qual foi alocado. 

Swapping 

No “swapping” um conjunto de segmentos deve estar na memória principal em um certo instante. Se ocorrer uma referência a um segmento que não está na memória principal, este segmento deve ser trazido do disco pára a memória. Se não houver espaço pára ele na memória, um ou mais segmentos devem ser retirados da memória e escritos de volta no disco. 

Segmentação 

Técnica de gerência de memória onde programas são divido em segmentos de tamanhos variados cada um com seu próprio espaço de endereçamento. A principal diferença entre a páginação e a segmentação é a alocação da memória de maneira não fixa, a alocação na segmentação depende da lógica do programa. O Mapeamento é feito através das tabelas de mapeamento de segmentos. Somente segmentos referenciados são transferidos pára a memória principal. Ocorre fragmentação externa. 

Fragmentação Externa 

A fragmentação externa ocorre entre segmentos, e não dentro deles. A sucessiva troca de segmentos numa memória principal cria intervalos ociosos que representam um desperdício deste recurso. Este problema é tratado através da compactação dos intervalos ociosos que faz essas movimentações em determinados intervalos de tempo. 

Controle de Espaço em disco 

Pára alocar área pára um arquivo em disco, o Só utiliza dois métodos: A lista livre e o Mapa de Bits. 

Processos 

Quando um programa roda, ele o faz como parte de algum processo. 

Criação de Processos 

Existe duas possibilidades:    1- O processo-pai cria, e mantém controle, sobre o processo-filhó (total ou parcial). 1.1- Há necessidade de instruções virtuais pára permitir que o processo-pai possa parar e retomar a execução de um processofilho. 1.2- Idem, pára examiná-lo e terminá-lo. 

2- O processo-pai cria o processo-filhó e este torna-se um processo independente. 


PPT 5 – Nível DO SISTEMA OPERACIONAL  

Páginação por demanda 

É possível começar a executar um programa em uma máquina com memória virtual sem que nenhuma de suas páginas esteja na memória principal. A tabela de páginas desse programa indica que todas as suas páginas estão na memória secundária.   Quando o processador tentar buscar a primeira das instruções do programa, haverá a geração de uma falta de página (page fault), que fará com que a página contendo a primeira instrução seja carregada na memória principal.  Este método de óperação de um sistema de memória virtual é conhecido como páginação por demanda. Nesta situação, as páginas são trazidas pára a memória principal em função de requisições explícitas pára cada uma delas, e não antecipadamente, ou seja, somente quando são referenciadas. 

Memória Virtual no Pentium II 

O Pentium II tem um sistema muito sofisticado de memória virtual que suporta: Páginação por demanda, Segmentação pura e Segmentação com páginação.   O coração da memória virtual está situado em duas tabelas:  A LDT (Local Descriptor Table – Tabela de Descritores Locais)  A GDT (Global Descriptor Table – Tabela de Descritores Globais) 

Cada programa tem sua própria LDT, mas só existe uma única GDT, compartilhada por todos os programas que rodam no processador. A LDT descreve os segmentos locais a cada um dos programas, incluindo seu código, seus dados, sua pilha e assim por diante, enquanto que a GDT descreve os segmentos do sistema, inclusive os segmentos do próprio sistema operacional. 

PPT 6 – Nível DO SISTEMA OPERACIONAL  

UNIX e suas funcionalidades 

Portabilidade, Memória virtual paginada, Extensão de nomes de arquivos com até 255 caracteres, Criação do protocolo TCP/IP. 

UNIX – Estrutura de seu sistema 

Na parte inferior existe uma camada que suporta os drivers de dispositivos, que faz a interface do sistema de arquivos com o hardware da máquina. Originalmente, cada driver de dispositivo era programado como sendo uma entidade independente, separada de todas as outras. Esse esquema levava a muito esforço duplicado, pois os drivers precisavam tratar com o fluxo de controle do programa, precisam tratar erros, prioridades, separar os dados do controle, e assim por diante. Acima dos drivers de dispositivos está o sistema de arquivos. Esse sistema gerencia os nomes dos arquivos e de diretórios, a alocação de blocos de disco, a proteção, etc. A cache de blocos faz parte do sistema de arquivos, com a função de armazenar os blocos lidos mais recentemente do disco, pára o caso deles serem necessários novamente em breve.  A outra parte do kernel do UNIX é responsável pela gerência dos processos. Entre suas diversas funções, ela trata da comunicação entre os processos (IPC – Inter Process Communication), que permite que os processos se comuniquem uns com os outros, pára estabelecer uma sincronização de suas execuções.  A gerência da memória também é implementada na parte relativa à gerência de processos. A maioria dos sistemas UNIX suporta memória virtual com base na páginação por demanda, às vezes com algumas carácterísticas extras, como a capacidade de permitir que vários processos compartilhem a mesma região do espaço de endereçamento. As primeiras versões do UNIX tinham interface com o usuário totalmente baseada em texto. Essa interface era tratada por um programa conhecido como shell, que rodava no nível do usuário, cuja comunicação com o usuário era feita por intermédio de comandos de linha.  O shell não fazia parte do kernel, sendo, portanto, muito fácil programar um shell e incorporá-lo ao UNIX. Com o surgimento das interfaces gráficas, as janelas foram incorporadas ao shell. 


PPT 7 – Nível DO SISTEMA OPERACIONAL  

Windows NT (New Technology) 

Com o passar dos anos, o MS-DOS continuou a ganhar novas carácterísticas, mas nunca deixou de ser um sistema operacional orientado a comandos de linha. A Microsoft, inspirada no sucesso do sistema Macintosh da Apple, decidiu dar ao MS-DOS uma interface gráfica, à qual déu o nome de Windows.  As primeiras três versões do Windows, inclusive a versão Windows 3.X, não eram sistemas operacionais na acepção da palavra, mas simplesmente interfaces gráficas com o usuário no topo do MS-DOS, que ainda era o responsável pelo controle da máquina.  Todos os programas rodavam no mesmo espaço de endereçamento e um problema ocorrido em um deles poderia derrubar todo o sistema.  O Windows NT trabalhava com 32 bits, e era vendido em duas versões: server e workstation. A versão servidor era voltada pára máquinas que rodavam o sistema de arquivos de redes locais e que atuavam como servidores de impressão, tendo um gerenciamento mais elaborado do que aquele exercido pela versão estação de trabalho.  O microkernel suportava objetos básicos do kernel, as interrupções, os traps, o tratamento de exceções, o escalonamento de processos e a sincronização entre processos, a sincronização de vários processadores e o gerenciamento do tempo do processador.  O propósito do microkernel era tornar o resto do sistema operacional completamente independente do hardware propiciando, portanto, a portabilidade independentemente da arquitetura do computador. O código do microkernel permanecia residente na memória não podendo sofrer preempção, ou seja, esse código não podia, em hipótese alguma, sair da memória principal.  

Drivers de dispositivos 

Cada driver controlava um ou mais dispositivos de E/S, mas um driver podia realizar tarefas que não estejam diretamente relacionadas com um dispositivo específico.  Havia a necessidade de tomar cuidado com os drivers, pois como as pessoas podiam instalar novos drivers, e como eles tinham acesso ao kernel, havia a possibilidade de corromper a estrutura do kernel. 

Executivo 

Este módulo era totalmente independente da arquitetura e, portanto, podia ser portado pára outras máquinas. Era composto por três níveis com várias funções em cada um deles. 

Sistema de arquivos 

Suportava o uso dos arquivos e dos diretórios. 

Gerente de objetos 

Tratava os objetos conhecidos do kernel: processos, threads (processos simples que rodam dentro de um úNicó espaço de endereçamento), arquivos, diretórios, semáforos, temporizadores, etc. 

Gerente de E/S 

Provia um ambiente pára possibilitar o controle dos dispositivos de E/S. 

Gerente da cache 

Mantinha na memória principal os blocos do disco mais recentemente usados pára acelerar o acesso a eles no caso deles serem novamente necessários. 

Gerente da memória virtual 

Implementava a arquitetura da memória com base na páginação por demanda. 

Gerente de processos e de threads 

Tratava dos processos e dos threads, incluindo sua criação e sua destruição. 

Gerente de segurança 

Era responsável pela aplicação do mecanismo de segurança: autenticação do login e controle de acesso. 

Gerente da interface gráfica 

Tratava das questões relativas às imagens do monitor e da impressora. Fazia, também, o gerenciamento das janelas. 

Serviços do sistema 

Sua função era implementar uma interface pára o Executivo, aceitando as chamadas de sistema do NT e chamando as outras partes do Executivo pára executá-las. 

Entradas relacionadas: