Você está na página 1de 59

Introdução aos sistemas operacionais

Eduardo Ferreira dos Santos

Ciência da Computação
Universidade Presbiteriana Mackenzie

12 de agosto de 2021

1 / 59
Professor

EDUARDO FERREIRA DOS SANTOS, MsC

Mestre em Computação Aplicada pela Universidade de Brasília  UnB

Áreas de pesquisa:
Cluster & Grid;
Processamento de Linguagem Natural;
Recuperação da Informação;
Modelagem de tópicos;
Busca e recuperação textual;
Classicação de documentos.
Web Semântica;
Bancos de dados NoSQL.

2 / 59
Sumário

1 Evolução

2 O Sistema Operacional
Gerência de processos
Gerência de memória
Gerência de arquivos

3 Bootstrap

4 Conclusão

3 / 59
Evolução

1 Evolução

2 O Sistema Operacional
Gerência de processos
Gerência de memória
Gerência de arquivos

3 Bootstrap

4 Conclusão

4 / 59
Evolução

Histórico

Os sistemas operacionais evoluem junto com o computador.

Das válvulas ao Altair.

A chegada dos periféricos e a interface com o usuário.

A massicação do computador pessoal.

Os primeiros casos de vendor lock-in.


Linux e a revolução silenciosa.

5 / 59
Evolução

Alan Turing

Alan turing pode ser considerado o pai da Ciência da Computação:


Dene o limite do que pode ser computável;
Qualquer problema computacional (algoritmo) pode ser reescrito em
uma máquina de Turing.
Problema: quebrar o código da máquina Enigma
1.

https://www.youtube.com/watch?v=VDHQZGvSA0I

1
Uma explicação detalhada do problema de quebra do código pode ser encontrada na
Wikipedia [Wikipedia, 2018]
6 / 59
Evolução

Primeira Geração: ENIAC e computadores de grande porte

Onde está a interface homem-máquina?

Figura 1.1: ENIAC em Operação [Penn, 2016]

Em uma análise mais profunda, podemos dizer que não havia Sistema
Operacional.

7 / 59
Evolução

John Von Neumann

Todas as instruções do ENIAC eram hard-wired;


Interação com Turing durante a segunda guerra;

Introdução do conceito de memória.

Figura 1.2: John Von Neumann e sua máquina 2

2
Fonte: https://dailynewshungary.com/
who-was-john-von-neumann-janos-neumann-easy-he-was-the-father-of-computing
8 / 59
Evolução

Segunda Geração: Transistores e Sistemas em Lote (Batch)

Com os transistores, os computadores passam a poder ser


comercializados.

A entrada dos dados era feita em cartões perfurados e a linguagem de


máquina (assembly) foi desenvolvida para acelerar a operação.

O processamento acontecia em lotes (batch).

Início do que começamos a chamar de programação.

9 / 59
Evolução

Exemplo de Processamento em Lote

[Silva, 2010]

10 / 59
Evolução

Mainframes

https://www.youtube.com/watch?v=fAselhq0Q8g&feature=youtu.
be&t=1m0s

11 / 59
Evolução

Terceira Geração: CI's e multiprogramação

CTSS (Compatible Time Sharing System) do MIT: primeiro sitema de


tempo compartilhado;

MULTICS (Multiplexed Information and Computing Service): MIT,


Bell Labs, General Eletric;
Projetado para suportar centenas de usuários: uma enorme máquina
(pouco mais potente que um PC) fornecendo poder computacional
para toda a área de Boston;
Ken Thompson: inventor da linguagem B (1969). Primeiro SO feito
em Assembly (MULTICS);

Denis Ritchie: inventor da linguagem C (1974). Pai de todos os SO's


modernos.

12 / 59
Evolução

UNIVAC

https://www.nsf.gov/news/special_reports/nsf-net/
univacvideopop.html

13 / 59
Evolução

O Unix

Figura 1.3: Os pais do Unix 3

