Você está na página 1de 55

Estudo de caso

Windows

Hist
oria do Windows
MS-DOS
Consumer Windows (95/98/Me)
Windows NT
Windows XP

CP/M
1974
Intel, processador 8080, 8 bits
Control Program for Microcomputers
Gary Kildall e Digital Research

IBM-PC

Incio dos anos 80


Qual sistema utilizar?
Gary (Digital) nao fechou negocio com a IBM

MS-DOS
QDOS (Quick and Dirty Operating System)?
Bill Gattes
Comprado da Seattle Computer Products por 50 mil
dolares
MS-DOS (MicroSoft Disk Operanting System)

MS-DOS

linha de comando
16 bits
monousuario

Windows 1.0

Inspirado no Apple Lisa (Macintosh)

Windows 2.0

1987
PC-AT

Windows 3.0

1990
Sucesso comercial

Windows
Interface grafica sobre o MS-DOS
Espaco de enderecamento compartilhado (bugs!)

Windows 95

Nao elimina o MS-DOS, mas transfere funcionalidades


do MS-DOS para o Windows

Windows 95
Memoria virtual
Multiprogramacao
32 bits, mas varias partes de 16 bits
Nomes de arquivos mais longos (substituindo 8+3)

Windows 98

Mais funcionalidades sao transferidas do MS-DOS para o


Windows
Ainda ha partes de codigo 16-bits

Windows 98
4 GB de memoria virtual
2 GB privados para um processo
1 GB compartilhado (bugs!)
1 MB para compatibilidade com o MS-DOS
Kernel nao era re-entrante
Mutex unico trava todo o sistema
Um processo pode ter de esperar por outro nao
relacionado
Integracao entre o desktop e a Internet
Acusacao de monopolio

Windows Me
Windows Millennium Edition

Muito semelhante ao Windows 98

Windows Me
Facilidades extras:
Simplificou compartilhamento de imagens e musicas
Aplicacoes voltadas para a Internet
Jogos multiusuario
Mecanismo para restaurar configuracoes anteriores

Windows NT
Conclusao ao final dos anos 80:
Seria difcil construir um sistema 32 bits sobre o
MS-DOS 16 bits
Windows New Technology
Baseado no VMS da DEC (contratacao de David Cutler)
Visao importante: computadores pessoais seriam usados
em aplicacoes comerciais
Voltado para aplicacoes comerciais e de usuarios

Windows NT 3.1

Primeira versao em 1993. Numero escolhido para


combinar com o Windows 3.1
Microsoft esperava um grande sucesso

Windows NT 3.1
Apesar de muito superior, as pessoas nao quiseram
trocar o Windows 3.1 pelo Windows NT 3.1
NT precisava de maquinas mais poderosas
Nao havia muitas aplicacoes disponveis
Fracasso do NT fez com que fossem lancados o
Windows 95/98/Me

Windows NT 4.0

Algum espaco no mercado de servidores


Mesma interface do Windows 95
Portabilidade
16 milhoes de linhas de codigo (C, C++ e assembly)
Pentium, Alpha, MIPS e PowerPC

Windows 95/98 e Windows NT


Item
Full 32-bit system?
Security?
Protected file mappings?
Private addr space for each MS-DOS prog?
Unicode?
Runs on
Multiprocessor support?
Re-entrant code inside OS?
Plug and play?
Power management?
FAT-32 file system?
NTFS file system
Win32 API?
Run all old MS-DOS programs?
Some critical OS data writable by user?

Windows 95/98
No
No
No
No
No
Intel 80x86
No
No
Yes
Yes
Yes
No
Yes
Yes
Yes

Windows NT
Yes
Yes
Yes
Yes
Yes
80x86, Alpha, MIPS, ...
Yes
Yes
No
No
Optional
Yes
Yes
No
No

Windows 2000

Mesma interface do Windows 98


Windows NT 5.0 com um nome mais neutro
Modo usuario e modo supervisor
Cluster: duas ou mais maquinas parecem uma unica
para o mundo externo
Enfim, livres do MS-DOS

