Internal System : Windows
Internal System : Windows
Internal System : Windows – Buonincontri Giovanni, Capasso Aldo
Internal System : Windows
Sommario
CENNI INTRODUTTVI .................................................................................................................................. 2
SCHEDULER ................................................................................................................................................... 2
DESCRIZIONE ..........................................................................................................................................................2
SCHEDULING DELLA CPU ........................................................................................................................................2
OBIETTIVI DELLO SCHEDULING ................................................................................................................................3
VARI ALGORITMI DI SCHEDULING..............................................................................................................................4
THREAD........................................................................................................................................................... 4
DEFINIZIONE DI THREAD ..........................................................................................................................................4
APPLICAZIONI TIPICHE DEI THREAD..........................................................................................................................6
GESTIONE DEI THREAD E SCHEDULING DEI PROCESSI IN WINDOWS ........................................... 7
SYMMETRIC MULTIPROCESSING ...............................................................................................................................7
DIFFERENZE FRA PRODOTTI SERVER E PRODOTTI UTENTE .........................................................................................7
PROCESSI DI SISTEMA FONDAMENTALI ......................................................................................................................8
FOCUS SULLO SCHEDULING DI WINDOWS .................................................................................................................8
LIVELLI DI PRIORITÀ.................................................................................................................................................8
AUMENTO DI PRIORITÀ .............................................................................................................................................9
ALBERO DEI PROCESSI SU WINDOWS .........................................................................................................................9
ALTRI STRUMENTI DI VISUALIZZAZIONE INFORMAZIONI SUI PROCESSI .......................................................................11
SERVIZI DI WINDOWS ................................................................................................................................. 12
GESTIONE DEI SERVIZI ...........................................................................................................................................13
SERVIZI PRINCIPALI WINDOWS ................................................................................................................................13
GESTIONE MEMORIA WINDOWS ............................................................................................................ 14
PROCESSI E SPAZI DEGLI INDIRIZZI .........................................................................................................................14
FILE DI PAGING .....................................................................................................................................................15
PRESTAZIONI, LIMITI DELL'ARCHITETTURA E MEMORIA RAM ...................................................................................15
MONITORAGGIO DELLA MEMORIA RAM E UTILIZZO DELLA MEMORIA VIRTUALE .......................................................16
PROCESSORI A 64 BIT E SPAZIO DI INDIRIZZAMENTO................................................................................................17
Internal System : Windows – Buonincontri Giovanni, Capasso Aldo
Internal System : Windows
Cenni introduttvi
Windows, come tanti altri sistemi operativi, si basa su concetti fondamentali, che
caratterizzano la gestione del lato hardware di un calcolatore, più nello specifico, ci sono delle
caratteristiche differenti che differenziano i vari kernel dei sistemi operativi, le unità base di
codice che operano al più basso livello di interazione con l’utente, il livello macchina e
rendono disponibili alla shell di sistema le varie funzioni di sistema (hardware, periferiche di
I/O, etc…).
Fondamentalmente un kernel si differenzia per la politica di schedulazione dei processi
implementata per ottimizzare l’esecuzione e lo svolgimento di compiti (processi) da parte della
CPU e una gestione oculata dei thread (processi figli) che permettono di avere una maggiore
parallelizazione nell’esecuzione, e la gestione della memoria.
Scheduler
In informatica lo scheduler (da to schedule letteralmente "mettere in lista", ovvero
"pianificare") è un programma sotto forma di un algoritmo che, dato un insieme di richieste di
accesso ad una risorsa (processi), stabilisce un ordinamento temporale per l'esecuzione di tali
richieste, privilegiando quelle che rispettano determinati parametri, in modo da ottimizzare
l'accesso a tale risorsa e consentire così il completamento dell’operazione in maniera ottimale.
L'attenzione posta su alcuni parametri piuttosto che su altri, differenzia la cosiddetta politica di
scheduling: solitamente lo scheduler può eseguire le richieste in base al loro ordine di arrivo
(politica FIFO), oppure dare precedenza a quelle che impegnano per meno tempo la risorsa;
possono esistere politiche che si basano su principi statistici o sulla predizione per individuare
un ordinamento delle richieste che si avvicini il più possibile quello ottimale.
Descrizione
Generalmente l'obiettivo dello scheduling è quello di massimizzare il throughput, ovvero la
produttività dell'intero sistema, minimizzando i tempi in cui la risorsa è inutilizzata; cercare
l'ordinamento di richieste che minimizza il rapporto tra tempo di servizio (ovvero il tempo che
una richiesta impiega per essere soddisfatta) e tempo di "turnaround" (il lasso di tempo che
intercorre tra l'istante in cui la richiesta è generata e quello in cui la richiesta è soddisfatta);
evitare fenomeni indesiderati come la starvation ovvero "l'attesa eterna" di alcune richieste,
verificabile in determinate condizioni; dare all'utilizzatore del sistema la percezione che le
richieste vengano soddisfatte contemporaneamente; Esistono in realtà molti requisiti che
possono essere presi in considerazione, dipendenti anche dal problema specifico che lo
scheduler deve gestire: esistono scheduler che si occupano di suddividere il tempo di uso del
processore da parte di un processo, scheduler che gestisono richieste di lettura/scrittura da una
periferica, anche gli algoritmi di sostituzione delle pagine della memoria sono da considerarsi
"scheduler".
Scheduling della CPU
Lo scheduling è un'operazione molto importante per il corretto ed efficiente funzionamento del
calcolatore. Infatti non solo consente di eseguire più programmi concorrentemente, ma
consente anche di migliorare l'utilizzo del processore. Ad esempio, quando è necessario
eseguire un'operazione di I/O, il processore non può proseguire l'elaborazione del processo
Internal System : Windows – Buonincontri Giovanni, Capasso Aldo
Internal System : Windows
attualmente in esecuzione fino al completamento della stessa. Dato che le operazioni di I/O
sono molto più lente del processore sarebbe un inutile spreco di risorse se il processore
rimanesse bloccato fino al completamento delle stesse. Per evitare questo le operazioni di I/O
vengono gestite unicamente dal Sistema operativo che, nel frattempo, assegna l'uso del
processore ad un altro processo. In questo modo si massimizza l'uso delle risorse del sistema. È
importante la distinzione tra scheduling con diritto di prelazione (scheduling preemptive) e
scheduling senza diritto di prelazione (scheduling non-preemptive o scheduling cooperative).
Nel primo caso lo scheduler può sottrarre il possesso della CPU al processo anche quando
questo potrebbe proseguire nella propria esecuzione.
Nel secondo caso, invece, lo scheduler deve attendere che il processo termini o che cambi il
suo stato da quello di esecuzione a quello di attesa o di pronto, a seguito, ad esempio, di una
richiesta di I/O oppure a causa di un segnale di interruzione (interrupt). Esistono vari algoritmi
di scheduling che tengono conto di varie esigenze e che possono essere più indicati in alcuni
contesti piuttosto che in altri. La scelta dell'algoritmo da usare dipende da cinque principali
criteri:





Utilizzo del processore: la CPU (ovvero il processore) deve essere attiva il più
possibile, ovvero devono essere ridotti al minimo i possibili tempi morti.
Throughput: il numero di processi completati in una determinata quantità di tempo.
Tempo di completamento: il tempo che intercorre tra la sottomissione di un processo ed
il completamento della sua esecuzione.
Tempo d'attesa: il tempo in cui un processo pronto per l'esecuzione rimane in attesa
della CPU (wait time).
Tempo di risposta: il tempo che trascorre tra la sottomissione del processo e
l'ottenimento della prima risposta. Per analizzare gli algoritmi che verranno
successivamente presentati verrà utilizzato il criterio del tempo d'attesa medio dei
processi presi in considerazione.
Obiettivi dello scheduling
Un algoritmo di scheduling si pone i seguenti obiettivi:

Fairness (equità): processi dello stesso tipo devono avere trattamenti simili

Balance (bilanciamento): tutte le parti del sistema devono essere sfruttate
Inoltre bisogna effettuare un distinguo tra i sistemi batch e i sistemi interattivi.
Nei primi il throughput deve essere massimizzato e il Tempo di Turnaround deve essere
minimizzato.
Nei secondi, i sistemi interattivi, il tempo di risposta deve essere il minimo possibile per dare l'idea
di continuità all'utente e la proporzionalità deve essere rispettata, ossia il tempo di risposta deve
essere proporzionale alla complessità dell'azione.
Internal System : Windows – Buonincontri Giovanni, Capasso Aldo
Internal System : Windows
Vari algoritmi di scheduling
Esistono vari tipi di algoritmi di scheduling, ognuno con alcuni pregi e alcuni difetti,
vediamone in dettaglio i più importanti:




FCFS - L'algoritmo FCFS (First Come First Served) è un tipo di algoritmo FIFO: esegue i
processi nello stesso ordine in cui essi vengono sottomessi al sistema. Il primo processo ad
essere eseguito è esattamente quello che per primo richiede l'uso della CPU. Quelli successivi
vengono serviti non appena questo ha terminato la propria esecuzione, e così avviene
successivamente per tutti gli altri posti in coda. Questo tipo di algoritmo è molto semplice da
implementare ma solitamente è anche poco efficiente, almeno considerando il tempo medio
d'attesa.
RR – L'algoritmo di scheduling RR (Round Robin) è un particolare algoritmo di tipo
preemptive che esegue i processi nell'ordine d'arrivo, come il FCFS, ma esegue la prelazione
del processo in esecuzione, ponendolo alla fine della coda dei processi in attesa, qualora
l'esecuzione duri più del quanto di tempo stabilito, e facendo proseguire l'esecuzione al
successivo processo in attesa.
SRTF - L'algoritmo SRTF (Shortest Remaining Time First) si differenzia per il fatto che,
quando viene sottomesso un nuovo processo la cui durata è minore del tempo necessario al
processo in esecuzione per portare a terminare la propria sessione, lo scheduler provvede ad
effettuare un context switch e assegna l'uso della CPU al nuovo processo.
Multilevel Feedback - Non potendo stimare con precisione il tempo di esecuzione di un
processo nel momento in cui entrerà nel sistema, vi è la possibilità di stimare il tempo trascorso.
Viene introdotto il concetto di Feedback secondo il quale si penalizzano i processi che hanno
speso più tempo nel sistema. Lo scheduling Multilevel Feedback (o Feedback con code
multiple) è uno scheduling basato su quanti di tempo ed utilizza un meccanismo di priorità
dinamica. Quando un processo entra nel sistema gli viene assegnata una priorità secondo criteri
prefissati e viene inserito in una coda con un quanto di tempo fissato. Se il processo che si trova
in stato di Running, finisce il suo quanto di tempo, viene spostato in una coda con un quanto di
tempo più grande ma con una priorità minore.
Ogni coda è gestita attraverso l'algoritmo di Round Robin, tutte tranne l'ultima che è servita
tramite FCFS.
Caratteristiche:
o Favorisce processi più corti;
o Con alcuni accorgimenti è possibile evitare condizioni di Starvation.
Thread
Un thread è una suddivisione di un processo in due o più filoni o sottoprocessi, che vengono
eseguiti concorrentemente da un sistema di elaborazione monoprocessore (multithreading) o
multiprocessore. Quindi un thread è una parte di programma che può essere eseguita in modo
indipendente, contemporaneamente ad altri thread, così da sfruttare al meglio le risorse hardware. Molte
grosse applicazioni, come Photoshop, sono multithreaded, cioè usano più thread per eseguire lavori
simultanei su più CPU.
Definizione di thread
La specifica implementazione dei thread e dei processi dipende dal sistema operativo, ma, in
generale, si può dire che un thread è contenuto all'interno di un processo, e che diversi thread
contenuti nello stesso processo condividono alcune risorse (lo spazio d'indirizzamento del
processo), mentre processi differenti non condividono le loro risorse.
Internal System : Windows – Buonincontri Giovanni, Capasso Aldo
Internal System : Windows
Un thread è composto principalmente da tre elementi:
 program counter
 valori nei registri
 stack
Le risorse condivise con gli altri threads di uno stesso task sono essenzialmente:
 la sezione di codice
 la sezione di dati
 le risorse del sistema operativo
Nelle architetture a processore singolo, quando la CPU esegue alternativamente istruzioni di
thread differenti, si parla di multithreading a divisione di tempo: la commutazione fra i thread
avviene di solito tanto frequentemente da dare all'utente l'impressione che tutti i task siano
eseguiti contemporaneamente.
Nelle architetture multi-processore i thread vengono invece realmente eseguiti
contemporaneamente cioè in parallelo, ciascuno su un distinto core.
Quando delle azioni sono effettuate a livello di thread tutta l'informazione di stato riguardante
l'esecuzione viene tenuta in strutture dati a livello di thread. Ci sono, comunque, molte azioni
che influiscono su tutti i thread di un processo e che il sistema operativo deve gestire a livello
di processo. A questo genere di azioni appartengono la sospensione e la terminazione di un
processo. In entrambi i casi, la rimozione dalla memoria dello spazio di indirizzamento si
ripercuote su tutti i thread che condividono quello spazio di indirizzamento e che entrano
quindi tutti insieme nello stato di sospensione o di terminazione.
Come i processi anche i thread hanno uno stato di esecuzione e possono sincronizzarsi tra loro.
Gli stati di un thread sono:
 Ready – Un thread
nello stato di ready
(pronto) è in attesa di
esecuzione
 Deferred ready –
Questo stato è usato per
thread che sono stati
selezionati per essere
eseguiti su specifici
processor ma che non
hanno ancora iniziato
l’esecuzione.
 Standby – Un thread in
standby è stato selezionato per essere eseguito prossimamente in un particolare
processore
Internal System : Windows – Buonincontri Giovanni, Capasso Aldo
Internal System : Windows





Running - Quando un thread è pronto per l’esecuzione viene messo nello stato di run e
appunto viene eseguito fin quando non arriva un altro thread di maggiore priorità
oppure si esaurisce il quanto di tempo
Waiting – Un thread entra nello stato di attesa per un qualsiasi motivo, fra i quali può
esserci una attesa di terminare una operazione di I/O, entrata volontaria in attesa,
richiesta di risorsa hardware occupata, etc...
Transition – Un thread entra in questo stato quando è pronto per l’esecuzione ma il
kernel ha finito le pagine di memoria
Terminated – Ultimo stato di un thread, quando viene terminato, appunto assume
questo stato
Initialized – Questo stato è definite internamente e si riferisce a quando il thread viene
creato
Ci sono quattro operazioni di base associate ai cambiamenti di stato di un thread.
 Creazione: quando un processo viene creato, si crea anche un thread. Successivamente
un thread può creare un altro thread a cui deve fornire il puntatore delle istruzioni e gli
argomenti: vengono creati un contesto per i registri e gli stack, e il nuovo thread è
messo nella coda dei ready.
 Blocco: quando un thread deve aspettare un particolare evento entra in stato blocked
(salvando i registri utente, il program counter e lo stack pointer)
 Sblocco: quando si verifica l'evento per cui il processo era stato posto in stato blocked,
il thread passa allo stato ready.
 Terminazione: quando un thread completa il suo compito, il suo contesto per i registri e
i suoi stack vengono deallocati.
Applicazioni tipiche dei thread
Applicazioni tipiche dei thread sono la parallelizzazione di un programma per sfruttare i moderni
processori multi core: infatti, un singolo thread può essere eseguito su un solo core per volta.
Nelle interfacce utente, i thread sono usati estensivamente per evitare di congelare l'interfaccia quando
il programma sta eseguendo un altro compito in background. Per esempio, un browser Web può
scorrere una pagina web anche se il suo caricamento non è completato; allo stesso modo, i controlli di
un lettore multimediale sono accessibili anche mentre il lettore sta riproducendo un filmato.
Il vantaggio principale dei Thread è nelle prestazioni: operazioni come creazione, terminazione e
cambio tra due thread di un processo richiedono meno tempo rispetto alla creazione, terminazione e
cambio di processi.
I thread migliorano anche l'efficienza della comunicazione fra i programmi in esecuzione. Nella
maggior parte dei sistemi operativi, la comunicazione fra processi indipendenti richiede l'intervento del
kernel per fornire un meccanismo di protezione e di comunicazione. Comunque, poiché i thread
all'interno di uno stesso processo condividono memoria e file, possono comunicare fra loro senza
chiamare il kernel.
Internal System : Windows – Buonincontri Giovanni, Capasso Aldo
Internal System : Windows
Gestione dei thread e scheduling dei processi in windows
Capitolo a parte merita la gestione dei processi su windows, su cui ci concentreremo
particolarmente.
Partiamo dal fatto che windows utilizza l’algoritmo di scheduling Multilevel Feedback, di cui
abbiamo parlato in precedenza, e ricordiamo che vi è introdotto il concetto di Feedback secondo il quale
si penalizzano i processi che hanno speso più tempo nel sistema. Lo scheduling Multilevel Feedback (o
Feedback con code multiple) è uno scheduling basato su quanti di tempo ed utilizza un meccanismo di
priorità dinamica. Quando un processo entra nel sistema gli viene assegnata una priorità secondo criteri
prefissati e viene inserito in una coda con un quanto di tempo fissato. Se il processo che si trova in stato
di Running, finisce il suo quanto di tempo, viene spostato in una coda con un quanto di tempo più
grande ma con una priorità minore. Ogni coda è gestita attraverso l'algoritmo di Round Robin, tutte
tranne l'ultima che è servita tramite FCFS.
Peculiarietà che differenzia l’implementazione nel kernel windows del multilevel feedback, è una
gestione molto più approfondita e sicura dei processi con priorità, in pratica c’è una divisione fra User
Mode e Kernel Mode. Per proteggere la scrittura da parte dei processi di file critici di sistema e la
modifica, esiste questa differenziazione fra processi in esecuzione kernel e user. Le applicazioni utente
lavorano in modalità User mode, mentre il codice di Sistema (come servizi kernel e driver) sono
eseguiti in kernel mode, questo gli consente di avere l’accesso completo alla memoria di sistema e alla
CPU.
Symmetric Multiprocessing
Il multitasking è la tecnica per condividere un singolo processore usando thread multipli per ogni
processo in esecuzione. Quando il computer possiede più di una unità di elaborazione (sistemi multi
processore o sistemi multi core), i thread vengono eseguiti simultaneamente, avendo come risultato una
parallelizazione che ha effetti molto positivi sulle prestazioni. Windows è un SO a simmetrizzazione
multiprocessore (SMP), non c’è un vero e proprio processore principale, il Sistema operative è diviso in
thread e viene diviso per essere eseguito su uno qualsiasi dei processori. Questo modello è in contrasto
con il modello asimmetrico (ASMP), che tipicamente sceglie un processore come target su cui eseguire
esclusivamente il kernel di sistema, e i rimanenti processori per eseguire il normale codice utente (user
code).
Differenze fra prodotti server e prodotti utente
Come sappiamo, le versioni di windows sono chiamate con una nomenclatura diversa a seconda della
specificità per cui sono state sviluppate, in questo caso le version server e home (utente).
Esistono delle sostanziali differenze che si possono ridurre ad una serie di punti fondamentali:






Il numero di processori supportati (in termini di chip fisici, non core o thread)
L’ammontare di memoria RAM supportata
Il numero di connessioni di rete supportate (la versione utente per esempio supporta un
massimo di 10 connessioni concorrenti)
Supporto per il media center
Supporto per caratteristiche prettamente di stampo utente, quali temi, animazioni etc
Supporto a feautures come BitLocker e varie altre funzioni di criptazione e sicurezza, firewall
etc
Internal System : Windows – Buonincontri Giovanni, Capasso Aldo
Internal System : Windows
Processi di sistema fondamentali
Fra i vari processi in esecuzione nel Sistema operative di casa Microsoft, ce ne sono alcuni
fondamentali e sempre presenti:










Idle process (contiene un thread per CPU per salvare il tempo di CPU in idle)
System process (contiene le majority dei thread di sistema kernel mode)
Session manager (Smss.exe)
Local session manager (Lsm.exe)
Windows subsystem Csrss.exe)
Session 0 inizialization (Wininit.exe)
Logon process (Winlogon.exe)
Service control manager (Services.exe) e tutti I processi figli che crea come servizi di rete e
gestione host
Local security authentication server (Lsass.exe)
Svchost.exe
Focus sullo scheduling di Windows
Windows implementa uno scheduling con priorità di tipo preemptive, viene così eseguito il processo
con più priorità fra quelli in coda. Ogni processo può essere limitato oppure no ad essere eseguito su un
determinato processore, questa caratteristica viene detta processor affinity, e l’affinità può essere decisa
dallo sviluppatore in fase di stesura del codice, facendo si che 2 o più thread dello stesso programma
abbiano processor affinity diversi.
Quando un thread è stato selezionato per essere avviato, esso viene eseguito per un determinato tempo
che viene chiamato quanto di tempo, questo quanto è un intervallo di tempo in cui il thread è in
esecuzione, scaduto il quale, un altro thread con la stessa priorità è mandato in esecuzione.
Il quanto di tempo può variare in base a varie ragioni:



La configurazione del sistema (quanto lungo o corto, quanto variabile o fisso e separazione di
priorità)
Stato di background o foreground del processo
Uso di oggetti che alterano il quanto
Quando si verifica la fine del time slice (quanto di tempo) e magari il processo era ancora incompleto, si
verifica il context switch, la procedura che permette di salvare lo stato attuale del processo (registri, PC,
PID, IR, etc…), in modo da poterne riprendere l’esecuzione non appena ritoccherà al processo o thread.
Livelli di priorità
L’algoritmo di scheduling di windows come abbiamo detto in precedenza, utilizza un sistema di tipo
preemptive basato sulla priorità, precisamente su 32 livelli di priorità che andreamo ad analizzare nel
dettaglio seguentemente:
 Sedici livelli real time (da 16 a 31)
 Sedici livelli variabili (da 0 a 15), il livello 0 è
riservato per il thread zero page
Internal System : Windows – Buonincontri Giovanni, Capasso Aldo
Internal System : Windows
Nel dettaglio nella figura sotto le priorità e i relativi livelli
Aumento di priorità
Lo schedulatore di windows talvolta aggiusta la priorità di un thread o processo usando un meccanismo
di boost-priority interno predefinito. Ecco alcuni scenari possibili che causano questo “boost”:



Boost al seguito del completamento di una operazione di I/O
Boost a seguito di una attesa troppo lunga da parte del thread o processo, per evitare la
starvation
Boost al seguito di una troppa attesa nello stato di “pronto” di un processo o thread, per evitare
la starvation (tecnica dell’inversione di priorità)
Le versioni di windows per gli utenti poi, presentano altri meccanismi di boost della priorità, a seguito
di riproduzioni multimediali per esempio.
Albero dei processi su windows
Procederemo ora ad illustrare come poter visualizzare le informazioni su un qualsiasi thread, come
padre o il PID del padre (creatore) (utilizzando il performance monitor fornito su windows negli
strument di debug).
Oppure dati più particolari come una visuale ad albero dei processi in esecuzione su windows
(utilizzando uno speciale strumento chiamato “Task List”).
Internal System : Windows – Buonincontri Giovanni, Capasso Aldo
Internal System : Windows
Questo log dello strumento Tlist ci permette appunto di poter analizzare a fondo la struttura
gerarchizzata dei processi e i thread, con relativi PID e diramazioni.
Per accedere a questo strumento bisogna aprire un terminale con il comando esegui “cmd”, e
successivamente digitare “tasklist /t”.
Internal System : Windows – Buonincontri Giovanni, Capasso Aldo
Internal System : Windows
In quest’ altro caso invece abbiamo analizzato tutte le altre informazioni relative ai processi, tramite il
Performance Monitor, reperibile nel percorso Pannello di controllo / Strumenti di amministrazione.
Altri strumenti di visualizzazione informazioni sui processi
Oltre agli strumenti illustrati poche righe fa, esistono anche degli altri strumenti, alcuni con più
funzionalità essendo adibiti a svolgere essenzialmente un compito solo e specifico, ed alcuni con minori
potenzialità essendo software inseriti all’interno del SO (task manager classico ).
Prenderemo in esame appunto, due strumenti, il task manager windows e il Process explorer di
sysinternals.
Il primo ha ovviamente il vantaggio di essere integrato in qualsiasi SO della microsoft, strumento base
per la gestione e visualizzazione dei processi, permette di visualizzare alcuni parametri come Session
ID, utilizzo della CPU, stato della CPU, qualsiasi informazione sulla memoria come stato, spazio
allocato, spazio libero, spazio paginato e non, priorità e thread.
Il secondo programma invece, Process Explorer, ha la peculiaretà di avere molte più funzioni avanzate
che rende a disposizione dell’utente esperto. Ecco alcune delle caratteristiche aggiuntive di cui è
fornito:







Process secuirty token, una lista di privilegi e gruppi in cui è registrato ogni singolo processo
che security token ha.
Lista dei servizi interni ai processi
Visualizzazione dei cambiamenti di thread e processi
Processi che si basano su tecnologia .NET e specifici dettagli su di essi
Ora di avvio di un processo o thread
Lista di file mappati in memoria
Abilità di sospendere un processo o thread
Internal System : Windows – Buonincontri Giovanni, Capasso Aldo
Internal System : Windows






Abilità di uccidere un determinato thread
Visualizzazione ad albero dei processi
Lista delle DLL in un processo
Attività di un thread senza processo
User mode e kernel mode thread stack
Statistiche molto accurate su uso CPU e memoria
Una cattura di schermata che illustra la GUI del Process Explorer
Servizi di windows
Un servizio di Windows è un programma eseguibile che svolge compiti specifici e che è progettato per
non dover richiedere l'intervento dell'utente. Un servizio è un programma eseguito in background per
fornire funzionalità di basso livello, strettamente integrate con il sistema operativo, a componenti di
Windows o ad applicazioni. Normalmente i servizi di Windows vengono avviati quando il sistema
operativo Windows è avviato, e girano in background per tutto il tempo durante il quale gira Windows.
Concettualmente sono simili ai daemon di Unix. La lista dei servizi attivi appare nell'elenco dei processi
di Windows Task Manager, normalmente associati agli username SYSTEM, SERVIZIO LOCALE o
SERVIZIO DI RETE, sebbene non tutti i processi con username SYSTEM siano servizi. Molti servizi
operano a livello molto basso, per esempio interagendo direttamente
con l’hardware e vengono quindi eseguiti sotto l’account System, che ha il massimo livello di privilegi.
Se aprite la citata finestra Servizi (eseguibile anche attraverso Start, Esegui, services.msc) e ne
correte l’elenco, scoprirete probabilmente che oltre ai servizi di sistema la vostra configurazione di
Windows include anche alcuni servizi applicativi.
Alcuni esempi sono Diskeeper, Norton Antivirus Autoprotect Service, Norton Personal Firewall,
Symantec Password Validation Service, e altri che vengono installati da applicazioni commerciali per
funzionare a stretto contatto col sistema operativo e offrire la massima protezione e le migliori
prestazioni.
Internal System : Windows – Buonincontri Giovanni, Capasso Aldo
Internal System : Windows
Gestione dei servizi
Dopo che un servizio è stato installato può essere gestito mediante l'opzione Strumenti di
amministrazione del Pannello di controllo di Windows, oppure digitando "Services.msc" nella casella
dei comandi di Esegui del menù Start. La console di gestione "Servizi" fornisce:
 Una breve descrizione delle funzioni eseguite
 Il percorso del file eseguibile
 Lo stato corrente del servizio
 Il tipo di avvio
 Le dipendenze
 L'account sotto cui il servizio è in esecuzione
Mediante il pannello l'utente può:
 Avviare, interrompere, sospendere o riavviare i servizi.
 Specificare i parametri di un servizio.
 Cambiare il tipo di avvio, scegliendo fra Automatico, Manuale e Disabilitato:
 Automatico avvia il servizio all'avviamento de sistema,
 Manuale avvia il servizio quando richiesto dall'utente o quando richiesto da
un'applicazione (almeno teoricamente, ma in realtà solo in alcuni casi, a seconda del
servizio),
 Disabilitato disabilita completamente il servizio ed impedisce l'esecuzione delle
relative dipendenze,
 Automatico (Ritardato) nuovo tipo di avvio introdotto dal sistema operativo Windows
Vista, che avvia il servizio con un breve intervallo dopo che il sistema ha completato le
operazioni critiche di avviamento, in modo che l'avviamento avvenga più velocemente.
 Cambiare l'account sotto cui il servizio si registra.
 Configurare le opzioni di ripristino in caso di malfunzionamento.
 Esportare la lista dei servizi su un file di testo o su un file CSV.
Anche in Windows Vista l'utente può manipolare i servizi digitando "services.msc" nella casella dei
comandi, accessibile tenendo premuto il tasto windows e premendo il tasto "r". L'uso di MSConfig per
gestire i servizi introduce la necessità di rispondere ad un prompt ad ogni riavvio, quindi questo
strumento dovrebbe essere usato solo per il tempo strettamente necessario ad apportare al sistema le
modifiche desiderate. Il Task Manager può essere sempre usato per fermare un servizio, o per chiuderlo
forzatamente (kill) nel caso non risponda.
Servizi principali windows
Ecco un elenco dei servizi principali che si possono incontrare nei sistemi operativi windows, in un
sistema pulito:











Netlogon – Accesso alla rete
Wuauserv – Aggiornamenti automatici
AudioSrv – Audio Windows
DHCP – Client DHCP
Upnphost – Host di periferiche universali plug & play
SENS – Notifica eventi di sistema
W32Time – Ora di Windows
Spooler - Spooler di stampa
TlntSvr – Telnet
MSIServer – Windows installer
WZCSVC – Zero Configuration reti senza fili
Internal System : Windows – Buonincontri Giovanni, Capasso Aldo
Internal System : Windows
Gestione memoria windows
Nei moderni sistemi operativi quali Windows, le applicazioni e molti processi di sistema fanno sempre
riferimento alla memoria utilizzando indirizzi di memoria virtuale. Gli indirizzi di memoria virtuale
vengono automaticamente tradotti in indirizzi (RAM) reali dall'hardware. Soltanto gli elementi centrali
del kernel del sistema operativo riescono a ignorare tale traduzione dell'indirizzo e usano direttamente
gli indirizzi di memoria reale.
La memoria virtuale viene comunque utilizzata, anche quando la memoria richiesta da tutti i processi in
esecuzione non supera il volume di memoria RAM installata sul sistema.
Processi e spazi degli indirizzi
A tutti i processi (ad esempio, le applicazioni eseguibili) in esecuzione su una versione di Windows a
32 bit vengono assegnati indirizzi di memoria virtuale (uno spazio di indirizzamento virtuale), che varia
da 0 a 4.294.967.295 (2*32-1 = 4 GB), indipendentemente dalla quantità di memoria RAM installata sul
computer.
Nella configurazione predefinita di Windows, 2 gigabyte (GB) di tale spazio di indirizzamento virtuale
sono dedicati all'utilizzo privato di ogni processo. I restanti 2 GB vengono condivisi tra i processi e il
sistema operativo. In genere, le applicazioni (ad esempio, Blocco note, Word, Excel e Acrobat Reader)
utilizzano soltanto una parte dei 2 GB dello spazio di indirizzo privato. Le pagine di memoria RAM
vengono assegnate dal sistema operativo soltanto alle pagine di memoria virtuale in uso.
L'opzione Estensione indirizzo fisico (PAE, Physical Address Extension) rappresenta la funzionalità
dell'architettura Intel a 32 bit che estende l'indirizzo della memoria fisica RAM a 36 bit. L'opzione PAE
non modifica la dimensione dello spazio di indirizzamento virtuale (resta pari a 4 GB), ma soltanto il
volume della memoria RAM in uso che può essere indirizzata dal processore.
La traduzione tra l'indirizzo di memoria virtuale a 32 bit utilizzato dal codice in esecuzione all'interno di
un processo e l'indirizzo della memoria RAM a 36 bit viene gestita in modo automatico e chiaro
dall'hardware del computer attenendosi alle tabelle di traduzione gestite dal sistema operativo. Tutte le
pagine di memoria virtuale (indirizzo a 32 bit) possono essere associate a qualsiasi pagina di RAM
fisica (indirizzo a 36 bit).
Internal System : Windows – Buonincontri Giovanni, Capasso Aldo
Internal System : Windows
File di paging
La memoria RAM è una risorsa limitata, mentre per scopi più pratici, la memoria virtuale è illimitata.
È possibile che vengano eseguiti molti processi e che ciascuno di essi disponga di 2 GB di spazio di
indirizzamento virtuale
privato. Quando la quantità
di memoria utilizzata da tutti
i processi supera la memoria
RAM disponibile, il sistema
operativo sposta le pagine
(di 4 KB) di più spazi di
indirizzamento virtuale nel
disco rigido del computer. In
questo modo, viene liberata
la memoria RAM per altri
utilizzi. Nei sistemi
Windows, queste pagine
"spostate" vengono
memorizzate in più file (file Pagefile.sys) nella radice di una partizione. In ogni partizione del disco può
essere presente soltanto uno di questi file. Il percorso e la dimensione del file di paging vengono
configurati in Proprietà del sistema. Fare clic su Avanzate, su Prestazioni, quindi selezionare il pulsante
Impostazioni.
Gli utenti chiedono di frequente come determinare la dimensione da assegnare al file di paging. Non
esiste un solo modo per rispondere a questa domanda, poiché dipende dalla quantità di memoria RAM
installata e dalla quantità di memoria virtuale richiesta dal carico di lavoro. Se non sono disponibili
ulteriori informazioni, si consiglia di impostare una quantità pari a 1,5 volte la quantità di memoria
RAM installata. Nei sistemi server, è probabile che l'utente voglia disporre di memoria RAM sufficiente
al fine di evitare mancanze e non utilizzare il file di paging. In tali sistemi, non è necessario mantenere
un file di paging di grandi dimensioni. Al contrario, se lo spazio su disco è abbondante, mantenere un
file di paging di grandi dimensioni (ad esempio, pari a 1,5 volte la dimensione della memoria RAM
installata) non causa problemi ed elimina la preoccupazione relativa alla dimensione.
Prestazioni, limiti dell'architettura e memoria RAM
Su tutti i sistemi di computer, l'aumento del carico di lavoro (il numero di utenti, il volume del lavoro)
comporta una riduzione delle prestazioni, ma non in maniera lineare. Un aumento eccessivo del carico o
della domanda comporta una significativa riduzione delle prestazioni. Ciò significa, che alcune risorse
hanno una esigua disponibilità e sono diventate un collo di bottiglia.
In questo caso, la risorsa che dispone di poca memoria non può essere aumentata. È stato raggiunto un
limite dell'architettura. Di seguito sono riportati alcuni dei limiti dell'architettura più frequenti in
Windows:





2 GB di spazio di indirizzamento virtuale condiviso per il sistema (kernel)
2 GB di spazio di indirizzamento virtuale per ogni processo (modalità utente)
660 MB di memoria PTE di sistema (Windows Server 2003 e versioni precedenti)
470 MB di archiviazione del pool di paging (Windows Server 2003 e versioni precedenti)
256 MB di archiviazione del pool non di paging (Windows Server 2003 e versioni precedenti)
Internal System : Windows – Buonincontri Giovanni, Capasso Aldo
Internal System : Windows
Ciò è valido in modo specifico per Windows Server 2003, ma può essere valido anche per Windows XP
e Windows 2000. Tuttavia, Windows Vista, Windows Server 2008 e Windows 7 non presentano questi
limiti dell'architettura. I limiti per gli utenti e per la memoria kernel (punto 1 e 2, qui) sono i medesimi,
ma le risorse kernel quali PTE e vari pool di memoria sono dinamici.
Questa nuova funzionalità abilita sia la memoria di paging che quella non di paging. Inoltre, si abilita
l'aumento dei PTE e del pool di sessione oltre i limiti sopra citati, fino a esaurire tutto il kernel.
Monitoraggio della memoria RAM e utilizzo della memoria virtuale
Performance Monitor è il principale strumento per monitorare le prestazioni di sistema e per identificare
la posizione del collo di bottiglia. Per avviare Performance Monitor, fare clic su Start, quindi su
Pannello di controllo, selezionare Strumenti di amministrazione, quindi fare doppio clic su Performance
Monitor. Di seguito è riportato un riepilogo di alcuni importanti contatori e cosa indicano:






Memoria, byte vincolati: questo contatore corrisponde a una misurazione della domanda di
memoria virtuale. Indica il numero di byte allocati dal processo e a quali il sistema operativo ha
vincolato la pagina di memoria RAM o uno slot di pagina nel file di paging (o entrambi). Con
l'aumento dei byte vincolati maggiore rispetto alla memoria RAM disponibile, aumenta il
paging e anche la dimensione del file di paging in uso. A un certo punto, l'attività di paging
inizia a influire in modo significativo sulle prestazioni.
Processo, Working Set, _Totale: questo contatore rappresenta una misurazione della memoria
virtuale in uso "attivo". Questo contatore indica la quantità di memoria RAM necessaria
affinché la memoria virtuale in uso per tutti i processi sia nella memoria RAM. Questo valore è
sempre un multiplo di 4.096, ovvero la dimensione di pagina utilizzata in Windows. Quando la
richiesta di memoria virtuale supera la disponibilità di memoria RAM, il sistema operativo
regola la quantità di memoria virtuale del processo nel Working Set per ottimizzare l'utilizzo
della memoria RAM disponibile e ridurre il paging.
File di paging, % file di paging in uso: questo contatore rappresenta una misurazione della
quantità del file di paging effettivamente utilizzata. Utilizzare questo contatore per determinare
se il file di paging dispone di una dimensione appropriata. Quando il contatore raggiunge il
valore di 100 vuol dire che il file di paging è pieno e le operazione verranno interrotte. A
seconda della volatilità del carico di lavoro, è probabile che l'utente desideri che il file di paging
abbia una dimensione sufficiente affinché non ne utilizzi più del 50-70%. Se viene utilizzata la
maggior parte del file di paging, disporre di più file di paging su differenti dischi fisici potrebbe
comportare un aumento delle prestazioni.
Memoria, Pagine/sec: Questo contatore è uno di quelli meno compresi. Se questo contatore
indica un valore elevato non sempre significa che il collo di bottiglia relativo alle prestazioni
deriva da una carenza di memoria RAM. Il sistema operativo utilizza il sistema di paging per
scopi diversi dalla sostituzione delle pagine, a causa di un impiego eccessivo della memoria.
Memoria, Output pagine/sec: Questo contatore indica il numero di pagine di memoria virtuale
scritte ogni secondo nel file di paging al fine di liberare le pagine di memoria RAM per altri
scopi. Questo è il migliore contatore per effettuare un monitoraggio quando si sospetta che il
paging rappresenti il proprio collo di bottiglia relativo alle prestazioni. Anche se il numero dei
byte vincolati è superiore rispetto alla memoria RAM installata, nel caso in cui il contatore
Output pagine/sec indica quasi sempre un valore pari o inferiore a zero significa che non è
presente un problema importante relativo alle prestazioni e derivante dalla quantità di RAM
insufficiente.
Indicatori di limite di architettura:
o Memoria, Byte nella cache,
o Memoria, byte del pool non di paging,
Internal System : Windows – Buonincontri Giovanni, Capasso Aldo
Internal System : Windows
o
o
o
Memoria, byte del pool di paging,
Memoria, byte totali codice di sistema,
Memoria, byte totali driver di sistema:
Tutti questi contatori rappresentano una misurazione di quanta parte dei 2 GB della parte
condivisa dei 4 GB dello spazio di indirizzamento virtuali viene effettivamente utilizzata.
Utilizzare questi contatori per determinare se il sistema sta per raggiungere uno dei limiti
dell'architettura descritti in precedenza.

Memoria, MB disponibili: questo contatore consente di misurare la quantità di memoria RAM
disponibile per soddisfare la domanda di memoria virtuale (sia nuove allocazioni che il
ripristino di una pagina dal file di paging). Quando la memoria RAM è scarsamente disponibile
(ad esempio, il numero dei byte vincolati è superiore rispetto alla memoria RAM installata), il
sistema operativo tenta di mantenere una determinata porzione della RAM disponibile per un
utilizzo immediato e copia nel file di paging le pagine di memoria virtuale che non sono in uso
attivo. Di conseguenza, questo contatore non raggiunge il valore zero e non rappresenta un
buon modo per indicare la scarsa disponibilità di memoria RAM del sistema.
Processori a 64 Bit e spazio di indirizzamento
Come abbiamo detto in precedenza, i processori con una architettura a 64 bit hanno un notevole
vantaggio sotto il profilo dello spazio di indirizzamento, che si traduce e si ripercuote sulle applicazioni
in esecuzione su sistema.
Quantità massima di memoria RAM disponibile per i vari sistemi a 64 bit Windows:
























Windows XP:
Windows Vista Home Basic:
Windows Vista Home Premium:
Windows Vista Business, Enterprise and Ultimate:
Windows 7 Starter:
Windows 7 Home Basic:
Windows 7 Home Premium:
Windows 7 Professional, Enterprise and Ultimate:
Windows Server 2003 Standard Edition (RTM, SP1 or SP2):
Windows Server 2003 Enterprise Edition:
Windows Server 2003 Datacenter Edition:
Windows Server 2003 R2 Standard Edition:
Windows Server 2003 R2 Enterprise Edition with SP2:
Windows Server 2003 R2 Datacenter Edition with SP2:
Windows Server 2008 Web Edition:
Windows Server 2008 Standard Edition:
Windows Server 2008 Enterprise Edition:
Windows Server 2008 Datacenter Edition:
Windows Server 2008 R2 Web Edition:
Windows Server 2008 R2 Foundation Edition:
Windows Server 2008 R2 Standard Edition:
Windows Server 2008 R2 Enterprise Edition:
Windows Server 2008 R2 High Performance Computing Edition:
Windows Server 2008 R2 Datacenter Edition:
128 GB
8 GB
16 GB
128+ GB
2 GB
8 GB
16 GB
192 GB
32 GB
64 GB
512 GB
32 GB
2 TB
2 TB
32 GB
32 GB
2 TB
2 TB
32 GB
8 GB
32 GB
2 TB
128 GB
2 TB
Internal System : Windows – Buonincontri Giovanni, Capasso Aldo