11-Il Sistema Operativo MS–DOS

11-Il Sistema Operativo MS–DOS

{gspeech style=2}

Introduzione
Per introdurre il sistema operativo MS–DOS bisogna osservare che la funzione principale di ogni SO è quella di rendere operativi tutti i componenti hardware che costituiscono il computer ed in particolar modo di permettere all’utente di usufruire di tutte le potenzialità offerte dal computer medesimo.
Il DOS è nato proprio con questo specifico obiettivo e permette all’utente di controllare il funzionamento del computer accedendo alle varie funzioni mediante un’interfaccia utente a linea di comando, era una shell (chiamata command), come su tutti i sistemi dell’epoca. In seguito divennero disponibili altre interfacce, basate su menù testuali come ad esempio Norton Commander, o grafiche come il GEM.

Inoltre si tratta di un sistema operativo con la caratteristica di essere basato sulla gestione di dischi (il nome DOS deriva dall’acronimo di Disk Operating System), in accordo con la filosofia dominante nel mondo dell’informatica nei primi anni ’80, periodo in cui il DOS ha raggiunto il massimo sviluppo. In quegli anni infatti la memoria di sistema e quella di massa erano annoverate tra le risorse più critiche e più costose, pertanto era assoluta la necessità di un sistema in grado di ottimizzare completamente le risorse. Il DOS, quindi, ha reso possibile il successo e la diffusione attuale dei personal computer proprio grazie al suo sistema di gestione della memoria logico ed intuitivo, al punto che anche ora i suoi principi di organizzazione fisica e logica delle informazioni rappresentano una base fondamentale su cui si basano anche i nuovi sistemi operativi. Il DOS ha subito un’evoluzione continua sotto forma di versioni successive comprendenti funzionalità nuove e più sofisticate ogni volta ed ancora adesso continua ad essere integrato e sta ad all’interno dei nuovi sistemi operativi della famiglia MicroSoft.
A differenza dei sistemi operativi di tipo grafico (come Windows) il DOS appartiene alla famiglia dei sistemi operativi detti a linea di comando. Questa definizione è dovuta al modo con cui viene creata l’interfaccia tra il sistema e l’utente, che avviene mediante la tastiera e la scrittura di comandi ben definiti. Come tutti i sistemi operativi anche il DOS è costituito da un numero elevato di componenti che possono essere raggruppati in quattro parti principali:

1. Il sistema I/O.
2. Il kernel del DOS.
3. L’interprete dei comandi.
4. La configurazione del SO.

Il sistema I/O
La prima parte è rappresentata dal sistema di gestione dell’Input/Output (comunemente indicata come I/O) ovvero da tutte le linee di codice che si occupano di gestire l’interfacciamento della CPU con le periferiche esterne (siano esse dispositivi di Input oppure dispositivi di Output), con la memoria di massa, con tutti i componenti fondamentali che sono integrati nella scheda madre. Per la gestione dell’I/O le sezioni di codice principali sono contenute nei file denominati rispettivamente IO.SYS e MSDOS.SYS; tali file lavorano insieme ad altre componenti che sono integrate direttamente nel BIOS. Nell’insieme di compiti di questa prima sezione rientrano, ad esempio, la gestione della trasmissione di dati alle stampanti, la rilevazione della pressione dei tasti sulla tastiera, la gestione della trasmissione i dati al monitor e così via.

Il kernel del DOS
La seconda parte è rappresentata dal kernel del DOS ed il suo compito fondamentale è quello di sovrintendere al funzionamento di tutto il PC. In pratica si tratta delle istruzioni per il microprocessore che sono contenute nel file MSDOS.COM.

L’interprete dei comandi
La terza parte del DOS è costituita dall’interprete dei comandi, memorizzato all’interno del file COMMAND.COM e tramite il quale si possono aumentare le funzioni eseguibili dal sistema operativo. La caratteristica di questo modulo è quella di lavorare in stretto collegamento con il kernel, controllando la sintassi dei comandi inseriti da tastiera e richiamando il codice relativo all’esecuzione dei comandi inseriti. Oltre a queste funzioni l’interprete rappresenta la parte di SO che realizza l’interazione con l’utente.

