© 1997-2017 Volnys Bernal 1
Introdução ao Sistema UNIX
Volnys Borges Bernal
volnys@[Link]
[Link]
© 1997-2017 Volnys Bernal 2
Agenda
História do sistema UNIX
Arquitetura Geral do Sistema UNIX
Características do Sistema UNIX
Shell
© 1997-2017 Volnys Bernal 3
História do sistema UNIX
© 1997-2017 Volnys Bernal 4
História do sistema UNIX
1965
Projeto MULTICS
MULTiplexed Information and Computing Service
Projeto conjunto entre
o GE (General Eletric)
o MIT (Massachusetts Institute of Technology)
o AT&T
Objetivo
o Desenvolvimento de um sistema operacional chamado
MULTICS com os seguintes desafios:
• Sistema multi-usuário time-sharing (que oferece
terminais aos usuários)
• Sistema de arquivos hierárquico
• Implementação em uma linguagem de alto nível
o Para executar sobre computador GE-645
© 1997-2017 Volnys Bernal 5
História do sistema UNIX
1969
Término do projeto MULTICS
Já havia sido desenvolvida uma versão primitiva do S.O
MULTICS
Principais problemas enfrentados:
o Complexidade
o Lento
o Falta de um compilador estável
o Falta de poder computacional do GE-654
Encerramento do projeto
© 1997-2017 Volnys Bernal 6
História do sistema UNIX
Pesquisadores da AT&T (Bell Labs):
Ficam sem ambiente de desenvolvimento
Ken Thompson e Dennis Ritche
Desenvolvem um projeto de núcleo (kernel) de sistema
operacional simplificado
Propõem a compra de um computador
Proposta rejeitada
Ken Thompson
Havia desenvolvido o jogo “Space Travel”
o Executava no sistema GECOS - Honwyell 635
o Execução era muito lenta
© 1997-2017 Volnys Bernal 7
História do sistema UNIX
Pesquisadores da AT&T (Bell Labs):
Conseguiram um minicomputador PDP-7
Não estava em uso
Boa capacidade de processamento
Bom display alfanumérico (terminal)
Porém, não possuía um S.O adequado
Porte do SpaceTravel para o PDP-7
Para o porte, foi criado um Sistema Operacional primitivo
Foram desenvolvidos vários softwares de apoio
© 1997-2017 Volnys Bernal 8
História do sistema UNIX
1969
Primeira versão UNIX (AT&T)
Sistema operacional em assembler para o PDP-7
Nome UNIX
o Nome derivado de “MULTICS”
o Único usuário
1971
UNIX (AT&T)
Portado para um PDP-11
Memória
o 16 kbytes sistema
o 8 kbytes programa
Disco
o 512 kbytes
© 1997-2017 Volnys Bernal 9
História do sistema UNIX
Ken Tompson e
Dennis Ritche
Linguagem B
Criada por Ken Thompson em 1969
Inspirada em BCPL (que por sua vez foi inspirada na PL/1)
Projetada para processamento não numérico, (lógica e
manipulação de valores inteiros e endereços de memória) com
suporte a recurção e independente de máquina.
Um dos usos da linguagem foi ser utilizada para o
desenvolvimento de código de sistema operacional.
Linguagem C
Desenvolvida por Dennis Ritche entre 1969 e 1973
Baseada na Linguagem B
© 1997-2017 Volnys Bernal 10
História do sistema UNIX
1973
UNIX (AT&T)
Reescrito em C
1974
UNIX (AT&T)
Artigo publicado por Thompson e Dennis Ritche
Descrevia estruturas internas do sistema
Popularidade no meio academico
“Communications of ACM”
© 1997-2017 Volnys Bernal 11
História do sistema UNIX
1977
UNIX 1 BSD
Primeira versão UNIX BSD
Variação UNIX realizada pela Universidade de Berkley
Baseada na UNIX version 6 (AT&T)
BSD: Berkley Software Distribution
1978
UNIX version 7 (AT&T)
Licenças:
o Para universidades
o Para instituições comerciais
Mais de 500 corporações utilizavam UNIX
o 125 eram universidades
Primeiro porte para outra arquitetura
o Interdata 8/32
© 1997-2017 Volnys Bernal 12
História do sistema UNIX
1979
UNIX 4.0 BSD
1982
UNIX System III (AT&T)
Primeira versão comercial
1983
UNIX System V (AT&T)
Primeira versão com suporte da AT&T
© 1997-2017 Volnys Bernal 13
História do sistema UNIX
1983
GNU Project
Manifesto “GNU is Not UNIX”
Por Richard Stalman (MIT)
Objetivo: Criação de utilitários e software “livres” para sistemas UNIX
o Compiladores, Shells, utilitários (ls,pwd,cat,...)
Não inclui o kernel do sistema operacional
1985
Free Sotware Fundation
Fundada por Richard Stallman
“Free Software”
Software não proprietário
Acesso público ao software (fontes)
Redistribuição do código fonte
“Free Software Foundation” ([Link]
© 1997-2017 Volnys Bernal 14
História do sistema UNIX
1985
X-Windows
Ambiente de janelas para UNIX
Desenvolvido pelo MIT
Distribuído com restrições mínimas
© 1997-2017 Volnys Bernal 15
História do sistema UNIX
1987 - Minix
“Mini UNIX”
Desenvolvida pela equipe de Andew Tanenbaum
Objetivo:
Disciplina de Sistemas Operacionais
Livro de Sistemas Operacionais + Fonte do kernel
Compatível com “UNIX version 7”
Simplicidade + Elegância
Linguagem C e Assembler
12.000 linhas de código
Plataforma
IBM PC
Não precisava de disco
Podia executar com 2 disquetes
© 1997-2017 Volnys Bernal 16
História do sistema UNIX
1990
Anúncio GNU Hurd
Início do desenvolvimento de um “kernel” UNIX
De domínio público
Pela “Free Software Fundation” (GNU)
1991
Versões derivadas do BSD UNIX
BSD - Berkeley Software Distribution
Artigos em “Dr. Dobb’s Journal”
o Por Williand e Lynne Jolitz
o Como realizar o porte do BSD UNIX em PCs 386
Início da família de sistemas operacionais “free-software” baseado na
versão BSD
o FreeBSD
o NetBSD
o OpenBSD
© 1997-2017 Volnys Bernal 17
História do sistema UNIX
1991
Linux
Abril
o Linus Torvalds Inicia o desenvolvimento de um S.O
o Baseado no MINIX
o Utiliza ferramentas GNU
Outubro
o Publica primeiros trechos de código
o Unix-like free-source kernel
o Chama-o de Linux
Dezembro
o versão 0.11
• Primeira versão do Kernel
© 1997-2017 Volnys Bernal 18
História do sistema UNIX
1992
NetBSD release 2
Versão PC do UNIX BSD
386BSD 0.1
Por William e Lynne Jolitz
Primeira versão
Baseada no NetBSD Release 2
Não pode ser utilizado
o Batalha legal
o Existe código proprietário de Berkley?
© 1997-2017 Volnys Bernal 19
História do sistema UNIX
1993
FreeBSD
Baseado no 386BSD
Muito estável
1994
NetBSD 1.0
Liberado
1995
FreeBSD 2.0
© 1997-2017 Volnys Bernal 20
História do sistema UNIX
xxxBSD
BSD 1 3 4.0 4.1 4.2 4.3
SunOS
AT&T v6 v7 SystemIII SystemV
R1.0 R2.0 R3.0 R4.0 R4.1 R4.2
Minix
Linux
76 78 80 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
© 1997-2017 Volnys Bernal 21
Arquitetura geral do
sistema UNIX
© 1997-2017 Volnys Bernal 22
Arquitetura geral do sistema UNIX
Aplicativos
Sistema Operacional
Componentes Físicos
© 1997-2017 Volnys Bernal 23
Arquitetura geral do sistema UNIX
Aplicativos
Processos de Utilitários do
gerência Sistema
Interface de
Sistema
chamadas ao sistema
Núcleo Operacional
Device Drivers
Interface de
hardware Hardware Componentes
Dispositivos Físicos
© 1997-2017 Volnys Bernal 24
Arquitetura Geral
Usuário
Aplicativos
Interface de usuário
processos
via shell
shell ls
Utilitários do Sistema
init inetd nfsd Sistema
Operacional
...
Processos de gerência
Interface de
chamadas ao sistema
Núcleo
Device Drivers
Interface de
hardware
Hardware Componentes
Dispositivos Físicos
© 1997-2017 Volnys Bernal 25
Características do
sistema UNIX
© 1997-2017 Volnys Bernal 26
Características do sistema UNIX
Portabilidade do Sistema Operacional
Para diversas arquiteturas
Portabilidade de código fonte de aplicação
Para diferentes UNIX
Sistema de computação de uso geral
Multitarefa
Multiusuário
Sistema de arquivos hierárquico
Possui ambiente de janelas (Xwindows)
Grande quantidade de ferramentas de desenvolvimento
de software
Interoperabilidade
Padronização
© 1997-2017 Volnys Bernal 27
Características do sistema UNIX
Portabilidade
Disponível em todo tipo de sistema
Supercomputadores
Servidores
Estações gráficas
Computadores de uso corporativo
Computador pessoal
Celular (Ex: Android)
Sistemas embarcados
© 1997-2017 Volnys Bernal 28
Características do sistema UNIX
Padronização
IEEE POSIX
X/Open
OSF
SVID (System V Interface Definition) (AT&T)
Unix International
© 1997-2017 Volnys Bernal 29
Características do sistema UNIX
Fabricantes de “Workstations” e suas versões UNIX
Sun: SunOS / Solaris
SGI: IRIX
HP: HPUX
Digital: Digital UNIX (OSF)
IBM: AIX
© 1997-2017 Volnys Bernal 30
Características do sistema UNIX
Versões UNIX para arquitetura PC
Comerciais
SunOS/Solaris para PC
SCO UNIX
De domínio público
FreeBSD
NetBSD
386BSD
Linux
Minix
© 1997-2017 Volnys Bernal 31
Shell
© 1997-2017 Volnys Bernal 32
Shell
Funções do shell:
Interpretador de comandos
Interação com o usuário através do terminal
Função principal
Interpretador de uma linguagem de programação
É capaz de executar uma seqüência de comandos (programa)
armazenadas em um arquivo e descrita na linguagem shell
apropriada
Estes programas shell são chamados “shell scripts”
© 1997-2017 Volnys Bernal 33
Shell
Usuário
Interface de usuário
via shell
shell ls -a
Processos
init inetd nfsd
Interface de
chamadas ao sistema Núcleo
Device Drivers
Interface de
hardware Hardware Componentes
Dispositivos Físicos
© 1997-2017 Volnys Bernal 34
Shell
Principais shells existentes atualmente:
sh Bourne Shell Original UNIX
csh C-Shell BSD UNIX
ksh Korn Shell Mistura sh/csh
bash Bourne again Shell Shell GNU
tcsh T C Shell Baseado no C Shell
© 1997-2017 Volnys Bernal 35
Bibliografia
© 1997-2017 Volnys Bernal 36
Bibliografia
Sistemas Operacionais Modernos
Andrew Tanenbaum
IEEE Software - Linux on the Move
Terry Bollinger; Peter Beckman
Jan/Fev 1999
Bibliografia complementar:
The Design of the UNIX Operating System
Maurice J. Bach
Prentice-Hall Software Series, 1986