Vers
oes do Windows 2000
Version
Professional
Server
Advanced server
Datacenter server

Max RAM
4 GB
4 GB
8 GB
64 GB

CPUs
2
4
8
32

Max clients
10
Unlimited
Unlimited
Unlimited

Cluster size
0
0
2
4

Optimized for
Response time
Throughput
Throughput
Throughput

Diferencas entre as versoes sao mnimas


O sistema verifica se esta rodando a versao correta

Tamanho do c
odigo de alguns
Sistemas Operacionais

2000 29M





































 


6M
10M
16M
3.1
3.5
4.0
38K
4.2
4.3

98K
179K
Sys III 58K

SVR3 92K
SVR4 280K

1M
2.2

165K
470K
1.0
2.0
Free 1.0 235K
4.4 Lite 743K

5.6 1.4M
2.0 62K

5.8 2.0M
Free 4.0 1.4M





































 


V6
V7

9K
21K





































 


4.1





































 


1.0 13K





































 


0.01

10K





































 


5.3 850K





































 


Win NT
Solaris
Linux
MINIX
BSD
AT&T





































 


Year
1976
1979
1980
1982
1984
1986
1987
1989
1991
1993
1994
1996
1997
1999
2000

Ciclo de desenvolvimento do
Windows
Centenas de programadores trabalham no Windows
durante o dia
Trechos de codigo finalizado sao submetidos
` 18:00hs, o sistema e reconstrudo
As
O novo sistema operacional e distribudo e submetido a
uma serie de testes durante a noite
Na manha seguinte, verifica-se se o codigo funciona

Windows XP

Sucessor do Windows 2000


Mais testes para devices drivers
Eliminou alguns cenarios de reboot
Estruturas crticas do kernel sao read-only
...

Programac
ao no Windows 2000
Win32 Application Programming Interface
Chamadas ao sistema
nao sao publicas
mudam de versao para versao
Win32 API - conjunto de funcoes bem definidas que
fazem as chamadas ao sistema ou operam em espaco do
usuario
Novas funcoes sao acrescentadas frequentemente

Win32 API
Win32
application
program

Win32 Application Programming Interface

Win32s
Windows 3.x

Windows
95/98/Me

Windows NT

Window 2000

Existem pequenas variacoes; nem tudo funciona da


mesma forma em todas os sistemas . . .

Tipos de funco
es do Win32 API
Processos, threads
Gerencia de memoria
Sincronizacao
I/O
Interface grafica
janelas, menus, cones, barras de controle, . . .

Objetos do n
ucleo
Arquivos, processos, threads, pipes, . . .
Toda chamada retorna um handle, que pode ser usado
posteriormente
Handles possuem permissao de acesso
Nao podem ser simplesmente passados de um processo
para outro
Windows nao e orientado a objetos
Faltam conceitos como heranca e poliformismo

Informaco
es de controle
Windows 3.1: varios arquivos .ini
A partir do Windows 95: registry
Banco de dados centralizado
Semelhante a um sistema de arquivos: diretorios,
subdiretorios e entradas (arquivos)

Registry
Key
HKEY_LOCAL _MACHINE
HARDWARE
SAM
SECURITY
SOFTWARE
SYSTEM
HKEY_USERS
USER-AST-ID
AppEvents
Console
Control Panel
Environment
Keyboard Layout
Printers
Software
HKEY_PERFORMANCE _DATA
HKEY_CLASSES_ROOT
HKEY_CURRENT_CONFIG
HKEY_CURRENT_USER

Description
Properties of the hardware and software
Hardware description and mapping of hardware to drivers
Security and account information for users
System-wide security policies
Generic information about installed application programs
Information for booting the system
Information about the users; one subkey per user
User ASTs profile
Which sound to make when (incoming email/fax, error, etc.)
Command prompt settings (colors, fonts, history, etc.)
Desktop appearance, screensaver, mouse sensitivity, etc.
Environment variables
Which keyboard: 102-key US, AZERTY, Dvorak, etc.
Information about installed printers
User preferences for Microsoft and third party software
Hundreds of counters monitoring system performance
Link to HKEY_LOCAL _MACHINE\SOFTWARE\CLASSES
Link to the current hardware profile
Link to the current user profile

Ger
encia de entradas no Registry
Funcoes disponveis na API
Win32 API function
RegCreateKeyEx
RegDeleteKey
RegOpenKeyEx
RegEnumKeyEx
RegQueryValueEx

Description
Create a new registry key
Delete a registry key
Open a key to get a handle to it
Enumerate the subkeys subordinate to the key of the handle
Look up the data for a value within a key

Editores: regedit e regedt32

Service
process

POSIX program

Win32 program

OS/2 program

POSIX subsystem

Win32 subsystem

OS/2 subsystem

User mode

Estrutura do Windows 2000

System interface (NT DLL.DLL)

I/O mgr
File sys
D

Object Process Memory Security Cache


mgr
mgr
mgr
mgr
mgr

PnP
mgr

Power Config
mgr
mgr

Kernel
Hardware Abstraction layer (HAL)
Hardware

LPC
mgr

Win32
GDI
Video
driver

Kernel mode

System services

Hardware Abstraction Layer (HAL)


Portabilidade
facil nos nveis mais altos
difcil para o codigo que trabalha diretamente no
hardware
HAL e uma camada que abstrai detalhes e esconde
diferencas

Hardware Abstraction Layer


Device
registers

Device
addresses

1.

Interrupts

DMA

Timers

RAM

2.

3.

Spin
locks

BIOS

MOV EAX,ABC
ADD EAX,BAX
BNE LABEL
MOV EAX,ABC
MOV EAX,ABC
ADD EAX,BAX
BNE LABEL
MOVE AX,ABC
ADD EAX,BAX
BNE LABEL

Disk
Printer
Hardware abstraction layer

Por questoes de eficiencia, pode ser interessante fazer


acesso ao hardware diretamente

A camada do n
ucleo
Constroi abstracoes de nvel mais alto a partir das
fornecidas pelo HAL
A maior parte esta escrita em C
Troca de contexto
Objetos de controle
DPC (Deferred Procedure Call)
APC (Asynchronous Procedure Call)
dispatcher objects (semaforos, locks, timers)

Executive
Dividido em modulos
Object manager
I/O manager
Process manager
Memory manager
Security manager
Cache manager
Plug-and-play manager
Power manager
Configuration manager
Local procedure call manager

System services

Tipos de objetos
Type
Process
Thread
Semaphore
Mutex
Event
Port
Timer
Queue
Open file
Access token
Profile
Section
Key
Object directory
Symbolic link
Device
Device driver

Description
User process
Thread within a process
Counting semaphore used for interprocess synchronization
Binary semaphore used to enter a critical region
Synchronization object with persistent state (signaled/not)
Mechanism for interprocess message passing
Object allowing a thread to sleep for a fixed time interval
Object used for completion notification on asynchronous I/O
Object associated with an open file
Security descriptor for some object
Data structure used for profiling CPU usage
Structure used for mapping files onto virtual address space
Registry key
Directory for grouping objects within the object manager
Pointer to another object by name
I/O device object
Each loaded device driver has its own object

Estrutura de um objeto
Object
header

Object
data

Object name
Directory in which the object lives
Security information (which can use object)
Quota charges (cost to use the object)
List of processes with handles
Reference counts
Pointer to the type object

Object-specific data

Type name
Access types
Access rights
Quota charges
Synchronizable?
Pageable
Open method
Close method
Delete method
Query name method
Parse method
Security method

Tabelas de handles e tipos de objetos


Thread
type
object

Handle
table for
process A

Thread
1

Thread
2

Thread
3

Thread
4

Handle
table for
process B
1110

1010
1011

1111

0101

Mutex
type
object

Mutex
1

Mutex
2

Mutex
3

Diret
orios no espaco de nomes
Directory
??
Device
Driver
ObjectTypes
Windows
BaseNamedObjs
Arcname
NLS
FileSystem
Security
KnownDLLs

Contents
Starting place for looking up MS-DOS devices like C:
All discovered I/O devices
Objects corresponding to each loaded device driver
The type objects shown in Fig. 0-0
Objects for sending messages to all the windows
User-created objects such as semaphores, mutexes, etc.
Partition names discovered by the boot loader
National language support objects
File system driver objects and file system recognizer objects
Objects belonging to the security system
Key shared libraries that are opened early and held open

Dynamic Link Libraries


x.dll - arquivo contendo um conjunto de procedimentos
relacionados
Chamadas a procedimentos em DLLs sao feitas de
maneira indireta por meio de um vetor
Apenas uma copia da DLL existe na memoria em um
dado instante

Duas maneiras de implementar as


chamadas de funco
es da API
Enviroment
subsystem
process
(csrss.exe)
User
space

Gdi32.dll

Call

User32.dll

Call
1

Kernel32.dll

Call

2b
Win32
subsys

2a

3b
System interface (ntdll.dll)
4b
Kernel
space

User
process

3a
Operating system

Conceitos b
asicos sobre ger
encia de
processos e threads
Name
Job
Process
Thread
Fiber

Description
Collection of processes that share quotas and limits
Container for holding resources
Entity scheduled by the kernel
Lightweight thread managed entirely in user space

Relacionamento entre jobs, processos


e threads
Job
Thread

Address
space

Process
User
stack

Process
handle
table

Kernel mode thread stack


P

T T

Access token

T T

Prioridades para Escalonamento



















































































Idle
15
6
5
4
3
2
1

















































































































Win32
thread
priorities

Realtime
Time critical
31
Highest
26
Above normal
25
Normal
24
Below normal
23
Lowest
22
Idle
16

Win32 process class priorities


Above
Below
High Normal Normal Normal
15
15
15
15
15
12
10
8
14
11
9
7
13
10
8
6
12
9
7
5
11
8
6
4
1
1
1
1

Filas de prioridades
Priority
31
Next thread to run
System
priorities

24

16

User
priorities

1
Zero page thread 0
Idle thread

Invers
ao de prioridades
Blocked

12

12

Does a down on the


semaphore and blocks

Semaphone

Waiting on the semaphore

Running

Ready
(a)

Semaphone

Would like to do an up
on the semaphore but
never gets scheduled
(b)

Emulac
ao do MS-DOS
Process
Ntvdm

MSDOS program

2
Trampoline

4
Operating system

Ger
encia de mem
oria
Process A

Process B

Process C

Nonpaged pool
Paged pool

Nonpaged pool

Nonpaged pool

Paged pool

Paged pool

A's page tables

B's page tables

C's page tables

Stacks, data, etc

Stacks, data, etc

Stacks, data, etc

HAL + OS

HAL + OS

HAL + OS

System data

System data

System data

Process A's
private code
and data

Process B's
private code
and data

Process C's
private code
and data

4 GB

2 GB

0
Bottom and top
64 KB are invalid

Mapeamento de p
aginas
Backing store on disk

Region

Process A

Process B

Stack

Stack

Data
Data

Paging file
Shared
library
Lib.dll

Shared
library

Program
Program
Prog1.exe

Prog2.exe

Ger
encia de p
aginas
Zero page needed (8)
Page read in (6)

Soft page fault (2)


Working
sets

Top

ModStandby
Free
Zeroed
ified
page
page
page
page Modified list Dealloc(5) list
list
Zero
list
page
page
writer(4)
thread (7)
Bottom
Page evicted from a working set (1)

Process exist (3)

Bad
RAM
page
list

Ger
encia de p
aginas
Page frame database
Page tables
State

List headers
Standby

Modified
Free

Zeroed

14
13
12
11
10
9
8
7
6
5
4
3
2
1
0

Clean
Dirty
Clean
Active
Clean
Dirty
Active
Dirty
Free
Free
Zeroed
Active
Zeroed
Active
Zeroed

Cnt WS Other

PT

Next
X
X

20

4
X
X
6
14

Mais informaco
es sobre o Windows
http://en.wikipedia.org/wiki/Windows
http://www.microsoft.com/

Você também pode gostar