X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=intro.tex;fp=intro.tex;h=6c7324223981a99f0503bd1060d18d27a9478514;hp=dbf3732fcb895673ddd81ec85f347f612be7073b;hb=45e080607c5b618a11038a6afc9f79af9931b2da;hpb=c9c149db16c39efdfa53bde804b7a189dd923eef diff --git a/intro.tex b/intro.tex index dbf3732..6c73242 100644 --- a/intro.tex +++ b/intro.tex @@ -116,11 +116,13 @@ fig.~\ref{fig:intro_sys_struct}. \label{fig:intro_sys_struct} \end{figure} -Una parte del kernel, lo \itindex{scheduler} \textit{scheduler}, si occupa di -stabilire, sulla base di un opportuno calcolo delle priorità e con una -suddivisione appropriata del tempo di processore, quali fra i vari -``\textsl{processi}'' presenti nel sistema deve essere eseguito, realizzando -il cosiddetto \itindex{preemptive~multitasking} \textit{preemptive +\itindbeg{scheduler} + +Una parte del kernel, lo \textit{scheduler}, si occupa di stabilire, sulla +base di un opportuno calcolo delle priorità e con una suddivisione appropriata +del tempo di processore, quali fra i vari ``\textsl{processi}'' presenti nel +sistema deve essere eseguito, realizzando il cosiddetto +\itindex{preemptive~multitasking} \textit{preemptive multitasking}.\footnote{si chiama così quella gestione del \textit{multitasking} in cui è il kernel a decidere a chi assegnare l'uso della CPU, potendo interrompere l'esecuzione di un processo in qualunque @@ -130,6 +132,8 @@ attraverso delle ``\textsl{chiamate al sistema}'' (vedi sez.~\ref{sec:intro_syscall}) che restituiranno il controllo al kernel per eseguire le operazioni necessarie. +\itindend{scheduler} + La memoria viene sempre gestita dal kernel attraverso il meccanismo della \index{memoria~virtuale} \textsl{memoria virtuale}, che consente di assegnare a ciascun processo uno spazio di indirizzi ``\textsl{virtuale}'' (vedi @@ -342,13 +346,12 @@ L'utente e il gruppo sono identificati dal kernel un identificativo numerico, la cui corrispondenza ad un nome espresso in caratteri è inserita nei due file \conffile{/etc/passwd} e \conffile{/etc/group}.\footnote{in realtà negli sistemi più moderni, come vedremo in sez.~\ref{sec:sys_user_group} queste - informazioni possono essere mantenute, con l'uso del - \itindex{Name~Service~Switch~(NSS)} \textit{Name Service Switch}, su varie - tipologie di supporti, compresi server centralizzati come LDAP.} Questi -identificativi sono l'\textit{user identifier}, detto in breve -\textsl{user-ID}, ed indicato dall'acronimo \ids{UID}, e il \textit{group - identifier}, detto in breve \textsl{group-ID}, ed identificato dall'acronimo -\ids{GID}, torneremo in dettaglio su questo argomento in + informazioni possono essere mantenute, con l'uso del \textit{Name Service + Switch}, su varie tipologie di supporti, compresi server centralizzati + come LDAP.} Questi identificativi sono l'\textit{user identifier}, detto in +breve \textsl{user-ID}, ed indicato dall'acronimo \ids{UID}, e il +\textit{group identifier}, detto in breve \textsl{group-ID}, ed identificato +dall'acronimo \ids{GID}, torneremo in dettaglio su questo argomento in sez.~\ref{sec:proc_perms}. Il kernel conosce ed utilizza soltanto questi valori numerici, i nomi ad essi associati sono interamente gestiti in \textit{user space} con opportune funzioni di libreria, torneremo su questo @@ -448,10 +451,10 @@ fig.~\ref{fig:file_VFS_scheme}. \end{figure} Questa interfaccia resta la stessa anche quando, invece che a dei normali -file, si accede alle periferiche coi citati \index{file!di~dispositivo} file -di dispositivo, solo che in questo caso invece di usare il codice del -filesystem che accede al disco, il \textit{Virtual File System} eseguirà -direttamente il codice del kernel che permette di accedere alla periferica. +file, si accede alle periferiche coi citati file di dispositivo, solo che in +questo caso invece di usare il codice del filesystem che accede al disco, il +\textit{Virtual File System} eseguirà direttamente il codice del kernel che +permette di accedere alla periferica. \itindend{Virtual~File~System} @@ -475,9 +478,9 @@ viene posto alla radice dell'albero dei file. Tutti gli ulteriori filesystem che possono essere disponibili su altri dispositivi dovranno a loro volta essere inseriti nell'albero, montandoli su altrettante directory del filesystem radice, su quelli che vengono chiamati -\index{mount~point} \textit{mount point}. Questo comunque avverrà sempre in -un secondo tempo, in genere a cura dei programmi eseguiti nella procedura di -inizializzazione del sistema, grazie alle funzioni che tratteremo in +\textit{mount point}. Questo comunque avverrà sempre in un secondo tempo, in +genere a cura dei programmi eseguiti nella procedura di inizializzazione del +sistema, grazie alle funzioni che tratteremo in sez.~\ref{sec:filesystem_mounting}. @@ -515,7 +518,7 @@ directory. All'interno dello stesso albero si potranno poi inserire anche tutti gli altri oggetti previsti l'interfaccia del \itindex{Virtual~File~System} VFS (su cui torneremo in sez.~\ref{sec:file_file_types}), come le fifo, i collegamenti simbolici, i -socket e gli stessi \index{file!di~dispositivo} file di dispositivo. +socket e gli stessi file di dispositivo. La convenzione usata nei sistemi unix-like per indicare i \textit{pathname} dei file è quella di usare il carattere ``\texttt{/}'' come separatore fra i @@ -605,25 +608,27 @@ completo in tab.~\ref{tab:file_file_types}. \multicolumn{2}{|c|}{\textbf{Tipo di file}} & \textbf{Descrizione} \\ \hline \hline - \textit{regular file} & \textsl{file regolare} & - Un file che contiene dei dati (l'accezione normale di file).\\ - \textit{directory} & \textsl{cartella o direttorio} & - Un file che contiene una lista di nomi associati a degli - \itindex{inode} \textit{inode} (vedi sez.~\ref{sec:file_vfs_work}).\\ - \textit{symbolic link} & \textsl{collegamento simbolico} & - Un file che contiene un riferimento ad un altro file/directory.\\ - \textit{char device} & \textsl{dispositivo a caratteri} & - Un file \textsl{speciale} che identifica una periferica ad accesso a - caratteri.\\ - \textit{block device} & \textsl{dispositivo a blocchi} & - Un file \textsl{speciale} che identifica una periferica ad accesso a - blocchi.\\ - \textit{fifo} & ``\textsl{coda}'' & - Un file \textsl{speciale} che identifica una linea di comunicazione - unidirezionale (vedi sez.~\ref{sec:ipc_named_pipe}).\\ - \textit{socket} & ``\textsl{presa}''& - Un file \textsl{speciale} che identifica una linea di comunicazione - bidirezionale (vedi cap.~\ref{cha:socket_intro}).\\ + \textit{regular file} & \textsl{file regolare} & Un file che contiene dei dati (l'accezione + normale di file).\\ + \textit{directory} & \textsl{cartella o direttorio} & Un file che contiene una lista + di nomi associati a degli + \textit{inode} (vedi + sez.~\ref{sec:file_vfs_work}).\\ + \textit{symbolic link} & \textsl{collegamento simbolico} & Un file che contiene un + riferimento ad un altro + file/directory.\\ + \textit{char device} & \textsl{dispositivo a caratteri} & Un file \textsl{speciale} + che identifica una periferica + ad accesso a caratteri.\\ + \textit{block device} & \textsl{dispositivo a blocchi} & Un file \textsl{speciale} + che identifica una periferica + ad accesso a blocchi.\\ + \textit{fifo} & ``\textsl{coda}'' & Un file \textsl{speciale} che + identifica una linea di comunicazione + unidirezionale (vedi sez.~\ref{sec:ipc_named_pipe}).\\ + \textit{socket} & ``\textsl{presa}''& Un file \textsl{speciale} che identifica una linea di + comunicazione bidirezionale (vedi + cap.~\ref{cha:socket_intro}).\\ \hline \end{tabular} \caption{Tipologia dei file definiti nel VFS} @@ -1068,12 +1073,11 @@ sistema e che sono definite nello standard POSIX.2. Nelle versioni più recenti del kernel e delle librerie sono inoltre supportate ulteriori funzionalità aggiunte dallo standard POSIX.1c per quanto riguarda i -\itindex{thread} \textit{thread} (vedi cap.~\ref{cha:threads}), e dallo -standard POSIX.1b per quanto riguarda i segnali e lo \itindex{scheduler} -scheduling real-time (sez.~\ref{sec:sig_real_time} e -sez.~\ref{sec:proc_real_time}), la misura del tempo, i meccanismi di -intercomunicazione (sez.~\ref{sec:ipc_posix}) e l'I/O asincrono -(sez.~\ref{sec:file_asyncronous_io}). +\textit{thread} (vedi cap.~\ref{cha:threads}), e dallo standard POSIX.1b per +quanto riguarda i segnali e lo scheduling real-time +(sez.~\ref{sec:sig_real_time} e sez.~\ref{sec:proc_real_time}), la misura del +tempo, i meccanismi di intercomunicazione (sez.~\ref{sec:ipc_posix}) e l'I/O +asincrono (sez.~\ref{sec:file_asyncronous_io}). Lo standard principale resta comunque POSIX.1, che continua ad evolversi; la versione più nota, cui gran parte delle implementazioni fanno riferimento, e