Obiettivi di Windows 2000
Portabilita’:
•scritto in C
•le chiamate al processore sono isolate
•codice dipendente dalla piattaforma isolato
Estensibilita’:
•struttura modulare
•architettura ad oggetti
•supporto di caricamento dinamico di driver
Compatibilita’:
•compatibilita’ binaria con DOS, Win 16bit, OS/2
•compatibilita’ sorgente con applicazioni POSIX
Affidabilita’ e sicurezza:
Multiprocessing e scalabilita’
Elaborazione distribuita
1
Caratteristiche di Windows 2000
•Sistema operativo a 32-bit, preemptive, multi-tasking
•Multiprocessing simmetrico
•Ogni applicazione a 32bit opera in un proprio Virtual
Memory address space
•E’ disponibile su diverse CPU's: Intel x86, IBM PowerPC e
DEC Alpha.
•E’ disponibile in differenti versioni:
Limitazioni sul numero di utenti serviti, il numero di
CPU supportate e la memoria
2
Win32 Application Programming Interface
Le API di Win32 permettono di girare lo stesso
programma su quasi tutti i sistemi Windows
3
API di Windows 2000
•Le API sono librerie che forniscono una vasta serie
di funzioni e differiscono leggermente da una
versione all’altra di Windows.
•Abbiamo vari tipi di API per la gestione di file,
processi, thread, pipe, sicurezza, e per la gestione
dell’interfaccia grafica (tutti denominati oggetti).
•Le API che creano oggetti ritornano un handle,che
può essere usato per operare sull’oggetto.
•Gli handle possono essere duplicati e passati ad un
altro processo.
4
API di Windows 2000
Vediamo come esempio lo pseudocodice di un
oggetto Windows aperto, utilizzato e chiuso:
…….
handlewnd = CreateWindow ( “Prova", 10,10,200,200);
WriteWindow (handlewnd,100,100,”Ciao a tutti”) ;
……………
CloseWindow (handlewnd) ;
•Il codice crea una finestra a partire dalle coordinate
(10,10) di dimensione 200x200 e restituisce un
handle all’oggetto.
•Le successive operazioni (viene scritto ciao a tutti
sulla finestra, poi la finestra viene chiusa) vengono
effettuate tramite l’handle (handlewnd);
5
Il Registry
Il Registry è un archivio che conserva informazioni su
tutte le configurazioni del sistema (software installato,
utenti, hardware).
E’ organizzato in directory (chiamate key) e
sottodirectory e infine i valori (values) che contengono
le informazioni.
Lo strumento per editare i parametri di sistema e’
regedit.exe.
Oppure esistono API per usare il registro (RegCreateKeyEx,
RegQueryValueEx).
6
La struttura del Registry
7
Architettura di Windows 2000
* La parte in grigio è denominata Executive.
8
Hardware Abstraction Layer
Alcune delle funzioni dell’HAL
9
Kernel
•Aiuta a rendere il resto del sistema operativo
indipendente dall’hardware.
•Gestisce lo scheduling dei thread, la gestione degli
interrupt, il recupero dopo la mancanza di corrente, il
context switch.
•Inoltre supporta i control object e i dispatcher object.
•I dispatcher object sono oggetti utilizzati per mandare
messaggi o gestire la sincronizzazione del tipo
semafori, eventi, timer, ecc.
•I control object gestistiscono le altre operazioni del
kernel (processi, interrupt, stato della tensione e
alimentazione ecc..).
10
Executive
•E’ indipendente dall’architettura.
•E’ composto da 10 manager: I/O manager, process
manager, memory manager, security manager, cache
manager, plug and play manager, power manager,
configuration manager, local procedure call manager
•Il local procedure call manager si occupa della
comunicazione fra processi.
•Sopra l’executive vi è il System services, che accetta
le system call di Windows e le smista ai vari moduli
sottostanti.
11
Gli Oggetti
• Un Oggetto non è altro che una struttura dati memorizzata
in RAM.
• Un Oggetto e’ un’istanza singola in esecuzione di un Tipo
di Oggetto
• Un Tipo di Oggetto e’ composto da un tipo di dati, i
servizi che operano sulle istanze del tipo di dato, un
insieme di attributi
• Un Attributo e’ un campo dati in un oggetto che ne
definisce parzialmente lo stato
• La struttura interna di un Oggetto non e’ direttamente
accessibile.
12
I Tipi di Oggetto
Tipo
Definito da
Process
Thread
Section
File
Port
Access Token
Event
Event pair
Semaphore
Mutant
Timer
Object directory
Symbolic link
Profile
Key
Process Manager
Process Manager
Memory Manager
I/O Manager
LPC Facility
Security system
Executive Supp. Services
Executive Supp. Services
Executive Supp. Services
Executive Supp. Services
Executive Supp. Services
Object Manager
Object Manager
Kernel
Configuration Manager
13
Handle dell’Oggetto
• Un Oggetto puo’ essere utilizzato solo da Processi che
abbiano aperto un Handle su esso
• L’Handle e’ unico nel contesto di un processo: il processo
utente fa una chiamata al proprio ambiente (es. Win32),
che passa la chiamata al gestore di oggetti, che
– Alloca la memoria per l’oggetto
– Attacca un security descriptor che specifica cosa e’ consentito fare
e da chi
– Crea e mantiene un elenco di oggetti
– crea un handle per l’oggetto e lo restituisce al chiamante
14
Struttura dell’Oggetto
• Ogni oggetto e’ composto da un Header, che
contiene informazioni inizializzate e gestite
dall’Object manager, e da un Body, che contiene le
informazioni peculiari del Tipo di Oggetto
• Le informazioni invarianti relative al tipo di
oggetto sono contenute in un oggetto particolare,
l’Oggetto tipo (Object Type)
• L’object name space contiene informazioni sugli
oggetti creati, i processi a cui appartengono, ecc..
15
Struttura dell’Oggetto
Nome tipo
Nome oggetto
Directory dell’oggetto
Sicurezza
Quota dell’oggetto
Lista dei processi
Contatore riferimenti
Puntatore al tipo
Tipi di Accessi
Diritti di accesso
Quota
Sincronizzabile ?
Paginabile
Metodi:
Open
Close
delete
Ecc..
Dati specifici
16
Utility per gli oggetti
• www.sysinternals.com (sito di utilità di gestione per
Windows)
• Fra le utilità preseenti vi è winobj, che permette di vedere
l’object name space di windows.
• Potete scaricare altre utilità per vedere le dll, i processi
aperti, i thread, i file, ecc..
17
Le DLL
• In Windows abbiamo due tipi di “eseguibili”: EXE e DLL
• DLL = Dynamic Link Library
• Le funzioni esportate da una DLL vengono agganciate a
runtime e non durante la compilazione
• Abbiamo due modalità di aggancio di una DLL:
– Link statico: al caricamento dell’applicazione
– Link dinamico: in qualunque momento mediante una
opportuna funzione dell’API (LoadLibrary)
• Se più applicazioni utilizzano la stessa DLL (come avviene
per esempio con quelle di sistema) questa viene caricata in
memoria una sola volta.
18
DLL: caricamento statico e dinamico
• Caricamento statico
– Il linker inserisce nell’eseguibile informazioni sulle
DLL utilizzate e sulle funzioni che vengono chiamate.
– Il loader, in fase di caricamento del programma,
provvede a caricare in memoria anche le DLL
necessarie (se non sono già presenti) e ad eseguire gli
agganci con le funzioni.
• Caricamento dinamico
– Non viene inserita alcuna informazione in fase di
linking e il loader non esegue alcun aggancio
– Il caricamento e l’aggancio vengono fatti esplicitamente
chiamando alcune funzioni dell’API
19
Architettura: API e DLL
• Il sistema operativo è formato da una collezione di librerie
ad aggancio dinamico (DLL).
• Il cuore dell’API è formato da 3 DLL:
– Kernel: memory manager, scheduler, loader
– User: sistema di windowing
– GDI: Graphics Device Interface
• Estensibilità: l’API si espande aggiungendo nuove DLL
(per esempio WinSocket per la comunicazione su TCP/IP)
20