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">
5 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="it" lang="it">
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/" />
14 <title>Sistemi operativi</title>
15 <style type="text/css">
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.
23 Default cascading style sheet for the HTML output of Docutils.
25 See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
26 customize this style sheet.
29 /* used to remove borders from tables and images */
30 .borderless, table.borderless td, table.borderless th {
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 }
39 /* Override more specific margin styles with "! important". */
40 margin-top: 0 ! important }
42 .last, .with-subtitle {
43 margin-bottom: 0 ! important }
49 text-decoration: none ;
56 margin-bottom: 0.5em }
58 /* Uncomment (and remove this text!) to get bold-faced definition list terms
66 div.abstract p.topic-title {
70 div.admonition, div.attention, div.caution, div.danger, div.error,
71 div.hint, div.important, div.note, div.tip, div.warning {
73 border: medium outset ;
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 {
80 font-family: sans-serif }
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 {
87 font-family: sans-serif }
89 /* Uncomment (and remove this text!) to get reduced vertical space in
91 div.compound .compound-first, div.compound .compound-middle {
92 margin-bottom: 0.5em }
94 div.compound .compound-last, div.compound .compound-middle {
103 div.dedication p.topic-title {
111 div.footer, div.header {
120 div.line-block div.line-block {
126 margin: 0 0 0.5em 1em ;
127 border: medium outset ;
129 background-color: #ffffee ;
134 div.sidebar p.rubric {
135 font-family: sans-serif ;
138 div.system-messages {
141 div.system-messages h1 {
145 border: medium outset ;
148 div.system-message p.system-message-title {
155 h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
156 h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
174 ol.simple, ul.simple {
178 list-style: decimal }
181 list-style: lower-alpha }
184 list-style: upper-alpha }
187 list-style: lower-roman }
190 list-style: upper-roman }
204 white-space: nowrap }
213 font-family: sans-serif ;
218 font-family: sans-serif ;
230 pre.literal-block, pre.doctest-block {
235 font-family: sans-serif ;
236 font-style: oblique }
238 span.classifier-delimiter {
239 font-family: sans-serif ;
243 font-family: sans-serif }
246 white-space: nowrap }
254 span.section-subtitle {
255 /* font-size relative to parent (h1..h6 element) */
259 border-left: solid 1px gray;
267 margin-bottom: 0.5em }
270 border-left: solid 1px black;
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 }
279 table.docutils th.field-name, table.docinfo th.docinfo-name {
282 white-space: nowrap ;
285 h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
286 h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
290 list-style-type: none }
297 <div class="document" id="sistemi-operativi">
298 <h1 class="title">Sistemi operativi</h1>
300 <h2 class="subtitle" id=
301 "appunti-introduttivi-ai-sistemi-operativi">Appunti
302 introduttivi ai sistemi operativi</h2>
305 <table class="docutils field-list" frame="void" rules="none">
306 <col class="field-name" />
307 <col class="field-body" />
311 <th class="field-name">Author:</th>
313 <td class="field-body">Andrea Manni</td>
317 <th class="field-name">Copyright:</th>
319 <td class="field-body">GFDL</td>
323 <th class="field-name">Version:</th>
325 <td class="field-body">1.5</td>
331 <div class="contents topic" id="indice">
332 <p class="topic-title first">Indice</p>
336 <a class="reference internal" href="#sistema-operativo"
337 id="id4" name="id4">Sistema operativo</a>
340 <li><a class="reference internal" href=
341 "#concetti-introduttivi" id="id5" name="id5">Concetti
342 introduttivi</a></li>
344 <li><a class="reference internal" href="#hardware" id=
345 "id6" name="id6">Hardware:</a></li>
347 <li><a class="reference internal" href="#software" id=
348 "id7" name="id7">Software:</a></li>
350 <li><a class="reference internal" href="#input" id=
351 "id8" name="id8">Input</a></li>
353 <li><a class="reference internal" href="#output" id=
354 "id9" name="id9">Output</a></li>
356 <li><a class="reference internal" href="#errors" id=
357 "id10" name="id10">Errors</a></li>
360 <a class="reference internal" href=
361 "#interfaccia-utente" id="id11" name=
362 "id11">Interfaccia utente</a>
365 <li><a class="reference internal" href=
366 "#riga-di-comando" id="id12" name="id12">Riga di
369 <li><a class="reference internal" href=
370 "#interfaccia-grafica" id="id13" name=
371 "id13">Interfaccia grafica</a></li>
373 <li><a class="reference internal" href=
374 "#touch-screen" id="id14" name="id14">Touch
382 <a class="reference internal" href=
383 "#caratteristiche-di-un-sistema-operativo" id="id15"
384 name="id15">Caratteristiche di un Sistema Operativo</a>
387 <li><a class="reference internal" href="#multitasking"
388 id="id16" name="id16">Multitasking</a></li>
390 <li><a class="reference internal" href="#multiutenza"
391 id="id17" name="id17">Multiutenza</a></li>
395 <li><a class="reference internal" href="#id1" id="id18"
396 name="id18">Sistema operativo</a></li>
399 <a class="reference internal" href=
400 "#i-vari-sistemi-operativi" id="id19" name="id19">I vari
401 Sistemi Operativi</a>
404 <li><a class="reference internal" href="#ms-windows"
405 id="id20" name="id20">MS Windows</a></li>
407 <li><a class="reference internal" href="#unix" id=
408 "id21" name="id21">Unix</a></li>
410 <li><a class="reference internal" href="#gnu-linux" id=
411 "id22" name="id22">Gnu/Linux</a></li>
413 <li><a class="reference internal" href="#bsd" id="id23"
414 name="id23">BSD</a></li>
416 <li><a class="reference internal" href="#apple-mac-os"
417 id="id24" name="id24">Apple Mac OS</a></li>
421 <li><a class="reference internal" href="#kernel" id="id25"
422 name="id25">Kernel</a></li>
424 <li><a class="reference internal" href="#le-distribuzioni"
425 id="id26" name="id26">Le distribuzioni</a></li>
428 <a class="reference internal" href="#memoria-virtuale"
429 id="id27" name="id27">Memoria virtuale</a>
432 <li><a class="reference internal" href=
433 "#swap-space-per-linux" id="id28" name="id28">Swap
434 space per Linux</a></li>
438 <li><a class="reference internal" href="#devices-a-blocchi"
439 id="id29" name="id29">Devices a blocchi</a></li>
441 <li><a class="reference internal" href=
442 "#devices-a-caratteri-seriali" id="id30" name=
443 "id30">Devices a caratteri (seriali)</a></li>
446 <a class="reference internal" href="#dati" id="id31"
450 <li><a class="reference internal" href="#dato" id=
451 "id32" name="id32">Dato</a></li>
453 <li><a class="reference internal" href="#metadato" id=
454 "id33" name="id33">Metadato</a></li>
459 <a class="reference internal" href="#i-filesystem" id=
460 "id34" name="id34">I filesystem</a>
463 <li><a class="reference internal" href="#file" id=
464 "id35" name="id35">File</a></li>
466 <li><a class="reference internal" href="#filesystem"
467 id="id36" name="id36">Filesystem</a></li>
471 <li><a class="reference internal" href=
472 "#gestione-dei-pacchetti" id="id37" name="id37">Gestione
473 dei Pacchetti</a></li>
476 <a class="reference internal" href="#elementi" id="id38"
477 name="id38">Elementi:</a>
480 <li><a class="reference internal" href="#dipendenze"
481 id="id39" name="id39">Dipendenze</a></li>
483 <li><a class="reference internal" href="#conflitti" id=
484 "id40" name="id40">Conflitti</a></li>
490 <p>Generato con: <a class="reference external" href=
491 "http://docutils.sourceforge.net/rst.html">http://docutils.sourceforge.net/rst.html</a></p>
493 <div class="section" id="sistema-operativo">
494 <h1><a class="toc-backref" href="#id4">Sistema
497 <div class="section" id="concetti-introduttivi">
498 <h2><a class="toc-backref" href="#id5">Concetti
499 introduttivi</a></h2>
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
508 <div class="section" id="hardware">
509 <h2><a class="toc-backref" href="#id6">Hardware:</a></h2>
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>.
522 <div class="section" id="software">
523 <h2><a class="toc-backref" href="#id7">Software:</a></h2>
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'
537 <div class="section" id="input">
538 <h2><a class="toc-backref" href="#id8">Input</a></h2>
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> ).
559 <div class="section" id="output">
560 <h2><a class="toc-backref" href="#id9">Output</a></h2>
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. ).
582 <div class="section" id="errors">
583 <h2><a class="toc-backref" href="#id10">Errors</a></h2>
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.
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>
609 <div class="section" id="interfaccia-utente">
610 <h2><a class="toc-backref" href="#id11">Interfaccia
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:
626 <div class="section" id="riga-di-comando">
627 <h3><a class="toc-backref" href="#id12">Riga di
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>
638 <div class="section" id="interfaccia-grafica">
639 <h3><a class="toc-backref" href="#id13">Interfaccia
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
654 <p>Generalmente si accompagna a un sistema di puntamento
655 come un mouse, touch pad, tavoletta grafica. track
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
667 <div class="section" id="touch-screen">
668 <h3><a class="toc-backref" href="#id14">Touch
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
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>
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
691 <div class="section" id="multitasking">
692 <h2><a class="toc-backref" href=
693 "#id16">Multitasking</a></h2>
696 Capacita' di un OS di eseguire piu' programmi
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>
706 <p>Una cellulare (si pensi ai vecchi modelli) o una piccola
707 calcolatrice invece possono eseguire solo un compito (task)
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>
717 <div class="section" id="multiutenza">
718 <h2><a class="toc-backref" href=
719 "#id17">Multiutenza</a></h2>
722 I sistemi multiutenti possono avere piu' utenti attivi
723 contemporaneamente (ma anche uno alla volta a seconda
724 della disponibilita' di input).
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>
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
762 <div class="section" id="id1">
763 <h1><a class="toc-backref" href="#id18">Sistema
766 <dl class="docutils">
767 <dt>Possiamo ora cercare di dare una definizione di sistema
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
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>
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
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>
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>
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>
827 <div class="section" id="i-vari-sistemi-operativi">
828 <h1><a class="toc-backref" href="#id19">I vari Sistemi
831 <p>Per ulteriori informazioni sulle caratteristiche di alcuni
832 dei sistemi operativi attualemnte in uso si seguano i
835 <div class="section" id="ms-windows">
836 <h2><a class="toc-backref" href="#id20">MS Windows</a></h2>
840 <li><a class="reference external" href=
841 "http://it.wikipedia.org/wiki/Windows">http://it.wikipedia.org/wiki/Windows</a></li>
846 <div class="section" id="unix">
847 <h2><a class="toc-backref" href="#id21">Unix</a></h2>
849 <p><a class="reference external" href=
850 "http://it.wikipedia.org/wiki/Unix">http://it.wikipedia.org/wiki/Unix</a></p>
853 <div class="section" id="gnu-linux">
854 <h2><a class="toc-backref" href="#id22">Gnu/Linux</a></h2>
858 <li><a class="reference external" href=
859 "http://it.wikipedia.org/wiki/Gnu/Linux">http://it.wikipedia.org/wiki/Gnu/Linux</a></li>
864 <div class="section" id="bsd">
865 <h2><a class="toc-backref" href="#id23">BSD</a></h2>
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>
873 <li><a class="reference external" href=
874 "http://it.wikipedia.org/wiki/FreeBSD">http://it.wikipedia.org/wiki/FreeBSD</a></li>
876 <li><a class="reference external" href=
877 "http://it.wikipedia.org/wiki/Openbsd">http://it.wikipedia.org/wiki/Openbsd</a></li>
882 <div class="section" id="apple-mac-os">
883 <h2><a class="toc-backref" href="#id24">Apple Mac
888 <li><a class="reference external" href=
889 "http://it.wikipedia.org/wiki/Mac_OS">http://it.wikipedia.org/wiki/Mac_OS</a></li>
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>
898 <div class="section" id="kernel">
899 <h1><a class="toc-backref" href="#id25">Kernel</a></h1>
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ù di uno, il kernel ha anche
908 la responsabilita'Ã di assegnare una porzione
909 di tempo-macchina e di accesso all'hardware a ciascun
910 programma (multitasking).
913 <p>Tra tutti i processi in esecuzione su un computer uno ha
914 un'importanza speciale: il kernel.</p>
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>
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>
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>
945 <p>Il kernel e' sostituibile e aggiornabile rispetto al
946 sistema operativo.</p>
948 <table border="1" class="docutils">
968 <td>Microsoft Windows XP</td>
976 <td>kernel di MS Windows XP</td>
982 <div class="section" id="le-distribuzioni">
983 <h1><a class="toc-backref" href="#id26">Le
984 distribuzioni</a></h1>
986 <p>Differenze principali tra le varie distribuzioni:</p>
991 <li>utility di installazione</li>
993 <li>gestione dei pacchetti: es dpkg e RPM (portage e
996 <li>numero e qualita' dei pacchetti</li>
1000 <li>target di utilizzo</li>
1002 <li>tempi di rilascio</li>
1007 <li><a class="reference external" href=
1008 "http://it.wikipedia.org/wiki/Distribuzione_Linux">http://it.wikipedia.org/wiki/Distribuzione_Linux</a></li>
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>
1017 <div class="section" id="memoria-virtuale">
1018 <h1><a class="toc-backref" href="#id27">Memoria
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>
1026 <p>Con il termine swap si intende, in informatica,
1027 l'estensione della capacita'Ã della memoria
1028 volatile complessiva del computer, oltre il limite imposto
1029 dalla quantita'Ã di RAM installata, attraverso
1030 l'utilizzo di uno spazio su un altro supporto fisico, ad
1031 esempio il disco fisso.</p>
1033 <p>A seconda del sistema operativo utilizzato è
1034 possibile avere file di swap (chiamato anche 'Memoria
1035 virtuale'), residenti nel normale file system del sistema,
1036 oppure partizioni di swap, cioe'è sezioni di
1037 disco integralmente dedicate allo swap ed inizializzate con
1038 un proprio specifico tipo di file system. L'uso della
1039 partizione è generalmente migliore dal punto
1040 vista delle prestazioni, perché evita che lo
1041 swap vada soggetto alla tipica di alcuni file system. Per
1042 contro, occupa una delle (poche) partizioni disponibili sul
1045 <p>In pratica, quando la memoria RAM libera non è
1046 più sufficiente per contenere tutte le
1047 informazioni che servono ai programmi, il sistema operativo
1048 si fa carico di spostare una certa quantita'Ã 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 È 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ù lenta di quella in RAM (oltre cento volte,
1058 <div class="section" id="swap-space-per-linux">
1059 <h2><a class="toc-backref" href="#id28">Swap space per
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
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>
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"
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
1092 <div class="section" id="devices-a-blocchi">
1093 <h1><a class="toc-backref" href="#id29">Devices a
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>
1104 <div class="section" id="devices-a-caratteri-seriali">
1105 <h1><a class="toc-backref" href="#id30">Devices a caratteri
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>
1113 <table class="docutils footnote" frame="void" id="id3" rules=
1116 <col class="label" />
1120 <tbody valign="top">
1122 <td class="label"><a class="fn-backref" href=
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>
1144 <div class="section" id="dati">
1145 <h1><a class="toc-backref" href="#id31">Dati</a></h1>
1147 <div class="section" id="dato">
1148 <h2><a class="toc-backref" href="#id32">Dato</a></h2>
1150 <p>Il termine dati e' fondamentale nell'informatica,
1151 essendo i dati l'oggetto e il risultato di tutto il nostro
1154 <p>Potremmo definire un dato come un'informazione
1155 elementare, significativa ed autonoma.</p>
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>
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>
1171 <div class="section" id="metadato">
1172 <h2><a class="toc-backref" href="#id33">Metadato</a></h2>
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>
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>
1191 <table border="1" class="docutils">
1197 <thead valign="bottom">
1199 <th class="head">Dato</th>
1201 <th class="head">Metadato</th>
1205 <tbody valign="top">
1209 <td>Gennaio 2009</td>
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
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>
1238 <div class="section" id="i-filesystem">
1239 <h1><a class="toc-backref" href="#id34">I filesystem</a></h1>
1241 <div class="section" id="file">
1242 <h2><a class="toc-backref" href="#id35">File</a></h2>
1244 <p>Un file e' un insieme di dati con un inizio e una fine
1245 identificabile in mezzo ad altri.</p>
1247 <dl class="docutils">
1248 <dt>Quindi avremo:</dt>
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
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>
1269 <table border="1" class="docutils">
1276 <thead valign="bottom">
1278 <th class="head" colspan="3">Filestem elementare</th>
1282 <th class="head">Identificatore</th>
1284 <th class="head">inizio</th>
1286 <th class="head">fine</th>
1290 <tbody valign="top">
1302 <div class="section" id="filesystem">
1303 <h2><a class="toc-backref" href="#id36">Filesystem</a></h2>
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>
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>
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
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>
1334 <p>Tabella di allocazione files</p>
1336 <p>non solo su device fisici: esempio NFS</p>
1338 <p>File system distribuito: citati il NBD e ATA over
1343 <div class="section" id="gestione-dei-pacchetti">
1344 <h1><a class="toc-backref" href="#id37">Gestione dei
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>
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
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>
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>
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>
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>
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>
1447 <p>Ci sono 3 principali gestori di pacchetti in generale:</p>
1449 <table border="1" class="docutils">
1456 <thead valign="bottom">
1458 <th class="head" colspan="3">Gestori di pacchetti</th>
1462 <th class="head">Nome</th>
1464 <th class="head">Distro</th>
1466 <th class="head">estensione</th>
1470 <tbody valign="top">
1472 <td><a class="reference external" href=
1473 "http://it.wikipedia.org/wiki/Dpkg">DPKG</a></td>
1481 <td><a class="reference external" href=
1482 "http://it.wikipedia.org/wiki/RPM_Package_Manager">RPM</a></td>
1490 <td><a class="reference external" href=
1491 "http://it.wikipedia.org/wiki/Portage">Portage</a></td>
1500 <p>Lo stesso software viene pacchettizzato in
1501 <em>formati</em> diversi (deb,rpm,...)</p>
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
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>
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>
1521 <dl class="docutils">
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>
1530 <div class="section" id="elementi">
1531 <h1><a class="toc-backref" href="#id38">Elementi:</a></h1>
1533 <div class="section" id="dipendenze">
1534 <h2><a class="toc-backref" href="#id39">Dipendenze</a></h2>
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>
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
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>
1571 <p>Stessa cosa per la rimozione per dpkg, ma Portage non
1572 permette la rimozione di software.</p>
1575 <div class="section" id="conflitti">
1576 <h2><a class="toc-backref" href="#id40">Conflitti</a></h2>
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>