Tag: Parte teórica

SO1 – conceitos fundamentais de SO

Capítulos: 1, 2 e parte do 3 do livro: Fundamentos de Sistemas Operativos, José Alves Marques, Paulo Guedes – 3ª edição – Editorial Presença
Capitulo 1 do livro: Operating Systems Concepts – 6-º edição – Addison-Wesley

#objectivos, constituição e tipos de sistema operativos
Um sistema operativo é um programa ou conjunto de programas que efectua a gestão de tudo o que há na máquina

Posicionamento do sistema operativo
utilizador
programas utilizador (aplicações, interface utilizador)
sistema operativo (interface com aplicações (API), componentes do S.O, interface com hardware)
hardware

objectivos dos sistemas operativos:
efectuar a gestão da máquina (gestão de recursos da máquina, implementação de politicas de optimização)
virtualizar o hardware
prestação de serviços e ambiente de trabalho
garantir a estabilidade da máquina (recursos)

Posicionamento do sistema operativo (camada mais alta):
utilizador
aplicações e interface utilizador
sistema operativo (API, componentes do SO, interface com hardware)
hardware

Entidades que interagem com o sistema operativo:
utilizador (requer serviços e obtém feedback)
aplicações (requer serviços e recursos, e obtém serviços e recursos, e controlo do comportamento das aplicações)
hardware (faz notificações e recepção de dados, e recebe a configuração do hardware, instruções aos dispositivos, envio de dados)

qualquer programa obtém recursos ou serviços através de chamadas ao sistema. Essas funções acessíveis são a API do sistema
as aplicações devem ter acesso ás funções sem serem obrigadas a conhecer o endereço exacto onde residem
as aplicações não devem poder saltar para locais arbitrários dos códigos das funções de sistema
as aplicações não devem ter a possibilidade de alterar o código das funções

tarefas do sistema operativo:
configurar o hardware no arranque do sistema
controlar o estado do hardware e efectuar a gestão de erros
receber notificaçõs enviadas pelos periféricos (hardware)

os device-drivers, são sub-programas que que executam estas tarefas

Tipos de sistemas operativos:
(relação tempo da maquina e tempo real)
sistema de tempo virtual
sistema de tempo real
(quanto ao numero de processadores)
sistemas paralelos (memoria e relógio partilhado)
sistemas distribuídos (memoria e relógio independentes)

Questões:
o que é um sistema operativo?
que pontos de vista existe, acerca do que é ou deixa de ser um sistema operativo?
que entidades interagem com o sistema operativo=
em que condições um programa pode aceder ao hardware?
o ser humano interage com o sistema operativo? de que forma?
como é que o hardware interage com o sistema operativo?
quais os objectivos principais de um sistema operativo moderno?
o que é um API?
como é que os programas-utilizador utilizam os recursos do sistema operativo?
o que é o isolamento de um processo?
o que é isso de abstrair o hardware? dê exemplos
o que é que impede um programa-utilizador de tornar o controlo da máquina?
que tipos de sistema existem? dê exemplos de aplicação para cada um.

#arquitecturas de sistemas operativos

núcleo do sistema operativo:
conjunto de funcionalidades (camadas) dos sistema onde se incluem as funções mais importantes e mais privilegiadas
deve ser sempre executado no modo mais privilegiado
porquê?
necessidade de executar instruções privilegiadas,
necessidade de protecção quanto a interferências do resto do sistema ou programas utilizador
execução prioritária

funções do núcleo:
gestão de processos (controlo de interrupções, escalonamento, despacho, mecanismos de sincronização)
gestão de memória

os sistemas monolíticos:
não existe um encapsulamento funcional
o sistema operativo é constituído por um conjunto de procedimentos ou funções que se podem chamar uns aos outros
vantagens: mais rápidos
desvantagens: não têm uma estrutura, logo é difícil implementar
desvantagens: dificuldade em isolar responsabilidades no sistema

os sistema em camadas:
as tarefas e responsabilidades do sistema operativo são atribuídas a uma camada especifica

