CONCEITOS DE SISTEMAS OPERACIONAIS
O que é um sistema operacional?
Um programa que atua como intermediário entre o usuário de um computador e o hardware do computador, tornando sua utilização mais simples, rápida e segura.
Controla o funcionamento de um computador, gerenciando a utilização dos seus diversos recursos, como processadores, memórias e dispositivos de entrada e saída.
Objetivos do sistema operacional:
– Executar programas do usuário e facilitar a resolução de problemas do usuário.
– Tornar o uso do sistema de computador conveniente.
– Usar o hardware de computador de uma maneira eficiente.
– Permitir o emprego e controle de múltiplas aplicações de forma concorrente.
VISÃO DE UM SISTEMA OPERACIONAL
NÍVEIS DE PROCESSAMENTO
HISTÓRICO DOS PROCESSADORES
Primeira geração: 1945 -1955
–Válvulas, painéis de programação
John Atanasoff, Suze, Colussus e Eniac
- Não havia linguagens de programação, nem Assembly.
Segunda geração: 1955 -1965
–transistores, sistemas em lote (BATCH).
–Surgimento de Assembly, Fortran e Cobol.
Terceira geração: 1965 –1980
–CIs e multiprogramação
Quarta geração:1980 –presente
– Computadores pessoais
– Computadores de grande porte
– Supercomputadores
HISTÓRICO DA COMPUTAÇÃO (SOs)
Década de 1950
Processamento em lotes (batch)
Entrada: cartões perfurados
Fitas Magnéticas
Saída: Impressoras
Década de 1960
Surgimento dos circuitos integrados.
Inovações em SO:
–Multiprogramação
–Multiprocessamento
–Time-sharing
–Memória virtual
1963: Burroughs lança B-5000 com SO Master Control Program(MCP), incorporava novas técnicas e uso de linguagem de alto nível.
Primeiro supercomputador: CDC 6600
IBM 701
CPD – Centro de Processamento de Dados
CARTÃO PERFURADO – HOLLERITH
Década de 1960
1964: IBM lança System360 - introdução do conceito de máquinas de porte diferentes (famílias)
1962: Primeiro computador com time-sharing IBM 7094 –32 usuários interativos –sistema operacional CTSS
•CTSS foi base para o MULTICS:
–Memória virtual com páginação e segmentação
–Multiprogramação
–Múltiplos processadores e usuários
Minicomputadores (DEC)
Surgimento UNIX
Década de 1970
Integração em larga escala (LSI e VLSI) –minituarização e barateamento.
Intel produz seu primeiro microprocessador – Intel 4004.
Intel 8080 – primeiro microcomputador.
1976: Aple II (8 bits)
Surgimento Microsoft.
Surgimento multiprocessamento.
Cray-1: 200.000 CI e 100 milhões de operações de ponto flutuante por seg.
Década de 1980
Surgimento IBM PC –Intel 8088 de 16 bits com DOS (Disk Operating System).
Sistemas multiusuários foram impulsionados.
TCP/IP
Surgimento das Estações de trabalho.
1982: Surgimento da Sun Microsystems, primeiras estações RISC
Interfaces gráficas.
Windows (seguindo os passos do MAC/OS).
Década de 1990
Avanços de hardware, software e telecomunicações.
Processadores e dispositivos de E/S mais rápidos e menores.
ULSI (Ultra Large Scale Integration)
Internet: problemas de gerência, segurança e desempenho.
Arquitetura Cliente –Servidor.
Software aberto (Open Source).
Década de 2000
Demanda cada vez maior de processamento.
Arquiteturas paralelas.
Processamento distribuído.
SO em celulares, pdas e outros.
PROCESSOS
ESTRUTURA DO PROCESSOS
Cada usuário tem um processo associado.
Ao usar a CPU o usuário pensa que é único.
Área de hardware: Espaço destinado ao conteúdo dos registradores da CPU.
Área de Software:
- Identificação do processo.
- Limites dos recursos que pode ser usado.
- Número de arquivos – identificação do usuário.
- Cotas de recursos- prioridade.
Área de Endereçamento: Espaço de memória que o processo pode usar
BLOCO DE CONTROLE DO PROCESSO
PCB – Process Control Block.
Implementa uma estrutura de dados para controlar o processo que está na memória.
Esta estrutura de dados é implementada na memória – no sistema operacional.
PCB PID=1 ==> PCB PID=2 ==> PCB PID=8 ==> PCB PID=5
ESTRUTURA DO PCB
- PONTEIROS
- ESTADO DO PROCESSO
- PRIORIDADE DO PROCESSO
- REGISTRADORES
- LIMITES DE MEMÓRIA
- ARQUIVOS ABERTOS
- contabilização
PROCESS STATUS = COMANDOS
Pode-se: alterar, criar, deletar visualizar, sincronizar, trocar prioridades...
ESTADOS DO PROCESSO:
Execução – Running - quando está ocupando o processar (um por vez).
Pronto – Ready – O processo aguarda a CPU a ordem de executar é chamada de ESCALONAMENTO.
Espera – wait – quando aguarda por algum evento (também chamado de bloced).
MUDANÇA DE ESTADOS
Os eventos são gradas pelo processo ou pelo S.O.
Um processo pronto pode estar na Memória principal ou em disco:
Mudança de estado:
PRONTO ==> EXECUÇÃO
EXECUÇÃO ==> ESPERA
ESPERA ==> PRONTO
EXECUÇÃO ==> PRONTO
TROCA DE PROGRAMA NA MEMÓRIA
A técnica de troca do processo entre a memória principal e o disco é conhecida como:
Swap out ==> tira da memória principal.
Swap in ===> tira do disco e coloca na memória.
CRIAÇÃO DO PROCESSO - NEW
Criação (new): Está no estado de criação quando a estrutura de PCB, aloca recursos.
Formas de criação de processo:
Logon interativo:
- Via linguagem de comandos.
- Via rotinas de sistemas operacionais.
ELIMINAÇÃO DO PROCESSO - EXIT
Eliminação (exit):
Está no estado de terminado o processo não é mais executado.
Neste momento são colocadas as informações de contabilização.
O PCB é deletado.
Formas de eliminar o processo:
- Termino norma de execução.
- Eliminação por um outro processo.
- Eliminação forçada por falta de recursos
TIPO DE PROCESSOS
CPU bound: focado no uso de CPU.
I/O bound: focado em periféricos de entrada e saída.
PROCESS FOREGROUND E BACKGROUND
Um processo tem dois canais de comunicação.
in ==> processo ==> out
FOREGROUND - COMUNICAÇÃO DIRETA COM O USUÁRIO DURANTE O PROCESSAMENTO (INTERATIVO).
BACKGROUND - MODELO BATCH DE COMUNICAÇÃO PIPE LINE A SAIDA DE UM PROCESSO É LIGADA A
ENTRADA DE OUTRO PROCESSO.
PROCESSOS INDEPENDENTES, SUBPROCESSO E THREADS
SÃO FORMAS DIFERENTES DE IMPLEMNTAR:
O CÓDIGO TRABALHA DE FORMA COOPERATIVA E PODEMOS TER:
independente: Não há vinculo do processo criado com o seu criador.
Sub processo: Processo pai ligado ao processo filho.
PROCESSOS INDEPENDENTES, SUBPROCESSO E THREADS
Thread – Criado para reduzir o tempo gasto na criação, eliminação e troca de contexto.
– Em um thread pode-se associar partes múltiplas do código e compartilham o mesmo
contexto de software.
SINAIS
É um mecanismo que permite notificar processos de eventos gerados pelo S.O. ou por outros processos.
O tratamento de um sinal é semelhante ao tratamento de uma interrupção.