Correzioni e aggiunte allo scheduling
authorSimone Piccardi <piccardi@gnulinux.it>
Sun, 10 Mar 2002 13:54:22 +0000 (13:54 +0000)
committerSimone Piccardi <piccardi@gnulinux.it>
Sun, 10 Mar 2002 13:54:22 +0000 (13:54 +0000)
prochand.tex

index 582831aa8eb6dc908ab4b8a56c526fcbb37594aa..79ba6f129bfdbaca381d6ce7d9cf85d295534728 100644 (file)
@@ -119,7 +119,7 @@ Il kernel mantiene una tabella dei processi attivi, la cosiddetta
 tabella dei processi costituita da una struttura \type{task\_struct}, che
 contiene tutte le informazioni rilevanti per quel processo. Tutte le strutture
 usate a questo scopo sono dichiarate nell'header file \file{linux/sched.h}, ed
-uno schema semplificato che riporta la struttura delle principali informazioni
+uno schema semplificato, che riporta la struttura delle principali informazioni
 contenute nella \type{task\_struct} (che in seguito incontreremo a più
 riprese), è mostrato in \nfig.
 
@@ -137,10 +137,10 @@ decide quale processo mettere in esecuzione; esso viene eseguito ad ogni
 system call ed ad ogni interrupt, (ma può essere anche attivato
 esplicitamente). Il timer di sistema provvede comunque a che esso sia invocato
 periodicamente, generando un interrupt periodico secondo la frequenza
-specificata dalla costante \macro{HZ}, definita in \file{asm/param.h} Il
-valore usuale è 100\footnote{è così per tutte le archietetture eccetto
-  l'alpha, per la quale è 1000} (è espresso in Hertz), si ha cioè un interrupt
-dal timer ogni centesimo di secondo.
+specificata dalla costante \macro{HZ}, definita in \file{asm/param.h}. Il
+valore usuale è 100\footnote{è così per tutte le architetture eccetto l'alpha,
+  per la quale è 1000} ed è espresso in Hertz. Si ha cioè un interrupt dal
+timer ogni centesimo di secondo.
 
 Ogni volta che viene eseguito, lo \textit{scheduler} effettua il calcolo delle
 priorità dei vari processi attivi (torneremo su questo in
@@ -1869,14 +1869,14 @@ Lo standard POSIX.1b per
   assoluta}, (chiamata anche \textsl{priorità statica}, in contrapposizione
 alla normale priorità dinamica), per tenere conto dei sistemi
 real-time,\footnote{per sistema real-time si intende un sistema in grado di
-  eseguire operazioni in tempo reale; in genere si tende a distinguere fra
-  l'\textit{hard real-time} in cui è necessario che i tempi di esecuzione di
-  un programma siano determinabili con certezza assoluta, come nel caso di
-  meccanismi di controllo di macchine, dove uno sforamento dei tempi avrebbe
-  conseguenze disastrose, e \textit{soft-real-time} in cui un occasionale
-  sforamento è ritenuto accettabile.} in cui è vitale che i processi che
-devono essere eseguiti in un determinato momento non debbano aspettare la
-conclusione di altri che non hanno questa necessità.
+  eseguire operazioni in un tempo ben determinato; in genere si tende a
+  distinguere fra l'\textit{hard real-time} in cui è necessario che i tempi di
+  esecuzione di un programma siano determinabili con certezza assoluta (come
+  nel caso di meccanismi di controllo di macchine, dove uno sforamento dei
+  tempi avrebbe conseguenze disastrose), e \textit{soft-real-time} in cui un
+  occasionale sforamento è ritenuto accettabile.} in cui è vitale che i
+processi che devono essere eseguiti in un determinato momento non debbano
+aspettare la conclusione di altri che non hanno questa necessità.
 
 Il concetto di priorità assoluta dice che quando due processi si contendono
 l'esecuzione, vince sempre quello con la priorità assoluta più alta, anche
@@ -1890,8 +1890,8 @@ eseguiti (cio
 la priorità assoluta viene invece ignorata per quelli che sono bloccati su una
 richiesta di I/O o in stato di \textit{sleep}.  La priorità assoluta viene in
 genere indicata con un numero intero, ed un valore più alto comporta una
-priorità maggiore, su questa politica di scheduling torneremo in
-\secref{sec:proc_real_time}.  
+priorità maggiore. Su questa politica di scheduling torneremo in
+\secref{sec:proc_real_time}.
 
 In generale quello che succede in tutti gli Unix moderni è che ai processi
 normali viene sempre data una priorità assoluta pari a zero, e la decisione di
@@ -1901,19 +1901,21 @@ assoluta nel qual caso un processo avr
 priorità inferiore che saranno eseguiti solo quando quest'ultimo non avrà
 bisogno della CPU.
 
-
 \subsection{Il meccanismo di \textit{scheduling} standard}
 \label{sec:proc_sched_stand}
 
-A meno che non si abbiano specifiche esigenze, l'unico meccanismo di
-scheduling con il quale si avrà a che fare è quello tradizionale che prevede
-solo priorità dinamiche, ed è di questo che di norma ci si dovrà preoccupare
+A meno che non si abbiano esigenze specifiche, l'unico meccanismo di
+scheduling con il quale si avrà a che fare è quello tradizionale, che prevede
+solo priorità dinamiche. È di questo che, di norma, ci si dovrà preoccupare
 nella programmazione.
 
 Come accennato in Linux tutti i processi ordinari hanno la stessa priorità
 assoluta. Quello che determina quale, fra tutti i processi in attesa di
 esecuzione, sarà eseguito per primo, è la priorità dinamica, che è chiamata
-così proprio perché viene varia nel corso dell'esecuzione di un processo.
+così proprio perché varia nel corso dell'esecuzione di un processo. Oltre a
+questo la priorità dinamica determina quanto a lungo un processo continuerà ad
+essere eseguito, e quando un processo potrà subentrare ad un altro
+nell'esecuzione.