quinta-feira, 11 de junho de 2015

Tarefa

• Uma tarefa é definida como sendo a execução de um fluxo seqüencial de instruções, construído para atender uma finalidade para a qual foi programada.

Programa

– Conjunto de uma ou mais seqüências de instruções
– Estático

Tarefa

– É a execução, pelo processador, das seqüências de instruções definidas em um programa para realizar seu objetivo
– Dinâmico

Tarefas de um navegador


Processamento em sistemas
 mono-tarefas
(monoprogramação)

Permite a realização de apenas uma tarefa (job) de cada vez.
Nos sistemas monoprogramados, enquanto uma aplicação aguarda um evento, o processador PODE PERMANECER OCIOSO, sem realizar qualquer tipo de processamento, a memória pode acabar sendo sub-utilizada quando o programa não a utiliza totalmente e os periféricos são dedicados a um único usuário. 

Desta forma, os sistemas monoprogramáveis acabam sendo por sua natureza de fácil implementação e com pouca preocupação com proteção.
Multiprogramação rodar DIVERSAS APLICAÇÕES de forma que parecem serem executadas simultaneamente.
Na realidade, na execução multitarefa, o tempo do processador é dividido entre as aplicações em execução, e a execução das tarefas passa rapidamente de uma para a outra, criando a ilusão de que as aplicações ocorrem de forma conjunta.

Processamento em Sistemas multi-tarefas com time-sharing 

• São sistemas que compartilham o tempo de uso da CPU entre diversos programas. 
• Consegue executar diversas tarefas simultaneamente, pois existe a divisão do tempo do processador em pequenos intervalos, denominados fatia de tempo.

Processamento em Sistemas multi-tarefas com time-sharing 

• Caso a TAREFA não termine durante a FATIA A ELA DETERMINADA, há uma interrupção e ela volta para a fila de escalonamento, aguardando novamente sua vez.

Sistema Monolítico

• A organização mais comum é aquela que estrutura o sistema como um conjunto de rotinas que podem interagir livremente umas com as outras.
• Pode ser comparada com uma aplicação formada por vários procedimentos que são compilados separadamente e depois linkados, formando um grande e único programa executável.
– Grande desempenho
– Uma falha pode paralisar o todo o núcleo.

Sistema em Camadas

• Divide o sistema operacional em sistemas sobrepostos. Cada módulo oferece um conjunto de funções que pode ser usado por outros módulos.
• A vantagem da estruturação em camadas é isolar o sistema operacional, facilitando sua alteração e depuração, além de criar uma hierarquia de níveis de modos, protegendo as camadas mais internas.
• O empilhamento de várias camadas de software faz com que cada pedido de uma aplicação demore mais tempo para chegar até o
dispositivo periférico ou recurso a ser acessado, prejudicando o desempenho do sistema.
• Não é óbvio dividir as funcionalidades de um núcleo de sistema operacional em camadas horizontais de abstração crescente, pois essas funcionalidades são inter-dependentes, embora tratem muitas vezes de recurso s distintos.



Sistemas micro-núcleo (microkernel)

Uma tendência dos sistemas operacionais é tornar o núcleo menor e mais simples possível e para implementar esta idéia o sistema é dividido em processos.
• Desta forma, sempre que uma aplicação deseja algum serviço ela solicita ao processo responsável, assim, a aplicação que solicita um
serviço é chamada de cliente e o processo que responde a solicitação é chamado de servidor.

Sistema micro-núcleo

• A utilização deste modelo permite que os servidores executem em modo usuário.
• Apenas o núcleo do sistema, responsável pela comunicação entre clientes e servidores, executa no modo kernel.
• O sistema operacional passa a ser de mais fácil manutenção.
• Não importa se o serviço esta sendo processado em um único processador, com múltiplos processadores (fortemente acoplado) ou em sistema distribuído (fracamente acoplado).
• Em ambiente distribuído permite que um cliente solicite um serviço e a resposta seja processada remotamente.
• Sua implementação é difícil e mais usualmente é implantado uma combinação do modelo de camadas com o cliente-servidor.
• O núcleo do sistema passa a incorporar o escalonamento e gerência de memória além das funções de device drivers.

API - Interface de Programação de Aplicativos

• Conjunto de chamadas de sistema oferecidas por um núcleo, é chamada de API
– API Win32 (Windows)
– POSIX (Unix/Linux)

