MS-DOS
sistem monotasking, monouser.
S.O. MS-DOS este format din:
Nucleul
Este o colectie de rutine; asigura operatiile de intrare/iesire standard (colectie de drivere).
Contine rutine pentru gestionarea informatiei, acces la structurile de date, particularitati de limbaj, acces la retea.
Este interfata dintre utilizator si S.O. Contine rutine de control ale functionarii sale, proprii.
Programe suplimentare
Adica fisiere executabile:
fisierele .com si .exe sunt fisire in format binar executabil
fisierele .bat (batch) sunt fisiere text (ASCII), adica fiecare linie este o comanda.
Fisierele .com au dimensiuni de pana la 64K si cod nerelocabil.
Fisierele .exe pot avea orice dimensiune, cod relocabil, referinte externe segmentului de mem. gazda pt. executabil.
Comenzi
Metode de incarcare a sistemului:
Loader-ul din primul sector al discului va incarca fisierele in ordinea urmatoare:
TABELA VECTORILOR DE IRQ-uri |
||||
BIOS |
||||
IO.SYS |
||||
RAM pentru S.O. |
||||
CONFIGURARE (drivere, gestiune mem., specificatii de lucru cu fisiere) |
||||
aici se incarca programele utilizator |
||||
COMMAND.COM c. rezidenta |
||||
COMMAND.COM c. tranzienta |
||||
RAM pt. utilizator 640 KB |
||||
1 MB |
||||
16 MB |
Detalierea BUS-ului:
Din lipsa de memorie s-a impartit COMMAND.COM in 2 componente:
Informatia de localizare pe HDD a lui command.com se gaseste in zona ENVIRONMENT, in variabila COMSPEC (aceasta este setata automat de S.O. la boot-are).
Sintaxa gen. a liniei de comanda:
prompter> numecomanda [parametrii]
Intr-un buffer de tastatura este retinuta ultima comanda scrisa, pe care o putem reedita cu tastele F1 F5.
Cu ajutorul lui DOSKEY (program tip TSR, adica "terminate and stay resident") putem fol. si tastele F7 F10.
F1 = reda ultima comanda caracter cu caracter
F2,F4 + car. = da comanda de pana sau de dupa caracter
F3 = reda ultima comanda in intregime
F5 = marcheaza linia pt. o ulterioara editare
Cand COMMAND.COM primeste o comanda:
Ordinea de executie a fisierelor executabile de acelasi nivel: COM, EXE, BAT.
Organizarea discurilor d.p.d.v. soft
Zona sistem
Zona de fisiere
O intrare in ROOT se compune din:
8 byte (nume fisier)
3 byte (extensie)
(neutilizati)
1 byte (atribute)
2 byte (data creerii)
2 byte (ora creerii)
2 byte (adresa primului cluster alocat)
4 byte (dimensiunea fisierului)
Atribute:
/v (eticheta pt. partitie)
/d (=1 director, =0 fisier)
/a (in fisier s-a facut o scriere)
/r
/h
/s (implica /h si /r)
Obs.: valoarea lui a (0 sau 1) are importanta la oper. de arhivare.
ROOT (sau orice director)
8 3 10 1 2 2 2 4
Cucu |
txt |
|
d=0 a=1 |
data |
ora |
dimens |
FAT (contine atatea inregistrari, cate clustere pe disc)
|
X2003 |
ocupat |
defect |
X2005 |
ocupat |
Xultim |
1 2 . . . . . . . . . . . . 2000 2001 2002 2003 2004 2005
fiecare inregistrare din FAT da informatii despre starea clusterului asociat (liber, ocupat, defect, sfarsit de fisier).
daca atributul d=1 nu mai avem casuta cu dimensiune.
din cauza tabelei ROOT care este fixa, se va forma o structura de tip arborescent
orice cale poate avea max. 64 caractere (=> max. 8 nivele)
in mom. in care am creat un director, automat S.O. ocupa primii 32 2 bytes
directorul insusi reprezentat prin " . "
directorul parinte afisat prin " . . "
Comenzi interne :
a MD (make directory)
b) CD (change directory)
c) RD (remove directory)
d) COPY CON (copy con total.txt copy total.txt con; taste respectiv monitor)
LPTn
COMm
PRN (LPT1)
NUL (simulare)
Copy se fol. si pt. concatenare: "copy 1.txt+2.txt+3.txt total.txt"
e) TYPE
f) DIR /p/w/s
g) REN
h)
Este de fapt o invalidare logica si nu o stergere fizica; se inlocuieste de fapt primul car. din numele fisierului cu caracterul hexa E5.
i) DATE
j) TIME
k) CLS
l) PROMPT $p (afiseaza calea in prompter)
$g (afiseaza >)
$l (afiseaza <)
$d (afiseaza data)
$t (afiseaza ora)
$_ (salt la nivelul urmator)
$$ (afiseaza $)
Valoarea lui prompt este pastrata in zona ENVIRONMENT.
m) PATH cale1 cale2 cale3
Seteaza o lista de cai, memorata tot in zona ENVIRONMENT.
Aceasta lista este folosita de COMMAND.COM pentru a cauta automat fisierele executabile: com, exe, bat.
PATH ;
Sterge toate caile setate anterior.
Daca exista o lista de cai memorata si noi intervenim cu o alta comanda PATH , lista veche va fi rescrisa.
n) SET numevariabila (afiseaza val. variabilei)
SET numevariabila=valoare (sterge valoarea variabilei)
COMMAND.COM cauta comenzile externe:
in directorul curent
in lista de cai data de PATH
Comenzi externe:
a) [d:] [cale] UNDELETE
b) [d:] [cale] APPEND [/e]
Seteaza cai de cautare implicite pt. fisiere care nu au extensie com, exe, bat.
In mod normal (implicit), aceste cai sunt memorate in COMMAND.COM
[/e] memoreaza caile in zona ENVIRONMENT langa cele din PATH
c) [d:] [cale] XCOPY [sursa] [destinatie] [/s] [/e]
Subordonate [/s]
Empty [/e]
d) [d:] [cale] ATTRIB [ a] [ r] [ h] [ s]
Seteaza atributele fisierelor.
e) [d:] [cale] FC
Se fol. pt. a compara fisiere sau directoare.
f) [d:] [cale] DISKCOPY
Se fol. numai intre doua unitati de floppy.
g) [d:] [cale] DISKCOMP
Se fol. numai intre doua unitati de floppy.
Redirectarea operatiilor de I/O(input/output) standard:
Intrari:
fisier pe disk < program (sau comanda)
(ce trebuie citit) (care fol. acest fisier)
Iesiri:
program > fisier pe disk
>>
(programul livreaza informatia)
Obs.:
> daca fisierul nu exista va fi creat, daca exista va fi rescris
>> daca fisierul nu exista va fi creat, daca exista se va scrie in continuare in el.
Obs.:
A nu se confunda iesirea standard cu rezultatul comenzii.
Presupunem ca iesirea standard dintr-un program este transformata automat in intrare standard pentru alt program.
program1 (comanda1) program2 (comanda2)
Acesta indirectare creeaza 2 fisiere temporare, care se sterg automat.
Comenzi filtru:
a) MORE (ia date de la standard input si le da la st. output grupate in entitati ecran)
b) SORT (ia date de la standard input si le da la st. output ordonate)
c) FIND cauta, in fisiere, siruri de caractere)
Poate afisa:
toate liniile ce contin sirul dat
toate liniile ce nu contin sirul dat
cate linii contin sirul dat
Ex.: TYPE fisier.txt | MORE
SORT [/+n] [/r] (sortare dupa al n-lea element din rand; "in reverse order")
DIR F404 | SORT /+9
TYPE cucu.txt | SORT
SORT < cucu.txt
Alte comenzi externe:
a) SYS
Prin aceasta comanda si prin "format /s" facem disk system.
b) MOVE
Mutare fisiere sau directoare, sau redenumire de directare.
c) MEM /d
Prezinta informatii despre continutul memoriei in momentul respectiv
/d (informatii detaliate)
d) DOSKEY
e) FORMAT x: /q /s
/q (formatare fara cautare de bad-uri, "quick")
/s (formatare cu transferul fisierelor sistem)
f) UNFORMAT
Are efect numai daca este folosita imediat dupa FORMAT.
Obs.: CTRL+C (intrerupere program)
CTRL+Z (sfarsit de fisier ASCII)
Obs.: La formatare se sterge zona sistem nu zona utilizator; zona utilizator fara cea sistem
nu mai este adresabila si va fi rescrisa.
g) FDISK
Obs.:
0 - bytes (loader = cod de incarcare)
446 - 509 bytes (tabela de partitii)
510 - 511 bytes (identificator disc, adica litera)
512 bytes = primul sector pe HDD
1BE - 1CD prima partitie
1CE - 1DD a-II-a partitie
1DE - 1ED a-III-a partitie
1EE - 1FD a-IV-a partitie
octetul 1 - partitia activa
octetii 1,2,3 - adresa de inceput a partitiei
octetul 4 - identificator S.O.
octetii 5,6,7 - adresa de sfarsit a partitiei (fata, sector, pista)
octetii 11 - numarul sectorului logic de inceput de partitie
octetii - dimensiunea partitiei in nr. de sectoare
Obs.: Tabela FAT are o copie care se face automat a. daca se corupe originalul sistemul va
fi comutat pe copie.
Obs.: Partitia activa este locul de unde se face incarcarea S.O. => programele care se
ocupa de boot-are (loader-e) comuta activarea intre partitii primare.
FISIERE BATCH:
[d:] [cale] numefisier[.bat] [param. efectivi]
Directive batch:
a) ECHO ON (se vad si comenzile si efectul lor)
ECHO OFF (se vede numai efectul comenzilor)
ECHO sir de caractere
@ECHO (nu apare nici linia de comanda care il contine pe ECHO)
b) PAUSE
c) REM sir_caractere
Acesta comanda ne permite sa introducem comentarii in fisierul batch; nu vor fi afisate, ele fiind folositoare intr-o editare viitoare pt. un strain.
d) IF conditie comanda
Daca conditia este adevarata se executa comanda, daca nu se va trece la comanda urmatoare.
Conditia din IF poate fi :
2 siruri de caractere sa fie identice (abc = = abc)
verificarea existentei unui fisier (EXIST numefisier)
verificarea valorii lui ERRORLEVEL (ERRORLEVEL=val.)
IF NOT
Obs.: ERRORLEVEL primeste automat o valoare la sfarsitul oricarui program, in functie
de modul in care s-a incheiat (s-a incheiat cu succes => "ERRORLEVEL=0"; daca se
incheie cu eroare in locul lui zero va fi codul erorii respective).
ERRORLEVEL poate fi setat si de utilizator cu ajutorul unor limbaje de programare, sau prin comanda externa CHOICE.
CHOICE [/C[:]choices] [text]
La intalnirea comenzii CHOICE S.O. afiseaza textul si asteapta introducerea unui caracter dintre cele care urmeaza dupa /C (care le-am introdus noi). La introducerea unuia dintre caractere ERRORLEVEL va primi o valoare egala cu rangul caracterului din lista, adica de ex.:
CHOICE /Cabcd => ERRORLEVEL=3 daca s-a introdus litera "c"
CHOICE /Cabcd => ERRORLEVEL=1 daca s-a introdus litera "a"
Dupa un CHOICE apare obligatoriu un IF.
CHOICE /Cxyzp
IF ERRORLEVEL 4 GOTO eticheta4
IF ERRORLEVEL 3 GOTO eticheta3
IF ERRORLEVEL 2 GOTO eticheta2
A se pleca mereu de la mare la mic si astfel nu mai este nevoie sa scriem :
IF ERRORLEVEL 1 GOTO .
e) GOTO eticheta
Va face un salt la alta linie din fisierul batch si mai exact va sari la " eticheta"
f) CALL numefisier.bat (suporta CALL in CALL)
In cazul in care fisierul apelat are parametrii atunci:
CALL numefisier.bat [parametrii formali]
In comenzile din fisierele batch anumite siruri de caractere pot fi inlocuite pentru a asigura generalitatea fisierului batch, cu simboluri sau parametrii formali.
Se permit folosiarea a 10 parametrii formali (%0, %1,. 9).
Parametrii formali vor fi inlocuiti cu parametrii efectivi in momentul executiei fisierului batch.
Deci:
- parametrii efectivi sunt siruri de caractere.
- parametrii formali sunt simboluri.
Putem sa fol. mai multi parametrii formali daca aplicam principiul shift-arii cu ajutorul directivei SHIFT. O comanda SHIFT va deplasa parametrii efectivi de la dreapta spre stanga cu o pozitie.
c:\>exemplu.bat param_efect_1 param_efect_2 param_efect_3
%0 %1 %2 %3
Aplicam SHIFT; se pierde numele fisierului.
Shiftarea este ireversibila.
g) FOR %%z in(lista) DO comanda %%z
FOR folosit de la prompter va avea doar un singur "%".
FOR %%x in(*.txt) DO TYPE %%x
FOR %z in(c:\F405 c:\F405\F1 c:\F405\F2) DO MD %z
@ECHO OFF
: inceput
IF "%1"= ="" GOTO vid
: aa
SET PATH=%PATH%; %1
SHIFT
IF %1x= = x GOTO sfarsit
GOTO aa
: vid
ECHO Nu exista nici-o cale de adaugat
: sfarsit
PATH
TEMĂ:
Creati un fisier .txt stil agenda telefonica, avand pe coloane: nume, prenume, nr. de telefon (se va numi Agenda.txt).
Creati un fisier .bat care sa faca:
creare si/sau completare fisier agenda
afisarea ordonata a agendei
afisarea unor anumite persoane din agenda
stergerea unor inregistrari din agenda
Se va folosi metoda cu meniu la dispozitia utilizatorului.
@ECHO OFF
: xx
ECHO Aveti posibilitatea sa folositi urmatoarele operatii:
ECHO a) Creare/adaugare informatii in agenda
ECHO b) Afisare ordonata a agendei
ECHO c) Cautare persoane
ECHO d) Stergere
ECHO e) Sfarsit
CHOICE /Cabcde "Alegeti operatia: "
IF ERRORLEVEL 5 GOTO sf
IF ERRORLEVEL 4 GOTO st
IF ERRORLEVEL 3 GOTO caut
IF ERRORLEVEL 2 GOTO af
: crad
CALL cread
GOTO sf
: af
CALL afisare
GOTO sf
: caut
CALL cautare %1
GOTO sf
: st
CALL sterge %2
: sf
ECHO Doriti o noua operatie? (d/n)
CHOICE /Cdn
IF ERRORLEVEL 2 GOTO gata
GOTO xx
: gata
ECHO Bye, bye !!!
Cread.bat
@ECHO OFF
ECHO Completati si apasati F6 pentru a iesi
IF EXIST Agenda.txt GOTO completare
COPY CON Agenda.txt > NUL
GOTO sfarsit
: completare
COPY Agenda.txt+CON > NUL
: sfarsit
Afisare.bat
@ECHO OFF
SORT < Agenda.txt | MORE
PAUSE
Cautare.bat
@ECHO OFF
FIND /i /v "%1" < Agenda.txt > Nou.txt
afisam Nou.txt
intrebam daca este corect
daca NU ne intoarcem
daca DA stergem Agenda.txt si redenumim Nou.txt in Agenda.txt
Cautare.bat
@ECHO OFF
ECHO Introduceti nume prenume sau nr. de telefon apoi apasati F6 si ENTER.
COPY CON p2
COPY p1+p2+p3 linie.bat
CALL linie
COPY CON p1
FIND /i "^Z (enter)
COPY CON p3
"<Agenda.txt (enter)
^Z
Sterge.bat
@ECHO OFF
ECHO Introduceti nume prenume sau nr. de telefon apoi apasati F6 si ENTER.
COPY CON s2
COPY s1+s2+s3 linie.bat
CALL linie
COPY CON s1
FIND /i /v "^Z (enter)
COPY CON s3
"<Agenda.txt >Nou.txt (enter)
^Z
AUTOEXEC.BAT
Contine comenzi care modeleaza stilul de lucru al utilizatorului.
PROMPT (daca vreau sa schimb forma prompterului)
PATH cale (pt. a executa un program indiferent de directorul curent)
SET TEMP=cale
CONFIG.SYS
Contine comenzi specifice de configurare, destinate:
incarcarii in memorie a unor programe driver
precizarii unor conditii de lucru particulare cu fisiere
in general, nu se impune o anume ordine de introducere a comenzilor
Instalarea driverelor se face cu comanda:
DEVICE=specificator fisier driver (calea catre fisierul driver)
Exista un driver special fol. pentru gestiunea mem. HIMEM.SYS. Acesta asigura gestionarea memoriei inalte (peste 1M), facand posibila incarcarea unor anumite programe in aceasta zona. Comanda de incarcare:
DEVICE=c:\Dos\Himem.sys (in DOS curat)
DEVICE=c:\Windows\Command\Hymem.sys (in WINDOWS)
Comanda DOS=HIGH permite mutarea fisierelor S.O. MS-DOS in zona de memorie inalta.
DEVICEHIGH=calea fisier driver permite incarcarea driverelor in memoria inalta.
Exemple de drivere
ANSI.SYS
Permite folosirea unor functii extinse pt. consola (tastatura, monitor). Aceste functii pot fi puse in aplicare utilizand secvenŢe de ESCAPE definite prin ANSI.SYS:
schimbare culoare background, foreground
putem pozitiona cursorul oriunde
putem redefini tastele
putem redefini rezolutia monitorului
DRIVER.SYS
Pentru redefinirea unitatilor de disk.
Avem: A: => floppy 3 /1,44M
C: => HDD
Facem:
D: =>floppy 3 /720K
Alte comenzi
a) FILES=nr. (nr. max. de fisiere simultan deschise; implicit 8)
b) BUFFERS=nr. (nr. de zone tampon alocate fisierelor; implicit 2 zone)
c) BREACK ON;OFF (permite sau nu intreruperea programelor cu CTRL+C)
Obs.: Comenzile DOS au automat
Orice modificare in CONFIG.SYS devine activa numai dupa RESTART.
|