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