Document, comentariu, eseu, bacalaureat, liceu si facultate
Top documenteAdmitereTesteUtileContact
      
    


 


Ultimele referate adaugate

Adauga referat - poti sa ne ajuti cu un referat?

Politica de confidentialitate



Ultimele referate descarcare de pe site
  CREDITUL IPOTECAR PENTRU INVESTITII IMOBILIARE (economie)
  Comertul cu amanuntul (economie)
  IDENTIFICAREA CRIMINALISTICA (drept)
  Mecanismul motor, Biela, organe mobile proiect (diverse)
  O scrisoare pierduta (romana)
  O scrisoare pierduta (romana)
  Ion DRUTA (romana)
  COMPORTAMENT PROSOCIAL-COMPORTAMENT ANTISOCIAL (psihologie)
  COMPORTAMENT PROSOCIAL-COMPORTAMENT ANTISOCIAL (psihologie)
  Starea civila (geografie)
 

Ultimele referate cautate in site
   domnisoara hus
   legume
    istoria unui galban
   metanol
   recapitulare
   profitul
   caract
   comentariu liric
   radiolocatia
   praslea cel voinic si merele da aur
 
despre:
 
DOS-extendere - Programarea sub DOS in mod protejat - sisteme de operare
Colt dreapta
Vizite: ? Nota: ? Ce reprezinta? Intrebari si raspunsuri
 

b3s21si

In urma cu un deceniu, primul IBM-PC aparut pe piata era echipat cu un procesor Intel 8086 pe 16 biti, capabil sa adreseze un singur mega de memorie si fara posibilitati de dispecerizare a mai multor programe rezidente in memorie.
Sistemul de operare i-a fost pe masura, neprevazind directii de dezvoltare inspre exploatarea unor memorii multimegabyte partajate intre mai multe aplicatii.
Chiar dupa zece ani, MS-DOS supravietuieste fara schimbari majore,spre surpriza generala, pe procesoare 80286/386/486, ignorind complet modul lor protejat de adresare a memoriei.
Intre timp au aparut standardul de memorie expandata LIM EMS 4.0 si specificatia de memorie extinsa XMS, care au impins DOS-ul pina in faza conturarii unui adevarat sistem de operare in mod protejat.
Acceptarea lenta a OS/2, inventarea extender-ului de DOS, lansarea lui
WINDOWS 3.x si standardizarea DPMI (interfata DOS-mod protejat de adresare, Dos
Protected Mode Interface), ofera MS-DOS-ului o noua sansa. Directia de dezvoltare a sistemelor de operare este inspre utilizarea modului protejat.
In acest context tehnologia DOS-extender este vitala pentru imbunatatirea performantele si ridicarea restrictiilor de accesare a memoriei. Este de asemenea clar declinul utilizarii memoriei expandate; noile implementari ale DPMI pe 386 sau procesoare mai evoluate ofera facilitatea de memorie virtuala, transformind programarea asociata EMS intr-un efort nejustificat.
Pina in prezent extenderele DOS sint medii de programare relativ scumpe si greu accesibile unui programator obisnuit. Situatia este in schimbare rapida intrucit WINDOWS 3.0 incorporeaza un extender DOS care in mod protejat este utilizat automat. Astfel, chiar aplicatiile non-WINDOWS profita de extender-ul
DOS oferit de WINDOWS 3.x, dupa apelul DPMI pentru comutare in mod protejat.
Practic, avantajele programarii in mod protejat sint potential disponibile oricarui programator care utilizeaza un compilator sub DOS.




Cum se utilizeaza un extender DOS traditional

Din punctul de vedere al interpretorului de comenzi MS-DOS, extender-ul
DOS este singurul prezent in fisierul executabil, fiind singura parte a acestui fisier descrisa de antetul tipului EXE. MS-DOS incarca extender-ul in memoria conventionala utilizind modul real de adresare al procesorului, realizeaza toate relocarile necesare si transfera controlul extender-ului. Extender-ul DOS aloca apoi memoria aditionala (conventionala, extinsa sau amindoua), redeschide propriul sau fisier executabil si incarca apoi aplicatia propriuzisa in memorie. MS-DOS nu poate incarca direct aplicatia in mod protejat, intrucit nu poate manipula selectoarele de mod protejat si tehnicile specifice codului obiect 80386.
Extender-ul pregateste apoi un mediu de rulare in mod protejat a aplicatiei: construieste tabela de intreruperi, tabelele de descriptori locali si globali, tabele de paginare si segmentul de stare a programului care va furniza posibilitatea de adresare odata ce CPU este in mod protejat. Acest pas include de obicei crearea unor selectori speciali, care acopera bufferul de improspatatre a memoriei video, prefixul segmentului de program, zona variabilelor BIOS precum si alte structuri pe care aplicatia ar urma sa le acceseze direct. In final, extender-ul DOS comuta CPU Œn mod protejat si transfera controlul adresei de inceput a programului.
In timp ce aplicatia se deruleaza extender-ul DOS indeplineste rolul sau de interfata intre modul protejat al aplicatiei si modul real DOS prin controlul sistemului de intreruperi. De fapt extender-ul poate fi imaginat ca un rezident care manipuleaza intreruperi care din punct de vedere al MS-DOS-ului se gaseste in memoria alocata aplicatiei si urmeaza sa dispara odata cu terminarea executiei aplicatiei. Extender-ul DOS trebuie sa faca fata la orice intrerupere care apare in mod protejat, indiferent ca este cauzata de un eveniment extern (precum ceasul de timp real), o exceptie interna (precum o Œmpartire la zero) sau o intrerupere software executata de aplicatie.
In cele mai multe situatii, cind apare o intrerupere in mod protejat, extender-ul DOS comuta pur si simplu CPU in mod real si transmite intreruperea rutinei de tratare initiale, dar totusi unele intreruperi se bucura de un tratament special. De exemplu extender-ul DOS de obicei reprogrameaza controller-ul de intreruperi 8259, realocind noi indicative intreruperilor externe hardware de la 08h pina la 0Fh, astfel incit aceste intreruperi pot fi diferentiate de intreruperile interne determinate de protectia generala de erori, erorile de stiva, etc. Aplicatia poate instala propriile sale rutine de tratare in mod protejat a intreruperilor interne si externe, apelind functii speciale ale extender-ului DOS. Cele mai importante situatii speciale apar la intreruperi utilizate pentru apeluri de functii: MS-DOS INT 21h, ROM-BIOS, video driver
INT 10h, s.a.m.d.
Actiunile intreprinse de extender-ul DOS, odata ce a interceptat un asemenea apel de functii depind de tipul de functie apelat. Functiile vizate de extender-ul DOS pot fi impartite Œn patru clase de baza:
-functii care impun ceva mai mult decit o simpla comutare mod protejat-mod real;
-functii care adreseaza buffer-e ale aplicatiei si necesita transfer de date si translatare de adrese;
-apeluri de functii care sunt specifice extender-ului DOS insusi si furnizeaza servicii speciale fara echivalent in MS-DOS sau ROM-BIOS.

In prima clasa de functii toti parametrii sunt transmisi in registre; parametrii nu trebuie sa includa adrese. Functiile de intrare/iesire pentru consola, port serial si imprimanta sunt exemple ilustrative. Tratarea acestor apeluri de functii este simpla. Dupa interceptarea intreruperii software se salveaza contextul de mod protejat, se comuta CPU in mod real si se reinitiaza intreruperea transmitind controlul MS-DOS-ului sau ROM-BIOS-ului. Cind apelul de functie este finalizat, extender-ul DOS restaureaza modul protejat (spre exemplu reface cei 16 biti superiori ai registrilor de 32 de biti ai procesorului
80386, care nu nu fost neaparat mentinuti de MS-DOS sau driverele lui) si returneaza controlul aplicatiei.
Urmatoarea clasa, ceva mai complexa este compusa din functii ale caror parametri includ adresa unui buffer sau a altor structuri de date. In forma lor originala aceste adrese sunt lipsite de sens pentru MS-DOS sau ROM-BIOS din doua motive: adresa este sub forma de selector:deplasare fata de segment:deplasare iar buffer-ul si datele se gasesc mai intotdeauna deasupra limitei de 1 Megabyte.
Extender-ul DOS trateaza aceasta situatie prezervind propriile sale buffere sub 640K pentru o stocare temporara. Spre exemplu pentru un apel de scriere intr-un fisier, extender-ul DOS intercepteaza cererea de scriere, copiaza datele din buffer in memoria conventionala, substituie adresa originala cu cea a buffer-ului de memorie conventionala, comuta CPU Œn mod real si in final initiaza apelul functiei de scriere MS-DOS.
Cea de a treia categorie de functii este cea in care extender-ul DOS trebuie sa inlocuiasca serviciile MS-DOS sau ROM-BIOS cu servicii noi adaptate modului protejat, inrudite cu gestiunea memoriei. Spre exemplu functiile
MS-DOS INT 21h, 48H (alocare bloc de memorie), 49H (dealocare bloc de memorie) si 4AH (redimensionare bloc de memorie) sunt inlocuite de functii DOS-extender care aloca, elibereaza si redimensioneaza blocuri de memorie extinsa. Functiile extender-ului DOS utilizeaza selectori de mod protejat, fata de adrese de peragrafe sau segmente folosite de MS-DOS.
Ultima clasa de servicii-functii disponibile numai sub un extender DOS acopera un spectru larg. Spre exemplu sunt apeluri de functii care translateaza adrese din modul real in modul protejat, modifica cimpuri de descriptori, manipuleaza tabela de descriptori de intreruperi, permit un apel direct al unei subrutine in mod real dintr-o aplicatie care ruleaza in mod protejat, aloca blocuri de memorie conventionala, etc. Cele mai multe astfel de functii sunt superspecializate si nu sunt utilizate Œn programe aplicative tipice.
DOS-extenderele sint usor de implementat prin intermediul DPMI, deoarece managementul intreruperilor, comutarea modului de lucru al procesorului, intretinerea tabelelor de pagini si descriptori ramin in seama interfetei DPMI ce utilizeaza memoria extinsa. DOS-extender trebuie sa ruleze de asemenea pe un sistem simplu
MS-DOS, coexistind pasnic cu un driver XMS de memorie extinsa sau cu o interfata
VCPI (interfata de programare pentru control virtual).

Windows 3.x DOS-extender

In Windows 3.x, DOS-extenderul incorporat asigura rezolvarea apelurilor de functii indiferent de modul real sau protejat in care ruleaza programul apelant

DOS-extender-ul lui Windows include o interfata DPMI. Specificatiile interne ale lui Microsoft definesc interfata DPMI pe doua nivele: un set de functii de nivel inferior pentru gestiunea intreruperilor, comutarea modurilor si gestiunea memoriei extinse si o interfata de nivel superior (DOS-extender-ul) care furnizeaza accesul la MS-DOS, ROM-BIOS si driverul de mouse, prin executia in mod protejat a lui INT 21h, INT 10h, INT 33h s.a.m.d. Functiile de nivel superior sint implementate prin functii de nivel inferior si serviciile modului real DOS si ROM-BIOS.
Documentatia de DOS-extender in forma originala a specificatiei Microsoft
DPMI este intitulata "Suportul Windows DPMI pentru INT 21h si NETBIOS".
Primul lucru care reiese din acest document este ca desi Windows 3.x in mod 386
(enhanced) contine intregul set de functii DPMI 0.9, in mod stardand suporta doar un subset al functiilor DPMI 0.9 care permit programelor in mod protejat sa comunice cu programe rezidente (TSR-uri) si device -drivere din modul real.

Numar -Nume functie DPMI
0200h-returneaza vector de intrerupere in mod real
0201h-seteaza vector de intrerupere in mod real
0300h-simuleaza intrerupere in mod real
0302h-apeleaza rutina in mod real cu IRET
0304h-aloca adresa de intoarcere in mod real
0305h-dealoca adresa de intoarcere in mod real

Cea de-a doua asertiune din acest important document este ca extender-ul DOS din Windows 3.x suporta aproape intreaga interfata
"oficiala" a MS-DOS-ului cu programele aplicative. Singurile apeluri nesuportate sunt

INT 20h-returneaza vector de intrerupere
INT 25h-citire absoluta de pe disc
INT 26h-scriere absolute pe disc
INT 27h-instalare resident si urmatoarele functii mai vechi ale INT 21h:
Functia INT 21h NUME MS-DOS
00h-termina executia
0Fh-deschide fisier via FCB
10h-inchide fisier via FCB
14h-citire scventiala cu FCB
15h-scriere secventiala cu FCB
16h-creaza fisier cu FCB
21h-citire in acces direct cu FCB
22h-scriere in acces direct cu FCB
23h-returneaza lungime fisier cu FCB
24h-seteaza inregistrare relativa cu FCB
27h-citeste bloc cu FCB
28h-scrie bloc cu FCB

Functii partial suportate sunt:
-INT 21h, functiile 25h si 35h (cere si aloca vector de intrerupere) returneaza si modifica adresele in mod protejat, neafectind rutinele care trateaza intreruperi in timp real;
-INT 21h, functiile 38h si 65h (country information) trebuie sa tina seama de faptul ca adresa DWORD a rutinei de tratare returnata este o adresa in mod real;
-INT 21h, functia 44h(IOCTL ), subfunctiile 2,3,4 si 5 restring dimensiunea datelor la mai putin de 4k daca buffer-ul este deasupra limitei de 1 MB in timp ce facilitatile de coduri de pagina ale IOCTL, subfunctia 0Ch nu mai sunt suportate deloc.
Functiile de driver MicrosoftMouse (INT 33h) si ROMBIOS video (INT 10h), comunicatii (INT 14h), tastatura (INT 16h), imprimanta (INT17h), data si timp
(INT 1Ah) se bazeaza pe registre si deci functioneaza corespunzator.

Tema :
-sa se studieze DOS-extenderul minimal tinydosx.c+tinydosx.asm


Colt dreapta
Creeaza cont
Comentarii:

Nu ai gasit ce cautai? Crezi ca ceva ne lipseste? Lasa-ti comentariul si incercam sa te ajutam.
Esti satisfacut de calitarea acestui document, eseu, cometariu? Apreciem aprecierile voastre.

Nume (obligatoriu):

Email (obligatoriu, nu va fi publicat):

Site URL (optional):


Comentariile tale: (NO HTML)


Noteaza documentul:
In prezent fisierul este notat cu: ? (media unui numar de ? de note primite).

2345678910

 
Copyright© 2005 - 2024 | Trimite document | Harta site | Adauga in favorite
Colt dreapta