3
Fonte: http:
//cubexyz.blogspot.com.br/2016/08/the-importance-of-bell-labs-unix.html
14 / 59
Evolução

Quarta Geração: Computadores Pessoais

Desenvolvimento dos circuitos integrados de larga escala (LSI, Large


Scale Integration), que permitiu o surgimento dos computadores
pessoais;

1974: Intel 8080, CPU de 8 bits de propósito geral;

Início dos anos 80: IBM PC;

Xerox Parc;

Apple Lisa e Macintosh;

MS-DOS: Microsoft, baseado no DOS, desenvolvido por Tim Paterson


da Seattle Computer Products comprada por Bill Gates;

Minix e Linux.

15 / 59
Evolução

Xerox Parc

https://www.youtube.com/watch?v=M0zgj2p7Ww4

16 / 59
Evolução

Wozniak e Jobs

Figura 1.4: Woz, Jobs e John Sculley 4

4
Fonte: https://oglobo.globo.com/sociedade/tecnologia/
steve-jobs-nao-foi-forcado-deixar-apple-ele-saiu-diz-wozniak-17496566
17 / 59
Evolução

Quinta geração: Dispositivos móveis

O primeiro telefone portátil surgiu nos anos 70; hoje, quase todas as
pessoas possuem um telefone celular;

Nokia N9000 (1990): telefone com PDA  Personal Digital Assistant;


Ericsson GS88 (1997): surge o termo smartphone;

Symbian: primeiro SO para smartphones;


Blackberry OS (2002): feito pela RIM;

Apple iOS (2007): iPhone;

Android (2008): SO mais dominante no mundo.

18 / 59
Evolução

Nokia 9000

Figura 1.5: Primeiro celular com Symbian OS: Nokia 9000

19 / 59
Evolução

Ericson GS88

Figura 1.6: Precursor do termo smartphone

20 / 59
Evolução

RIM Blackberry

Figura 1.7: Blackberry e seu teclado qwerty

21 / 59
O Sistema Operacional

1 Evolução

2 O Sistema Operacional
Gerência de processos
Gerência de memória
Gerência de arquivos

3 Bootstrap

4 Conclusão

22 / 59
O Sistema Operacional

O que é um Sistema Operacional?

É o programa que realiza a interface entre o Hardware e o Software.

Figura 2.1: Onde se encaixa o Sistema Operacional


[Tanenbaum and Machado Filho, 1995]

23 / 59
O Sistema Operacional

Como funciona o Sistema Operacional

Figura 2.2: Onde se encaixa o Sistema Operacional [Galvin et al., 2013]

24 / 59
O Sistema Operacional

Kernel

É o núcleo ou coração do Sistema operacional;

Área isolada da memória;

Kernel monolítico;

SYSCALL;

Através dos device drivers, realiza a comunicação com os periféricos e


dispositivos de entrada e saída.

O computador diz ao dispositivo o que quer fazer.

O dispositivo interpreta através do driver.

25 / 59
O Sistema Operacional Gerência de processos

1 Evolução

2 O Sistema Operacional
Gerência de processos
Gerência de memória
Gerência de arquivos

3 Bootstrap

4 Conclusão

26 / 59
O Sistema Operacional Gerência de processos

Tipos de processamento

Tarefas:
Unidades de processamento sequencial que concorrem so-
bre um ou mais recursos computacionais de um sistema.
[FARINES and MELO, 2000]
A tarefa executada em um sistema operacional é chamada de processo.

Processamento sequencial x Multiprogramação

Programação concorrente:
1 Programas separados;
2 Threads.
Interação em programação concorrente:
Memória compartilhada;
Troca de mensagens.

27 / 59
O Sistema Operacional Gerência de processos

Princípios

Processos são programas que estão sendo executados em um espaço virtual


de endereçamento exclusivo.

Em sistemas Unix, processos são estruturas de dados que contém


informações necessárias para a execução do programa, como conteúdo
dos registradores e memória;

Princípio básico: separar a operação de criação de um processo da


operação de execução de um programa;

