2015-11-20 8 views
7

लिनक्स 0.01 के बूटलोडर की असेंबली स्रोत फ़ाइल में, ए 20 लाइन सक्षम है।संरक्षित मोड में ए 20 लाइन को सक्षम क्यों करें?

boot/boot.s से:

| that was painless, now we enable A20 

call  empty_8042 
mov al,#0xD1 

... 

बाद बूटलोडर संरक्षित मोड में कूदता है।

रियल मोड में, A20 लाइन को सक्षम करने के लिए हमें 64 KiB का एक पता स्थान विस्तार अनुदान - 16 बाइट्स।
संरक्षित मोड में, पता बस स्वचालित रूप से अनलॉक हो जाती है।

क्यों बूटलोडर जब संरक्षित मोड पर कूद कि वैसे भी करना होगा A20 पता लाइन सक्षम है?

उत्तर

10

वास्तविक मोड में, ए 20 लाइन को सक्षम करने से हमें 64 कीबी - 16 बाइट्स का पता स्थान विस्तार मिलता है।

सही रियल मोड (एक 286+ पर) में आप 0xFFFF करने के लिए एक खंड रजिस्टर सेट कर सकते हैं, जो आप (0xFFFF << 4) + 64K को स्मृति का उपयोग करने की अनुमति होगी।

संरक्षित मोड में, पता बस स्वचालित रूप से अनलॉक हो जाती है।

संरक्षित मोड एक सीपीयू मोड है, इसलिए यह बस को "अनलॉक" नहीं करता है, यह बस अतिरिक्त पता स्थान का उपयोग करने की अनुमति देता है, जिसके लिए पता बस पर अधिक पिन की आवश्यकता होती है।

बूटलोडर ए 20 एड्रेस लाइन को सक्षम क्यों करता है जब सुरक्षा मोड पर कूद वैसे भी करता है?

ऐसा नहीं है क्योंकि। "ए 20" आम तौर पर पीसी-एटी में जोड़े गए एक हार्डवेयर हैक को संदर्भित करता है, जिसे संरक्षित मोड अपेक्षित के रूप में कार्य करने से पहले अक्षम करने की आवश्यकता होती है।

सबसे पहले, याद करते हैं कि वर्ष पुराने सीपीयू (80,186) के माध्यम से ही स्मृति के 1 MiB अप करने के लिए यहां पहुंच सकता है, और इस तरह 20 पता लाइनों था (A0 - A19)। कुछ बहुत पुराने सॉफ्टवेयर ने इस तथ्य का लाभ उठाया कि मेमोरी 1 एमबीबी से ऊपर पहुंचती है को कम स्मृति में लपेटें।

286 अधिक पता लाइनों जोड़ा है, आईबीएम इस पुराने सॉफ्टवेयर के साथ संगतता को तोड़ने के लिए नहीं करना चाहता था, इसलिए वे अकल्पनीय किया: वे 21 वीं पता पंक्ति (A20) पर एक बाहरी गेट रखा, और छोड़ दिया डिफ़ॉल्ट रूप से बंद हो जाता है, लपेटने वाले व्यवहार को फिर से सक्षम करता है, इसलिए पुराना सॉफ़्टवेयर अभी भी सही तरीके से कार्य करेगा। तो 286 स्वयं ही इस हैक के बारे में कुछ भी नहीं जानता - यह सीपीयू के बाहर है। सीपीयू के लिए, ए 20 किसी भी अन्य एड्रेस लाइन से अलग नहीं है।

यह फाटक, (A20 गेट), कुंजीपटल नियंत्रक आईसी पर एक GPIO पिन द्वारा नियंत्रित है। इस प्रकार, आपको संरक्षित मोड में जाने से पहले इसे सक्षम करने की आवश्यकता है। आप नहीं, था (और आप फ्लैट मैप की भौतिक स्मृति के सभी 4GB कहते हैं) तो, तो Micheal Petch indicated के रूप में, "हर विषम क्रमांकित मेगाबाइट क्षेत्र नहीं पहुंच सकेंगे। तो 1mb-2 एमबी वास्तव में दर्शाएंगे 0-1mb, 3mb-4MB दर्शाएंगे 2 एमबी -3 एमबी आदि" यह भी देखें:

  • A20 Line (विकिपीडिया)
+0

1. तो संरक्षित मोड A20 सक्षम नहीं होंगे, लेकिन अन्य सभी पता लाइनों मोड (16-बिट के साथ जुड़े -> A0 - A23, 32 -बीटी -> ए0 - ए31), है ना? 2. जहां तक ​​मैं कह सकता हूं, "ए 20 लाइन" [...] सुरक्षित मोड से पहले अक्षम होने की आवश्यकता है "और" आपको इसे सक्षम करने की आवश्यकता है [ ए 20 लाइन] संरक्षित मोड में जाने से पहले "एक-दूसरे से विरोधाभास करते हैं। क्या आप इसे स्पष्टीकरण दे सकते हैं, कृपया? 3. इसका मतलब क्या है" यह सटीक नहीं है। "? – Downvoter

+0

@ कैड ए 20 गेट एक * बाहरी * हैक है। अगर यह आईबीएम पीसी-एटी डिजाइनरों को जोड़ने के लिए नहीं थे, हम इस संवेदना नहीं करेंगे आज rsation। 286 स्वयं ए 20 का अलग-अलग इलाज नहीं करता है। ** 2। ** मैं कह रहा था कि A20 wraparound "हैक" को ए 20 गेट को सक्षम करके अक्षम किया जाना चाहिए। –

+0

समझ गया, धन्यवाद। "गलतता" के बारे में, मैंने स्पष्ट रूप से असली मोड कहा क्योंकि मैंने सोचा था कि यह केवल 1 एमआईबी +64 कीबी - 10 बाइट्स को संबोधित कर सकता है लेकिन अवास्तविक मोड अभी मेरे दिमाग में आया है। "अनलॉक" के साथ, यह सिर्फ गलत शब्दावली है जो मुझे लगता है। बीटीडब्ल्यू, मुझे लगता है कि आपके पास रैम के दूसरे एमआईबी की शुरुआत होने के लिए शून्य बहुत अधिक है। – Downvoter

संबंधित मुद्दे