Apresentação e Introdução
• Sistemas Operativos
– Apresentação da UC
– Breve enquadramento histórico
– Definição
– Arquitectura geral
Alguns slides adaptados de slides do Eng. João Patriarca
Avaliação
• Avaliações
– 3 Trabalhos práticos
(grupos de 2/3 pessoas)
– 3 Mini-Testes
(Média dos 2 melhores com nota mínima de 8 valores)
– Teste Final
• Nota Final
– 40% Teste + 20% Mini Testes + 40%Trabalhos
Operating Systems: Internals and Design Principles, Sixth Edition William Stallings
Prentice-Hall,2009
Bibliografia
Windows® via C/C++, Fifth Edition Jeffrey Richter
Microsoft Press, 2007
Windows® Internals, Fifth Edition Mark Russinovitch, David Salomon Microsoft Press, 2009
principal
Programa
• Enquadramento
1 semana
• Gestão de memória
3 a 4 semanas
– Endereço virtuais e endereços físicos – Mecanismos hardware
• MMU
– Memória virtual
– Bibliotecas de ligação dinâmica
• Processos e Threads
4 a 5 semanas
– Programação Concorrente – Mecanismos de Sincronização
• Input/Output
2 semanas
– Acesso síncrono e assíncrono – Comunicação em rede
• Sockets
O que é um sistema operativo?
• Camada de software abstrai o hardware das aplicações com o
objectivo de:
• Simplificar e uniformizar o acesso à máquina física, mapeando os recursos físicos em recursos lógicos, acessíveis através de uma API (Aplication program Interface).
• Gerir de forma eficiente a utilização dos recursos oferecidos pela máquina física (CPU, memória, dispositivos externos) entre todos os utilizadores (aplicações em execução).
26-09-2014 Sistemas Operativos 5
Hardware Bibliotecas utilitárias
Aplication Program Interface
Sistema Operativo
Aplicações
Interface programática
Interface com o utilizador
Modo Utilizador(User) Modo Supervisor(Kernel)
Evolução dos Sistemas Operativos
• Pré-História
- Processamento em série com alocação de temp fixa por utilizador - Carregamento em lotes de jobs (tarefas a eecutar).
• Multi-utilizador em utilização de tempo real
- Tempo partilhado com time slice - Endereçamento Virtual (isolamento) - Memória Virtual (swapping/paging file)
• Mono-utilizador - Interfaces gráficas • Sistemas em Rede • Sistemas Distribuídos • Sistemas Multi-Processamento • Multi-Tarefa
• Sistemas assimétricos e simétricos • Arquitecturas UMA e NUMA
• Sistemas para pequenos dispositivos
- Sistemas Embebidos - Telemóveis,PDA´s
• Sistemas para a cloud
26-09-2014 Sistemas Operativos 6 1940-1950 1970 1980 1990 Unix BSD-Unix MSDOS Mac,Windows,X-Windows Multics 2000 Sun OS Windows NT, Solaris, Linux
Symbian, IOS, Windows Phone, Android
eCos
1960
Evolução dos sistemas operativos
[fins anos 40, meios 50] Processamento em série
• Computador de elevadas dimensões e caro
• Vários utilizadores usavam o mesmo computador
• Alocados blocos de tempo com granularidade bem definida
– Desperdício de utilização do CPU se termina a tarefa mais cedo – Não terminar a tarefa no tempo alocado
• Os programas executavam diretamente na arquitetura:
– Não existia o conceito de sistema operativo
– O programa era dado num cartão colocado num dispositivo de entrada – Os programas eram carregados em memória através de um programa
monitor
26-09-2014
Evolução dos sistemas operativos
[meios 50, início 60s] Sistemas batch
• O método anterior gastava demasiado tempo na preparação e mudança de utilizadores
• Neste cenário o computador continua a ser uma peça cara • Primeiros sistemas operativos:
– General Motors for the IBM 701/704 – IBSYS, IBM OS for 7090/7094 computers
• Ideia central: software conhecido como Monitor(aqui monitor funciona como SO) • Aspetos ainda a considerar
– Bloqueio em esperas ativas por IO
Evolução dos sistemas operativos
[60s] Sistemas Time-sharing
• Mantendo o cenário da peça computador cara, o
conceito multiprograma, que corresponde à partilha do
CPU por vários programas, pode ser usado para
partilhar o CPU por múltiplos utilizadores.
• Cada utilizador dispõe de um terminal onde insere o
programa a executar
– A dinâmica do utilizador é bastante mais lenta que a do
CPU permitindo um único CPU ser partilhado por múltiplos
utilizadores.
• Esta perspetiva de utilização suporta-se na
infra-estrutura
– Temporizador para escalonar o CPU por tempos contantes
pelos múltiplos programas criando a ilusão de uma
execução contínua (quantum de computação)
Evolução dos sistemas operativos
[80s] MSDOS
• Mudança de paradigma – hardware a preço acessível: mainframe → PC • Menos exigente que um mainframe, o MSDOS é uniprograma.
• 1981, DOS 1.0, SO desenvolvido pela Microsoft para o primeiro PC da IBM
– 4000 linhas de código fonte assembly - Ocupava 8K Bytes de memória no Intel 8086
• 1983, DOS 2.0, desenvolvido para o primeiro PC IBM com disco, PC XT. O SO suportava um esquema hierárquico de directorias (muito restritivo ainda: apenas uma directoria com 64 ficheiros no máximo, adequado apenas paraa era da disquete, mas inadequado para discos rígidos).
– Ocupava já 24K Bytes de memória residente
• 1984, DOS 3.0, para o PC AT (Intel 286)
– O SO não retira partido da nova arquitectura considerando um “8086 rápido” – Ainda assim passou a ocupar 36K Bytes
• 1984, DOS 3.1, suporte de PC’s em rede
• 1987, DOS 3.3 para a nova linha de PC’s da IMB, PS/2
– Continua a não retirar partido dos recursos proporcionados pelas novas arquitecturas – Arquitectura Intel386 a 32 bits, ocupava 46K Bytes
• Este sistema operativo não consegue acompanhar a evolução do hardware
Evolução dos sistemas operativos
Windows
• Em paralelo (anos 80), a Microsoft desenvolve GUI que será colocado ente o utilizador e o DOS
• 1990, Windows 3.0, executa por cima do DOS
• Na tentativa falhada, de junto com a IBM, em desenvolver novo SO que tirasse proveito das novas arquitecturas,inicia um caminho próprio com o desenvolvimento do Windows NT
– Para além de aproveitar os recursos proporcionados pelas novas arquiteturas, disponibiliza sistema multi-tarefa tanto num ambiente mono utilizador como para vários utilizadores.
• 1993, Windows NT 3.1, mesmo GUI que o Windows 3.1 (sucessor do Windows 3.0) – Novo SO a 32 bits
• 1996, Windows NT 4.0
– Baseado na arquitetura interna do NT 3.x
– Mesmo GUI que o Windows 95 (sucessor do Windows 3.1)
– Principal alteração arquitetónica na mudança de alguns componentes gráficos pertencentes ao subsistema Win32que executavamem user mode para modo Kernel
• 2000, Windows NT 2000, arquitetura do kernel idêntica ao do NT 4.0
– Adição de serviços e funcionalidades de suporte a processamento distribuído – Elemento central do Windows 2000: active directory
– Adicionadas facilidades Plug&Play, tal como no Windows 98 (sucessor do Windows 95)
– Adicionadas facilidades de gestão de consumo, tal como no Windows 98 (sucessor do Windows 95) – Primeiro a distinguir a versão Servidora da versão pessoal: incluí serviços para componentes servidor em
rede
• 2001, Windows XP, versão Home, Professional • 2003, Windows Server 2003
– Suporta CPUs a 32 bits e 64 bits (64 bit Intel Intanium)
– O primeiro service pack suporta os processadores AMD64, versão desktop e servidora • 2007, Windows Vista
– Suporta arquiteturas Intel x86 e arquiteturas AMD x64 – Versão servidora: Windows Server 2008
• 2009, Windows 7, Windows 7 foi uma atualização mais modesta e focalizada para a linha Windows • 2012, Windows 8 – suportado em diferentes tipos de dispositivos
Evolução dos sistemas operativos
UNIX
• 1970, PDP-7, Bells Labs (envolveu as mesmas pessoas do projecto MIT’s Project MAC que deu origem ao CTSS e ao Multics)
• Primeiro milestone com o PDP-11 e o seguinte milestone com a rescrita do SO em C
• 1974, primeira vez publicado numa Revista Técnica • 1976, licenças comerciais e para uso académico
• Primeira versão UNIX fora deste consórcio Bell e AT&T: UNIX BSD (Berkeley Software Distribution)
• 1982, Bell Labs combinou as várias variantes UNIX AT&T dando origem à versão com nome comercial UNIX System III, e mais tarde, com a adição de novas funcionalidades, a versão UNIX System V
• Sistemas UNIX modernos:
– System V Release 4 (SVR4), by AT&T and Sun Microsystems: combinação de funcionalidades do SVR3, 4.3BSD, Microsoft Xenix System V, e SunOS
– 4.4BSD: uma das versões mais amplamente usadas foi a FreeBSD; o MAC OS X, é baseado no FreeBSD 5.0 e no Mach 3.0 microkernel
– Solaris 10: baseado no SVR4
Evolução dos sistemas operativos
Linux
• Variante UNIX para arquiteturas IBM PC (Intel
80386)
• 1991, primeira versão publicada na Internet pelo
autor original Linus Torvalds (alunos finalista de
curso de ciências da computação)
– o código fonte foi publicado e livre
• Rapidamente aceite pela comunidade
colaborando na evolução do SO
• Atualmente suportado num grande número de
plataformas
Arquitectura do Sistema Operativo (monolítica)
• Arquitectura monolítica
– Organização em módulos – Estruturas de dados globais
– Serviços do SO executam no contexto do processo chamador
26-09-2014 Sistemas Operativos 14 Sistema Operativo Hardware Gestão de Processos Gestão de Memória Gestão de I/O Interrupções e Gestores de Periféricos Comunicação e sincronização Sistemas de Ficheiros
Biblioteca de system calls (API)
User Kernel
Arquitetura do Sistema Operativo (micro-kernel)
• Arquitectura micro-kernel
– No kernel apenas os módulos essenciais: gestão de interrupções , espaços de endereçamento, comunicação e sincronização.
– Outras componentes do S.O. como serviços em modo utilizador: memória virtual, device drivers, sistemas de ficheiros.
– Os serviços comunicam entre si através de mecanismos de comunicação através de mensagens providenciado pelo (micro) kernel.
– Adequado em ambientes distribuídos: processos servidores locais ou – remotos são tratados da mesma forma.
26-09-2014 Sistemas Operativos 15 Sistema Operativo Hardware Gestão de Processos Gestão de Memória Gestão de I/O Interrupções e Gestores de Periféricos Comunicação e sincronização Sistemas de Ficheiros
Biblioteca de system calls (API)
User Kernel
Arquitectura simplificada do Windows NT
26-09-2014 Sistemas Operativos 16
Tirado do livro: Windows Internals, 5 Ed, de Russinovitch, Solomon e Ionescu
csrss.exe smss.exe kernel32.dll user32.dll win32k.sys ntoskrnl.exe hal.dll Ntdll.dll
Arquitectura do Windows NT (tipos de processos)
The four basic types of user-mode processes are described as follows:
• System processes, such as the logon process and the session manager, that are not Windows services. (That is, they are not started by the service control manager. Chapter 4 describes services in detail.)
• Service processes that host Windows services, such as the Task Scheduler and Spooler
services. Services generally have the requirement that they run independently of user logons. Many Windows server applications, such as Microsoft SQL Server and Microsoft Exchange Server, also include components that run as services.
• User applications, which can be one of six types: Windows 32-bit, Windows 64-bit, Windows
3.1 16-bit, MS-DOS 16-bit, POSIX 32-bit, or OS/2 32-bit.
• Environment subsystem server processes, which implement part of the support for the operating system environment, or personality presented to the user and programmer. Windows NT originally shipped with three environment subsystems: Windows, POSIX, and
OS/2. OS/2 was dropped as of Windows 2000. As of Windows XP, only the Windows
subsystem is shipped in the base product—an enhanced POSIX subsystem is available aspart of the free Services for Unix product.
Requisitos típicos do hardware
• Mínimo de 2 níveis de execução
– Modo Utilizador (User Mode) , Modo Supervisor (Kernel Mode)
• Instruções privilegiadas
• Comutação controlada entre modos de execução
• Mecanismos para criação de espaços de endereçamento
virtuais
– Tradução entre endereços virtuais e endereços físicos
• Periféricos inteligentes
– Suportar a execução de operações de I/O de forma independente do CPU.
• Interrupções e DMA
• Timer
– Suporte a base de tempo do sistema. Entre outras razões para suportar um mecanismo de preempção na execução de processos ( evitar a
monopolização do CPU).
Alguma terminologia
• Processo
– instância de execução de um programa. Consiste num espaço de endereçamento, um ou mais fios de execução (threads) e conjunto de objectos sistema utilizados
• Memory Management Unit (MMU)
– Entidade hardware que mapeia, os endereços (virtuais) especificadas pelo execução de um programa em endereços físicos
• Scheduler
– Entidade que escalona, segundo as políticas especificadas, as threads activas para execução pelos CPUs disponíveis 26-09-2014 Sistemas Operativos 19 Memory Management Unit Espaço de endereçamento virtual RAM Tabelas de mapeamento(por cada processo) construídas pelo SO
Bibliografia
26-09-2014 Sistemas Operativos 20
•Stallings, Operating Systems
•Cap. 2, Operating Systems Overview, Secções 2.1 a 2.5 •Solomon,Russinovitch- Windows Internal, 5ªEd
•Cap. 1, Concepts and Tools, Sec. 1.1 e 1.2