03-02-2004

per commenti
osservazioni
critiche
e ringraziamenti
       
scrivi all'autore

Chiedi all'esperto -  Home
ViaLattea home

Che differenza c'è tra una partizione DOS primaria e una partizione DOS estesa?

(risponde Valerio Cecere)


Per chiarezza è bene partire dalle nozioni di base. Per prima cosa vediamo come funziona il meccanismo di avvio di un PC. Quando viene acceso, l'unico software presente è il BIOS (Basic Input Output System) che controlla una serie di dispositivi in un ordine modificabile tramite il programma di setup del BIOS stesso.

I BIOS moderni possono gestire diversi dispositivi per il BOOT della macchina, ma in questo momento ci interessano solo i dispositivi tradizionali di BOOT, come i floppy disk e gli hard-disk. Per effettuare il BOOT con un floppy, deve esistere sul floppy una piccola porzione del disco, in una posizione ben precisa, segnata come contenente informazioni di BOOT. Nello stesso modo, anche sugli hard-disk deve esserci questa sezione, che contiene effettivamente le procedure di base del sistema operativo (kernel). In questo caso però, essendo molto capienti, è molte volte consigliabile suddividerli in partizioni. Le informazioni sul partizionamento dell'hard-disk vengono scritte in un altro settore speciale e, tra le varie informazioni, c'è un flag per indicare quale sia la partizione avviabile che deve contenere il record di avvio, esattamente come per i floppy, con l'unica differenza che ora il settore con le informazioni di boot è su un settore qualsiasi del disco, ma comunque in una posizione ben precisa all'interno della partizione.

Possono esistere moltissimi tipi di partizione, ma in ogni caso l'unica differenza per il BIOS è il codice che ne identifica il tipo. Esiste una tabella universalmente riconosciuta che associa un numero a un tipo ben preciso di partizione. Il DOS prevedeva solo due tipi, una primaria che può essere avviabile, e una estesa che funge solo da contenitore per unità logiche (diciamo sotto partizioni). Le partizioni estese per definizione non possono contenere dati, ma solo una ulteriore tabella di partizionamento, che verrà usata per la definizione delle unità logiche. Questo meccanismo fondamentalmente permette l'estensione dei limiti della tabella delle partizioni, perché le sue ridotte dimensioni permetterebbero la definizione di al massimo quattro partizioni, mentre in questo modo è possibile definirne sette (tre primarie e una estesa con dentro altre quattro partizioni).

Per cui, rispondendo alla domanda, si può dire che la differenza principale è che una partizione primaria contiene dati, una estesa contiene altre partizioni e nessuna delle sue partizioni è avviabile. In realtà alcuni sistemi come Linux permettono di ovviare a questo inconveniente, ma spesso si ottiene questo risultato con appositi programmi detti BOOT-Loader. In altre parole il sistema installa in una partizione avviabile non il kernel vero e proprio, ma un programma molto piccolo che reindirizza il processo di caricamento del kernel sulla partizione prescelta. Questo approccio inoltre permette una interessante funzionalità, il multi BOOT. Ossia è possibile far coesistere più sistemi operativi sulla stessa macchina, e all'avvio si può scegliere quale kernel caricare.