as camadas:
gestão de processos
gestão de memoria
comunicação E/S
sistemas de ficheiros
interface do sistema (funções de sistema e interpretador de comandos)
aplicações

tarefas da camada de processos:
criar a terminar processos
escalonamento e despacho de processos
comutação de processos e tratamento de interrupções
suporte para sincronização de processos

tarefas da camada de memória:
controlo da utilização da memória física e memória virtual

tarefas da camada de comunicação e E/S:
mecanismos de comunicação entre processos
comunicação com o exterior E/S

tarefas da camada de sistemas de ficheiros:
virtualização dos dispositivos de massa

tarefas da camada da interface dos sistema:
serviços proporcionados pelo sistema
interpretador de comandos

vantagens:
protecção, impedir a interferência com outros processo ou com o próprio sistema
se o hardware suportar, cada camada terá o seu próprio modo de execução
actualmente, arquitectura mista, sistemas não monolíticos e poucas camadas

desvantagens:
não é fácil determinar a hierarquia das camadas

arquitectura das máquinas virtuais:
são uma evolução dos sistemas de tempo partilhado

surge o hypervisor:
serve para a funcionalidade de virtualização
é um sistema operativo não genérico
hypervisor tipo 1 (nativo: sistema que faz a gestão do hardware)
hypervisor tipo 2 (hospede: virtualbox)

vantagens:
separação da multiprogramação e do virtualização do hardware
ter várias máquinas numa só
hypervisor tipo 1: melhor gestão do hardware, independentes de um sistema operativo genérico
hypervisor tipo 2: menor investimento, integração com um sistema que já existe

desvantagens:
difícil de implementar em alguns hardwares
hypervisor tipo 1: menor facilidade de interacção por parte dos utilizadores (só através de remote)
hypervisor tipo 2: menor performance, dependência do sistema operativo onde está instalado

arquitectura do cliente/servidor:
divisão lógica do sistema operativo em unidades funcionais
núcleo reduzido e simplificado: micro-kernel
os serviços do sistema são proporcionados por programas
os serviços são solicitados através de mensagens entre processos
o núcleo: faz o escalonamento e despacho; e a gestão da comunicação entre processos
fora do núcleo: fica a gestão a de memoria e a gestão de ficheiros

existem dois modos:
modo de utilizador: aplicações, servidor de display, sistema de ficheiros, etc
modo de núcleo: hardware, e micro-kernel

vantagens:
núcleo simplificado e rápido
sistema mais estável
adaptável a sistemas distribuídos
portabilidade melhorada

desvantagens:
???

Questões:
quais as características de cada arquitectura de sistemas?
quais as vantagens e desvantagens de cada arquitectura de sistemas?
o que é um núcleo? como pode identificar facilmente?
o núcleo corresponde ao sistema operativo? justifique e dê exemplos
quais as arquitecturas de sistemas operativo que conhece? descreva-as detalhadamente e de forma coerente. para cada ima indique uma vantagem e uma desvantagem
qual é o melhor? um sistema monolítico ou um sistema em micro-kernel?
identifique exemplos de aplicação em sistemas de máquinas virtuais.
qual a diferença principal entre um sistema de tempo virtual e um sistema de tempo real?
qual a diferença principal entre um sistema paralelo e um distribuído?
aplicaria um sistema de tempo virtual para controlar o sistema de direcção de um míssil? Porquê?

#implementação de funções sistema e mecanismo de interrupções
o mecanismo de interrupções, serve para notificar de forma assíncrona a ocorrência de situações
as interrupções não são explicitas, podem ocorrer a qualquer momento
o programador nem o compilador sabem que interrupções são usadas em que funções
o uso do mecanismo de interrupções e os privilégios de execução, fazem com que as interrupções sejam usadas com segurança (protecção)

exemplos das situações:
fim de operação de E/S
houve uma tentativa de utilização de um endereço inválido
o processador encontrou uma instrução que não conhece
é preciso ir buscar um bloco de memória ao disco e colocá-lo em memória
é preciso transferir a execução do código de um processo para o código do sistema operativo
terminou o tempo máximo concedido a um processo

