Indicizzati file sotto /proc, ed ulteriore materiale su ''inotify''.
[gapil.git] / intro.tex
index 6b95412caaeb82051b46823ee0599f5f0152a16c..aff48b7c446f22279c1309636fa82bafbc9acb35 100644 (file)
--- a/intro.tex
+++ b/intro.tex
@@ -1,6 +1,6 @@
 %% intro.tex
 %%
-%% Copyright (C) 2000-2006 Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2000-2007 Simone Piccardi.  Permission is granted to
 %% copy, distribute and/or modify this document under the terms of the GNU Free
 %% Documentation License, Version 1.1 or any later version published by the
 %% Free Software Foundation; with the Invariant Sections being "Un preambolo",
@@ -8,6 +8,7 @@
 %% license is included in the section entitled "GNU Free Documentation
 %% License".
 %%
+
 \chapter{L'architettura del sistema}
 \label{cha:intro_unix}
 
@@ -62,18 +63,18 @@ all'hardware, mentre i programmi normali vengono eseguiti in modalit
 (e non possono accedere direttamente alle zone di memoria riservate o alle
 porte di input/output).
 
-Una parte del kernel, lo \textit{scheduler}\itindex{scheduler}, si occupa di
+Una parte del kernel, lo \itindex{scheduler} \textit{scheduler}, si occupa di
 stabilire, ad intervalli fissi e sulla base di un opportuno calcolo delle
 priorità, quale ``\textsl{processo}'' deve essere posto in esecuzione (il
-cosiddetto \textit{prehemptive
-  multitasking}\itindex{prehemptive~multitasking}).  Questo verrà comunque
-eseguito in modalità protetta; quando necessario il processo potrà accedere
-alle risorse hardware soltanto attraverso delle opportune chiamate al sistema
-che restituiranno il controllo al kernel.
+cosiddetto \itindex{prehemptive~multitasking} \textit{prehemptive
+  multitasking}).  Questo verrà comunque eseguito in modalità protetta; quando
+necessario il processo potrà accedere alle risorse hardware soltanto
+attraverso delle opportune chiamate al sistema che restituiranno il controllo
+al kernel.
 
 La memoria viene sempre gestita dal kernel attraverso il meccanismo della
-\textsl{memoria virtuale}\index{memoria~virtuale}, che consente di assegnare a
-ciascun processo uno spazio di indirizzi ``\textsl{virtuale}'' (vedi
+\index{memoria~virtuale} \textsl{memoria virtuale}, che consente di assegnare
+ciascun processo uno spazio di indirizzi ``\textsl{virtuale}'' (vedi
 sez.~\ref{sec:proc_memory}) che il kernel stesso, con l'ausilio della unità di
 gestione della memoria, si incaricherà di rimappare automaticamente sulla
 memoria disponibile, salvando su disco quando necessario (nella cosiddetta
@@ -117,13 +118,13 @@ avvio del sistema (il cosiddetto \textit{bootstrap}\footnote{il nome deriva da
   un'espressione gergale che significa ``sollevarsi da terra tirandosi per le
   stringhe delle scarpe'', per indicare il compito, almeno apparentemente
   impossibile, di far eseguire un programma a partire da un computer appena
-  acceso che appunto non ne contiene nessuno; non è impossibile appunto perché
-  in realtà c'è un programma iniziale, che è appunto il BIOS.}), incaricandosi
-di caricare il kernel in memoria e di farne partire l'esecuzione;
-quest'ultimo, dopo aver inizializzato le periferiche, farà partire il primo
-processo, \cmd{init}, che è quello che a sua volta farà partire tutti i
-processi successivi. Fra questi ci sarà pure quello che si occupa di dialogare
-con la tastiera e lo schermo della console, e quello che mette a disposizione
+  acceso che appunto non ne contiene nessuno; non è impossibile perché in
+  realtà c'è un programma iniziale, che è il BIOS.}), incaricandosi di
+caricare il kernel in memoria e di farne partire l'esecuzione; quest'ultimo,
+dopo aver inizializzato le periferiche, farà partire il primo processo,
+\cmd{init}, che è quello che a sua volta farà partire tutti i processi
+successivi. Fra questi ci sarà pure quello che si occupa di dialogare con la
+tastiera e lo schermo della console, e quello che mette a disposizione
 dell'utente che si vuole collegare, un terminale e la \textit{shell} da cui
 inviare i comandi.
 
@@ -187,7 +188,7 @@ usate nella programmazione.
 
 Questo è importante da capire perché programmare in Linux significa anzitutto
 essere in grado di usare le varie interfacce contenute nella Libreria Standard
-del C, in quanto né il kernel, né il linguaggio C, implementano direttamente
+del C, in quanto né il kernel, né il linguaggio C implementano direttamente
 operazioni comuni come l'allocazione dinamica della memoria, l'input/output
 bufferizzato o la manipolazione delle stringhe, presenti in qualunque
 programma.
@@ -253,16 +254,16 @@ accesso ai file e quindi anche alle periferiche, in maniera pi
 definendo gruppi di lavoro, di accesso a determinate risorse, ecc.
 
 L'utente e il gruppo sono identificati da due numeri, la cui corrispondenza ad
-un nome espresso in caratteri è inserita nei due file \file{/etc/passwd} e
-\file{/etc/groups}.\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 \textit{Name Service Switch}, su varie tipologie di
-  supporti, compresi server centralizzati come LDAP.}
-\itindex{Name~Service~Switch} Questi numeri sono l'\textit{user identifier},
-detto in breve \textsl{user-ID}, ed indicato dall'acronimo \acr{uid}, e il
-\textit{group identifier}, detto in breve \textsl{group-ID}, ed identificato
-dall'acronimo \acr{gid}, e sono quelli che vengono usati dal kernel per
-identificare l'utente.
+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} \textit{Name Service
+    Switch}, su varie tipologie di supporti, compresi server centralizzati
+  come LDAP.}  Questi numeri sono l'\textit{user identifier}, detto in breve
+\textsl{user-ID}, ed indicato dall'acronimo \acr{uid}, e il \textit{group
+  identifier}, detto in breve \textsl{group-ID}, ed identificato dall'acronimo
+\acr{gid}, e sono quelli che vengono usati dal kernel per identificare
+l'utente.
  
 In questo modo il sistema è in grado di tenere traccia dell'utente a cui
 appartiene ciascun processo ed impedire ad altri utenti di interferire con
