1 Obiettivi di Windows 2000 Portabilita: scritto in C le chiamate al processore sono isolate codice...

20
1 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:

Transcript of 1 Obiettivi di Windows 2000 Portabilita: scritto in C le chiamate al processore sono isolate codice...

Page 1: 1 Obiettivi di Windows 2000 Portabilita: scritto in C le chiamate al processore sono isolate codice dipendente dalla piattaforma isolato Estensibilita:

1

Obiettivi di Windows 2000Portabilita’:

•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

Page 2: 1 Obiettivi di Windows 2000 Portabilita: scritto in C le chiamate al processore sono isolate codice dipendente dalla piattaforma isolato Estensibilita:

2

Caratteristiche di Windows 200

•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

Page 3: 1 Obiettivi di Windows 2000 Portabilita: scritto in C le chiamate al processore sono isolate codice dipendente dalla piattaforma isolato Estensibilita:

3

Win32 Application Programming Interface

Le API di Win32 permettono di girare lo stesso programma su quasi tutti i sistemi Windows

Page 4: 1 Obiettivi di Windows 2000 Portabilita: scritto in C le chiamate al processore sono isolate codice dipendente dalla piattaforma isolato Estensibilita:

4

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.

Page 5: 1 Obiettivi di Windows 2000 Portabilita: scritto in C le chiamate al processore sono isolate codice dipendente dalla piattaforma isolato Estensibilita:

5

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 (hwnd) ;

•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);

Page 6: 1 Obiettivi di Windows 2000 Portabilita: scritto in C le chiamate al processore sono isolate codice dipendente dalla piattaforma isolato Estensibilita:

6

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).

Page 7: 1 Obiettivi di Windows 2000 Portabilita: scritto in C le chiamate al processore sono isolate codice dipendente dalla piattaforma isolato Estensibilita:

7

La struttura del Registry

Page 8: 1 Obiettivi di Windows 2000 Portabilita: scritto in C le chiamate al processore sono isolate codice dipendente dalla piattaforma isolato Estensibilita:

8

Architettura di Windows 2000

* La parte in grigio è denominata Executive.

Page 9: 1 Obiettivi di Windows 2000 Portabilita: scritto in C le chiamate al processore sono isolate codice dipendente dalla piattaforma isolato Estensibilita:

9

Hardware Abstraction Layer

Alcune delle funzioni dell’HAL

Page 10: 1 Obiettivi di Windows 2000 Portabilita: scritto in C le chiamate al processore sono isolate codice dipendente dalla piattaforma isolato Estensibilita:

10

Kernel

•Rende il resto del sistema operativo indipendente dall’hardware.

•Gestisce lo scheduling dei thread, la gestione degli interrupt, il recupero dopo la mancanza di corrente.

•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, ecc..).

Page 11: 1 Obiettivi di Windows 2000 Portabilita: scritto in C le chiamate al processore sono isolate codice dipendente dalla piattaforma isolato Estensibilita:

11

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.

Page 12: 1 Obiettivi di Windows 2000 Portabilita: scritto in C le chiamate al processore sono isolate codice dipendente dalla piattaforma isolato Estensibilita:

12

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.

Page 13: 1 Obiettivi di Windows 2000 Portabilita: scritto in C le chiamate al processore sono isolate codice dipendente dalla piattaforma isolato Estensibilita:

13

I Tipi di OggettoTipo Definito da

Process Process Manager

Thread Process Manager

Section Memory Manager

File I/O Manager

Port LPC Facility

Access Token Security system

Event Executive Supp. Services

Event pair Executive Supp. Services

Semaphore Executive Supp. Services

Mutant Executive Supp. Services

Timer Executive Supp. Services

Object directory Object Manager

Symbolic link Object Manager

Profile Kernel

Key Configuration Manager

Page 14: 1 Obiettivi di Windows 2000 Portabilita: scritto in C le chiamate al processore sono isolate codice dipendente dalla piattaforma isolato Estensibilita:

14

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

Page 15: 1 Obiettivi di Windows 2000 Portabilita: scritto in C le chiamate al processore sono isolate codice dipendente dalla piattaforma isolato Estensibilita:

15

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..

Page 16: 1 Obiettivi di Windows 2000 Portabilita: scritto in C le chiamate al processore sono isolate codice dipendente dalla piattaforma isolato Estensibilita:

16

Struttura dell’Oggetto

Nome oggetto

Directory dell’oggetto

Sicurezza

Quota dell’oggetto

Lista dei processi

Contatore riferimenti

Puntatore al tipo

Dati specifici

Nome tipo

Tipi di Accessi

Diritti di accesso

Quota

Sincronizzabile ?

Paginabile

Metodi:

Open

Close

delete

Ecc..

Page 17: 1 Obiettivi di Windows 2000 Portabilita: scritto in C le chiamate al processore sono isolate codice dipendente dalla piattaforma isolato Estensibilita:

17

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..

Page 18: 1 Obiettivi di Windows 2000 Portabilita: scritto in C le chiamate al processore sono isolate codice dipendente dalla piattaforma isolato Estensibilita:

18

Le DLLLe 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.

Page 19: 1 Obiettivi di Windows 2000 Portabilita: scritto in C le chiamate al processore sono isolate codice dipendente dalla piattaforma isolato Estensibilita:

19

DLL: caricamento statico e dinamicoDLL: 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

Page 20: 1 Obiettivi di Windows 2000 Portabilita: scritto in C le chiamate al processore sono isolate codice dipendente dalla piattaforma isolato Estensibilita:

20

Architettura: API e DLLArchitettura: 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)