Gebruikersavatar
Vladimir Lenin
Artikelen: 0
Berichten: 829
Lid geworden op: do 25 sep 2008, 14:15

Re: Geheugen locaties van gegevens door bios interupt ingegeven.

Tegenwoordig hoef je je om die hardware-afhankelijke implementatie-details gewoon niet meer druk te maken :D
Das natuurlijk ook weer helemaal waar, aangezien het besturingssysteem grote delen van de hardware afschermt van gebruikersprogramma's kan een programmeur tegenwoordig enkel opdrachten van hoog niveau geven. Iets dat volgens mij niet enkel voordelen heeft.
"Als je niet leeft zoals je denkt, zul je snel gaan denken zoals je leeft."

--Vladimir Lenin-- (Владимир Ильич Ульянов)
Bert F
Artikelen: 0
Berichten: 2.589
Lid geworden op: vr 15 aug 2003, 20:37

Re: Geheugen locaties van gegevens door bios interupt ingegeven.

Mijn bedoeling was nu net om een eenvoudig besturingsysteempje maken en daarvoor is het toch wel nuttig dat je goed weet hoe die implementatie juist ineen zit.
Gebruikersavatar
jadatis
Artikelen: 0
Berichten: 400
Lid geworden op: za 10 mei 2008, 21:28

Re: Geheugen locaties van gegevens door bios interupt ingegeven.

De mogelijkheid om in het BIOS te schrijven, gebeurt ook door middel van een klein besturings-sijsteempje, wat dus waarscheinlijk weer op een EEPROM geschreven staat. Een DOS achtig sijsteem wat eigenlijk weer een opvolger is van BASIC.

Maar deze besturings-systeemen zijn ook weer een tussenlaag. In de processor wordt met machinetaal gewerkt.

En het besturingssysteem zet met een bepaalde opdracht alleen een aantal hexadecimale getallen achter elkaar waar de machinetaal mee werkt.

Ook weer in dat ORIC Atmos boekje wordt dat lichtelijk beschreven.

daar word geschreven over Operation code en daarachter de operand.

Operation code geeft aan wat er gedaan moet worden zoals optellen,verplaatsen.

Operand geeft aan waarmee de operation code moet werken.

Door ingeven van zo'n hexadecimaal getal wordt een combinatie van pootjes van de processor aangestuurd, waardoor daarbinnen het nodige gebeurt.

Dat is in de jaren natuurlijk steeds ingewikkelder geworden, met steeds meer machinetaal codes die meerdere dingen tegelijk doen, maar computers werken nog steeds met die machine-taal.

De Pentium- processoren werken met de machinecodes die veel tegelijk doen, en de AMD-processoren delen dit in kleinere stapjes en werken daardoor bij eenvoudige bewerkingen vaak sneller.

Heb je een programma dat de machinecodes van Pentium ten volle benut, dan werkt de Pentium weer sneller. Ik weet, dit verhaal is wel wat kort door de bocht, maar mogelijk krijg je zo een redelijk idee hoe het werkt.

Je kunt dus door een aantal Hexadecimale getallen achter elkaar te zetten in de juiste volgorde, de computer iets laten doen, en dan aangeven bij welk adres er begonnen moet worden.

Met de hand is dat een monniken-werk, maar met een besturingsprogramma gaat het sneller
Gebruikersavatar
Cycloon
Artikelen: 0
Berichten: 4.810
Lid geworden op: ma 24 jan 2005, 20:56

Re: Geheugen locaties van gegevens door bios interupt ingegeven.

Das natuurlijk ook weer helemaal waar, aangezien het besturingssysteem grote delen van de hardware afschermt van gebruikersprogramma's kan een programmeur tegenwoordig enkel opdrachten van hoog niveau geven. Iets dat volgens mij niet enkel voordelen heeft.
Dat ligt dan echter weer aan het OS dat je draait en niet aan de hardware, zo kan je in windows XP en Vista hardware niet meer direct aanspreken, via bv het debug commando, uit veiligheidsoverwegingen. In linux kan dit bv officieel ook niet meer, echter zijn daar wel andere manieren om dit wel te doen.

Eigenlijk wordt de meeste hardware dezer dagen ook afgeschermd door een extra instructielaag zodanig dat andere fabrikanten niet makkelijk jouw ontwerpen kunnen gaan stelen.
Gebruikersavatar
Vladimir Lenin
Artikelen: 0
Berichten: 829
Lid geworden op: do 25 sep 2008, 14:15

Re: Geheugen locaties van gegevens door bios interupt ingegeven.

In zekere zin heb je gelijk. Een processor heeft een register (van 1 bit) waarin geschreven staat of het momenteel in OS-modus of in programma-modus draait, indien het zich in programma-modus bevindt zijn basisfuncties die bijvoorbeeld I/O regelen niet meer uit te voeren. Een besturingssysteem bevat echter een systeem waarbij een programma een dienst kan aanvragen die dan door het besturingssysteem uitgevoerd wordt die de rechten wel heeft. Dus wanneer je in linux een basis I/O bewerking aanvraagt doet het besturingssysteem dat zelf. De reden is dat een besturingssysteem capabel geacht wordt om te weten of een bepaalde dienst eventueel schade aan het systeem kan aanbrengen en in dat geval de dienst dus weigeren. Linux is in dat opzicht dus een beetje los. Maar theoretisch gezien kan je een programma nooit een I/O bewerking laten uitvoeren.
"Als je niet leeft zoals je denkt, zul je snel gaan denken zoals je leeft."

--Vladimir Lenin-- (Владимир Ильич Ульянов)
Gebruikersavatar
Rogier
Artikelen: 0
Berichten: 5.679
Lid geworden op: di 27 apr 2004, 13:40

Re: Geheugen locaties van gegevens door bios interupt ingegeven.

Mijn bedoeling was nu net om een eenvoudig besturingsysteempje maken en daarvoor is het toch wel nuttig dat je goed weet hoe die implementatie juist ineen zit.
Dan kun je toch beter een simpel VM'etje maken en je eigen implementatie kiezen? (en die dan in de background doorkoppelen naar windows)

En dan dat eenvoudige besturingsysteempje in de zelfverzonnen VM laten runnen. Werkt waarschijnlijk veel prettiger dan al die oude BIOS rommel, en ontwikkelt tien keer zo makkelijk.
In theory, there's no difference between theory and practice. In practice, there is.
Gebruikersavatar
Revelation
Artikelen: 0
Berichten: 2.364
Lid geworden op: do 24 mar 2005, 20:56

Re: Geheugen locaties van gegevens door bios interupt ingegeven.

Mijn bedoeling was nu net om een eenvoudig besturingsysteempje maken en daarvoor is het toch wel nuttig dat je goed weet hoe die implementatie juist ineen zit.


Als je in real mode wilt blijven, moet je gewoon int 10 gebruiken met AH = 0Eh en AL je gewenste karakter om een karakter te laten zien. Waarschijnlijk slaat de BIOS dit karakter ook op in 0xB8000, maar dat weet ik niet zeker. Als je echt wilt doorzetten met je OS, zou ik me vooral richten op het gaan naar protected mode en het registreren van de GDT en de IDT. Als je geïnteresseerd bent, kan ik je de code van mijn bootloader geven. Deze print ook stukjes tekst en laadt ook de kernel vanuit een FAT16 bestandssysteem.
“Quotation is a serviceable substitute for wit.” - Oscar Wilde

Terug naar “Informatica en programmeren”