São separadas por chamadas de função diferentes: fork() e exec();


fork()cria um processo que tem como pai o processo que a chamou;
exec() cria um novo programa como uma sequência de processos, que
tem como pai o contexto de execução, muitas vezes o próprio init.

28 / 59
O Sistema Operacional Gerência de processos

Multiprogramação

Figura 2.3: Modelo de multiprogramação [Chagas, 2016]

29 / 59
O Sistema Operacional Gerência de processos

Estados dos processos

Durante o ciclo de vida de um processo ele passa por diferentes estados.


Em sistemas Unix [Guarezi and Silva, 2010] são:

run Está sendo executado no processador;

ready ou executável Dispõe de todos os recursos que precisa e está pronto


para ser executado;

sleep ou dormente Bloqueado à espera de algum recurso, e só pode ser


desbloqueado se receber um sinal de outro processo;

zumbi Caso cada vez mais raro, onde um processo é criado por um
programa, que por sua vez é nalizado antes de receber o
resultado do processo;

parado Recebeu ordem do administrador para interromper a


execução. Será reiniciado se receber um sinal de continuação
(CONT).

30 / 59
O Sistema Operacional Gerência de processos

Threads

Threads no Unix são implementadas através de funções da biblioteca


libpthreads. Existem duas formas de partilhar a CPU [Souto, 2010]:
PTHREAD_SCOPE_PROCESS Compartilhamento somente entre
threads do mesmo processo. Implementadas no nível do
usuário;
PTHREAD_SCOPE_SYSTEM Compartilhamento entre todas as
threads do sistema. Implementadas no nível do kernel.

Curiosidade: o Linux implementa somente threads em nível do


usuário.

31 / 59
O Sistema Operacional Gerência de processos

Escalonamento

Normalmente o escalonamento é feito através um algoritmo de


prioridade com round-robin;
Para evitar starvation, cada vez que o processo é executado até o m
do quantum sua prioridade diminui;

O grupo POSIX dene três algoritmos de prioridade que podem ser


utilizados em sistemas Unix:

SCHED_FIFO FIFO preemptivo baseado em prioridades;


SCHED_RR Round-robin conforme descrito;
SCHED_OTHER Algoritmo que depende da implementação.

Curiosidade - o quantum do Unix em round-robin é o mesmo há mais


de 20 anos: 100ms [Neto, 2010].

32 / 59
O Sistema Operacional Gerência de processos

Pipeline

Figura 2.4: Algoritmo de pipeline [Chagas, 2016]

33 / 59
O Sistema Operacional Gerência de memória

1 Evolução

2 O Sistema Operacional
Gerência de processos
Gerência de memória
Gerência de arquivos

3 Bootstrap

4 Conclusão

34 / 59
O Sistema Operacional Gerência de memória

Princípios

Gerenciamento de memória consiste em manter o controle das par-


tes da memória que estão sendo utilizadas e por quem, decidir que
processos serão carregados para a memória quando houver espaço
disponível, alocar e desalocar espaço quando necessário.
[Dias, 2005]

Alocar tanto memória principal quanto memória secundária;

Alocação da memória secundária é papel do sistema gerenciador de


arquivos.

35 / 59
O Sistema Operacional Gerência de memória

Memória virtual e paginação

Sistemas Unix utilizam memória virtual e paginação;

Estratégia de memória virtual armazena no disco partes do programa


que não estão sendo utilizadas (swapping);

O espaço de endereçamento virtual é divido em unidades de tamanho


xo chamadas páginas;

A conversão para um endereço físico é feita por um componente de


hardware chamado MMU;
O controle da MMU é feito pelo driver compilado com o kernel.

36 / 59
O Sistema Operacional Gerência de memória

Divisão da memória principal

A memória principal é divida em alguns segmentos com função


especíca:

kernel Parte da memória reservada exclusivamente ao kernel de


