Servizi: aggiunta gestione delle shell per server ftp
[doc/.git] / sistemi.html
1 <?xml version="1.0" encoding="utf-8"?>
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">
3
4 <html lang="it">
5 <head>
6   <meta name="generator" content=
7   "HTML Tidy for Linux/x86 (vers 6 November 2007), see www.w3.org">
8   <meta http-equiv="Content-Type" content=
9   "text/html; charset=iso-8859-1">
10   <meta name="generator" content=
11   "Docutils 0.5: http://docutils.sourceforge.net/">
12
13   <title>Sistemi operativi</title>
14   <style type="text/css">
15
16   /*
17   Author: Peter Parente
18   Date: 2008/01/22
19   Version: 1.0
20   Copyright: This stylesheet has been placed in the public domain - free to edit and use for all uses.
21   */
22
23   body {
24   font: 100% sans-serif;
25   background: #ffffff;
26   color: black;
27   margin: 2em;
28   padding: 0em 2em;
29   }
30
31   p.topic-title {
32   font-weight: bold;
33   }
34
35   table.docinfo {
36   text-align: left;
37   margin: 2em 0em;
38   }
39
40   a[href] {
41   color: #436976;
42   background-color: transparent;
43   }
44
45   a.toc-backref {
46   text-decoration: none;
47   }
48
49   h1 a[href] {
50   color: #003a6b;
51   text-decoration: none;
52   background-color: transparent;
53   }
54
55   a.strong {
56   font-weight: bold;
57   }
58
59   img {
60   margin: 0;
61   border: 0;
62   }
63
64   p {
65   margin: 0.5em 0 1em 0;
66   line-height: 1.5em;
67   }
68
69   p a:visited {
70   color: purple;
71   background-color: transparent;
72   }
73
74   p a:active {
75   color: red;
76   background-color: transparent;
77   }
78
79   a:hover {
80   text-decoration: none;
81   }
82
83   p img {
84   border: 0;
85   margin: 0;
86   }
87
88   p.rubric {
89   font-weight: bold;
90   font-style: italic;
91   }
92
93   h1.title {
94   color: #003a6b;
95   font-size: 250%;
96   margin-bottom: 0em;
97   }
98
99   h2.subtitle {
100   color: #003a6b;
101   border-bottom: 0px;
102   }
103
104   h1, h2, h3, h4, h5, h6 {
105   color: #555;
106   background-color: transparent;
107   margin: 0em;
108   padding-top: 0.5em;
109   }
110
111   h1 {
112   font-size: 160%;
113   margin-bottom: 0.5em;
114   border-bottom: 2px solid #aaa;
115   }
116
117   h2 {
118   font-size: 140%;
119   margin-bottom: 0.5em;
120   border-bottom: 1px solid #aaa;
121   }
122
123   h3 {
124   font-size: 130%;
125   margin-bottom: 0.5em;
126   }
127
128   h4 {
129   font-size: 110%;
130   font-weight: bold;
131   margin-bottom: 0.5em;
132   }
133
134   h5 {
135   font-size: 105%;
136   font-weight: bold;
137   margin-bottom: 0.5em;
138   }
139
140   h6 {
141   font-size: 100%;
142   font-weight: bold;
143   margin-bottom: 0.5em;
144   }
145
146   dt {
147   font-style: italic;
148   }
149
150   dd {
151   margin-bottom: 1.5em;
152   }
153
154   div.admonition, div.note, div.tip, div.caution, div.important {
155   margin: 2em 2em;
156   padding: 0em 1em;
157   border-top: 1px solid #aaa;
158   border-left: 1px solid #aaa;
159   border-bottom: 2px solid #555;
160   border-right: 2px solid #555;
161   }
162
163   div.important {
164   background: transparent url('../images/important.png') 10px 2px no-repeat;
165   }
166
167   div.caution {
168   background: transparent url('../images/caution.png') 10px 2px no-repeat;
169   }
170
171   div.note {
172   background: transparent url('../images/note.png') 10px 2px no-repeat;
173   }
174
175   div.tip {
176   background: transparent url('../images/tip.png') 10px 2px no-repeat;
177   }
178
179   div.admonition-example {
180   background: transparent url('../images/tip.png') 10px 2px no-repeat;
181   }
182
183   div.admonition-critical-example {
184   background: transparent url('../images/important.png') 10px 2px no-repeat;
185   }
186
187   p.admonition-title {
188   font-weight: bold;
189   border-bottom: 1px solid #aaa;
190   padding-left: 30px;
191   }
192
193   table.docutils {
194   text-align: left;
195   border: 1px solid gray;
196   border-collapse: collapse;
197   width: 100%;
198   margin: 1.5em 0em;
199   }
200
201   table.docutils caption {
202   font-style: italic;
203   }
204
205   table.docutils td, table.docutils th {
206   padding: 0.25em 0.5em;
207   }
208
209   table.docutils th {
210   background-color: #dddddd;
211   }
212
213   div.sidebar {
214   width: 33%;
215   float: right;
216   margin: 0em 2em;
217   padding: 0em 1em;
218   border-top: 1px solid #aaa;
219   border-left: 1px solid #aaa;
220   border-bottom: 2px solid #555;
221   border-right: 2px solid #555;
222   }
223
224   p.sidebar-title {
225   margin-bottom: 0em;
226   color: #003a6b;
227   border-bottom: 1px solid #aaa;
228   font-weight: bold;
229   }
230
231   p.sidebar-subtitle {
232   margin-top: 0em;
233   font-style: italic;
234   color: #003a6b;
235   }
236
237   </style>
238 </head>
239
240 <body>
241   <div class="document" id="sistemi-operativi">
242     <h1 class="title">Sistemi operativi</h1>
243
244     <h2 class="subtitle" id=
245     "appunti-introduttivi-ai-sistemi-operativi">Appunti
246     introduttivi ai sistemi operativi</h2>
247
248     <blockquote>
249       <table class="docutils field-list" frame="void" rules="none">
250         <col class="field-name">
251         <col class="field-body">
252
253         <tbody valign="top">
254           <tr class="field">
255             <th class="field-name">Author:</th>
256
257             <td class="field-body">Andrea Manni</td>
258           </tr>
259
260           <tr class="field">
261             <th class="field-name">Copyright:</th>
262
263             <td class="field-body">GFDL</td>
264           </tr>
265
266           <tr class="field">
267             <th class="field-name">Version:</th>
268
269             <td class="field-body">1.5</td>
270           </tr>
271         </tbody>
272       </table>
273     </blockquote>
274
275     <div class="contents topic" id="indice-degli-argomenti">
276       <p class="topic-title first">Indice degli argomenti</p>
277
278       <ul class="simple">
279         <li>
280           <a class="reference internal" href="#sistema-operativo"
281           id="id6" name="id6">Sistema operativo</a>
282
283           <ul>
284             <li><a class="reference internal" href=
285             "#concetti-introduttivi" id="id7" name="id7">Concetti
286             introduttivi</a></li>
287
288             <li><a class="reference internal" href="#hardware" id=
289             "id8" name="id8">Hardware:</a></li>
290
291             <li><a class="reference internal" href="#software" id=
292             "id9" name="id9">Software:</a></li>
293
294             <li><a class="reference internal" href="#input" id=
295             "id10" name="id10">Input</a></li>
296
297             <li><a class="reference internal" href="#output" id=
298             "id11" name="id11">Output</a></li>
299
300             <li><a class="reference internal" href="#errors" id=
301             "id12" name="id12">Errors</a></li>
302
303             <li>
304               <a class="reference internal" href=
305               "#interfaccia-utente" id="id13" name=
306               "id13">Interfaccia utente</a>
307
308               <ul>
309                 <li><a class="reference internal" href=
310                 "#riga-di-comando" id="id14" name="id14">Riga di
311                 comando</a></li>
312
313                 <li><a class="reference internal" href=
314                 "#interfaccia-grafica" id="id15" name=
315                 "id15">Interfaccia grafica</a></li>
316
317                 <li><a class="reference internal" href=
318                 "#touch-screen" id="id16" name="id16">Touch
319                 screen</a></li>
320               </ul>
321             </li>
322           </ul>
323         </li>
324
325         <li>
326           <a class="reference internal" href=
327           "#caratteristiche-di-un-sistema-operativo" id="id17"
328           name="id17">Caratteristiche di un Sistema Operativo</a>
329
330           <ul>
331             <li><a class="reference internal" href="#multitasking"
332             id="id18" name="id18">Multitasking</a></li>
333
334             <li><a class="reference internal" href="#multiutenza"
335             id="id19" name="id19">Multiutenza</a></li>
336           </ul>
337         </li>
338
339         <li><a class="reference internal" href="#id1" id="id20"
340         name="id20">Sistema operativo</a></li>
341
342         <li>
343           <a class="reference internal" href=
344           "#i-vari-sistemi-operativi" id="id21" name="id21">I vari
345           Sistemi Operativi</a>
346
347           <ul>
348             <li><a class="reference internal" href="#ms-windows"
349             id="id22" name="id22">MS Windows</a></li>
350
351             <li><a class="reference internal" href="#unix" id=
352             "id23" name="id23">Unix</a></li>
353
354             <li><a class="reference internal" href="#gnu-linux" id=
355             "id24" name="id24">Gnu/Linux</a></li>
356
357             <li><a class="reference internal" href="#bsd" id="id25"
358             name="id25">BSD</a></li>
359
360             <li><a class="reference internal" href="#apple-mac-os"
361             id="id26" name="id26">Apple Mac OS</a></li>
362           </ul>
363         </li>
364
365         <li><a class="reference internal" href="#kernel" id="id27"
366         name="id27">Kernel</a></li>
367
368         <li><a class="reference internal" href="#le-distribuzioni"
369         id="id28" name="id28">Le distribuzioni</a></li>
370
371         <li>
372           <a class="reference internal" href="#memoria-virtuale"
373           id="id29" name="id29">Memoria virtuale</a>
374
375           <ul>
376             <li><a class="reference internal" href=
377             "#swap-space-per-linux" id="id30" name="id30">Swap
378             space per Linux</a></li>
379           </ul>
380         </li>
381
382         <li><a class="reference internal" href="#devices-a-blocchi"
383         id="id31" name="id31">Devices a blocchi</a></li>
384
385         <li><a class="reference internal" href=
386         "#devices-a-caratteri-seriali" id="id32" name=
387         "id32">Devices a caratteri (seriali)</a></li>
388
389         <li>
390           <a class="reference internal" href="#dati" id="id33"
391           name="id33">Dati</a>
392
393           <ul>
394             <li><a class="reference internal" href="#dato" id=
395             "id34" name="id34">Dato</a></li>
396
397             <li><a class="reference internal" href="#metadato" id=
398             "id35" name="id35">Metadato</a></li>
399           </ul>
400         </li>
401
402         <li>
403           <a class="reference internal" href="#i-filesystem" id=
404           "id36" name="id36">I filesystem</a>
405
406           <ul>
407             <li><a class="reference internal" href="#file" id=
408             "id37" name="id37">File</a></li>
409
410             <li><a class="reference internal" href="#filesystem"
411             id="id38" name="id38">Filesystem</a></li>
412           </ul>
413         </li>
414
415         <li><a class="reference internal" href=
416         "#gestione-dei-pacchetti" id="id39" name="id39">Gestione
417         dei Pacchetti</a></li>
418
419         <li>
420           <a class="reference internal" href="#elementi" id="id40"
421           name="id40">Elementi:</a>
422
423           <ul>
424             <li><a class="reference internal" href="#dipendenze"
425             id="id41" name="id41">Dipendenze</a></li>
426
427             <li><a class="reference internal" href="#conflitti" id=
428             "id42" name="id42">Conflitti</a></li>
429           </ul>
430         </li>
431       </ul>
432     </div>
433
434     <p>Generato con: <a class="reference external" href=
435     "http://docutils.sourceforge.net/rst.html">http://docutils.sourceforge.net/rst.html</a></p>
436
437     <p>Appunti introduttivi alla trattazione dei sistemi operativi,
438     le loro caratteristiche, componenti essenziali, tratti
439     distintivi.</p>
440
441     <div class="section" id="sistema-operativo">
442       <h1><a class="toc-backref" href="#id6">Sistema
443       operativo</a></h1>
444
445       <p>Il sistema operativo e' un software, ma per poter
446       comprendere la funzione e il suo particolare rapporto con gli
447       altri software disponibili sul vostro computer sara' prima
448       necessario introdurre alcune sue caratteristiche e elementi
449       distintivi.</p>
450
451       <p>Quando questi concetti saranno stati acquisiti verra'
452       presentata una definizione <em>ragionevole</em> del termine
453       "sistema operativo".</p>
454
455       <div class="section" id="concetti-introduttivi">
456         <h2><a class="toc-backref" href="#id7">Concetti
457         introduttivi</a></h2>
458
459         <p>Un elaboratore e' una macchina in grado di seguire una
460         serie di istruzioni al fine di permettere all'utente di
461         raggiungere il risultato voluto. Possiamo partire da alcuni
462         concetti di base per poterne studiare le
463         caratteristiche.</p>
464       </div>
465
466       <div class="section" id="hardware">
467         <h2><a class="toc-backref" href="#id8">Hardware:</a></h2>
468
469         <blockquote>
470           Tutto quanto c'e' di <em>fisico</em> in un computer,
471           quanto ha un peso (in senso materiale: grammi o
472           kilogrammi) e occupa dello spazio. Il monitor, la
473           tastiera, i supporti di storaggio dati, il computer
474           stesso in ogni suo singolo componente interno e
475           periferico sono l'<strong>hardware</strong> del computer,
476           dall'inglese <em>ferraglia</em>.
477         </blockquote>
478       </div>
479
480       <div class="section" id="software">
481         <h2><a class="toc-backref" href="#id9">Software:</a></h2>
482
483         <blockquote>
484           Tutti i dati e i programmi (questi ultimi altro non sono
485           che sequenze di istruzioni, quindi dati) che vengono
486           elaborati o prodotti nel corso dell'esecuzione del
487           programma. I software e i dati tipicamente risiedono su
488           una memoria RAM volatile al momento dell'esecuzione, ma
489           vengono archiviati sui <em>supporti di storaggio</em>
490           (hard disk, CD-Rom, floppy...) in base alle necessita'
491           del momento.
492         </blockquote>
493       </div>
494
495       <div class="section" id="input">
496         <h2><a class="toc-backref" href="#id10">Input</a></h2>
497
498         <blockquote>
499           I flussi di dati in ingresso inseriti generalmente
500           dall'utente tramite le perifieriche dedicate a queste
501           funzioni. Tastiera e mouse sono perifieriche di <em>solo
502           Input</em>, una scheda di rete invece e' una periferica
503           che puo' ricevere e trasmette dati. Questi dati sono
504           utilizzati per modificare il corso dei programmi, nel
505           caso ci siano piu' programmi utilizzati
506           contemporaneamente per raggiungere il risultato voluto
507           dall'operatore potra' accadere che il nostro programma
508           riceva Input da un altro programma. Nei sistemi operativi
509           <em>Unix si fa riferimento allo **standard Input*</em>
510           (stdin, la sua collocazione piu' elementare in un sistema
511           basato sul kernel *Linux si basa sul device <tt class=
512           "docutils literal"><span class=
513           "pre">/dev/input</span></tt> ).
514         </blockquote>
515       </div>
516
517       <div class="section" id="output">
518         <h2><a class="toc-backref" href="#id11">Output</a></h2>
519
520         <blockquote>
521           I flussi di dati in uscita, normalmente i risultati
522           aspettati dall'operatore. Tipiche periferiche di output
523           dedicate sono i monitor, le casse audio, le stampanti.
524           Come nel caso dell'input possiamo considerare periferiche
525           come le schede di rete come di input/output. Nei sistemi
526           operativi <em>Unix si fa riferimento allo **standard
527           output*</em> (stdout, fisicamente puo' essere dirottato
528           sul diverse periferiche a seconda della natura dei dati
529           (pensiamo a un file audio: verra' mandato alla scheda
530           audio e da questa alle casse. Sarebbe poco significativo
531           se visualizzato a schermo, e poco gradevole il caso
532           inverso: ad es. telefonare a qualcuno e sentirsi
533           rispondere da un FAX.) ma normalmente ci aspettiamo di
534           vedere i risultati <em>a schermo</em>: sul nostro
535           terminale <tt class="docutils literal"><span class=
536           "pre">/dev/tty*</span></tt> o equivalente. ).
537         </blockquote>
538
539         <p>Stdout verso un file:</p>
540         <pre class="literal-block">
541 ls -l &gt; ls-l.txt
542 </pre>
543
544         <p>Stdout di un comando verso lo stdin di un altro comando
545         (un pipe!):</p>
546         <pre class="literal-block">
547 ls | toilet
548 </pre>
549
550         <p>Stdout verso il primo teletype virtuale [ALT+F1]:</p>
551         <pre class="literal-block">
552 echo "Questo l'ho scritto io" &gt; /dev/tty1
553 </pre>
554       </div>
555
556       <div class="section" id="errors">
557         <h2><a class="toc-backref" href="#id12">Errors</a></h2>
558
559         <blockquote>
560           Non sempre le nostre aspettative nei confronti
561           dell'elebarotore vengono soddisfatte, talvolta il nostro
562           programma genera errori e un risultato solo parziale. Nei
563           sistemi <em>Unix questo tipo di *output</em> viene
564           indicato come <strong>standard error</strong> (stderr) e
565           puo' essere reindirizzato su una canale diverso dal
566           normale output. Ad esempio suonando una serie di brani
567           musicali l'output viene indirizzato fino alle casse del
568           computer, ma se un brano risulta illeggibile viene
569           visualizzato un errore a <em>schermo</em>. Situazione
570           simile nel caso di una stampa: l'output va' alla
571           stampante me se durante la stampa si generano messaggi di
572           errore questi non compariranno sulla carta.
573         </blockquote>
574
575         <p>Questa possibilita' di canalizzare lo stdout e lo stderr
576         verra' utile in seguito quando si avra' l'esigenza di
577         pianificare operazioni svolte in automatico (es. script di
578         back-up) durante le quali l'operatore non e' disponibile
579         per leggere gli errori, che potranno essere re-indirizzati
580         su un file di log o altro.</p>
581
582         <p>Stderr verso un file:</p>
583         <pre class="literal-block">
584 ls non-esiste 2&gt; error
585 </pre>
586       </div>
587
588       <div class="section" id="interfaccia-utente">
589         <h2><a class="toc-backref" href="#id13">Interfaccia
590         utente</a></h2>
591
592         <blockquote>
593           Il sistema formato da periferiche (es tastiera e monitor)
594           che permette lo scambio di informazioni tra l'utente e
595           l'elaboratore. Tutti i sistemi multifunzione (cioe' che
596           possono svolgere piu' di un singolo compito) sono dotati
597           di una interfaccia utente. I sistemi
598           <em>multi-pourpose</em> hanno interfacce utente piu'
599           sofisticate rispetto alle macchine dedicate: ad es. un
600           personal computer ha un'interfaccia utente piu' completa
601           rispetto ad una console per videogiochi o a un cellulare.
602           Le interfacce utente possono essere di diverso tipo:
603         </blockquote>
604
605         <div class="section" id="riga-di-comando">
606           <h3><a class="toc-backref" href="#id14">Riga di
607           comando</a></h3>
608
609           <p>CLI (Common Line Interface). Interfaccia testuale:
610           input e output sono solo o prevalentemente caratteri,
611           quindi niente grafica, finestre, icone. E' ad esempio
612           l'interfaccia che ci si trova davanti a un terminale
613           *Unix ( CTR + ALT + F1 sotto Gnu/Linux) oppure stabilendo
614           una sessione remota con SSH o telnet.</p>
615         </div>
616
617         <div class="section" id="interfaccia-grafica">
618           <h3><a class="toc-backref" href="#id15">Interfaccia
619           grafica</a></h3>
620
621           <p>Permette la visualizzazione di icone finestre e
622           quant'altro, grazie ad un server grafico che trasforma le
623           informazioni piu' semplici in una rappresentazione
624           grafica. Generalmente piu' <em>pesante</em> dal punto di
625           visto delle risorse di sistema del computer, permette di
626           eseguire solo le operazioni espressamente previste e rese
627           disponibili dai vari <em>menu</em>, a differenza della
628           CLI che puo' permettere la combinazioni di singoli
629           comandi (pipes) e la creazione di script per
630           automatizzare operazioni anche di relativa
631           complessita'.</p>
632
633           <p>Generalmente si accompagna a un sistema di puntamento
634           come un mouse, touch pad, tavoletta grafica. track
635           ball...</p>
636
637           <p>La superiore complessita' la rende sconsigliabile per
638           le sessioni remote, per lo meno quando e' possibile
639           svolgere le stesse operazione tramite un'interfaccia CLI.
640           Questo per non sottrarre risorse ai software di nostro
641           interesse e per motivi di sicurezza (piu' una cosa e'
642           complessa e piu' e' soggetta a problemi di
643           sicurezza).</p>
644         </div>
645
646         <div class="section" id="touch-screen">
647           <h3><a class="toc-backref" href="#id16">Touch
648           screen</a></h3>
649
650           <p>Schermi sensibili al tocco, come su palmari, cellulari
651           IPhone o i <em>tablet PC</em>. Le caratteristiche sono
652           analoghe a una interfaccia grafica, cambia solo il
653           sistema di puntamento (non avete un mouse o un touch pad
654           ma si tocca direttamente lo schermo con una penna o le
655           dita).</p>
656         </div>
657       </div>
658     </div>
659
660     <div class="section" id=
661     "caratteristiche-di-un-sistema-operativo">
662       <h1><a class="toc-backref" href="#id17">Caratteristiche di un
663       Sistema Operativo</a></h1>
664
665       <p>Alcune delle caratteristiche dei sistemi operativi ci
666       aiuteranno a capire la funzione prevalente di questo in
667       rapporto con gli altri programmi in esecuzione sul
668       computer.</p>
669
670       <div class="section" id="multitasking">
671         <h2><a class="toc-backref" href=
672         "#id18">Multitasking</a></h2>
673
674         <blockquote>
675           Capacita' di un OS di eseguire piu' programmi
676           contemporaneamente.
677         </blockquote>
678
679         <p>Un personal computer generalmente ha in esecuzione
680         centinaia di singoli programmi (o per la precisione:
681         <em>processi</em>), oltre a quelli direttamente lanciati
682         dall'utente ce ne saranno altri dedicati alla gestione
683         dell'hardware o al mantenimento del sistema operativo.</p>
684
685         <p>Una cellulare (si pensi ai vecchi modelli) o una piccola
686         calcolatrice invece possono eseguire solo un compito (task)
687         alla volta.</p>
688
689         <p>Tipicamente risiede nel <a class="reference internal"
690         href="#kernel">kernel</a> la capacita' del sistema di poter
691         eseguire con stabilita' piu' processi, utilizzando uno
692         <a class="reference external" href=
693         "http://it.wikipedia.org/wiki/Sistema_operativo#Scheduler">scheduler</a>.</p>
694       </div>
695
696       <div class="section" id="multiutenza">
697         <h2><a class="toc-backref" href=
698         "#id19">Multiutenza</a></h2>
699
700         <blockquote>
701           I sistemi multiutenti possono avere piu' utenti attivi
702           contemporaneamente (ma anche uno alla volta a seconda
703           della disponibilita' di input).
704         </blockquote>
705
706         <p>Il sistema e' comunque in grado di distinguere tra gli
707         utenti: ad es. mia sorella non ha la possibilita' di
708         eliminare le MIE foto, e viceversa. Per garantire una
709         <em>vera</em> multiutenza sara' necessario un sistema di
710         autenticazione per distinguere gli utenti, oltre a
711         funzionalita' delegate al file system per limitare accessi
712         ed esecuzione dei file ai diversi utenti di sistema. Ad
713         esempio il filesystem <a class="reference external" href=
714         "http://it.wikipedia.org/wiki/FAT32#FAT32">FAT32</a> dei
715         vecchi sistemi Windows (e usato sulla maggior parte delle
716         chiavette USB e memory card varie) non permette la gestione
717         della propieta' dei files.</p>
718
719         <p>La presenza di piu' utenti in genere porta a una
720         gerarchia tra questi (ad esempio <em>user, power user,
721         administrator</em> sotto sistemi Windows o l'utente
722         <em>root</em> per sistemi Unix). In genere si ha un solo
723         utente abilitato alle modifiche delle funzionalita' del
724         sistema (l'amministratore, che puo' abilitare le
725         periferiche o installare nuovo software nel sistema) e
726         semplici <em>utenti di sistema</em> (<tt class=
727         "docutils literal"><span class="pre">system</span>
728         <span class="pre">users</span></tt>) che possono solo
729         usufruire dei programmi messi a loro disposizione. Questa
730         soluzione, oltre che a garantire la presenza di un account
731         in grado di rimediare in caso di emergenza a eventuali
732         errori fatti da altri, permette di avere un ambiente di
733         lavoro piu' sicuro dato che una volta loggati come
734         <em>utenti di sistema</em> non si ha la possibilita' di
735         causare danni gravi all'intero sistema per una semplice
736         distrazione. <strong>Mai lavorare come amministratori
737         quando non e' assolutamente necessario.</strong></p>
738       </div>
739     </div>
740
741     <div class="section" id="id1">
742       <h1><a class="toc-backref" href="#id20">Sistema
743       operativo</a></h1>
744
745       <dl class="docutils">
746         <dt>Possiamo ora cercare di dare una definizione di sistema
747         operativo:</dt>
748
749         <dd>Il Sistema Operativo (OS: Operative System) e'
750         quell'insieme di software che servono per far funzionare il
751         sistema <em>in generale</em> piu' che svolgere un compito
752         particolare come modificare un file o visualizzare un
753         video. E' l'<em>ambiente</em> in cui potranno convivere ed
754         essere utilizzati tutti i software applicativi usati
755         dall'utente.</dd>
756       </dl>
757
758       <p>Sara' il sistema operativo a identificare gli utenti al
759       momento di cominciare una sessione di lavoro, e garantisce
760       gli accessi ai files in base a queste credenziali (e alle
761       caratteristiche del file system, cosa che approfondiremo
762       successivamente).</p>
763
764       <p>L'OS si pone poi come tramite tra i singoli applicativi e
765       le risorse di sistema. Ad esempio se sono disponibili diversi
766       programmi in grado di produrre stampe ma una sola stampante,
767       sara' il sistema operativo a gestire le code di stampa in
768       modo che non si intralcino (a dire il vero l'esempio potrebbe
769       non essere tecnicamente esatto. Ma rende l'idea.) I singoli
770       programmi non utilizzeranno direttamente la stampante, ma
771       semplicemente si <em>interfacceranno</em> all'OS al momento
772       della stampa.</p>
773
774       <p>Quando installiamo un nuovo editor di testo non ci
775       preoccupiamo di fornirgli un <em>driver</em> per la stampa.
776       Sappiamo che questo e' gia' disponibile al sistema operativo,
777       e i singoli applicativi si appoggeranno a questo. Questo
778       "<em>layer di astrazione</em>" sull'utilizzo delle
779       periferiche (al quale partecipa anche il kernel) semplifica
780       di molto la realizzazione e l'installazione dei singoli
781       software, garantendo maggiore stabilita' all'intero
782       <em>sistema</em>.</p>
783
784       <p>In modo simile tutti gli applicativi che utilizziamo si
785       <em>appoggiano</em> al sistema operativo, tanto che siamo
786       abituati ad avere <em>versioni diverse</em> degli stessi
787       software rilasciate per i <em>diversi sistemi</em> (c'e' una
788       versione di Openoffice.org per sistemi Microsoft, GnuLinux,
789       Apple e cosi' via). Ovviamente la versione per il sistema
790       <a class="footnote-reference" href="#id3" id="id2" name=
791       "id2">[1]</a> <tt class="docutils literal"><span class=
792       "pre">X</span></tt> generalmente non funziona sul sistema
793       <tt class="docutils literal"><span class=
794       "pre">Y</span></tt>.</p>
795
796       <table class="docutils footnote" frame="void" id="id3" rules=
797       "none">
798         <colgroup>
799           <col class="label">
800           <col>
801         </colgroup>
802
803         <tbody valign="top">
804           <tr>
805             <td class="label"><a class="fn-backref" href=
806             "#id2">[1]</a></td>
807
808             <td>Sarebbe piu' corretto parlare di incompatibilita'
809             tra i membri di famglie di sistemi operativi tra loro
810             diversi, ma allo stato attuale delle nostre conoscenze
811             non complichiamoci la vita: l'eseguibile di
812             Openoffice.org per Windows non funziona su
813             Gnu/Linux.</td>
814           </tr>
815         </tbody>
816       </table>
817
818       <p>I sistemi operativi, come del resto i singoli applicativi,
819       sono rilasciati (quando possibile) in versioni a 32 o 64 bit,
820       oppure per architetture diverse (x86, PPC, Arm, RISC...). In
821       genere si indica la possibilita' di un OS di <em>girare</em>
822       su architetture hardware diverse col termine
823       <em>portabilita'</em>. Una maggiore portabilita', oltre che
824       per l'intrinseco vantaggio, e' spesso indice di maggiore
825       stabilita' in quanto il test del sistema in ambienti diversi
826       permette di evidenziare <em>bug</em> difficilmente
827       riscontrabili altrimenti.</p>
828     </div>
829
830     <div class="section" id="i-vari-sistemi-operativi">
831       <h1><a class="toc-backref" href="#id21">I vari Sistemi
832       Operativi</a></h1>
833
834       <p>Per ulteriori informazioni sulle caratteristiche di alcuni
835       dei sistemi operativi attualemnte in uso si seguano i
836       seguenti link:</p>
837
838       <div class="section" id="ms-windows">
839         <h2><a class="toc-backref" href="#id22">MS Windows</a></h2>
840
841         <blockquote>
842           <ul class="simple">
843             <li><a class="reference external" href=
844             "http://it.wikipedia.org/wiki/Windows">http://it.wikipedia.org/wiki/Windows</a></li>
845           </ul>
846         </blockquote>
847       </div>
848
849       <div class="section" id="unix">
850         <h2><a class="toc-backref" href="#id23">Unix</a></h2>
851
852         <p><a class="reference external" href=
853         "http://it.wikipedia.org/wiki/Unix">http://it.wikipedia.org/wiki/Unix</a></p>
854       </div>
855
856       <div class="section" id="gnu-linux">
857         <h2><a class="toc-backref" href="#id24">Gnu/Linux</a></h2>
858
859         <blockquote>
860           <ul class="simple">
861             <li><a class="reference external" href=
862             "http://it.wikipedia.org/wiki/Gnu/Linux">http://it.wikipedia.org/wiki/Gnu/Linux</a></li>
863           </ul>
864         </blockquote>
865       </div>
866
867       <div class="section" id="bsd">
868         <h2><a class="toc-backref" href="#id25">BSD</a></h2>
869
870         <blockquote>
871           <ul class="simple">
872             <li><a class="reference external" href=
873             "http://it.wikipedia.org/wiki/Berkeley_Software_Distribution">
874             http://it.wikipedia.org/wiki/Berkeley_Software_Distribution</a></li>
875
876             <li><a class="reference external" href=
877             "http://it.wikipedia.org/wiki/FreeBSD">http://it.wikipedia.org/wiki/FreeBSD</a></li>
878
879             <li><a class="reference external" href=
880             "http://it.wikipedia.org/wiki/Openbsd">http://it.wikipedia.org/wiki/Openbsd</a></li>
881           </ul>
882         </blockquote>
883       </div>
884
885       <div class="section" id="apple-mac-os">
886         <h2><a class="toc-backref" href="#id26">Apple Mac
887         OS</a></h2>
888
889         <blockquote>
890           <ul class="simple">
891             <li><a class="reference external" href=
892             "http://it.wikipedia.org/wiki/Mac_OS">http://it.wikipedia.org/wiki/Mac_OS</a></li>
893
894             <li><a class="reference external" href=
895             "http://it.wikipedia.org/wiki/Mac_OS_X">http://it.wikipedia.org/wiki/Mac_OS_X</a></li>
896           </ul>
897         </blockquote>
898       </div>
899     </div>
900
901     <div class="section" id="kernel">
902       <h1><a class="toc-backref" href="#id27">Kernel</a></h1>
903
904       <blockquote>
905         In informatica, il <strong>kernel</strong> Costituisce il
906         nucleo di un sistema operativo. Si tratta di un software
907         avente il compito di fornire ai processi in esecuzione
908         sull'elaboratore un accesso sicuro e controllato
909         all'hardware. Dato che possono esserne eseguiti
910         simultaneamente più di uno, il kernel ha anche la
911         responsabilita'Ã&nbsp; di assegnare una porzione di
912         tempo-macchina e di accesso all'hardware a ciascun
913         programma (multitasking).
914       </blockquote>
915
916       <p>Tra tutti i processi in esecuzione su un computer uno ha
917       un'importanza speciale: il kernel.</p>
918
919       <p>Il kernel ha il compito di far funzionare l'hardware
920       (tastiera, monitor, RAM, CPU) e di attribuire le risorse di
921       sistema agli altri processi, ne consegue che un
922       malfunzionamento nel kernel (<em>kernel panic</em>) puo'
923       compromettere qualunque altro processo in esecuzione.
924       Considerando che il kernel gestisce anche le periferiche di
925       input / output, nel caso di blocco del kernel l'intera
926       macchina potrebbe diventare irraggiungibile. In questo caso
927       l'unita soluzione sarebbe un <em>rese</em> hardware della
928       scheda madre, con conseguente perdita di tutti i dati in 3 e
929       possibile corruzione dei filesystem.</p>
930
931       <p>Il kernel gestisce l'attribuzione della memoria RAM tra i
932       vari processi in esecuzione: tramite la protezione della
933       <a class="reference external" href=
934       "http://it.wikipedia.org/wiki/Memoria_protetta">memoria</a>
935       si evita che un applicativo andato fuori controllo possa
936       trasbordare nello spazio RAM di un altro, compromettendo
937       anche questo e magari l'intero sistema. La protezione della
938       memoria e' una funzione necessaria per garantire l'efficenza
939       del multitasking.</p>
940
941       <p>Debian utilizza un Kernel Linux. Windows attualmente usa
942       un kernel di derivazione NT. Mac OSX utilizza un kernel
943       "Darwin" su un sistema operativo derivato da BSD (Unix). Il
944       sistema operativo e' composto da una serie di processi che
945       girano sopra il kernel. I software applicativi a loro volta
946       girano sul sistema operativo.</p>
947
948       <p>Il kernel e' sostituibile e aggiornabile rispetto al
949       sistema operativo.</p>
950
951       <table border="1" class="docutils">
952         <colgroup>
953           <col width="44%">
954           <col width="56%">
955         </colgroup>
956
957         <tbody valign="top">
958           <tr>
959             <td>Gnu/Linux</td>
960
961             <td>OS</td>
962           </tr>
963
964           <tr>
965             <td>Linux</td>
966
967             <td>kernel</td>
968           </tr>
969
970           <tr>
971             <td>Microsoft Windows XP</td>
972
973             <td>OS</td>
974           </tr>
975
976           <tr>
977             <td>NT</td>
978
979             <td>kernel di MS Windows XP</td>
980           </tr>
981         </tbody>
982       </table>
983     </div>
984
985     <div class="section" id="le-distribuzioni">
986       <h1><a class="toc-backref" href="#id28">Le
987       distribuzioni</a></h1>
988
989       <p>Differenze principali tra le varie distribuzioni:</p>
990
991       <blockquote>
992         <blockquote>
993           <ul class="simple">
994             <li>utility di installazione</li>
995
996             <li>gestione dei pacchetti: es dpkg e RPM (portage e
997             altri)</li>
998
999             <li>numero e qualita' dei pacchetti</li>
1000
1001             <li>licenze</li>
1002
1003             <li>target di utilizzo</li>
1004
1005             <li>tempi di rilascio</li>
1006           </ul>
1007         </blockquote>
1008
1009         <ul class="simple">
1010           <li><a class="reference external" href=
1011           "http://it.wikipedia.org/wiki/Distribuzione_Linux">http://it.wikipedia.org/wiki/Distribuzione_Linux</a></li>
1012
1013           <li><a class="reference external" href=
1014           "http://it.wikipedia.org/wiki/Categoria:Distribuzioni_Linux">
1015           http://it.wikipedia.org/wiki/Categoria:Distribuzioni_Linux</a></li>
1016         </ul>
1017       </blockquote>
1018     </div>
1019
1020     <div class="section" id="memoria-virtuale">
1021       <h1><a class="toc-backref" href="#id29">Memoria
1022       virtuale</a></h1>
1023
1024       <p>O memoria di swap. Si utilizza quando il sistema esaurisce
1025       la RAM fisicamente disponibile. Si utilizza un altro supporto
1026       di storaggio per sopperire alla mancanza di RAM. Tipicamente
1027       viene usato l'hard disk, che e' piu' lento della RAM.</p>
1028
1029       <p>Con il termine swap si intende, in informatica,
1030       l'estensione della capacita'Ã&nbsp; della memoria volatile
1031       complessiva del computer, oltre il limite imposto dalla
1032       quantita'Ã&nbsp; di RAM installata, attraverso l'utilizzo di
1033       uno spazio su un altro supporto fisico, ad esempio il disco
1034       fisso.</p>
1035
1036       <p>A seconda del sistema operativo utilizzato è possibile
1037       avere file di swap (chiamato anche 'Memoria virtuale'),
1038       residenti nel normale file system del sistema, oppure
1039       partizioni di swap, cioe'è sezioni di disco integralmente
1040       dedicate allo swap ed inizializzate con un proprio specifico
1041       tipo di file system. L'uso della partizione è generalmente
1042       migliore dal punto vista delle prestazioni, perché evita che
1043       lo swap vada soggetto alla tipica di alcuni file system. Per
1044       contro, occupa una delle (poche) partizioni disponibili sul
1045       disco fisso.</p>
1046
1047       <p>In pratica, quando la memoria RAM libera non è più
1048       sufficiente per contenere tutte le informazioni che servono
1049       ai programmi, il sistema operativo si fa carico di spostare
1050       una certa quantita'Ã&nbsp; di dati (quelli meno recentemente
1051       utilizzati) dalla memoria volatile a quella di massa,
1052       liberando quindi una parte della RAM per permettere il
1053       corretto funzionamento dei programmi. Ã&circ; chiaro che nel
1054       momento in cui si rende necessaria tale operazione, le
1055       prestazioni del sistema crollano bruscamente, essendo la
1056       scrittura su hard disk molto più lenta di quella in RAM
1057       (oltre cento volte, al 2006).</p>
1058
1059       <div class="section" id="swap-space-per-linux">
1060         <h2><a class="toc-backref" href="#id30">Swap space per
1061         Linux</a></h2>
1062
1063         <p>Sui sistemi basati sul kernel di Linux viene creata una
1064         partizione con un file-system dedicato per la memoria
1065         virtuale: una o piu' cosidette <em>partizioni di
1066         swap</em>.</p>
1067
1068         <p>Per le normali work-station si segue la regola di creare
1069         una partizione di swap pari al doppio della memoria RAM, ma
1070         non superiore a <tt class="docutils literal"><span class=
1071         "pre">512MB</span></tt> (questo per via della buona
1072         ottimizzazione del gestore della memoria di Linux:
1073         raramente nell'uso normale si arriva ad aver bisogno di
1074         piu' di <tt class="docutils literal"><span class=
1075         "pre">512MB</span></tt> di swap.</p>
1076
1077         <p>Caso particolare sono i portatili: vista la lentezza
1078         degli Hard Disk dei portatili e il maggior consumo
1079         elettrico causato dall'utilizzo di questi supporti per lo
1080         swap si tende ad avere un po' piu' di RAM (<tt class=
1081         "docutils literal"><span class="pre">512MB</span>
1082         <span class="pre">-</span> <span class=
1083         "pre">1GB</span></tt>) ed evitare completamente lo spazio
1084         di swap. Ma attenzione: se si vuole utilizzare il
1085         <em>Suspend to disk</em> (<a class="reference external"
1086         href=
1087         "http://www.e-moka.net/2005/06/20/suspend-to-ramdisk-con-linux/">S4</a>)
1088         servira' una partizione di swap pari a circa il doppio
1089         della RAM.</p>
1090       </div>
1091     </div>
1092
1093     <div class="section" id="devices-a-blocchi">
1094       <h1><a class="toc-backref" href="#id31">Devices a
1095       blocchi</a></h1>
1096
1097       <p>I device a blocchi sono suddividisibili in blocchi (unita)
1098       ed e' possibile scrivere e/o leggere su questi (input/output)
1099       Ad esempio gli hard disk o i supporti di storaggio in
1100       generale sono visti dal kernel come block device. Tipicamente
1101       per poterli utilizzare al fine dello storaggio dati sara'
1102       necessario creare un filesystem su di essi.</p>
1103     </div>
1104
1105     <div class="section" id="devices-a-caratteri-seriali">
1106       <h1><a class="toc-backref" href="#id32">Devices a caratteri
1107       (seriali)</a></h1>
1108
1109       <p>I device seriali sono continui, e non prevedono il
1110       "ritorno" (si pensi a una stampante, o all'output delle
1111       casse, a un terminale seriale) <a class="footnote-reference"
1112       href="#id5" id="id4" name="id4">[2]</a>.</p>
1113
1114       <table class="docutils footnote" frame="void" id="id5" rules=
1115       "none">
1116         <colgroup>
1117           <col class="label">
1118           <col>
1119         </colgroup>
1120
1121         <tbody valign="top">
1122           <tr>
1123             <td class="label"><a class="fn-backref" href=
1124             "#id4">[2]</a></td>
1125
1126             <td>Questa definizione di device a <em>caratteri</em>
1127             non e' esatta, ma allo stato attuale delle nostre
1128             conoscenze e necessita' risulta piu' utile
1129             caratterizzare i due tipi di device dal punto di vista
1130             funzionale. Una definizione piu' <em>tecnica</em> di
1131             questo particolare tipo di device dovrebbe citare il
1132             fatto che questi in genere non supportano <a class=
1133             "reference external" href=
1134             "http://it.wikipedia.org/wiki/Buffer_(informatica)">buffers</a>
1135             e non permettono di accedere ai dati in modalita'
1136             <a class="reference external" href=
1137             "http://en.wikipedia.org/wiki/Random_access">random_access</a>.
1138             Oltre al fatto che trattano singoli caratteri per volta
1139             invece che per <em>blocchi</em> di dati.</td>
1140           </tr>
1141         </tbody>
1142       </table>
1143     </div>
1144
1145     <div class="section" id="dati">
1146       <h1><a class="toc-backref" href="#id33">Dati</a></h1>
1147
1148       <div class="section" id="dato">
1149         <h2><a class="toc-backref" href="#id34">Dato</a></h2>
1150
1151         <p>Il termine dati e' fondamentale nell'informatica,
1152         essendo i dati l'oggetto e il risultato di tutto il nostro
1153         lavoro.</p>
1154
1155         <p>Potremmo definire un dato come un'informazione
1156         elementare, significativa ed autonoma.</p>
1157
1158         <p>Si prenda ad esempio un sistema realizzato per gestire
1159         elettronicamente la contabilita': il guadagno del mese di
1160         Gennaio 2009 potrebbe essere <tt class=
1161         "docutils literal"><span class="pre">1200</span></tt>.
1162         Oppure l'indirizzo di un contatto <tt class=
1163         "docutils literal"><span class="pre">Via</span>
1164         <span class="pre">Mazzini</span> <span class=
1165         "pre">8</span></tt>.</p>
1166
1167         <p>Questi <em>valori</em> possono essere l'oggetto di
1168         elaborazioni, o il risultato di procedure che hanno
1169         manipolato altri dati.</p>
1170       </div>
1171
1172       <div class="section" id="metadato">
1173         <h2><a class="toc-backref" href="#id35">Metadato</a></h2>
1174
1175         <p>I metadati sono informazioni che qualificano i dati.
1176         Essi non hanno un'esistenza e un valore autonomo, sono
1177         funzionali ai dati che descrivono e senza di essi non
1178         avrebbero valore.</p>
1179
1180         <p>Tornando al precedente esempio del software per la
1181         contabilita', <tt class="docutils literal"><span class=
1182         "pre">Gennaio</span> <span class="pre">2009</span></tt>
1183         potrebbe essere un metadato, in quanto la sua funzione e'
1184         di descrivere il periodo a cui fa riferimento il dato
1185         <tt class="docutils literal"><span class=
1186         "pre">1200</span></tt>. Senza quest'ultimo non ci
1187         interesserebbe sprecare risorse di storaggio per conservare
1188         <tt class="docutils literal"><span class=
1189         "pre">Gennaio</span> <span class=
1190         "pre">2009</span></tt>.</p>
1191
1192         <table border="1" class="docutils">
1193           <colgroup>
1194             <col width="35%">
1195             <col width="65%">
1196           </colgroup>
1197
1198           <thead valign="bottom">
1199             <tr>
1200               <th class="head">Dato</th>
1201
1202               <th class="head">Metadato</th>
1203             </tr>
1204           </thead>
1205
1206           <tbody valign="top">
1207             <tr>
1208               <td>1200</td>
1209
1210               <td>Gennaio 2009</td>
1211             </tr>
1212           </tbody>
1213         </table>
1214
1215         <p>Spesso i metadati vengono utilizzati per stabilire le
1216         relazioni tra i vari dati, in modo da poterli
1217         caratterizzare e distinguere tra loro. Si pensi a un
1218         supporto di storaggio in cui vengano mantenuti terabytes di
1219         dati: senza la possibilita' di distinguerli l'uno dagli
1220         altri diventerebbero inutili (o meglio inutilizzabili),
1221         maggiore e' il numero dei dati tanto piu' si avverte la
1222         necessita' di caratterizzarli in modo da poterli
1223         <em>gestire</em> piu' facilmente e <em>incrociarli</em> tra
1224         loro in modo da ottenere le informazioni che veramente ci
1225         interessano.</p>
1226
1227         <p>Si tenga conto che buona parte dell'informatica consiste
1228         nello storaggio di <em>enormi</em> quantitativi di dati
1229         (che bisognera' essere in grado di distinguere e
1230         recuperare), e la funzione fondamentale degli elaboratori
1231         e' la capacita' di confrontare rapidamente questi dati tra
1232         loro. Quindi con l'aumentare del numero dei dati i metadati
1233         diventano sempre piu' importanti e <em>significativi</em>.
1234         Si pensi alla natura dei <a class="reference external"
1235         href="http://it.wikipedia.org/wiki/Database">database</a>.</p>
1236       </div>
1237     </div>
1238
1239     <div class="section" id="i-filesystem">
1240       <h1><a class="toc-backref" href="#id36">I filesystem</a></h1>
1241
1242       <div class="section" id="file">
1243         <h2><a class="toc-backref" href="#id37">File</a></h2>
1244
1245         <p>Un file e' un insieme di dati con un inizio e una fine
1246         identificabile in mezzo ad altri.</p>
1247
1248         <dl class="docutils">
1249           <dt>Quindi avremo:</dt>
1250
1251           <dd>
1252             <ul class="first last simple">
1253               <li>un identificatore, come un <tt class=
1254               "docutils literal"><span class=
1255               "pre">nome_file</span></tt> accoppiato al suo
1256               <em>percorso</em> sul file system (possono esserci
1257               molti file con lo stesso nome ma non possono esserci
1258               due file on lo stesso nome nella stessa
1259               cartella).</li>
1260
1261               <li>Un qualche <em>sistema</em> per recuperare quel
1262               file in mezzo ad altri. Ad esempio potremmo pensare,
1263               in un sistema molto rudimentale, a una coppia di
1264               coordinate che ci permettano di identificare il punto
1265               di inizio e il termine su un block device.</li>
1266             </ul>
1267           </dd>
1268         </dl>
1269
1270         <table border="1" class="docutils">
1271           <colgroup>
1272             <col width="50%">
1273             <col width="23%">
1274             <col width="27%">
1275           </colgroup>
1276
1277           <thead valign="bottom">
1278             <tr>
1279               <th class="head" colspan="3">Filestem elementare</th>
1280             </tr>
1281
1282             <tr>
1283               <th class="head">Identificatore</th>
1284
1285               <th class="head">inizio</th>
1286
1287               <th class="head">fine</th>
1288             </tr>
1289           </thead>
1290
1291           <tbody valign="top">
1292             <tr>
1293               <td>pippo</td>
1294
1295               <td>12</td>
1296
1297               <td>21</td>
1298             </tr>
1299           </tbody>
1300         </table>
1301       </div>
1302
1303       <div class="section" id="filesystem">
1304         <h2><a class="toc-backref" href="#id38">Filesystem</a></h2>
1305
1306         <p>Il file system e' una struttura logica che ci permette
1307         di individuare i diversi file. Sostanzialmente e'
1308         un'insieme di metadati che caratterizzano i singoli file
1309         piu' quanto necessario per poterli gestire.</p>
1310
1311         <p>Alcuni esempi: e' il filesytem a poter caratterizzare i
1312         file con propietari, gruppi, permessi (lettura, scrittura,
1313         esecuzione), data di creazione e cosi' via. Alcuni
1314         filesytem permettono certe funzionalita', altri (sopratutto
1315         quelli piu' datati) sono piu' <em>rudimentali</em>.</p>
1316
1317         <p>Tipicamente i filesystem sono strutturati secondo un
1318         modello gerarchico basato su <em>files e cartelle</em>:
1319         quindi per poter identificare un file ci serve il suo
1320         <em>nome proprio</em> piu' il suo <em>percorso</em> nella
1321         struttura del filesystem. Il progressivo aumento del numero
1322         dei files sta cominciando a far sentire i limiti di questo
1323         modello.</p>
1324
1325         <p>Con l'aumentare delle informazioni tendono ad essere
1326         piu' efficaci modelli relazionali, che permettono di
1327         interagire coi file in modo simile a un database. Ad
1328         esempio pensiamo alle librerie che contengono centinaia di
1329         migliaia di brani musicali MP3, oppure migliaia di
1330         fotografie: cercare di gestirli tramite nome del file e
1331         cartelle diventa poco pratico. Meglio raggrupparli per
1332         autore, data, album o quant'altro si adatti alla loro
1333         natura e al loro utilizzo.</p>
1334
1335         <p>Tabella di allocazione files</p>
1336
1337         <p>non solo su device fisici: esempio NFS</p>
1338
1339         <p>File system distribuito: citati il NBD e ATA over
1340         ethernet</p>
1341       </div>
1342     </div>
1343
1344     <div class="section" id="gestione-dei-pacchetti">
1345       <h1><a class="toc-backref" href="#id39">Gestione dei
1346       Pacchetti</a></h1>
1347
1348       <p>Un Sistema di gestione dei pacchetti e' una collezione di
1349       strumenti che automatizzano il processo di installazione,
1350       aggiornamento, configurazione e rimozione dei pacchetti
1351       software di un computer.</p>
1352
1353       <p>Tali strumenti sono diffusi tipicamenti sui sistemi basati
1354       su software libero, in quanto i gestori della distribuzione
1355       (cosidetti <em>mantainers</em>) avendo accesso al codice
1356       sorgente del software hanno la possibilita' di prepararne una
1357       versione ottimizzata e adattata all'infrastruttura del
1358       sistema operativo (si pensi a librerie condivise, API,
1359       standard per la collocazione dei files di importanza
1360       particolare).</p>
1361
1362       <p>Cerchiamo di capire meglio il processo: L'autore /
1363       sviluppatore di un software (ad esempio un browser web come
1364       Mozilla Firefox) rilascia il suo lavoro con una licenza
1365       libera, che prevede la possibilita' di ottenere il codice
1366       sorgente, modificarlo e redistribuirlo. A questo punto un
1367       <strong>mantainer</strong> della distribuzione, che non deve
1368       per forza essere l'autore del software originale, scarica il
1369       sorgente, lo modifica in modo che si integri con gli altri
1370       software del sistema operativo, preoccupandosi che i file di
1371       configurazione, temporanei, ecc. vengano collocati sul
1372       file-system in modo analogo agli altri software del sistema
1373       operativo, in modo da ottenere un sistema il piu' possibile
1374       omogeneo e <em>strutturato</em>. Il mantainer quindi non
1375       introduce nuove funzionalita' nel software (per lo meno non
1376       nella distribuzione di cui si occupa, nel caso provvederebbe
1377       a fornire le modifiche all'autore in modo che sia lui stesse
1378       ad integrarle nella versione <em>ufficiale</em>, cosi' che
1379       poi anche chi non usa quella determinata distribuzione possa
1380       avantaggiarsene): si limita ad <em>adattarlo</em> perche
1381       possa ben funzionare nella distribuzione.</p>
1382
1383       <p>Quindi possiamo dire che un software come ad es. Apache o
1384       Firefox sono funzionalmente identici in ogni distribuzione,
1385       cambia solo il loro livello di integrazione nel sistema
1386       operativo. Come gia' detto le distribuzioni si caratterizzano
1387       per la <em>qualita'</em> di questa integrazione, il numero di
1388       pacchetti che riescono a gestire, l'efficacia dei software di
1389       installazione / aggiornamento / rimozione.</p>
1390
1391       <p>Non ultima per importanza: l'attenzione alle problematiche
1392       legate alla sicurezza. Infatti e' bene tener presente che
1393       sara' il mantainer a dover provvedere tempestivamente
1394       all'aggiornamento del pacchetto in caso di problemi di
1395       sicurezza, dato che l'utente finale non interagisce
1396       direttamente con l'autore del software. Il che puo' porre il
1397       seguente problema: quando l'autore rileva un problema tende
1398       spesso a risolverlo con una versione aggiornata del software
1399       (quindi si passa ad es dalla versione 1.0 alla 1.1 , e gia'
1400       che si rilascia magari si coglie l'occasione per introdurre
1401       nuove funzionalita'). Ma una distribuzione per essere
1402       definita <em>stabile</em> <strong>deve</strong> rimanere
1403       costante, altrimenti diventa impossibile controllare
1404       possibili conflitti tra i diversi software. In questo caso,
1405       le i mantainers delle distribuzioni dedicate al <em>lato
1406       server</em> o comunque con particolare vocazione alla
1407       sicurezza, si attivano per <em>portare</em> loro stessi i
1408       soli aggiornamente della sicurezza alla versione precedente
1409       del software in modo che eventuali nuove funzionalita' non
1410       possano rischiare di compromettere l'interazione del software
1411       con altri presenti sul sistema.</p>
1412
1413       <p>Distribuzioni come <em>Debian</em> lavorano in questo
1414       modo, altre preferiscono un approccio piu'
1415       <em>rilassato</em>: tipicamente perche mettono a disposizione
1416       dell'utente software aggiornato piu' frequentemente,
1417       atteggiamento molto gradito sulle <em>work station</em> degli
1418       utenti che possono cosi' avvantaggiarsi piu' rapidamente di
1419       nuove funzionalita'. Se il software viene aggiornato
1420       <em>molto rapidamente</em> l'utente fianale non puo'
1421       aspettarsi che l'integrazione tra i vari pacchetti sia stata
1422       testata per lunghi periodi!</p>
1423
1424       <p>Cio' non toglie che gli utenti di Debian possano decidere
1425       di utilizzare le release <em>Sid/unstable</em> o
1426       <em>testing</em> che vengono aggiornate quotidianamente. Ma
1427       sulle macchine che devono restare stabili senza creare
1428       problemi quotidianamente si puo' contare sulla versione
1429       <em>stable</em>, che garantisce due o tre anni di
1430       <em>ragionevole quiete senza sorprese</em>. Dal momento in
1431       cui si raggiunge la stabilita' del sistema con le
1432       funzionalita' richieste, in ambiente <em>aziendale</em> non
1433       si avverte la necessita' di avere sempre a disposizione
1434       l'ultima release disponibile di un software col rischio che
1435       si possano verificare problemi. Un software appena rilasciato
1436       non puo' vantare stabilita': questa infatti non e' un
1437       concetto <em>assoluto</em>: la stabilita' si ottiene facendo
1438       girare sempre la stessa versione del software sul piu' ampio
1439       bacino di utenza in modo da poter individuare e risolvere gli
1440       eventuali problemi che mano a mano si individuano. La
1441       stabilita', per quanto riguarda il software
1442       <em>consumer</em>, e' relativa (allo stesso modo la
1443       <em>sicurezza</em> non e' uno <em>status</em> ma piuttosto un
1444       <em>processo</em>: i problemi si possono sempre verificare,
1445       tutto sta nella capacita' e tempi di reazione per risolverli
1446       con aggiornamenti).</p>
1447
1448       <p>Ci sono 3 principali gestori di pacchetti in generale:</p>
1449
1450       <table border="1" class="docutils">
1451         <colgroup>
1452           <col width="25%">
1453           <col width="44%">
1454           <col width="31%">
1455         </colgroup>
1456
1457         <thead valign="bottom">
1458           <tr>
1459             <th class="head" colspan="3">Gestori di pacchetti</th>
1460           </tr>
1461
1462           <tr>
1463             <th class="head">Nome</th>
1464
1465             <th class="head">Distro</th>
1466
1467             <th class="head">estensione</th>
1468           </tr>
1469         </thead>
1470
1471         <tbody valign="top">
1472           <tr>
1473             <td><a class="reference external" href=
1474             "http://it.wikipedia.org/wiki/Dpkg">DPKG</a></td>
1475
1476             <td>Debian</td>
1477
1478             <td>.deb</td>
1479           </tr>
1480
1481           <tr>
1482             <td><a class="reference external" href=
1483             "http://it.wikipedia.org/wiki/RPM_Package_Manager">RPM</a></td>
1484
1485             <td>Red Hat</td>
1486
1487             <td>.rpm</td>
1488           </tr>
1489
1490           <tr>
1491             <td><a class="reference external" href=
1492             "http://it.wikipedia.org/wiki/Portage">Portage</a></td>
1493
1494             <td>Unix</td>
1495
1496             <td>---</td>
1497           </tr>
1498         </tbody>
1499       </table>
1500
1501       <p>Lo stesso software viene pacchettizzato in
1502       <em>formati</em> diversi (deb,rpm,...)</p>
1503
1504       <p>In alternativa c'e' generalmente una versione binaria
1505       generica del software, che viene distribuita con un archivio
1506       (targz ). Questo non usufruisce delle agevolazioni e
1507       integrazioni offerte dal gestore dei pacchetti della
1508       distro.</p>
1509
1510       <p>In alternativa per tutto il software libero e' sempre
1511       disponibile il codice sorgente da compilare in un binario
1512       eseguibile. Permette l'ottimizzazione e la customizzazione
1513       del software. Portage si basa su questo sistema: si scaricano
1514       i sorgenti modificati e poi si compilano. Si faccia
1515       attenzione all'ottimizzazione: dipende da chi la fa...</p>
1516
1517       <p>Per la gestione dei pacchetti su distribuzioni Debian o
1518       derivate (quindi anche Ubuntu) si legga: l'Apt Howto =
1519       <a class="reference external" href=
1520       "http://www.debian.org/doc/manuals/apt-howto/index.it.html">http://www.debian.org/doc/manuals/apt-howto/index.it.html</a></p>
1521
1522       <dl class="docutils">
1523         <dt>DPKG</dt>
1524
1525         <dd>Il gestore dei pacchetti. Il software che si occupa
1526         dell'istallazione, rimozione e risoluzione dei conflitti e
1527         dipendenze. Apt e' il <em>front-end</em> di DPKG.</dd>
1528       </dl>
1529     </div>
1530
1531     <div class="section" id="elementi">
1532       <h1><a class="toc-backref" href="#id40">Elementi:</a></h1>
1533
1534       <div class="section" id="dipendenze">
1535         <h2><a class="toc-backref" href="#id41">Dipendenze</a></h2>
1536
1537         <p>Talvolta un pacchetto per poter funzionare necessita di
1538         un altro pacchetto. Si deve quindi installare anche l'altro
1539         oltre a quello richiesto.</p>
1540
1541         <p>Il software di installazione si preoccupa quindi
1542         dell'ordine in cui installare i vari pacchetti (dato che il
1543         pacchetto dovrebbe essere un'entita' indipendente /
1544         modulare rispetto agli altri pacchetti) e la configurazione
1545         di tutti e del sistema. Per i pacchetti rimossi vengono
1546         tolte anche le dipendenze quando queste non compromettano
1547         altri software, in caso di incomprensioni si puo' usare il
1548         comando <tt class="docutils literal"><span class=
1549         "pre">apt-get</span> <span class=
1550         "pre">autoremove</span></tt> (su sistemi dotati di
1551         DPKG).</p>
1552
1553         <p>Si tenga presente che Debian, di default, quando rimuove
1554         un pacchetto non elimina i file di configurazione dello
1555         stesso, nel caso si deve usare l'opzione <tt class=
1556         "docutils literal"><span class="pre">--purge</span></tt>.
1557         In questo modo se l'utente rimuove un particolare software
1558         per provare un alternativa o liberare dello spazio
1559         temporaneamente, al momento opportuno re-installando lo
1560         stesso software questi si comportera' esattamente come
1561         quando era presente sul sistema. E' doverso far notare che
1562         in caso di problemi di configurazione di un programma
1563         l'idea di rimuoverlo per poi re-installarlo sia poco seria:
1564         i problemi vanno tracciati e risolti, non evitati. In caso
1565         contrario ripeteranno. Piuttosto si faccia sempre un una
1566         copia di <em>back-up</em> del file di configurazione
1567         <strong>prima</strong> di cominciare a modificarlo, in modo
1568         che in caso non si riesca ad arrivare ad arrivare nei tempi
1569         richiesti ad una nuova configurazione funzionale si possa
1570         per lo meno tornare alla precedente.</p>
1571
1572         <p>Stessa cosa per la rimozione per dpkg, ma Portage non
1573         permette la rimozione di software.</p>
1574       </div>
1575
1576       <div class="section" id="conflitti">
1577         <h2><a class="toc-backref" href="#id42">Conflitti</a></h2>
1578
1579         <p>Alcuni software non possono essere presenti sul sistema
1580         contemporaneamente ad altri. Si pensi a un server di posta
1581         (o a qualunque servizio che ascolta su una porta
1582         determinata), o a versioni incompatibili dello
1583         <em>stesso</em> software. In questo caso il gestore di
1584         pacchetti avvertira' l'utente che al momento
1585         dell'installazione del software richiesto verranno rimossi
1586         i pacchetti in conflitto.</p>
1587       </div>
1588     </div>
1589   </div>
1590 </body>
1591 </html>