mecanismos de interrupções:
interrupções: gerada por periféricos e essencial para operações de E/S
traps: pedidas pelo próprio programa, úteis para chamadas ao sistema
excepções: pedidas pelo processador, essenciais para tratar erros do sistema operativo

como funcionam:
a) um dispositivo (controlador) activa a linha de IRQ
b) o processador interrompe a execução e executa uma rotina de serviço de interrupção (ISR)
o serviço de rotina está numa tabela fixa (e conhecida) na memória, é a tabela de interrupções
e pode existir um esquema de interrupções hierarquizado, inibindo as interrupções de menor prioridade
c) a rotina de serviço de interrupção averigua a causa da interrupção

as traps:
similares as interrupções
são explicitas
uma trap é uma determinada chamada ao sistema

como implementar as chamadas ao sistema com interrupções:
as traps, sabem qual é o endereço da rotina, que está numa tabela e não é conhecido pelo processo, destam forma pode mudar de kernel
as traps, protegem contra saltos indevidos, a trap salta para o endereço que consta na tabela de interrupções. Essa tabela está protegida conta escrita no modo de utilizador
as traps, pode passar do modo de utilizador para modo de núcleo, permitindo assim uma passagem para um modo mais privilegiado

as excepções:
funcionam como as interrupções e as traps
é desencadeada pelo processador

exemplos das situações:
operações inválidas
tentativa de acesso a zonas de memoria de outros processos
falta de página
tentativa de execução de uma instrução privilegiada em modo de utilizador

Questões:
como é que os programas-utilizador encontram as rotinas do sistema operativo?
o que é o modo núcleo? em que difere do modo de utilizador?
é possivel implementar um linux ou windows moderno num 8086? porquê?
o que é uma trap e para que serve?
como é que o sistema detecta que um programa está a tentar usar um endereço inválido?
como é que o controlador dos disco rígido (por exemplo) avisa o sistema que ocorreu um erro?
o que é uma função sistema?
qual a diferença entre uma função sistema e função biblioteca?
dê um exemplo de função de biblioteca
dê um exemplo de função de sistema
o que é a fase de linkagem e que se serve (o que faz)?

#processos e threads
um programa é uma sequência de instruções, é uma entidade passiva
os processos são entidades activas que partilham o processador , que está em execução
o escalonamento é efectuado em termos de processos (o mesmo programa pode estar a ser executado em diferentes processos)
e um processo pode ser dividido em threads

um processo é constituído por regiões (top down):
pilha (colocadas as variáveis locais, a serem executadas pelo processador)
espaço de endereçamento não utilizado
heap (zonas de memória dinâmicas, por exemplo mallocs)
dados inicializados (variáveis estáticas ou locais)
código (instruções que vão ser executadas pelo processador)

o processo pode ser executado em:
modo utilizador (instruções definidas pelo programador)
modo núcleo (a execução decore dentro de funções de sistema invocadas pelo processo)

Questões:
qual a diferença entre processo e programa?
em que circunstâncias pode um processo estar associado a nenhum programa?
um programa pode estar a ser executado em vários processos?
um processo pode estar a executar vários programas?
descreva as zonas de memória típicas de um processo. Para que serve cada uma?
qual a diferença entre processo e thread?
é possivel um processo ter zero threads?
dê um exemplo concreto onde seja útil ter mais que uma thread.


Capítulo: 1 (introdução) – Fundamentos de Sistemas Operativos, José Alves Marques, Paulo Guedes – 3ª edição – Editorial Presença

Os sistemas de tratamento por lotes procuram resolver a principal limitação do desempenho resultante da diferença considerável entre o tempo de execução do processador e das operações de E/S sobre periféricos mecânicos. As operações lentas de E/S foram relegadas para equipamentos auxiliares permitindo que o processador central executasse um fluxo continuo de trabalho.