acesso restrito;
buer do disco Parte que armazena os arquivos que serão enviados ao
disco. O controle de escrita é feito pelo kernel, mas os
arquivos só são enviados para o disco quando o buer
está cheio;
descritores de arquivo Contém partes das tabelas de descrição dos
arquivos, para agilizar o acesso;
programas O resto da memória é destinado aos programas.

Importante: denir o tamanho de cada um dos espaços reservados na


memória  exceção feita ao kernel  afeta bastante o desempenho
do sistema operacional.

37 / 59
O Sistema Operacional Gerência de arquivos

1 Evolução

2 O Sistema Operacional
Gerência de processos
Gerência de memória
Gerência de arquivos

3 Bootstrap

4 Conclusão

38 / 59
O Sistema Operacional Gerência de arquivos

O gerenciador de arquivos

A memória, tanto principal quanto secundária, também é


responsabilidade do Sistema Operacional.

Quando salvamos o arquivo no disco, estamos executando as seguintes


tarefas:
1 O programa pede ao sistema operacional para escrever o conteúdo de
uma arquivo;
2 O sistema operacional repassa a tarefa para o gerenciador de arquivos
(le manager), que é um subconjunto do SO;
3 O gerenciador de arquivos busca em uma tabela informações sobre o
arquivo;

39 / 59
O Sistema Operacional Gerência de arquivos

O gerenciador de arquivos

Quando salvamos o arquivo no disco, estamos executando as seguintes


tarefas (continuação):
5 O gerenciador de arquivos busca em uma tabela a localização física do
setor que deve conter o byte (cilindro, trilha, setor);
6 O gerenciador de arquivos instrui o processador de I/O (que libera a
CPU de cuidar do processo de transferência) sobre a posição do byte
na RAM, e onde ele deve ser colocado no disco;
7 O processador de I/O formata o dado apropriadamente, e decide o
melhor momento de escrevê-lo no disco.

40 / 59
O Sistema Operacional Gerência de arquivos

Princípios

Os discos são vistos pelo SO como uma série de blocos de tamanho


xo;

A alocação no disco não é realizada diretamente pelo SO;

Uma chamada do sistema ( SYSCALL) chama o driver do dispositivo


que é compilado junto com o kernel;

O driver informa a quantidade de espaço disponível no disco.

41 / 59
O Sistema Operacional Gerência de arquivos

Organização de arquivos

Para implementar os princípios de armazenamento no disco, ele precisa


ser formatado;

A formatação realiza o mapeamento dos dados armazenados ao


endereço físico do disco;

Existem diferentes modelos de formação. Em geral tenta-se mapear o


arquivo à posição ou conjunto de posições no disco (blocos) através de
uma tabela de arquivos;

Além de conter o endereço físico, a tabela de arquivos pode conter


outras propriedades do arquivo, como data da criação/modicação,
tamanho, permissões, etc;
Necessidade de sistemas de organização de arquivos que podem ou
não ser implementados pelo sistema operacional:
FAT16 ou FAT32;
EXT2, EXT3, EXT3;
HFS;
etc.
42 / 59
Bootstrap

1 Evolução

2 O Sistema Operacional
Gerência de processos
Gerência de memória
Gerência de arquivos

3 Bootstrap

4 Conclusão

43 / 59
Bootstrap

Processo de boot (bootstraping)

Uma das tarefas do SO é carregar os programas (e dados) na memória


para permitir a comunicação com o hardware e o software;

Como o SO também é um programa, quem carrega o SO?

A tarefa de carregar o SO para execução é chamada de processo de


boot ou bootstraping;
Depende de componentes físicos (hardware) combinados com os
fornecedores para ser realizado.

44 / 59
Bootstrap

Boot - Passo 01

Figura 3.1: Processo de boot - Passo 01 [SILVA, 2021]

45 / 59
Bootstrap

Boot - Passo 02

Figura 3.2: Processo de boot - Passo 02 [SILVA, 2021]

46 / 59
Bootstrap

Boot - Passo 03

Figura 3.3: Processo de boot - Passo 03 [SILVA, 2021]

47 / 59
Bootstrap