– API Win32 (Windows)

– APIs do Windows são bibliotecas de vínculo dinâmico (DLLs) que fazem parte do sistema operacional Windows. Você as usa para executar tarefas quando é difícil escrever procedimentos equivalentes de sua preferência. Por exemplo, o Windows fornece uma função chamada FlashWindowEx que permite que você crie a barra de título para um aplicativo alternativo entre tonalidades claras e escuras.

– POSIX (Unix/Linux)

 – Interface Portável entre Sistemas Operacionais) é uma família de normas definidas pelo IEEE e designada formalmente por IEEE 1003, que tem como objetivo garantir a portabilidade do código-fonte de um programa a partir de um sistema operacional que atenda as normas POSIX para outro sistema POSIX, desta forma as regras atuam como uma interface entre sistemas operacionais distintos.

 • Um sistema operacional possui uma grande quantidade de funções na API, que permitem ao programador criar janelas, acessar arquivos, criptografar dados etc.
 • As APIs dos sistemas operacionais costumam ser dissociadas de tarefas mais essenciais, como a manipulação de blocos de memória e acesso a dispositivos. Essas tarefas são atributos do núcleo de sistema e raramente são programáveis.

Interrupções

Quando um controlador de periférico possui uma informação importante para fornecer ao processador
– Aguarda até que o processador o consulte
– Notifica o processador através do barramento de controle
Requisição de interrupção (IRQ – Interrupt ReQuest)

EXEMPLO:

1. O processador está executando um programa qualquer
(em outras palavras, um fluxo de execução);
2. Um pacote vindo da rede é recebido pela placa
Ethernet;
3. A placa envia uma solicitação de interrupção (IRQ) ao
processador;
4. O processamento é desviado do programa em
execução para a rotina de tratamento da interrupção
5. A rotina de tratamento é executada para receber as
informações da placa de rede (via barramentos de
dados e de endereços) e atualizar as estruturas de
dados do sistema operacional;
6. A rotina de tratamento da interrupção é finalizada e o
processador retorna à execução do programa que havia
sido interrompido.

Proteção ao Núcleo

• Certas instruções não podem estar disponíveis para as aplicações, pois isso poderia ocasionar um sério problema de integridade no sistema.
– Por exemplo, um acesso ao disco rígido para gravação de um arquivo.
– Atenção: Aplicativos de auto gravação exercem a mesma função de solicitação de IRQ

Separação entre núcleo e as aplicações 

Chamadas de Sistema

• É o mecanismo usado pelo programa para requisitar um serviço do sistema operacional, ou mais especificamente, do núcleo do sistema operacional.
• São portas de entrada para se ter acesso ao núcleo do sistema operacional.
• Exemplo: Quando o usuário deseja algum serviço, realiza uma chamada a uma de suas rotinas através de system calls (chamadas ao sistema).
• Para cada serviço existe um system call associada e cada sistema operacional tem o seu próprio conjunto de chamadas.


System Calls


Syscalls - Grupos de Função
• Gerência de Processos
– Criação e eliminação de processos, alteração das características do processo e sincronização e comunicação entre processos.
• Gerência de memória
– Alocação e desalocação de memória.
• Gerência de entrada/saída
– Operações de entrada e saída e manipulação de arquivos e diretórios.

Chamada a uma rotina de acesso


Barramento

Ocorre todas as transferências de dados.
Barramento de endereços – Indica a posição de memória (ou dispositivo) a acessar
Barramento de controle – Indica a operação a efetuar (leitura ou escrita)
Barramento de dados – Transporta a informação indicada entre o processador e a memória ou controlador de dispositivo

MMU

Memory Management Unit (Unidade de Gerência de Memória)
Responsável por analisar cada endereço solicitado pelo processador, validá-los, efetuar conversões de endereçamento necessárias e executar a operação solicitada pelo processador – leitura ou escrita de uma posição de memória.

Memória Secundária

Chamadas de “memórias de armazenamento em massa”, para armazenamento permanente de dados.

Não podem ser endereçadas diretamente, a informação precisa ser carregada em memória principal antes de poder ser tratada
pelo processador.

PRIMÁRIA
“Chamadas de memória real, são memórias que o processador pode endereçar diretamente, sem as quais o computador não pode funcionar.
Estas fornecem geralmente uma ponte para as secundárias, mas a sua função principal é a de conter a informação necessária para o processador num determinado momento; esta informação pode ser, por
exemplo, os programas em execução.