Multiprogramação
todos os sistemas anteriores (antes da Multiprogramação) só se tornaram possíveis através da utilização dos mecanismos de interrupção que permitem multiplexar o processador entre diversas actividades executadas concorrentemente. estes sistemas permitem o desenvolvimento de sistemas de tratamento por lotes de grande eficácia.
O sistema multiprogramado permite que diversos programas estejam simultaneamente activos. A multiprogramação só é eficaz se os diversos programas residirem na memória central, pois só assim a mudança de contexto se poderá processar rapidamente. Mas a memória física é limitada e pode ser impossível manter simultaneamente em memória diversos programas com tamanhos variados. a solução passa pela existência de uma hierarquia de memória que permita, quando se torne necessário carregar um novo programa e salvaguardar na memória secundária alguns dos programas bloqueados (é o swapping).
a atribuição cíclica do tempo do processador os vários utilizadores permitiu ultrapassar esta limitação dando a cada programador a ilusão de dispor de uma máquina própria, surgindo os sistemas de tempo partilhado.

Sistemas interactivos
são sistemas onde podem existir vários utilizados que sem quaisquer conhecimentos de especialização conseguem interagir com os sistemas dos computadores.
a multiplexagem entre vários utilizadores impõe a divisão do tempo disponível do processador entre os diferentes utentes, atribuindo-lhes fatias de tempo que permitam dar-lhes a sensação de dispor de uma máquina dedicada.
surge nestes sistemas a necessidade de dar importância: sistemas de ficheiros, a protecção, a linguagem de interacção com o sistema.

Memória virtual
diversos algoritmos foram desenvolvidos com o objectivo de rentabilizar a utilização da memória física disponivel.
com a evolução do hardware de gestão de endereços existiu a possibilidade de trabalhar sobre um espaço de endereçamento virtual de dimensões muito superiores e independentes da memória física existente na máquina.

Tipos de Sistemas Operativos
os sistemas de tempo virtual, o tempo de execução dos programas não tem relação com o tempo cronológico exterior à máquina (os job-shop)
os sistemas de tempo real, os sistemas onde a noção de tempo é relevante, este têm como objectivo conseguir ao fim de um intervalo de tempo limitado e previamente especificado. No sistemas de tempo real podem ser englobados ainda os sistemas transaccionais, onde o tempo de resposta aos pedidos dos utilizadores continua a ser critico, se bem que numa escala mais lata e com muito menor responsabilidade associada.

Arquitectura do Sistema Operativo
existe uma decomposição do sistema em camadas funcionais. cada camada constitui um nível de abstracção que implementa uma máquina virtual com uma interface bem definida. sobre esta máquina pode constituir-se uma outra que utiliza os serviços da camada precedente para implementar o próximo nível de abstracção. Cada camada encapsula a implementação dos níveis inferiores fazendo que seja possivel modifica-los sem afectar as camadas exteriores.

níveis do sistemas operativo

gestão de processos: cada processo pode ser considerado como uma máquina virtual que executa um programa. multiplexa o processador entre os processos activos que se comportam como máquinas executando um programa. a gestão dos processos encarrega-se do tratamento das interrupções, despacho dos processo e da respectiva sincronização
gestão de memória: controla a utilização da memória física, e a sua relação com o espaço de endereçamento virtual onde se desenrola a execução dos processos
comunicação e entradas/saídas: os processos necessitam de comunicar para poderem gerir recursos comuns ou controlar a execução das aplicações
sistema de ficheiros: a gestão de ficheiros é responsável pela implementação eficiente de uma organização lógica que virtualiza os dispositivos de memória de massa
interface de sistema: funções sistema (as funções de sistema constituem a interface dos serviços providenciados pelas camadas internas do sistema operativo. as interfaces às funções são agrupadas em bibliotecas de rotinas que podem ser ligadas com os programas dos utilizadores de forma a permitir-lhes aceder aos mecanismos sistema); interpretador de comandos (a aplicação interpreta um conjunto de comandos que permitem fazer executar as operações mais vulgares de interacção com o sistema)
Os mecanismos de protecção também são presentes em todos os níveis. o sistema tem que garantir que os processos não podem realizar operações que ponham em risco o próprio funcionamento do sistema ou interfiram indevidamente com os objectos pertencentes a outros processos. os mecanismos de protecção podem ser implementados de diversas formas adaptadas ao tipo de informação manipulada em cada nível.