Boot - Passo 04

Figura 3.4: Processo de boot - Passo 04 [SILVA, 2021]

48 / 59
Bootstrap

Boot - Passo 05

Figura 3.5: Processo de boot - Passo 05 [SILVA, 2021]

49 / 59
Bootstrap

Boot - Passo 06

Figura 3.6: Processo de boot - Passo 06 [SILVA, 2021]

50 / 59
Bootstrap

Carga de bootstraping [SILVA, 2021]

O programa de boot também é conhecido como bootstrap, é um


pequeno programa carregado na memória principal numa região
somente de leitura (ROM-Read Only Memory);
A única função do bootstrap é carregar o SO, usando os passos
mostrados na gura 51.

Figura 3.7: Carga de módulos de boot


51 / 59
Conclusão

1 Evolução

2 O Sistema Operacional
Gerência de processos
Gerência de memória
Gerência de arquivos

3 Bootstrap

4 Conclusão

52 / 59
Conclusão

Paradigma da computação: gargalo de Von Neumann

Figura 4.1: Abordagem de Von Neumann

Qual o problema da abordagem de Von Neumann?

53 / 59
Conclusão

Unix como base

O Unix é a base para quase tudo o que conhecemos como Sistema


Operacional;

Conhecer seu funcionamento é análogo a conhecer bem o computador;

Sua grande contribuição só foi possível por causa de suas bases


abertas, uma grande coincidência histórica;

Grande questão do momento: desenvolvimento colaborativo (família


BSD) ou sistemas comerciais (Apple, IBM, Oracle/Sun)?

54 / 59
Conclusão

Resumo

Sistemas operacionais fazem a interface entre o hardware e o software;

Processos são tarefas executadas pela CPU;

Threads são processos que possuem área de memória compartilhada;

Os processos e/ou threads se comunicam através de mensagens ou


memória.

55 / 59
Conclusão

Chagas, F. (2016).
Notas de aula do prof. fernando chagas.

Dias, A. M. (2005).
Noções de sistemas operacionais.
Disponível em: http://www.dca.ufrn.br/∼xamd/dca0800/Cap03.pdf
Acessado em 06/01/2011.

FARINES, J. M. and MELO, R. (2000).


Sistemas de Tempo Real, volume 1.
IME-USP.

Galvin, P. B., Gagne, G., and Silberschatz, A. (2013).


Operating system concepts.
John Wiley & Sons, Inc., 9th edition.

Guarezi, D. J. and Silva, E. B. (2010).


Processos em windows e unix.

56 / 59
Conclusão

Disponível em:
http://www.inf.ufsc.br/∼magro/PROCESSOS%20EM%20WINDOWS%2
Acessado em 28/01/2011.

Neto, D. O. G. (2010).
Processos no unix.
Disponível em:
http://homepages.dcc.ufmg.br/∼dorgival/slides/so/04b-
processosUnix-6pp.pdf Acessado em
28/01/2011.

Penn (2016).
Foto do eniac.

Silva, F. J. d. (2010).
Histórico do sistemas operacionais.
http://www.deinf.ufma.br/ fssilva/graduacao/so/aulas/historico.pdf
Acessado em 08/06/2010.

SILVA, L. (2021).

57 / 59
Conclusão

Notas de aula do prof. luciano silva.

Souto, P. F. (2010).
Sistemas operativos: Escalonamento de processos.
Disponível em: paginas.fe.up.pt/∼pfs/aulas/aso0708/at/at6.pdf
Acessado em 28/01/2011.

Tanenbaum, A. S. and Machado Filho, N. (1995).


Sistemas operacionais modernos.
Prentice-Hall, 3 edition.

Wikipedia (2018).
Cryptanalysis of the Enigma.
Disponível em:
https://en.wikipedia.org/wiki/Cryptanalysis_of_the_Enigma
Acessado em 19/02/2018.

58 / 59
Conclusão

OBRIGADO!!!
PERGUNTAS???

59 / 59

Você também pode gostar