Nesta categoria insere-se a RAM, que é uma memória de semicondutores, volátil, com acesso aleatório, isto é, palavras individuais de memória são acessadas diretamente, utilizando
uma lógica de endereçamento implementada em hardware.


CACHE
Dispositivo de acesso rápido, interno a um sistema, que serve de intermediário entre um operador de um processo e o dispositivo de armazenamento ao qual esse operador acede.



Atualmente há cache em processadores, discos rígidos, sistemas, servidores, nas placa mãe, cluter de bancos de dados, entre outros.
Qualquer dispositivo que requeira do usuário uma solicitação/requisição a algum outro recurso, seja de rede ou local, interno ou externo a essa rede, pode requerer ou possuir
de fábrica o recurso de cache. 

É uma unidade de memória capaz de armazenar n bits. Os registradores estão no topo da hierarquia de memória, sendo assim, são o meio mais rápido e caro de se armazenar um dado. 
Obs: Apesar dos registradores apresentarem um bom desempenho no quesito rapidez, possuem uma capacidade de armazenamento baixíssima comparada a outros circuitos de armazenamento, como é o caso da memória secundária.


Diversos Dispositivos

• Memória secundária
– Discos
– Fitas magnéticas
• Interface usuário-máquina
– Teclados
– Impressoras
• Outros dispositivos
– Placa de vídeo
– Dispositivos USB’s
São acessados através de circuitos específicos denominados controladores


Hardware

Mono-processadores atuais seguem um
padrão definido na década de 40 por
János (John) Von Neumann
Arquitetura Von Neumann

Programa armazenado

“John von Neumann formalizou o projeto lógico de um computador.
Em sua proposta, sugeriu que as instruções fossem armazenadas
na memória do computador. Até então elas eram lidas de cartões
perfurados e executadas, uma a uma. Armazená-las na memória,
para então executá-las, tornaria o computador mais rápido, já que,
no momento da execução, as instruções seriam obtidas com
rapidez eletrônica.”



Processador

É o núcleo do sistema de computação.
Responsável por continuamente ler as
instruções e dados da memória ou de
periféricos, processá-los e enviar os
resultados de volta a memória ou outros
periféricos.
Unidade Central de Processamento (UCP
ou CPU)
– Unidade de Controle (UC)
– Unidade Lógica e Aritmética (ULA)
– Clock
– Memórias de alta velocidade
Processador cognitivo não é simular o cérebro humano, é usar o que já se
sabe sobre o funcionamento dos cérebros biológicos para construir um
sistema capaz de aprender e interagir com o ambiente. – WATSON IBM





Pesquisa: Sobre o computador WATSON
- IBM

Núcleo
• Kernel
• Coração do sistema
operacional
• Responsável pela
gerência dos recursos
de hardwares
utilizados

Drivers
• Códigos específicos
– Acesso dispositivos físicos
• Normalmente fornecido pelo fabricante do
hardware
– Forma binária
– Acoplado ao sistema operacional


Dispositivo para o Drivers


Inicialização do Sistema Operacional
• Carregar o núcleo do sistema operacional
em memória e iniciar sua execução.

Sistema Operacional e sua gerência

• Para cumprir sua função, deve atuar em várias frentes.
• São vários os recursos a serem gerenciados
– Atenção: Necessário Abstração 


Gerência de Processador

• Conhecida como gerência de processos ou de atividades.
• Visa distribuir a capacidade de processamento de forma justa
– “Justa é diferente de igual”
• Sincronização de atividades
– Comunicação entre processos
– Manter o processador ocupado a maior parte do tempo;
– Balancear o uso da CPU entre processos;
– Privilegiar a execução de aplicações críticas;
– Maximizar o throughput (rendimento) e;
– Oferecer tempos de resposta razoáveis aos usuários interativos.


Gerência de Memória

• Fornecer a cada aplicação um espaço próprio de memória
– Independente e isolado das demais aplicações
• Uso do disco como memória complementar
– Aplicação desconhece o tipo da memória em uso


Gerência de Dispositivos

• Gerência de Entrada/Saída
• Vários dispositivos diferentes
– Pen drive, disquetes, discos IDE e SCSI
• Permitir, através de drivers, o uso de forma comum
– Vetor de blocos de dados (endereçamento de memória)

Gerência de Arquivos

• Construída sobre a gerência de dispositivos
– Criando abstrações de arquivos e diretórios
• Outros dispositivos podem ser utilizados como arquivos
– Gravar arquivos numa saída TCP
– Outras devices;


Gerência de Proteção

• Políticas de acesso para sistemas
– Em rede
– Multi-usuários
• Definição de usuários, grupos de usuários, registro de recursos por usuários


Sistemas Operacionais Modernos

• Gerência de energia
• Gerência de rede
• Gerência de recursos multimidía

Os módulos de gerência são inter-dependentes

Tempo real

Comportamento temporal previsível – Tempo de resposta conhecido no melhor caso e pior caso de operação

Soft real-time systems – perda de prazo implica em degradação do serviço prestado (gravação de CD)

Hard real-time systems – perda de prazo pode causar grandes prejuízos econômicos ou ambientais (usina nuclear, caldeiras industriais)

Embutido

Embedded

Hardwares com pouca capacidade de processamento – Calculadores, tocadores de MP3, computador de bordo para veículos

Função específica

Servidor

Gestão de grandes quantidades de recursos – Discos, memórias e processadores e serviços gerais

Multi-usuários

Suporte a rede

Desktop

Sistema operacional “de mesa”.

Usuários domésticos e corporativos – Atividades corriqueiras

Ambiente gráfico, interatividade com usuário e suporte a rede.

Multi-usuário

Múltiplos usuários simultâneos – Maioria dos sistemas operacionais atuais

Deve suportar a identificação do “dono” de cada recurso dentro do sistema – arquivos, processos, conexões de rede

Imposição de regras de controle de acesso para impedir o uso desses recursos por usuários não autorizados

Distribuído

Os recursos de cada máquina estão disponíveis globalmente, de forma transparente aos usuários.

Para o usuário e suas aplicações é como se não existisse uma rede de computadores e sim um único sistema centralizado. – Usuário desconhece o computador em uso.

Ainda não são uma realidade de mercado.

Exemplo: Google Docs, One Drive, ICloud

Rede

Suporte a operação em rede – Maioria dos sistemas operacionais atuais
Compartilhamento de recursos de/ou para vários computadores.
Disponibilizar os próprios recursos.
São independentes e caso a conexão entre um dos nós sofra qualquer problema, os demais continuam operando normalmente , apesar de alguns recursos se tornarem indisponíveis.

Exemplo:

Os módulos do S.O Rede podem ser: – Módulo Cliente do Sistema Operacional (SORC) – Módulo Servidor do Sistema Operacional (SORS)

Batch (lote)

Todos os programas a executar eram colocados em uma fila.

O processador recebia um programa após o outro, processando-os em seqüência, o que permitia um alto grau de utilização do sistema

O termo lote ainda é usado para definir um conjunto de comandos que rodam sem interferência do usuário

Abstração de Recursos 

Cada hardware tem sua particularidade Cabe ao sistema operacional gerenciar as particularidades do hardware – Um processador de texto não deve deter o conhecimento de como gravar um arquivo (disquetes, pen drive, hd´s).

Cabe ao Sistema Operacional 

Prover interfaces de acesso aos dispositivos, mais simples de usar que as interface de baixo nível. Tornar os aplicativos independentes do hardware. Definir interfaces de acesso homogêneas para dispositivos com tecnologias distintas. 

Gerência de Recursos 

Cabe ao sistema operacional definir políticas para gerenciar o uso dos recursos de hardware pelos aplicativos, e resolver eventuais disputas e conflitos. 
– Uso de processador 
– Acesso a disco 
– Memória

Visão do Sistema Operacional


Definição de SO

 É uma camada de software que opera entre o hardware e os programas aplicativos voltados ao usuário final. É uma estrutura de software ampla, muitas vezes complexa, que incorpora aspectos de baixo nível (como drivers de dispositivos e gerência de memória física) e de alto nível (como programas utilitários e a própria interface gráfica).

Contextualização

Definição

Conjunto de programas responsável pela gerência de recursos de hardware, segurança de acesso e utilização e interface com os usuários;

Componentes Básicos

Interface com o usuário, gerencia de processador, gerência de memória, gerência de dispositivos, sistemas de arquivos; 


Componentes Avançados

Segurança de acesso, ferramentas de auditoria