Modelo computacional
o modelo computacional é o conjunto de objectos do sistema operativo e as operações que os permitem manipular. é o conjunto de funções do sistema de que o programador dispõe para o desenvolvimento de aplicações e que lhe possibilitam estender a capacidade das linguagens de programação sequenciais. quando se entra no domínio das aplicações complexas, é necessário utilizar as capacidades oferecidas pelos sistemas operativos para obter o desempenho, a interactividade e o paralelismo de que numerosas aplicações necessitam.

Capítulo: 2 (a gestão dos processos) – Fundamentos de Sistemas Operativos, José Alves Marques, Paulo Guedes – 3ª edição – Editorial Presença

O pseudoparalelismo
os sistemas com múltiplas actividades paralelas são designados por sistemas concorrentes. a concorrência advém da existência de diversos fluxos de actividade que vão disputar acesso aos recursos dos sistema e que são limitados.
a multiplexagem do processador é feita internamente com critérios perfeitamente bem definidos.
um processo é um fluxo de actividade que desde a sua criação se executa continuadamente, excepto quando podemos considerar cada processo como uma máquina virtual que executa um determinado algoritmo definido pelo seu programa
o não determinismo como é feita a multiplexagem do processador é uma característica fundamental a ter em conta na utilização do modelo computacional. um programador que estruture uma aplicação em várias actividades concorrentes não pode assumir uma sequência predeterminada de utilização do processador.

Processador, processo e programa
um processo, é a entidade activa no sistema. executa um conjunto de acções que são determinadas por um programa. um processo pode durante a sua vida executar diversos programas. um processo é uma entidade activa controlada por um programa e que necessita de um processador para pode executar-se. um processo define:
um conjunto de operações: operações elementares (proporcionadas pelo hardware da máquina física. o sistema operativo não pode permitir que os processos interfiram com os seus próprios mecanismos de gestão. as instruções normalmente vedadas aos processos, relacionam.se com as interrupções entradas/saídas e mecanismos de protecção); e operações de interacção com as outras máquinas virtuais (os outros processos existentes no sistema)
um espaço de endereçamento: um processo executa-se dentro de um espaço de endereçamento bem delimitado, evitando que possa interactuar de forma indevida com os outros processos ou com ao próprio sistema operativo. surgem assim os mecanismos de protecção que o sistema operativo implementa. a protecção garante que um processo nunca poderá interferir com outro ou com o próprio sistema sem ser através de mecanismos seguros e fiáveis, controlados pelo próprio sistema.
um processo em cada instante encontra-se numa determinada etapa de execução. associado a cada processo existe um vector de estado ou contexto que mantém toda a informação de que os sistema operativo necessita para poder retomar a execução de um processo interrompido.  No contexto é memorizada a informação relacionada com o processador e com o ambiente de software no qual o processo se executa. a informação relativa ao processador é mantida no contexto, vulgarmente designado de hardware. o contexto de software contém informações que permitem gerir os recursos do sistema e conhecer os atribuídos a um processo e que são: identificação do processo e do utilizador, prioridade, estado do processo, periféricos utilizados, ficheiros abertos, programa em execução, directoria actual e por omissão, cotas de utilização dos recursos, contabilização da utilização dos recursos. O contexto de um processo é uma estrutura de dados, interna ao sistema operativo que mantém todas as informações sobre o estado e ambiente de execução, recursos utilizados e respectiva contabilização. A criação de processos estabelece uma relação hierárquica entre os processos, podendo o processo pai interferir sobre a execução dos seus filhos.
um programa não é mais que uma sequência de instruções sem actividade própria que seja executado em contexto de um processo. uma sequência coerente de instruções. um programa ou partes de um programa podem ser partilhados por diversos processos.

