Bu, konuyla ilgili alınan halk bilgeliğinin, maalesef psusi
cevabının ve gerçekten sorunun bir parçası olarak örneklendiği gibi, şu anda nasıl olduğunu açıklayan mevcut teknik referansların zenginliğine rağmen, 1991 civarında olduğu gibi dünyada sıkıştığı bir başka durumdur. aksi takdirde.
1980'lerin sonlarında, IBM PC uyumlu dünyasında "BIOS" adı verilen iki şeyden biri olan makine yazılımı gerçekten ISA veriyolundaki bir ROM yongasındaydı; ve CPU'lar 000FFFF0
gerçek mod işaretçisiyle erişilen "geleneksel bellekte" bir yer olan fiziksel adreste kod yürütmeye F000:FFF0
başladılar. Bu dünya çoktan gitti.
(WWW sayfasının yazarının işaret ettiği dünya, S. Ebrahim Shubbar, 2002'de yazılmasına rağmen yanlışlıkla yaşıyor. Daha da eski. CPU'lar 8086'dan beri CS:IP
kombinasyonla FFFF:0000
başlamadı. 80286 bunu değiştirdi F000:FFF0
. Fakat 80286 Dünya kendisi olduğunu yüksek 1980'lerin o halk bilgelik hala dolaşır tarihi dünya üzerinden.)
Sizin "BIOS yongası" olan RAM; ve CPU'nuz 16-bit değil.
Modern bilgisayarlarda, makine ürün yazılımı kalıcı RAM'de tutulur . NVRAM yongası LPC veriyoluna (veya özel bir "ürün yazılımı hub'ı" arayüzüne) bağlanır ve "yonga setindeki" LPC / FWH köprüsü normalde ona yazma döngülerini devre dışı bırakır. Ürün yazılımının "yanıp sönmesi", NVRAM'a yazmayı ve ardından NVRAM'a yazmayı sağlayan yonga seti kayıtlarını ayarlamayı içerir. (Örneğin, Intel ICH10'da, yazma döngülerine izin veren yonga seti kayıt biti BIOSWE
"BIOS Yazma Etkin" olarak adlandırılır . Burada atlayacağım bazı ek ayrıntılar var, ancak bunun özü.)
x86 işlemciler 000FFFF0
, 80286 günlerinden beri yerinde yürütülmeye başlamıyor. 32 bit CPU'lar, gerçek anlamda gerçek olmayan mod olarak bilinen şeyde başlatılıyor . CS
Sıfırlamanın ardından kaydın başlangıç değeri olmasına rağmen F000
, bu kayıtla ilişkilendirilen segment tanımlayıcı başlangıçta FFFF0000
temel adres olarak kalır. Yani başlangıçta 16:16 CS: IP adresine karşılık gelen fiziksel adres F000:FFF0
aslında ve 80386'nın günlerinden beri olmuştur FFFFFFF0
.
Makine bellenimi temel olarak 32 bit ve 64 bit x86 makinelerde fiziksel adres alanına eşlenir. "Geleneksel bellek" alanında yazılım üzerine 128KiB penceresi vardır, ancak makine ürün yazılımını tutan NVRAM modern PC'lerde 16MiB'ye kadar olabilir (bu, yonga setine göre değişir) ve temel olarak hemen 16MiB fiziksel adres alanına eşleştirilir 4GiB sınırının altında - yani fiziksel adresler FF000000
için FFFFFFFF
. (ICH10'u tekrar örnek olarak kullanmak için: Bu adres alanının ne kadarının NVRAM ile eşlendiği FWH_DEC_EN
"Firmware Hub Kod Çözme Etkinleştir" kaydı olarak bilinen bir yonga seti kaydı tarafından kontrol edilir . Firmware yeniden programlanacak şekilde kodlanırFWH_DEC_EN
anakarta takılmış olan gerçek NVRAM yongasının boyutuna göre kaydedin. Ama NVRAM'da üst 512KiB edilir hep fiziksel adreslere, eşleştirilmiş FFF80000
için FFFFFFF
, engelli olamaz.) Kodu başlangıçta hemen bu 16MiB adres aralığının üst 64KiB sıfırlama yaşamları sonra işlemci tarafından yürütülen.
BIOS ROM gölgelemeye gelince (buna denir - barlop
CPU'nun gölgelenmesinin neden bir sır olduğunu düşünüyor): Evet, LPC veriyolundaki NVRAM'a veya bellenim merkezine hala ana sisteme erişim kadar hızlı değil (uçucu) RAM. Ancak gölgelemenin önemli nedenleri, yine 1980'lerin sonunda ve 1990'ların başında OS / 2 ve Windows NT gibi işletim sistemlerinin avantajları ile büyük ölçüde azaldı. MS-DOS, PC-DOS, DR-DOS ve benzeri gerçek mod işletim sistemleri, makine bellenimi tarafından sağlanan I / O işlevselliği üzerine yerleştirilmiştir. Böylece yazılımın kodu ve salt okunur verilerine çalışma zamanında çok fazla erişildi. OS / 2 ve Windows NT gibi korumalı mod işletim sistemleri çok daha az güvenirçalışma zamanında ürün yazılımı tarafından sağlanan hizmetler üzerine. Bu nedenle NVRAM'den yürütülen kodun ve salt okunur verilerin aynı olması, işlemciye, sistem RAM'ine gölgelendirildiğinde olduğundan daha yavaş gelir.
Üstelik onlar firmware hangi kodun ve veri do NVRAM'de kısmında mutlaka canlı yapmak güvenmek fiziksel adres alanı kısmına eşleştirilmiş, mutlaka ilk etapta bile shadowable olan yukarıda belirtilen 128KiB "geleneksel bellek" penceresinde. Korumalı mod ürün yazılımı hizmetlerinin, gerçek mod ürün yazılımı hizmetlerinin yaptığı gibi fiziksel adres alanında 1MiB satırının altında yaşamasına gerek yoktur ve bazıları gerekmez. (Ve tabii ki yalnızca fiziksel adres alanı alanı ile aynı hile yapmak mümkün olacaktır yapmak canlı en az 4GiB sistem RAM varsa.)
İronik olarak, 2002 yılında S. Ebrahim Shubbar'ın yazmasından daha doğru bir bilgi kaynağı Phil Croucher'ın 2001'den bir yıl öncesine ait BIOS Companion adlı kitabıdır . M. Croucher, Unices, Linux, Windows NT ve "muhtemelen (95 / 98) "" gölgelemeden hiçbir fayda sağlamaz ". Mutlaka tamamen faydası yoktur , ancak 1989'da 16-bit 80286 makinelerde MS-DOS, PC-DOS ve DR-DOS'u gerçek modda çalıştıran insanların dünyasına göre nispeten çok azdır.