aboutsummaryrefslogtreecommitdiff
path: root/it_IT.ISO8859-15/books/unix-introduction/structure/chapter.xml
blob: 69db41145d7c3d59bb9e0f0a243fc0da6d327ecf (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
<?xml version="1.0" encoding="iso-8859-15" standalone="no"?>
<!--
     The FreeBSD Italian Documentation Project

     $FreeBSD$
-->

<chapter id="structure">
  <title>Struttura di Unix</title>

  <sect1 id="structure-os">
    <title>Il sistema operativo</title>

    <para>Unix è un sistema operativo a strati.  Lo strato più
      interno è l'hardware il quale fornisce servizi al OS.  Il sistema
      operativo (OS), riferito in Unix come al <emphasis>kernel</emphasis>,
      interagisce direttamente con l'hardware e fornisce i servizi ai programmi
      utente.  I programmi utente non necessitano di conoscere informazioni
      sull'hardware.  Devono solo sapere come interagire con il kernel ed
      è quest'ultimo a fornire i servizi richiesti.  Uno dei pi&ugrave
      grandi fattori che ha contribuito alla richiesta di Unix da parte dei
      programmatori è stato che molti programmi utente corretti
      sono indipendenti dall'hardware sottostante, e ciò li rende
      facilmente trasportabili su nuovi sistemi.</para>

    <para>I programmi utente interagiscono con il kernel attraverso un set di
      <emphasis>system call</emphasis> (chiamate di sistema) standard.  Queste
      system call chiedono dei servizi, servizi che saranno forniti dal kernel.
      Così i servizi possono includere un accesso a un file: aprire,
      chiudere, leggere, scrivere un file, creare un link o eseguire un file;
      creare o aggiornare degli account (informazioni relative ad un utente come
      nome, password, ecc.); cambiare il proprietario di un file o di una
      directory; spostarsi in una nuova directory; creare, sospendere o
      terminare un processo; abilitare l'accesso a un dispositivo hardware e
      impostare dei limiti sulle risorse di sistema.</para>

    <para>Unix è un sistema operativo <emphasis>multi-user</emphasis>
      (multi-utente) e <emphasis>multi-tasking</emphasis> (multi-processo).  Si
      possono avere molti utenti <quote>loggati</quote> simultaneamente nel
      sistema (multi-user), ognuno dei quali esegue alcuni programmi
      (multi-tasking).  È compito del kernel mantenere ogni processo e
      ogni utente separato e regolare l'accesso all'hardware di sistema, inclusa
      la cpu, la memoria, il disco e altri dispositivi di I/O.</para>

<programlisting>
FIGURA 2.1   Struttura di un sistema Unix

 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|                                       |
|             Programmi                 |
|   _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _   |
|  |                                 |  |
|  |            Kernel               |  |
|  |   _ _ _ _ _ _ _ _ _ _ _ _ _ _   |  |
|  |  |        Hardware           |  |  |
|  |  |_ _ _ _ _ _ _ _ _ _ _ _ _ _|  |  |
|  |                                 |  |
|  |         System Call             |  |
|  |_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|  |
|                                       |
|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|</programlisting>
  </sect1>

  <sect1 id="structure-file-system">
    <title>Il file system</title>

    <para>L'aspetto del file system di Unix è paragonabile alla struttura
      rovesciata di un albero.  Si parte dall'alto con la directory
      <emphasis>root</emphasis>, denotata con <filename>/</filename>, per poi
      scendere attraverso sotto-directory sottostanti la root.</para>

<programlisting>
FIGURA 2.2   Struttura del file system di Unix


                       /(root)                        1 livello
         |           |         |         |     |
       bin         dev         etc      tmp    usr    2 livello
    |  |  |        | |         | |             | |
  sh date csh  ttya cua0  passwd group       bin lib  3 livello
                                             |
                                            gcc       4 livello

                        ....                          n livello</programlisting>

    <para>Ogni nodo è o un <emphasis>file</emphasis> o una
      <emphasis>directory</emphasis> di file, dove quest'ultima può
      contenere altri file e directory.  Un file o una directory vengono
      specificati attraverso il loro <emphasis>path name</emphasis> (percorso
      del nome del file o della directory), il quale può essere un path
      name assoluto oppure un path name relativo ad un'altra locazione.  Un path
      name assoluto inizia con la directory root, <filename>/</filename>,
      seguono poi i <quote>rami</quote> del file system, ognuno separato da /,
      fino a raggiungere il file desiderato, come per esempio:</para>

    <para><filename>/home/condron/source/xntp</filename></para>

    <para>Un path name relativo specifica un percorso relativo ad un altro path
      name, che usualmente è la directory di lavoro corrente in cui ci si
      trova.  Sono ora introdotte due directory speciali:</para>

    <para><filename>.</filename> la directory corrente</para>

    <para><filename>..</filename> la directory padre della directory
      corrente</para>

    <para>Quindi se si è in <filename>/home/frank</filename> e si
      desidera specificare un path nel modo relativo si può usare:</para>

    <para><filename>../condron/source/xntp</filename></para>

    <para>Questo indica che si deve prima salire di un livello di directory,
      quindi passare attraverso la directory <filename>condron</filename>,
      seguire la directory <filename>source</filename> e quindi
      <filename>xntp</filename>.</para>
  </sect1>

  <sect1 id="structure-directories-files-inodes">
    <title>Directory, file e inode Unix</title>

    <para>Ogni <emphasis>directory</emphasis> e ogni <emphasis>file</emphasis>
      sono inclusi nella loro directory padre.  Nel caso della directory root,
      la directory padre è se stessa.  Una directory è un file
      contenente una tabella che elenca i file contenuti nella directory stessa,
      dove ai nomi dei file in lista vengono assegnati i corrispondenti numeri
      di <emphasis>inode</emphasis>.  Un inode è un file speciale,
      progettato per essere letto dal kernel al fine di conoscere alcune
      informazioni su ciascun file.  Un inode specifica i permessi del file, il
      proprietario del file, la data di creazione, quella dell'ultimo accesso e
      quella dell'ultima modifica del file e la posizione fisica dei blocchi di
      dati sul disco che contengono il file.</para>

    <para>Il sistema non richiede qualche struttura particolare per i dati
      contenuti nel file.  Il file può essere ASCII o binario o una
      combinazione di questi e può rappresentare dati testuali, uno
      script di shell, un codice oggetto compilato per un programma, una tabella
      di directory, robaccia o qualunque cosa si voglia.</para>

    <para>Non c'è un'intestazione, una traccia, un'etichetta o il
      carattere <emphasis>EOF</emphasis> come parte del file.</para>
  </sect1>

  <sect1 id="structure-programs">
    <title>Programmi Unix</title>

    <para>Un <emphasis>programma</emphasis> o un <emphasis>comando</emphasis>
      interagisce con il kernel per fornire l'ambiente e realizzare le
      funzioni richieste dall'utente.  Un programma può essere: un file
      di shell eseguibile, conosciuto come uno script di shell, un comando
      interno (built-in) alla shell o un file sorgente compilato in codice
      oggetto.</para>

    <para>La <emphasis>shell</emphasis> è un interprete a linea di
      comando.  L'utente interagisce con il kernel attraverso la shell.  Si
      può scrivere uno script ASCII (testo) in modo tale da essere
      interpretato da una shell.</para>

    <para>I programmi di sistema sono generalmente in forma binaria, compilati
      partendo da un codice sorgente in C.  Questi si trovano in posti come
      <filename>/bin</filename>, <filename>/usr/bin</filename>,
      <filename>/usr/local/bin</filename>, <filename>/usr/ucb</filename>, ecc.
      Questi comandi forniscono quelle funzionalità che normalmente si
      pensano essere di Unix.  Alcuni di questi sono &man.sh.1;, &man.csh.1;,
      &man.date.1;, &man.who.1;, &man.more.1;, &man.ls.1; e molti altri.</para>
  </sect1>
</chapter>