A função dos mecanismos de sincronização
determinadas aplicações só podem ser eficientemente implementadas quando suportadas por diversas actividades independentes. a decomposição do algoritmo em actividades paralelas permite também esperar obter um melhor desempenho global da aplicação. a sincronização da actividade dos processos podem acontecer por:
cooperação entre processos: que resulta da necessidade de interacção entre diversas actividades para executarem uma aplicação comum. por exemplo um processo só poderá prosseguir depois de outro ter executado uma determinada operação.
competição por um recurso: a competição pela obtenção de um recurso único ou limitado impõe também a necessidade de mecanismos de sincronização.
exclusão mutua: é um caso particular da competição por um recurso, o acesso exclusivo a uma estrutura de dados. A manipulação de estruturas de dados partilhadas deve ser realizada de forma atómica. as diferentes variáveis que constituem a estrutura de dados têm de ser actualizadas em conjunto, não se podendo permitir actualizações parciais (secção critica). é assim um caso particular de competição para um recurso único que corresponde ao direito de efectuar a actualização de uma estrutura de dados partilhada.

Semáforos
os semáforos devem ser considerados como parte integrante da camada do núcleo do sistema operativo que multiplexa o processador.
espera activa: o processo que espera a possibilidade de entrar na secção critica detém o recurso único no sistema, o processador, sem o qual não pode ser libertado o trinco. pare evitar esta situação, o processo que espera a libertação de um recurso deve ser bloqueado ficando no sistema memorizada a razão que motivou o bloqueio. o processo permanece nesse estado até que a libertação do recurso lhe permita prosseguir a execução.

espera activa
o semáforo implementa um mecanismos de sincronização sem espera activa. um semáforo é constituído por uma estrutura de dados composta por uma variável de controlo e por uma fila de espera destinada a conter os descritores dos processo bloqueados. os semáforos são facilmente implementados com base no mecanismo de exclusão mutua e numa lista onde são colocados os contextos dos processos bloqueados.
diagrama de estados do processo
estados dos processos:
em execução:
executável: à espera de uma oportunidade de dispor do processador
bloqueado: o processo é retirado da lista dos que concorrem para a obtenção do processador. significa retirar de execução, salvaguardar o seu contexto, marcar o seu estado como bloqueado e colocar o contexto na fila de espera que mantém os descritores dos processo bloqueados no semáforo.
desbloquear: corresponde a retirar o processo da fila de espera do semáforo, modificar o seu estado para executável e transferi-lo para a fila dos processo executáveis. o processo voltará a executar-se quando o despacho o seccionar.
O FIFO é o método mais concorrente para a gestão da fila do semáforo.

Cooperação entre processos
consiste em bloquear um processo P1 até que um processo P2 lhe assinale que uma determinada acção ou acontecimento se produziu. Para isso é necessário que exista num processo activo: bloquear-se à espera de um sinal a ser emitido por outro processo e activar um processo bloqueado.

Sincronização directa
Surge uma nova fila de espera onde o processo pode ser colocado. É usado um par de primitivas (Suspender e Acordar) que actua directamente sobre o processo bloqueando-o numa fila de processos suspensos ou acordando-o.
estado dos processos
Têm de existir mecanismos para evitar que um processo possa arbitrariamente suspender outro sobre o qual não detém qualquer privilégio, permitindo o uso de sincronização directa entre processos relacionados hierarquicamente.

Sincronização indirecta
Tem como vantagem garantir a igualdade de tratamento a todos os processos com os mesmos privilegiados. Surge o conceito de semáforo privado.

Capítulo: 3 (o núcleo do sistema operativo) – Fundamentos de Sistemas Operativos, José Alves Marques, Paulo Guedes – 3ª edição – Editorial Presença

As interrupções
As interrupções permitem desviar assincronamente a execução de um programa para outro. Tem que haver: controlo de aceitação das interrupções (acontecimentos de maior prioridade interrompem os de menor); salvaguarda do contexto (o contexto do programa interrompido deve ser salvaguardada); selecção da rotina de tratamento da interrupção. As interrupções podem ser provocadas pelo hardware; por situações de excepção ou desencadeadas por instruções especiais.

A protecção estabelece-se a dois níveis: o primeiro está relacionado com a possibilidade de impedir aos processos utilizador a execução de instruções que podem afectar o funcionamento global da máquina; o segundo está relacionado com a unidade de gestão de memória, sendo que o espaço de endereçamento dos processos utilizador e dos sistema sejam perfeitamente delimitados, impedindo que os respectivos dados possam ser corrompidos.

O sistema operativo estrutura-se em camadas com as funções necessários ao modelo computacional: gestão de processos, gestão de memória, comunicação de entradas e saídas, sistema de ficheiros, suporte  utilizadores.

A gestão de processos –  executada no núcleo do SO
a gestão de processos activos pode ser: controlo das interrupções, despacho, sheduling e primitivas de sincronização.

A multiplexagem do processador é efectuada conjuntamente por duas entidades funcionais:
gestão do processador , escalonamento: implementa a politica global de gestão e optimiza a utilização de todos os recursos da máquina
e o despacho: tem por função determinar o próximo processo a executar-se e efectuar a comutação do contexto

assim a gestão dos processos tem que ter em conta o seguinte:
multiplexagem do processador:
funções de sincronização:
gestão de interrupções: as interrupções são o mecanismo que permite a comunicação assíncrona entre o processador e o sistema, e sem elas diminuiria a possibilidade de efectuar simultaneamente várias actividades. A mudança de contexto de uma actividade para outra ocorre devido à activação de uma interrupção que retira o controlo do processador ao processo em execução para o transferir para uma rotina de interrupção. As interrupções são globais, não são dirigidas a um determinado processo. As excepções relacionam-se apenas com o processo que as provoca e deverão, portanto, ser tratadas no seu contexto.
O processo tem um contexto de hardware (acumuladores, registo de uso geral, contador de programa, apontador de pilha, registo de estado do processador) e de software (identificador do processo e do utilizador, prioridade, estado do processo, periféricos utilizados, ficheiros abertos, programa em execução, directoria actual, quotas de utilização de recursos, contabilização da utilização dos recursos).
Os contextos dos processos activos são mantidos na Lista dos Processos Executáveis que procura reflectir o algoritmo de selecção do despacho.

Despacho
A rotina de despacho é chamada sempre que o processo actual deve ser comutado ou exista a possibilidade de ser comutado. a comutação de processos é o mecanismo básico para implementação da pseudoconcorrência, o seu funcionamento apenas necessita de uma gestão cuidada das interrupções.

Gestão do processador , escalonamento
o processador é um recurso crítico do sistema pelo que o escalonamento tenta optimizar a sua utilização mantendo-o tanto quanto possivel ocupado.

O escalonamento tem três objectivos:
procurar equilibrar a carga do sistema por forma a dar um serviço relativamente uniforme aos utilizadores interactivos
dotar o sistema de grande reactividade às condições externas
conseguir que o sistema execute determinadas acções em intervalos de tempo pré-determinados

Existem assim os seguintes modos/politicas de gestão do processador:
gestão do tempo partilhado (atribuir um período de tempo predeterminado a cada processo)
gestão do tempo real relaxado (soft real time)
gestão do tempo real estrito (hard real time)
preempção (politica que retira de execução um processo quando outro mais prioritário se tornou executável)
multilista (listas com diferentes prioridades onde os processo são colocados de acordo com o modo como utilizam o processador)
prioridades dinâmicas (modificação da prioridade dos processos em função do modo como utilizam os recursos)
quantum variável (modificação do valor do quantum para permitir reduzir o número de comutações do processador quando são executados processos de processamento intenso)

Tempo de execução partilhado (Tempo partilhado)
Para tornar equitativa a partilha do processador, a maioria dos sistemas apenas permite que o processo em execução utilize durante um intervalo de tempo limitado (time-slice ou quantum).
Surge um algoritmo de gestão que atribui a cada processo um quantum de tempo do processador gerindo circularmente (round robin) a lista dos processos executáveis. Esta solução tem um problema de facilmente conduzir a tempos de resposta elevados em situações de carga intensa, dado o tamanho sempre crescente da lista, e não permite reagir a qualquer acontecimento prioritário.

Multilista
A prioridade do processo varia durante a execução em função do modo como é utilizado o processador.
Um evolução do algoritmo anterior consiste na utilização de várias listas de acordo com o tipo de processo em execução. Assim os sistemas mistos de tempo partilhado e tratamento por lotes conciliam os dois tipos de gestão. O despacho implementa um algoritmo hierárquico seleccionando sempre um processo da lista mais prioritária. A lista mais prioritária corresponde aos processos que utilizam pouco tempo de interactividade (I/O bound). A utilização intensiva do processador conduz o processo para listas menos prioritárias, para onde serão naturalmente relegados os processos não interactivos que utilizam intensivamente o processador (CPU bound). Mas retirar sempre da lista mais prioritária pode conduzir a que os processos menos prioritários nunca tenham hipótese de se executarem (starvation).

Prioridades dinâmicas
A prioridade do processo pode ser alterada dinamicamente em função do comportamento no sistema. Uma optimização possivel em situações de carga é aumentar a duração do quantum, por forma a diminuir o número de comutações de contextos e aumentar a probabilidade de um processo terminar.

Preempção
designa a acção de retirar o processador a um processo em execução devido à existência de outro mais prioritário. isto permite que os processos mais prioritários reajam rapidamente a um acontecimento. a preempção é indispensável nos sistemas de tempo real sendo normalmente implementada nos sistemas multiutilizador. A preempção pode também ser associada ao esquema de partilha de tempo do processador, sendo consideradas várias politicas quanto à forma como o processo é reinserido na lista e ao valor dos seu próximo quantum.

Tempo real
Nos sistemas de tempo real a preempção é fundamental para garantir que um processo com elevada prioridade se execute quando é desbloqueado.

Implementação da Sincronização – secções criticas – inibição das interrupções
A solução mais simples para implementar a exclusão mútua consiste em eliminar a causa do problema impedindo a concorrência, para tal bastando inibir as interrupções durante a sequência de instruções de teste e posicionamento de uma variável partilhada. não havendo interrupções não é possivel dar-se uma troca de contexto de execução. Uma das desvantagens desta solução com a ineficácia da gestão da maquina que resulta da paragem de todas as acções externas susceptíveis de fazerem evoluir o estado do sistema.

Implementação da Sincronização – secções criticas – implementação dos trincos
os trincos podem ser usados para garantir a exclusão mutua.

Tags : , , ,

SO1 – introdução_ programa

Parte teórica
Introdução ao ambiente unix/linux
_aspectos gerais do sistema: lógica de funcionamento e operação
_sistema de ficheiros, componentes, estrutura
_operação em linha de comandos
_sheel scripintg
_aspectos gerais do sistema: lógica de funcionamento interno e configuração, permissões e segurança

Modelo de programação UNIX
_criação e gestão de processos
_mecanismo de sinais
_mecanismos de comunicação: named pipes (aplicações cliente servidor com named pipes)
_programação multithreaded
_sincronização de exclusão com semáforos binários

conceitos fundamentais de sistemas operativos
_conceitos básicos. objetivos e gestão da máquina
_elementos constituintes de sistemas operativos
_gestão de processo. algoritmos de escalonamento
_gestão de memória. mecanismos de algoritmos de gestão de memória. memória real e memória virtual

Parte prática
Programação para Unix (Linux)
_gcc/gdb. processo de compilação
_criação e gestão de processos
_notificações assíncronas: sinais
_named pipes: aplicações cliente servidor
_multi-threading e semáforos binários

Operarão do sistema Unix (com Linux)
_comandos Unix de consola /linha de comandos
_Introdução a shell scripting em Bash

Bibliografia
Fundamentos de Sistemas Operativos, José Alves Marques, Paulo Guedes – 3ª edição – Editorial Presença
Sistemas Operativos, José Marques, Paulo Ferreira, Carlos Godinho, Luís Veiga, Rodrigo Rodrigues, FCA
Operating Syems Concepts – 6-º edição – Addison-Wesley
Operating Systems: internal and Design Principles (3º edição) – Prentice-Hall
Begining Linux Programming, Wrox Press
Unix curso completo João Garrot, Jorge Amador, João Castos – FCA

Tags : ,