Szerelő és az operációs rendszer kernel, dev64

Mi a hatalom egy testvér? Az erő az egységben?
Nem testvér, az erő a gcc és binutils.

Szerelő és az operációs rendszer kernel, dev64

Általános tévhit - az operációs rendszer kernel írt assembly nyelven. Ma fogok kísérletezni azt bizonyítja, hogy nem az.

Múltkor kísérleteztek a rakodó. A rakodó került a vizsgálati programot és egy teszt program futott. Ez volt a legegyszerűbb dolog lehet programozni operációs rendszer nélkül. Most a cél az, hogy a következő lépésben. Gyűjtsük össze a vizsgálati operációs rendszer alapvető és töltse fel a boot.

Számítógépes szoftver egy fájl a lemezen. Ahhoz, hogy a fájl lett folyamat processzor által végrehajtott, a szoftver kell betölteni egy fájlt a memóriába. Ez teszi a végrehajtható rakodó. (Nem tévesztendő össze az operációs rendszer boot loader). Az operációs rendszer futtatható fájl formátumok különböző rendre és rakodók futtatható fájlokat különböző.

A második szakaszban a folyamat „gyártás” program - összekötő. A linker veszi a kérdéses objektum fájlok és összegyűjti azokat a futtatható fájlt egy bizonyos formában alkalmas a bootloader futtatható fájlokat.

Így van, a következő személyek:

  • Végrehajtható formátumok
  • Az objektum formátum

Az objektum formátum - ez az, amit kapsz a kimeneten a fordító.

Végrehajtható formátumok - van valami, ami által támogatott rakodógépek futtatható fájlokat. És van egy másik formátumban. Az úgynevezett bináris. Ez egyszerűen egy sorozata processzor utasításokat a meztelen. (A legegyszerűbb formában az operációs rendszer kernel). Ugyanakkor futtatható formátumban - az kimeneti formátum a linker.

Az egyik kapcsolókat, amely támogatja a különböző formátumú fájlok a tárgy és végrehajtható - ld (linker GNU binutils csomag). ld mellékelt különböző fordítóprogramok. Például a gcc. Igaz az ld készült összekötő magját Linux és sok más operációs rendszerek. Amellett, hogy a szerelvény mozgott formátumok, mint a manó vagy a Windows PE, ld gyűjthetünk, beleértve a nyers bináris futtatható.

Hogyan történik ez? Alapértelmezésben a kapcsoló a parancssorban objektum fájlok linkért az összekapcsolható egy adott objektum fájl, a funkció és a forma _main fájl minden formátumban.

ld is fel lehet használni egy speciális szkript, amely lehetővé teszi a rugalmas konfigurálását, hogyan lehet létrehozni egy futtatható fájl. Amikor dolgozik a script könnyű teljesen elkerülhető az a rejtett tárgy fájlok szabványos könyvtárak és így tovább. Amikor dolgozik egy linker script fájl csak meghatározott parancsokat. Azok a fájlok és az alapértelmezett könyvtárakat. A szkript neve átkerül a -T opció. Például Slinky alapcsapat két objektum fájlok és script:
$ Ld -Tlink.ld -o kernel.bin start.o second.o

Most a linker script részletesebben. Példa script vett osdever:

Összefoglalom körülbelül ld.

Sok változata gcc és binutils. Ezek támogatják a különböző formátumok objektum fájlokat. Beleértve ott binutils verzió össze a Windows. Ez lehetővé teszi, hogy dolgozzon ki a lényege az operációs rendszer bármely alkalmas fordító fejlesztő. A legfontosabb dolog az, hogy egy pár a fordító megfelő változatát binutils, amely támogatja a kívánt verziót a tárgy és végrehajtható (egy másik tárgy) fájlokat.

Ui Van egy másik ellenérv az összeállítás ... Mint tudod, az operációs rendszer betöltése után a számítógép már BIOS-t. BIOS - Basic Input Output System. Általában, API használható a berendezés, egy sor megszakítás átviteli adatokat a nyilvántartások, és egy sor IO portok és a memória leképezett memória régiók. Volt egy ilyen rendszer idején fejlődése az első IBM / PC számítógépek vissza a 80-as években a múlt században. IBM PC kompatibilis rendszerek lassan fejlődött építészet. Voltak új szabványok és a rendszer busz: ISA, EISA, PCI, stb Amikor ez a BIOS maradt a magántulajdon néhány cég. BIOS interfész a program csak a valós idejű, BIOS interfész elavult volt, a terhet a kompatibilitást és korlátozott. Ez a helyzet kezdett lassulni a fejlesztési képzelet hardver. A fejlődő Itanium platform az Intel jött egy kezdeményezés EFI (Extendible Firmware Interface). Az ötlet az volt, hogy az EFI BIOS csere egy új fejlesztés. EFI, ellentétben a BIOS már nem alapul a megszakításokat. EFI már nem írt assembly nyelven, és előírja, hogy a használata a függvénytábla különböző funkciók C nyelven írt Természetesen a folyamat az új technológiák hosszú. Több év telt el, és miután változatai EFI 1,10 Intel át a jogot, hogy a továbbfejlesztése az új szabvány UEFI újonnan létrehozott kezdeményezés csoport, amely magában foglalja a képviselői Intel, az IBM, az Apple, a Microsoft és mások. Most ez a technológia Unified előtag, ami azt jelenti, hogy egyetlen hordozható számítógépek firmware kap az Intel PC-alapú és a tabletta alapuló ARM. UEFI BIOS képest kétségkívül progresszív. Ez egy grafikus illesztőprogramok, hálózati meghajtók, stb A számítógép operációs rendszer nélkül lesz képes elvégezni, beleértve a hálózati kapcsolatok ... Van azonban mindez és hátrányával. Az egyik technológiák által támogatott UEFI a Biztonságos indítás. A tilalom nem letölthető szoftver alá. Ez azt jelenti, hogy hozzon létre a vas, ami lesz betöltve egyetlen engedélyezett (aláírt) operációs rendszer.

A legutóbbi csapás a BIOS vált a Microsoft követelményeket összes rendszer tanúsítvánnyal dolgozni Windows 8, a jelenléte UEFI biztonságos indítás.

Mi következik a fenti? Ebből következik a fentiekből, hogy az Intel PC platform formáját, amelyben létezik ma is éljen. A kiadás a Windows 8 a sarkon. A második következtetés - a szerelő már nem egy eszköz, még akkor is, ha az írás operációs rendszereket. Az új felület, hogy szükség van a kódban látszik csökkenni. A harmadik következtetés - az operációs rendszer betöltése, és a vezető architektúra a közeljövőben fogja túlélni a forradalmi változásokat.

Kapcsolódó cikkek