La configurazione del SO
La quarta ed ultima parte è quella che si occupa di configurare il sistema operativo stesso in base alle caratteristiche fisiche del personal computer, a livello di componenti hardware ed a livello di organizzazione interna della memoria e di definizione dei parametri necessari al funzionamento regolare del sistema, a questa parte appartengono i file AUTOEXEC.BAT e CONFIG.SYS.
All’avvio del DOS quello che noi vediamo è una schermata completamente nera, priva di finestre, con delle scritte che rendono immediatamente riconoscibile l’ambiente. Il simbolo che compare è C:\> che viene detto simbolo di prompt o semplicemente prompt del DOS e sta ad indicare che il sistema operativo è pronto a ricevere istruzioni; il trattino lampeggiante che si vede dopo il simbolo del prompt indica all’utente che può iniziare a scrivere i comandi che ritiene necessari. Il prompt del DOS insieme alla sua schermata iniziale è mostrato in figura.

Struttura dei comandi DOS
Il fatto che il DOS sia un sistema operativo con interfaccia utente basato su comandi, influenza fortemente anche la struttura che tali comandi devono avere, cioè influenza la sintassi. Infatti esiste solo un numero limitato di comandi possibili, che devono essere eseguiti attenendosi alla nomenclatura precisa che li contraddistingue; inoltre molti dei comandi che possono essere eseguiti richiedono di essere accompagnati da ulteriori parametri senza i quali l’esecuzione non può avvenire. Se, ad esempio, volessimo formattare un dischetto dovremmo specificare sempre, come parametro, il nome dell’unità che contiene il dischetto stesso.
Se non viene rispettata la sintassi che caratterizza i comandi può accadere che l’interprete non accetti il comando, segnalando subito l’errore all’utente, oppure può accadere che venga comunque eseguito; in questo caso però i risultati non sono quasi mai quelli desiderati, perché in realtà è stato impartito un ordine diverso da quello voluto.
Prima di vedere direttamente i comandi caratteristici del DOS è opportuno andare ad analizzare la struttura della memoria del calcolatore così come viene vista e strutturata dal DOS medesimo.
La memoria del PC viene vista praticamente come una struttura ad albero in cui il disco fisso nella sua interezza è la parte principale e da esso si diramano tutte le applicazioni ed i programmi inseriti in memoria. Tale struttura fa sì che il disco fisso (unità C:) costituisca la directory principale, mentre tutte le applicazioni costituiscono le directory secondarie o sottodirectory. Questa struttura si ripete poi all’interno di ciascun programma dove il programma stesso è la directory principale ed i file in esso contenuti (sia che servano per l’esecuzione del programma sia che abbiano funzioni di semplici librerie), rappresentano le sottodirectory. Tale struttura ad albero si può riprodurre praticamente all’infinito, infatti una directory può contenere non solo file, ma anche altre directory e così via senza alcun limite se non la capacità fisica della memoria del PC di contenere dati.
Al giorno d’oggi siamo abituati a ragionare con una mentalità grafica (dovuta alla diffusione del sistema Windows), ma se facciamo uno sforzo di immaginazione vediamo che le directory del DOS non sono altro che le cartelle usate in Windows (d’altra parte il sistema Windows è figlio del DOS e quindi in qualche modo deve avere caratteristiche simili).
All’interno del DOS in particolare i comandi si attengono alla seguente sintassi:

comando [ unità drive ] [ percorso ][ file ] [opzioni]

dove le opzioni dipendono dal tipo di comando mentre drive indica l’unità logica a dischi che è interessata dall’esecuzione del comando, infine percorso e file indicano il nome del file e come trovarlo all’interno delle directory.
I comandi possono essere raggruppati a seconda delle funzioni che svolgono in categorie differenti, secondo lo schema seguente:

  1. comandi per la gestione dei dischi: appartengono a questa categoria quelle istruzioni che sono dedicate in modo specifico alla formattazione delle unità logiche, al controllo della struttura logica ed alla copia dei contenuti da un’unità ad un’altra oppure ad un altro supporto;
  2. comandi per la gestione delle directory: appartengono a questa categoria quelle istruzioni che sono dedicate in modo specifico alla creazione, alla cancellazione ed al cambiamento di nome delle directory;
  3. comandi per la gestione dei file: appartengono a questa categoria quelle istruzioni si occupano di copiare, cancellare, visualizzare i file. In particolare la creazione dei è delegata ai programmi specializzati, che forniscono tutta una serie di funzioni e comandi più adatti e più veloci.

Una classificazione più generale relativa ai comandi del DOS può essere realizzata secondo schema seguente:

comandi interni o permanenti: si tratta di quei comandi che risiedono in modo permanente nel kernel del SO e che quindi non necessitano del disco del DOS per entrare in funzione;
comandi esterni o volatili: si tratta di quei comandi che corrispondono ad un file del SO; per entrare in funzione necessitano del disco del DOS; si tratta in generale di file eseguibili con estensione .COM, .EXE,
.BAT.

Passiamo adesso ad analizzare uno per uno i principali comandi del DOS; per ciascuno comandi verranno specificati l’utilizzo e le modalità di funzionamento, oltre ad esplicitare operandi secondo la corretta sintassi.

dir Permette la visualizzazione di tutto il contenuto della directory in cui ci troviamo.
dir/p Permette la visualizzazione di tutto il contenuto della directory in cui ci troviamo, mostrando una pagina alla volta. Per pagina intendiamo una schermata e l’avanzamento avviene in conseguenza della pressione di un tasto da parte dell’utente.
dir/w Permette la visualizzazione di tutto il contenuto della directory in cui ci troviamo mostrando il tutto in visualizzazione orizzontale, quindi risparmiando nel numero di videate (si parla di visualizzazione in formato compatto).
md nome directory Permette all’utente la creazione di una directory avente il nome specificato; a volte lo stesso comando viene indicato nella forma estesa: mkdir nome directory, che dà gli stessi risultati.
rd nome directory Permette la cancellazione di una directory vuota(ovvero dalla quale siano stati preventivamente eliminati tutti i file in essa contenuti); a volte lo stesso comando viene indicato nella forma estesa: rmdir nome directory, che dà gli stessi risultati.
cd nome directory Cambia la directory corrente con quella che viene specificata dall’utente; a volte lo stesso comando viene indicato nella forma estesa: chdir nome directory, che dà gli stessi risultati. A questo proposito osserviamo che rivestono particolare importanza due comandi DOS collegati a questo:
cd.: che rappresenta la directory corrente;
cd..: che permette di ritornare alla directory di livello superiore.
tree disco unità Visualizza sotto forma di albero tutto il contenuto dell’unità
disco specificata (C:, A:, D:, …).
tree disco unità/f Visualizza sotto forma di albero tutto il contenuto dell’unità
disco specificata ed elenca anche tutti i file in essa contenuti.
copy nome file destinazione Copia il file specificato nell’unità o nella directory specificata
dall’utente.
del nome file Cancella il file che viene specificato dall’utente.
erase nome file Cancella il file che viene specificato dall’utente.
ren nome1 nome2 Cambia il nome di un file specificato nel nome prescelto
dall’utente; a volte lo stesso comando viene indicato
nella forma estesa: rename nome1 nome2, che ha lo stesso effetto.
type nome file Stampa su video il contenuto di un file specificato dall’utente.
chkdsk disco Verifica lo stato di un disco; se tale comando viene seguito da
/v allora visualizza tutti i settori del disco stesso; se viene seguito da /f corregge gli errori sul disco.
diskcopy disco1 disco2 Realizza la copia fisica di un disco in un altro disco o
unità specificata dall’utente.
fdisk Realizza il partizionamento di un disco rigido, cambiando la partizione attiva.
format disco Realizza la formattazione di un dischetto, di una partizione
oppure dell’intero disco fisso a seconda di quanto viene specificato dall’utente. Se tale comando viene seguito da /n:xx allora viene specificato (xx è un numero ovviamente) il numero di settori per traccia in cui vogliamo suddividere il disco; se invece viene seguito da /t:yy (yy è di nuovo un numero) allora si può specificare il numero di tracce: È chiaro che volendo si possono specificare entrambi, la sintassi allora diventa format disco /n: xx /t:yy; se non viene specificato nulla vuoi dire che si accettano i formati standard (ad esempio, il classico format A:, usato comunemente per formattare i dischetti).
label disco etichetta Serve come comando per assegnare un identificatore ad un
disco.
sys disco Serve per trasferire il sistema operativo su un disco vuoto.
vol disco Serve per visualizzare l’identificatore di un disco.
cls Pulisce lo schermo.
graftabl Abilita il computer alla visualizzazione dei caratteri grafici estesi.
graphics Abilita la stampa grafica dello schermo.
date data Visualizza la data oppure ne permette la modifica.
time ora Visualizza l’ora oppure ne permette la modifica.
mem Visualizza la disponibilità di memoria.
ver Visualizza la versione del DOS installata.
prompt stringa Questo comando permette di cambiare il prompt del DOS consentendo la modifica di alcune variabili usabili all’interno della stringa, secondo il criterio seguente:
$t ora corrente
$d data corrente
$p disco e directory corrente
$n disco corrente
backup file disco Questo comando permette di realizzare una copia di backup del file specificato dall’utente sul disco specificato; se seguilo da /s allora copia anche le sottodirectory; se seguito da /m salva solo i file modificati a partire dall’ultimo backup; se seguito da /d: data allora copia solo i file modificati dopo la data indicata.
recover nome file Questo comando permette il recupero di un file con alcuno parti danneggiate.
fc file1 file2 Stampa su video le differenze tra due file specificati dall’utente.

Vediamo l’applicazione di alcuni comandi DOS mirati allo svolgimento di operazioni specifiche.

ESEMPIO 1
Supponiamo di voler copiare tutti i file situati nella directory principale (detta anche radice) C: nella directory DATI che si trova nell’unità disco B:; la soluzione è data da:

copy C:\ *.* B:\DATI

ESEMPIO 2
Supponiamo adesso di voler cancellare tutti i file aventi estensione .DAT dalla directory DATI dell’unità disco A:; la soluzione è la seguente:

DEL A: \DATI\ * . dat

ESEMPIO 3
Supponiamo ora di voler spostare tutti i file con estensione .PAS dalla radice di C: alla directory SRC situata nell’unità disco B:; la soluzione è la seguente:

COPY *.PAS B:\SRC
Del *.PAS

Come possiamo vedere è necessario prima realizzare lo spostamento fisico con il comando copy e poi bisogna eliminare dalla radice i file spostati con l’operazione precedente.

ESEMPIO 4
Adesso vogliamo creare una directory LETTERE sul dico A: e copiarvi tutti i file con estensione
.LET della directory LETTERE di C:; la soluzione è la seguente:

MD A:\LETTERE
COPY C:\LETTERE\*.LET A:\LETTERE

I comandi DOS appena visti, integrati con alcune parole ed istruzioni chiave, possono essere utilizzati per scrivere dei veri e propri programmi, capaci di svolgere in sequenza le istruzioni specificate; tali programmi prendono il nome di file batch. Le parole ed istruzioni chiave da usare per la scrittura di file batch sono le seguenti:

call nome file Serve per richiamare un file oppure una serie di istruzioni già specificati e presenti nella memoria del computer.
echo on/off Serve per rendere visualizzabile una riga oppure un messaggio od un commento; se seguito da on (oppure echo senza altre specificazioni) il messaggio è visibile; se invece il comando echo è seguito da off viene eliminata l’eco.
Goto etichetta Fa saltare l’esecuzione delle istruzioni in un punto individuato mediante l’indicatore etichetta. L’etichetta può essere un numero o più semplicemente un qualsiasi tipo di indicatore.
Rem commento Come in Basic, la parola Rem serve per l’inserimento di un commento; la semplice presenza della parola chiave Rem fa sì che ciò che la segue, sulla stessa linea sia individuato come un commento.
Pause messaggio Introduce una pausa nell’esecuzione di una serie di istruzioni.
Shift Utilizzata così, senza altre parti serve per saltare alla riga successiva.
Istruzione IF Mantiene la stessa valenza dei linguaggi di programmazione, ma qui può essere usata secondo lo schema seguente:
if exist condizione [then (sottinteso e quindi da non mettere)]
istruzione
oppure:
if not condizione [then (sottinteso e quindi da non mettere)]
istruzione
Ciclo FOR Mantiene la stessa sintassi generale che si osserva nei linguaggi di programmazione, secondo lo schema seguente:
for %% etichetta in () do istruzione
.

Per quanto riguarda la scrittura di file batch bisogna ricordare che, oltre alle parole chiave appena illustrate esistono anche alcune regole di programmazione di cui si deve tenere conto. In particolare:

  • le etichette, in qualunque modo siano state costruite devono essere precedute dal simbolo :
  • per eliminare l’eco di un comando bisogna inserire prima dello stesso il simbolo @
  • al massimo possono agire dieci parametri contemporaneamente %0…%9
  • per assegnare un valore ad un parametro si utilizza la sintassi: SET parametro = valore
  • la definizione di un parametro all’interno di un file batch può essere realizzata mediante la sintassi: %parametro%

Vediamo adesso una serie di esempi per meglio comprendere come sia possibile lavorare con i file batch; anche qui come per il caso dei comandi DOS costruiremo delle situazioni e poi daremo la soluzione nell’ambito dei file batch.

ESEMPIO 1
Scrivere un file di comandi LOGIN.BAT che pulisca lo schermo, scriva un messaggio di benvenuto e cambi il prompt in modo che compaiano la data corrente, il disco e la directory corrente. La soluzione è la seguente:

@ echo off
rem pulisce lo schermo
cls

rem scrive il messaggio
echo

echo benvenuti nel DOS
echo off

rem cambia il prompt
prompt

$d $p $g

 

ESEMPIO 2
Definire un file comandi SALVA.BAT per copiare in una directory tutti i file elencati dall’utente. La soluzione è data da:

@echo off
cls

if not “%1” == “ ” goto inizio
echo

echo sintassi: salva [ directory] [ file1] [ file2] [ file3]…
echo

goto fine

:inizio
set dest =%1
shift

if exist %1 goto fine

:copia

for %%f in (%1) do copy %%f %dest%
shift

if exist %1 goto copia

:fine

 

ESEMPIO 3
Scrivere un file di comandi MDEL.BAT per cancellare una serie di file specificati sulla linea di comando. La soluzione è data da:

@ echo off
cls

if not “%1” == “ ” goto cancella
echo

echo sintassi : del [filel] [file2] [file3]…
echo

goto fine

:cancella del %1
shift

if exist %l goto cancella

:fine

 

ESEMPIO 4
Scrivere un file di comandi SALVA.BAT per effettuare la seguente operazione: spostare in una directory specificata tutti i file elencati dall’utente; la soluzione risulta:

@ echo off
cls

if not “%l” == “ ” goto inizio
echo

echo sintassi: salva [directory] [filel] [file2]…[filen]
goto fine

:inizio set dest=%1

:sposta
shift

if not exist %l goto fine
copy %l %dest%

goto sposta

:fine

 

ESEMPIO 5
Scrivere un file batch COMP.BAT per la compilazione di sorgenti PASCAL, prevedendo anche la condizione di errore del compilatore; la soluzione è la seguente:

@echo off
if exist %l goto compila
echo

echo file inesistente
echo off

goto fine

:compila
pas1 %1;

if errorlevel 1 goto error
pas2

if errorlevel 1 goto error
link %1

if errorlevel 1 goto error
goto fine

:error
rem echo errore di compilazione

:fine

 

Questi esempi di semplici file batch, permette di constatare quanto sia difficoltoso per un utente che non abbia dimestichezza con la programmazione e le sue strutture logiche, interagire in modo completo con un sistema operativo come il DOS, soprattutto adesso che siamo abituati all’interfaccia utente a finestre, molto più amichevole, che ci presenta Windows. È evidente che si tratta di due diverse filosofie, infatti il DOS permette all’utente il controllo totale del sistema mediante la programmazione, mentre Windows ne permette il controllo mediante un accesso facilitato e possibile anche ai non esperti. Proprio in questo sta la chiave del successo di Windows come sistema operativo.

  {/gspeech} 

 

1. Illustrare le caratteristiche principali del sistema operativo MS–DOS.
2. Perché possiamo dire che il sistema MS–DOS non utilizza il sistema a finestre?
3. Che cosa intendiamo dicendo che il DOS è un sistema operativo a linee di comando?
4. Che cosa si intende per struttura ad albero?
5. Spiegare la differenza tra comandi per la gestione dei dischi e comandi per la gestione dei file.
6. Che cos’è il prompt del DOS?
7. Che cos’è un file batch?
8. Per quale compito viene utilizzata nei file batch la parola chiave Rem?
9. Scrivere un file batch che pulisca lo schermo e visualizzi un messaggio di benvenuto all’utente.

 

1. Il sistema operativo MS–DOS è un sistema operativo:

  • a linee di comando
  • a finestre
  • non è un sistema operativo
  • a linguaggio macchina

2. Un file batch rappresenta:

  • una istruzione di sistema
  • una serie di comandi per svolgere in sequenza operazioni specificate
  • una finestra di dialogo
  • l’accesso alle risorse interne del computer

3. Le istruzioni dei file batch:

  • rappresentano il cuore del sistema operativo
  • rappresentano il kernel del sistema operativo
  • possono contenere istruzioni If e cicli For
  • costituiscono un protocollo per Internet

4. Con il termine prompt generalmente si indica:

  • un elemento che gestisce l’interfaccia utente
  • l’istanza di un programma in esecuzione
  • il simbolo c:\> di attesa istruzioni
  • il software necessario per la stampa dei documenti

5. Il kernel del sistema operativo MS DOS rappresenta:

  • l’interfaccia utente
  • il motore di ricerca interno alla macchina
  • una porzione di memoria destinata alle applicazioni
  • il nucleo del sistema operativo

Commento all'articolo