@@ -379,7 +380,7 @@ Uno dei problemi di portabilit
 dati utilizzati nei programmi, che spesso variano da sistema a sistema, o
 anche da una architettura ad un'altra (ad esempio passando da macchine con
 processori 32 bit a 64). In particolare questo è vero nell'uso dei cosiddetti
-\textit{tipi elementari}\index{tipo!elementare} del linguaggio C (come
+\index{tipo!elementare} \textit{tipi elementari}del linguaggio C (come
 \ctyp{int}) la cui dimensione varia a seconda dell'architettura hardware.
 
 Storicamente alcuni tipi nativi dello standard ANSI C sono sempre stati
@@ -404,7 +405,7 @@ una infinita serie di problemi di portabilit
     \type{clock\_t} & Contatore del tempo di sistema.\\
     \type{dev\_t}   & Numero di dispositivo.\\
     \type{gid\_t}   & Identificatore di un gruppo.\\
-    \type{ino\_t}   & Numero di \textit{inode}\index{inode}.\\
+    \type{ino\_t}   & Numero di \index{inode} \textit{inode}.\\
     \type{key\_t}   & Chiave per il System V IPC.\\
     \type{loff\_t}  & Posizione corrente in un file.\\
     \type{mode\_t}  & Attributi di un file.\\
@@ -426,7 +427,7 @@ una infinita serie di problemi di portabilit
 
 Per questo motivo tutte le funzioni di libreria di solito non fanno
 riferimento ai tipi elementari dello standard del linguaggio C, ma ad una
-serie di \textsl{tipi primitivi}\index{tipo!primitivo} del sistema, riportati
+serie di \index{tipo!primitivo} \textsl{tipi primitivi} del sistema, riportati
 in tab.~\ref{tab:intro_primitive_types}, e definiti nell'header file
 \file{sys/types.h}, in modo da mantenere completamente indipendenti i tipi
 utilizzati dalle funzioni di sistema dai tipi elementari supportati dal
@@ -575,7 +576,7 @@ del nome \textit{Unix 98}, usato spesso anche per riferirsi allo standard.
 \label{sec:intro_bsd}
 
 Lo sviluppo di BSD iniziò quando la fine della collaborazione fra l'Università
-di Berkley e la AT\&T generò una delle prime e più importanti fratture del
+di Berkeley e la AT\&T generò una delle prime e più importanti fratture del
 mondo Unix.  L'Università di Berkley proseguì nello sviluppo della base di
 codice di cui disponeva, e che presentava parecchie migliorie rispetto alle
 versioni allora disponibili, fino ad arrivare al rilascio di una versione
@@ -583,7 +584,7 @@ completa di Unix, chiamata appunto BSD, del tutto indipendente dal codice
 della AT\&T.
 
 Benché BSD non sia uno standard formalizzato, l'implementazione di Unix
-dell'Università di Berkley, ha provveduto nel tempo una serie di estensioni e
+dell'Università di Berkeley, ha provveduto nel tempo una serie di estensioni e
 API di grande rilievo, come i link simbolici, la funzione \code{select} ed i
 socket.
 
@@ -720,11 +721,6 @@ file.
 
 
 
-%%% Local Variables: 
-%%% mode: latex
-%%% TeX-master: "gapil"
-%%% End: 
-
 % LocalWords:  like kernel multitasking scheduler prehemptive sez swap is cap
 % LocalWords:  everything bootstrap init shell Windows Foundation system call
 % LocalWords:  fig libc uClib glibc embedded Library POSIX username PAM Methods
@@ -741,4 +737,10 @@ file.
 % LocalWords:  socket Spec Novell Specification SUSv CDE Motif Berkley select
 % LocalWords:  SunOS l'AT Sun HP Xenix Description SVID Laboratories MP hsearch
 % LocalWords:  drand fmtmsg define SOURCE lbsd compat XOPEN version ISOC Large
-% LocalWords:  LARGEFILE Support LFS
+% LocalWords:  LARGEFILE Support LFS dell'
+
+
+%%% Local Variables: 
+%%% mode: latex
+%%% TeX-master: "gapil"
+%%% End: