প্রথম BIOS নির্দেশিকা 0xFFFFFFF00 (র্যামের "শীর্ষ") এ কেন অবস্থিত?


51

আমি জানি যে BIOS তার প্রথম নির্দেশ 0xFFFFFFF0 থেকে লোড করে, তবে কেন এই নির্দিষ্ট ঠিকানা? আমি একগুচ্ছ প্রশ্ন করেছি এবং আশা করি আপনি তাদের মধ্যে কিছুটা হলেও কমপক্ষে আমাকে সহায়তা করতে পারেন।

আমার প্রশ্নগুলো:

  • 4 জিবি র‌্যামের প্রথম শীর্ষে বিআইওএস নির্দেশিকাটি কেন অবস্থিত?
  • আমার কম্পিউটারে কেবল 1 জিবি র‌্যাম থাকলে কী হবে?
  • 4 গিগাবাইটেরও বেশি র‌্যামের সিস্টেমগুলি সম্পর্কে কী (উদাহরণস্বরূপ, 8 জিবি, 16 গিগাবাইট ইত্যাদি)?
  • স্ট্যাকটি কিছু মান দিয়ে কেন শুরু করা হয় (এই ক্ষেত্রে, 0xFFFFFFFF0 এ একটি মান অবস্থিত)?

আমি আজ বিকেলে এই সম্পর্কে পড়েছি, এবং আমি এখনও এটি পাই না।


28
দয়া করে প্রতিটি প্রশ্নে একটি প্রশ্ন করুন।
মনিকার সাথে লাইটনেস রেস

4
আমি পছন্দ করি যে গৃহীত উত্তর কীভাবে এমনকি বিভাজনযুক্ত মেমরি বা অ্যাড্রেসিং মোডগুলি মোটেও উল্লেখ করে না এবং কেবলমাত্র এ -20 লাইনটি স্পর্শ করা একমাত্র জায়গা মন্তব্যগুলিতে রয়েছে।
i 17lett

আতেল এভিআরগুলি ঠিকানা 0 থেকে কার্যকর করা শুরু করে, যখন ফ্রিস্কেল এইচসিএস 08 এর 0xFFFE থেকে শুরু হয়, iirc। প্রতিটি প্রসেসর পরিবারের নিজস্ব বৈশিষ্ট্য রয়েছে।
নিক টি

2
@ কমপ্লেটটিকে আমি পছন্দ করি যে পোস্টারকে আরও তথ্যের সাথে তাদের উত্তর আপডেট করতে বলার চেয়ে আপনি এখানে কীভাবে অভিযোগ করার সিদ্ধান্ত নেন। আমি এও পছন্দ করি যে আপনি কীভাবে ভাবছেন যে এই জ্ঞানটি ওপিতে স্পষ্ট করতে সক্ষম হবে যদিও একটি প্রশ্ন জিজ্ঞাসার উদ্দেশ্যটি এমন কোনও জিনিস সম্পর্কে জ্ঞান অর্জন করা যা এখন কেউ পুরোপুরি বুঝতে পারে।
MonkeyZeus

2
আজ অবধি মুনকিজেস, আরও 9 জন মন্তব্যকারী ইতিমধ্যে এটি করেছে, এবং এটি এখনও পরিবর্তন হয়নি। আমার মন্তব্য, বিদ্রূপ করার সময়, শূন্য ছিল না; এটি ভবিষ্যতের নেটিজেনদের পাশাপাশি ওপিতেও একটি সতর্কতা warning
আইলমেট

উত্তর:


57

0xFFFFFFF0এটি যেখানে একটি x86- সামঞ্জস্যপূর্ণ সিপিইউ চালিত হয় নির্দেশাবলী সম্পাদন শুরু করে। এটি সিপিইউর একটি হার্ডওয়ার্ড, অপরিবর্তনীয় (অতিরিক্ত হার্ডওয়্যার ছাড়াই) দিক এবং বিভিন্ন ধরণের সিপিইউ আলাদাভাবে আচরণ করে।

প্রথম বিআইওএস নির্দেশিকা কেন 4 জিবি র‌্যামের "শীর্ষে" অবস্থিত?

এটি 4 গিগাবাইট ঠিকানা জায়গার "শীর্ষ" এ অবস্থিত - এবং পাওয়ার-এ বিআইওএস বা ইউইএফআই রম সেই ঠিকানাগুলি পড়তে প্রতিক্রিয়া জানাতে সেট করে।

এটি কেন আমার তত্ত্ব:

প্রোগ্রামিংয়ের প্রায় প্রতিটি বিষয়ই ঠিকঠাক ঠিকানার সাথে আরও ভাল কাজ করে। সিপিইউ ডিজাইনার জানেন না যে কোনও সিস্টেম নির্মাতা সিপিইউয়ের সাথে কী করতে চায়, সুতরাং সিপিইউর পক্ষে বিভিন্ন উদ্দেশ্যে প্রয়োজনীয় জায়গার মাঝখানে ঠিকানাগুলি স্ম্যাক করা প্রয়োজন এটি একটি খারাপ ধারণা। ঠিকানার জায়গার উপরে বা নীচে "পথ থেকে দূরে" রাখা ভাল। অবশ্যই, মনে রাখবেন এই সিদ্ধান্তটি নেওয়া হয়েছিল যখন 8086 নতুন ছিল, যার এমএমইউ ছিল না ।

8086-তে, বাধা ভেক্টরগুলি 0 এবং তত উপরে মেমরির স্থানে বিদ্যমান ছিল। বিঘ্নিত ভেক্টরগুলির পরিচিত ঠিকানাগুলি থাকা দরকার এবং নমনীয়তার জন্য র্যামে থাকার ইচ্ছা ছিল - তবে সিপিইউ ডিজাইনারের পক্ষে কোনও সিস্টেমে কতটা র‌্যাম হতে চলেছে তা জানা সম্ভব ছিল না। সুতরাং 0 থেকে শুরু করে তাদের জন্য কাজ করার অর্থটি তৈরি হয়েছিল (কারণ 1978 সালে কোনও সিস্টেমের আবিষ্কারের সময় 4 গিগাবাইট র‌্যাম থাকত না - সুতরাং 0xFFFFFFF0 এ র‌্যামের প্রত্যাশা করা ভাল ধারণা ছিল না), এবং তারপরে রম হতে হবে উপরের সীমানায়

অবশ্যই, কমপক্ষে 80286 দিয়ে শুরু করে, বিঘ্নিত ভেক্টরগুলিকে 0 ব্যতীত অন্য কোনও প্রারম্ভিক স্থানে সরিয়ে নেওয়া যেতে পারে তবে আধুনিক 64৪-বিট x86 সিপিইউ এখনও ৮০ 80 80 মোডে বুট আপ করে, তাই সবকিছু এখনও সামঞ্জস্যতার জন্য পুরানো পথে কাজ করে (হাস্যকর হিসাবে এটি ডস চালাতে সক্ষম হওয়ার জন্য আপনার x86 সিপিইউ এখনও লাগবে বলে মনে হচ্ছে 2015।

সুতরাং যেহেতু বিঘ্নিত ভেক্টরগুলি 0 থেকে শুরু হয় এবং wardর্ধ্বমুখী কাজ করে, রমকে উপর থেকে শুরু করে নীচের দিকে কাজ করতে হবে।

আমার কম্পিউটারে কেবল 1 জিবি র‌্যাম থাকলে কী হবে?

একটি 32-বিট সিপিইউতে 4,294,967,296 ঠিকানা রয়েছে, 0 (0x0000000000) থেকে 4294967295 (0xFFFFFFFF) নম্বরযুক্ত। রম কিছু ঠিকানায় থাকতে পারে এবং র‌্যাম অন্যদের মধ্যে থাকতে পারে। সিপিইউর এমএমইউ দিয়ে এটি ফ্লাইতেও স্যুইচ করা যায়। র‍্যামের সমস্ত ঠিকানায় বাস করতে হয় না।

মাত্র 1 জিবি র‌্যামের সাথে, কিছু ঠিকানা পড়তে বা এগুলি লিখিত হওয়ার পরে কোনও প্রতিক্রিয়া জানায় না। যখন এই জাতীয় ঠিকানাগুলি অ্যাক্সেস করা হয় বা সিস্টেম লকআপ হয় তখন এটি অবৈধ ডেটা পড়তে পারে।

4 গিগাবাইটেরও বেশি র‌্যামের সিস্টেমগুলি সম্পর্কে কী?

এটিকে কিছুটা সহজ রাখছেন: -৪-বিট সিপিইউতে আরও ঠিকানা রয়েছে (যা তাদের মধ্যে একটি 64৪ বিট করে তোলে - উদাহরণস্বরূপ 0x000000000000000000 0xFFFFFFFFFFFFFFF এর মাধ্যমে) উদাহরণস্বরূপ, অতিরিক্ত র্যাম "ফিট করে"। ধরে নিই সিপিইউ লং মোডে রয়েছে । ততক্ষণে র‌্যাম রয়েছে, ঠিক ঠিকানা নয়।

স্ট্যাকটি কিছু মান দিয়ে কেন শুরু করা হয় (এক্ষেত্রে 0xFFFFFFF0 এ একটি মান অবস্থিত)?

X86 পাওয়ার-অনে স্ট্যাক পয়েন্টারকে কী নির্দিষ্ট করে দেয় সে সম্পর্কে আমি তাত্ক্ষণিকভাবে কিছু খুঁজে পাচ্ছি না, তবে শেষ পর্যন্ত যে কোনও পদ্ধতিতে র‌্যামটি সিস্টেমটিতে কতটা র‍্যাম রয়েছে তা খুঁজে পাওয়ার পরে এটি আরম্ভ করার একটি রুটিন দ্বারা পুনরায় স্বাক্ষর করতে হবে। (@ এরিক টাওয়ারগুলি নীচে দেওয়া মন্তব্যে জানা গেছে যে এটি পাওয়ার আপ শূন্যে সেট করা আছে))


7
অ্যাড্রেস স্পেসটিকে একটি বড় জায়গা হিসাবে মনে করা ভাল যেখানে জিনিসগুলি হার্ডওয়্যার দ্বারা নির্ধারিত হতে পারে। যখন সিপিইউ মেমোরিটি পড়েন / লেখেন, এটি আসলে একটি বাসের মধ্যে একটি যোগাযোগ সম্পাদন করে, এবং হার্ডওয়্যারটি নিশ্চিত করতে পারে যে র্যাম বা রমের মতো জিনিসগুলি নির্দিষ্ট ঠিকানা রেঞ্জগুলিতে প্রতিক্রিয়া করছে। সুতরাং এই জাতীয় হার্ডওয়্যারটি নিশ্চিত করতে হবে যে সিপিইউ পুনরায় সেট করার সময় কোনও রম 0xFFFFFFF0 এ প্রতিক্রিয়া জানায়। র‌্যামের ঠিক পরে র‌্যামের উপস্থিত হওয়ার কোনও অন্তর্নিহিত বাধ্যবাধকতা নেই। এই জাতীয় হার্ডওয়্যারটির ক্ষমতার উপর নির্ভর করে হার্ডওয়্যার যেখানেই এটি বলবে সেখানে উপস্থিত হতে পারে।
LawrenceC

4
রম, র‌্যাম, বা যে কোনও কিছুই ব্যবহার না করে এমন "গর্ত" বা স্বাক্ষরিত স্থানগুলি থাকা সম্ভব - সাধারণত সেগুলিতে অ্যাক্সেস করা সিস্টেম লকআপের কারণ হয়ে দাঁড়ায়।
LawrenceC

16
এই উত্তরটি ধরে নিয়েছে যে সিপিইউ 16 বিট মোডে থাকা অবস্থায় 32 অ্যাড্রেস বিট ব্যবহার করতে পারে। তবে 16 বিট মোডে এটি কেবল 20 ঠিকানার বিট ব্যবহার করতে পারে। 0xFFFFFFF0সিপিইউ 32 বিট মোডে স্যুইচ করা না হওয়া পর্যন্ত ঠিকানাটি পৌঁছানো যায় না। গতবার আমি বিআইওএস কোডটি ঘনিষ্ঠভাবে দেখেছিলাম, প্রবেশের সময়টি ছিল 0xFFFF0
কাস্পারড

6
@ মাইকেলKjörling আপনার গণনা ভুল। শিফ্ট সেগমেন্ট এবং অফসেটটি অর্ড করা হয় না, এগুলি যুক্ত করা হয়। সুতরাং লজিকাল এফএফএফএফ: এফএফএফ 0 শারীরিক (1) 0FFE0 (যেখানে A20 সক্ষম করা থাকলে নেতৃস্থানীয় 1 উপস্থিত থাকে)।
Ruslan

9
@ ক্যাস্পার্ড সেখানে একটি হ্যাক রয়েছে - প্রথম দীর্ঘ জাম্পটি না হওয়া পর্যন্ত মেমরি পরিচালককে উচ্চ 12 বিট সেট করা আছে। সুতরাং হ্যাঁ, যুক্তিযুক্তভাবে, আপনি সাথে কাজ করছেন 0xFFFF0, কিন্তু বাস্তবে, এটি মানচিত্র 0xFFFFFFF0। আমি আশা করি এটি 8086 এর সাথে সামঞ্জস্যের জন্য করা হয়েছিল - এটি এবং আরও আধুনিক সিপিইউ উভয়ই ব্যবহার করতে দেখা যায় 0xFFFF0, তবে 32-বিট সিপিইউগুলি আসলে অ্যাক্সেস করে 0xFFFFFFF0(বিআইওএস রমে ম্যাপযুক্ত)।
লুয়ান

26

এটি র‌্যামের শীর্ষে অবস্থিত নয়; এটি রোমে অবস্থিত যার ঠিকানাটি ইথারনেট নিয়ামকগুলির মতো এক্সপেনশন কার্ডগুলিতে কোনও মেমরির পাশাপাশি মেমরি ঠিকানা স্থানের শীর্ষে রয়েছে। এটি সেখানে রয়েছে যাতে কমপক্ষে 4 জিবি ইনস্টল না হওয়া পর্যন্ত এটি র‌্যামের সাথে বিরোধ করবে না। 4 জিবি বা আরও বেশি র‌্যাম থাকা সিস্টেমগুলি দ্বন্দ্ব সমাধানের জন্য দুটি জিনিস করতে পারে। সস্তার মাদারবোর্ডগুলি কেবল র‌্যামের সেই অংশগুলিকে উপেক্ষা করে যা রম যেখানে রয়েছে তার সাথে বিরোধ করে। মার্জিতরা 4 গিগাবাইটের উপরের চিহ্নের উপরে উপস্থিত থাকতে পারে বলে মনে হয় RAM

আপনি স্ট্যাকের বিষয়ে কী জিজ্ঞাসা করছেন তা আমি নিশ্চিত নই। এটি অবশ্যই রমে থাকার সূচনা হয়নি। যখন সিপিইউ পুনরায় সেট করে, এটি প্রাথমিকভাবে "রিয়েল মোডে" থাকে, যেখানে এটি মূল 8086 এর মতোই কাজ করে এবং 16-বিট সেগমেন্টযুক্ত ঠিকানা ব্যবহার করে, এটি কেবল 1 এমবি মেমরির অ্যাক্সেসের অনুমতি দেয়। BIOS কোডটি 1 এমবি এর শীর্ষে অবস্থিত। বিআইওএস স্ট্যাক এবং লোড সেটআপ করতে র‌্যামের কোথাও বাছাই করে এবং প্রথম বুটেবল ড্রাইভের প্রথম ক্ষেত্রটি কার্যকর করে utes এটি একবারে 32 বা 64-বিট মোডে স্যুইচ করা ওএসের উপর নির্ভর করে এটি নিজের স্ট্যাকগুলি সেট আপ করে (টাস্ক / থ্রেড প্রতি এক)।


1
উত্তরের জন্য আপনাকে অনেক ধন্যবাদ, কিন্তু @ লরেন্স সি তার উত্তরের বিষয়ে আরও বিশদ দিন এবং পুরো জিনিসটি কীভাবে কাজ করে তা সম্পর্কে আমাকে সহায়তা করেছিলেন। যাই হোক ধন্যবাদ! আমি আপনাকে একটি
উত্সাহ দিচ্ছি

13

প্রথমত, র‌্যামের সাথে এটির কোনও সম্পর্ক নেই। আমরা এখানে ঠিকানা জায়গার কথা বলছি - আপনার কাছে কেবল 16 মাইবি মেমরি থাকলেও, আপনার কাছে এখনও 32-বিট সিপিইউতে ঠিকানার 32 বিট থাকে space

এটি ইতিমধ্যে আপনার প্রথম প্রশ্নের উত্তর দেয়, সত্যই - এই সময়টি তৈরি করা হয়েছিল, রিয়েল ওয়ার্ল্ড পিসিগুলির মেমরির পুরো 4 জিবিবি কোথাও ছিল না; তারা মেমরির 1-16 মাইবি এর পরিসীমাতে বেশি ছিল। ঠিকানা স্থানটি সমস্ত উদ্দেশ্য এবং উদ্দেশ্যে বিনামূল্যে ছিল।

এখন, 0xFFFFFFFF0 ঠিক কেন? সিপিইউ জানেন না যে সেখানে কতটা বিআইওএস আছে। কিছু BIOS কেবল কয়েক কিলোবাইট নিতে পারে, অন্যরা মেমরি পুরো মেগাবাইট নিতে পারে - এবং আমি এমনকি বিভিন্ন optionচ্ছিক র‍্যামেও পাচ্ছি না। শুরু করার জন্য সিপিইউ অবশ্যই কিছু ঠিকানায় হার্ডওয়্যারড থাকতে হবে - সিপিইউ কনফিগার করার দরকার নেই। তবে এটি কেবল ঠিকানা জায়গার একটি ম্যাপিং - ঠিকানাটি সরাসরি বায়োস রম চিপকে ম্যাপ করা হয় (হ্যাঁ, এর অর্থ আপনি এই মুহুর্তে র‌্যামের পুরো 4 গিগাবাইট অ্যাক্সেস পাবেন না যদি আপনার কাছে অনেকগুলি থাকে তবে - এটি বিশেষ কিছু নয়, অনেকগুলি ডিভাইসের ঠিকানা জায়গাতে তাদের নিজস্ব পরিসর প্রয়োজন)। একটি 32-বিট সিপিইউতে, এই ঠিকানাটি আপনাকে খুব বেসিক ইনিশিয়ালাইজেশন করতে পুরো 16 বাইট দেয় - যা আপনার বিভাগগুলি সেটআপ করার জন্য যথেষ্ট এবং প্রয়োজনে ঠিকানার মোড (মনে রাখবেন,বাস্তব বুট "পদ্ধতি"। এই মুহুর্তে, আপনি র‍্যামটি একেবারেই ব্যবহার করবেন না - এটি কেবলমাত্র রমকে ম্যাপ করেছে। আসলে, র্যাম এই মুহুর্তে ব্যবহারের জন্য প্রস্তুত নয় - এটি বায়োস পোস্টের অন্যতম কাজ! এখন, আপনি ভাবতে পারেন - কীভাবে একটি 16-বিট রিয়েল মোড 0xFFFFFFF0 ঠিকানায় প্রবেশ করতে পারে? অবশ্যই, খণ্ডগুলি রয়েছে, সুতরাং আপনার কাছে 20-বিট ঠিকানার স্থান রয়েছে, তবে এটি এখনও যথেষ্ট ভাল নয়। ঠিক আছে, এটিতে একটি কৌশল আছে - আপনার প্রথম দীর্ঘ লাফ চালানো না হওয়া পর্যন্ত ঠিকানার 12 টি উচ্চ বিট সেট করা থাকে, আপনাকে উচ্চ ঠিকানার জায়গাতে অ্যাক্সেস দেয় (যখন 0xFFF00000 এর চেয়ে কম কিছুতে অ্যাক্সেস প্রত্যাখ্যান করা হয় - যতক্ষণ না আপনি একটি দীর্ঘ জাম্প কার্যকর না করেন) ।

এই সমস্ত জিনিসগুলি আধুনিক অপারেটিং সিস্টেমগুলিতে বেশিরভাগ প্রোগ্রামারদের (ব্যবহারকারীদের উল্লেখ না করার জন্য) গোপন থাকে। আপনার কাছে এত নিম্ন স্তরের কোনও কিছুরই সাধারণত অ্যাক্সেস থাকে না - কিছু জিনিস ইতিমধ্যে উদ্ধার ছাড়িয়ে যায় (আপনি সিপিইউ মোডগুলি উইলি-নিলি স্যুইচ করতে পারবেন না), কিছু কিছু ওএস কার্নেল দ্বারা একচেটিয়াভাবে পরিচালিত হয়।

এমএস ডস-এ পুরানো স্কুল কোডিং থেকে একটি দুর্দান্ত ভিউ আসে। ডিভাইস মেমরির অন্য সাধারণ উদাহরণটি স্পেসের ঠিকানার সাথে সরাসরি ম্যাপ করা হচ্ছে ভিডিও মেমোরিতে সরাসরি অ্যাক্সেস। উদাহরণস্বরূপ, আপনি যদি ডিসপ্লেতে দ্রুত পাঠ্যটি লিখতে চেয়েছিলেন তবে আপনি সরাসরি ঠিকানায় লিখেছিলেন B800:0000(প্লাস অফসেট - 80x25 টেক্সট মোডে, এর অর্থ (y * 80 + x) * 2যদি আমার স্মৃতি আমাকে সঠিকভাবে পরিবেশন করে - অক্ষরে প্রতি দুটি বাইট, লাইন লাইন)। আপনি যদি পিক্সেল বাই পিক্সেল আঁকতে চেয়েছিলেন তবে আপনি একটি গ্রাফিক্স মোড এবং প্রারম্ভের ঠিকানা ব্যবহার করেছেন A000:0000(সাধারণত, 320x200 প্রতি পিক্সেল 8 বিটে)) উচ্চ-কার্য সম্পাদনমূলক কিছু করার অর্থ সাধারণত ডিভাইস ম্যানুয়ালগুলিতে ডুব দেওয়া, কীভাবে সেগুলিতে সরাসরি অ্যাক্সেস করবেন তা নির্ধারণ করা।

এটি আজ অবধি টিকে আছে - এটি কেবল লুকানো। উইন্ডোজে, আপনি ডিভাইস ম্যানেজারের ডিভাইসে ম্যাপ করা মেমরি ঠিকানাগুলি দেখতে পারেন - আপনার নেটওয়ার্ক কার্ডের মতো কোনও কিছুর বৈশিষ্ট্য খোলার জন্য, সংস্থানসমূহ ট্যাবে যান - সমস্ত মেমরি রেঞ্জের আইটেমগুলি ডিভাইস মেমরি থেকে আপনার মূল ঠিকানার জায়গায় ম্যাপিং হয় ings এবং 32-বিটের উপর, আপনি দেখতে পাবেন যে সেই ডিভাইসগুলির বেশিরভাগটি 2 GiB (পরে 3 GiB) চিহ্নের উপরে ম্যাপ করা আছে - আবার ব্যবহারকারীর-ব্যবহারযোগ্য মেমরির সাথে দ্বন্দ্ব হ্রাস করতে, যদিও এটি ভার্চুয়াল মেমরির সাথে আসলেই কোনও সমস্যা নয় ( অ্যাপ্লিকেশনগুলি আসল, হার্ডওয়্যার ঠিকানা জায়গার কাছাকাছি কোথাও পায় না - তাদের নিজস্ব মেমরির ভার্চুয়ালাইজড অংশ রয়েছে, যা র‌্যাম, রম, ডিভাইসগুলি বা পৃষ্ঠা ফাইলটিতে ম্যাপ করা যেতে পারে)।

স্ট্যাকের হিসাবে, ভাল, এটি ডিফল্টরূপে, স্ট্যাকটি শীর্ষ থেকে বেড়ে যায় তা বুঝতে সহায়তা করা উচিত। সুতরাং আপনি যদি pushএটি করেন তবে নতুন স্ট্যাক পয়েন্টারটি থাকবে 0xFFFFFEC- অন্য কথায়, আপনি BIOS সূচনার ঠিকানায় লেখার চেষ্টা করছেন না :) অবশ্যই এর অর্থ BIOS আর্ট রুটিনগুলি পুনরায় তৈরি করার আগে স্ট্যাকটি নিরাপদে ব্যবহার করতে পারে কোথাও আরও দরকারী। পুরাতন-স্কুল প্রোগ্রামিংয়ে, পেজিং ডি-ফ্যাক্টো ডিফল্ট হওয়ার আগে, সাধারণত র‍্যামের শেষে স্ট্যাকটি শুরু হয় এবং আপনি যখন নিজের অ্যাপ্লিকেশন মেমরির উপরে ওভাররাইট করা শুরু করেন তখন "স্ট্যাক ওভারফ্লো" ঘটেছিল। মেমরি সুরক্ষা এর অনেক কিছুই বদলেছে, তবে সাধারণভাবে, এটি যথাসম্ভব পিছনের সামঞ্জস্যতা বজায় রাখে - নোট করুন এমনকি আধুনিকতম x86-64 সিপিইউ এখনও এমএস ডস 5 কীভাবে বুট করতে পারে - বা উইন্ডোজ কীভাবে এখনও অনেকগুলি ডস অ্যাপ্লিকেশন চালাতে পারে যার পেজিং সম্পর্কে কোনও ধারণা নেই।


3
দুর্দান্ত উত্তর, কেবল প্রসারিত করতে এবং বলতে যে আধুনিক প্রসেসরগুলি A20 লাইন মাস্কিংয়ের মতো হ্যাকগুলি ছোঁড়া শুরু করছে , তাই পুরানো প্রান্তের ক্ষেত্রে সমর্থন মরে যাচ্ছে।
বেসিক

2
শেষ অনুচ্ছেদে: BIOS স্ট্যাকটি "অবাধে" ব্যবহার করতে পারে না: এটি রমকে লিখতে পারে না (যাতে 0xFFFFFFECম্যাপ করা হবে)। এর অর্থ কেবল না, pushউদাহরণস্বরূপ কোনও callনয়। এগুলি র‌্যাম প্রস্তুত হওয়া পর্যন্ত অপেক্ষা করতে হবে।
ভী

7

উল্লিখিত অন্যান্য পয়েন্ট ছাড়াও, এটা বোঝা একটি ঠিকানা কি সহায়ক হতে পারে হয় । যদিও নতুন স্থাপত্যগুলি জিনিসগুলিকে জটিল করে তোলে, historতিহাসিকভাবে একটি মেশিন প্রতিটি মেমরি চক্রটি 20 থেকে 32 তারের উপর আকাঙ্ক্ষিত ঠিকানা আউটপুট দেয় (আর্কিটেকচারের উপর নির্ভর করে, একসাথে একজোড়া বা চৌম্বক বাইটের এক জোড়া প্রয়োজন কিনা তা লক্ষ করার জন্য কিছু বিশেষ কৌশল সহ); মেমরি সিস্টেমের বিভিন্ন অংশগুলি সেই তারগুলির অবস্থা পরীক্ষা করে এবং যখন তারা উচ্চ এবং নিম্ন মানের কয়েকটি সংমিশ্রণ দেখেছিল তখন নিজেকে সক্রিয় করে তুলত।

যদি 32 অ্যাড্রেস ওয়্যারযুক্ত একটি মেশিনে কেবল 1MB র‌্যাম এবং 64 কেবি রম [কিছু এম্বেডড কন্ট্রোলারদের জন্য যথেষ্ট প্রশংসনীয়] ব্যবহার করা প্রয়োজন হয় তবে এটি যেখানে ঠিকানার তারের কম ছিল এবং যেখানে ঠিকানা ছিল তার সমস্ত ঠিকানাগুলির জন্য রমটি সক্রিয় করতে পারে উচ্চ। তারপরে নীচের ২০ টি অ্যাড্রেস ওয়্যারগুলি 1,048,576 বাইটগুলির মধ্যে একটি নির্বাচন করতে র্যামের সাথে বেঁধে রাখা হবে এবং নীচের 16 টি রমকেও তারযুক্ত হবে, 65,536 বাইটের মধ্যে একটি নির্বাচন করতে। বাকি 11 অ্যাড্রেস ওয়্যারগুলি কেবল কোনও কিছুর সাথে সংযুক্ত হবে না।

এই জাতীয় মেশিনে, 0x00100000-0x001FFFFF ঠিকানার ঠিকানাগুলি র‍্যামের ঠিকানাগুলি 0x00000000-0x000FFFFF এর সমান হবে। একইভাবে 0x000200000-0x0002FFFFF, বা 0x7FF00000-0x7FFFFFFFF ঠিকানার সাথে। 0x80000000 এর উপরে ঠিকানাগুলি সমস্ত রম পড়বে, একটি 64 কে প্যাটার্নটি পুরো স্থান জুড়ে পুনরাবৃত্তি করবে।

প্রসেসরের 4,294,967,296-বাইট অ্যাড্রেস স্পেস থাকলেও, অনেকগুলি স্বতন্ত্র ঠিকানা সনাক্ত করার জন্য হার্ডওয়ারের দরকার নেই। অ্যাড্রেস স্পেসের শীর্ষের কাছে রিসেট ভেক্টর স্থাপন করা একটি নকশা যা সিস্টেমটি কতটা বা কতটা কম র্যাম এবং রম রয়েছে তা নির্বিশেষে ভালভাবে কাজ করবে এবং ঠিকানার জায়গার পুরোপুরি ডিকোড করার প্রয়োজনীয়তা এড়িয়ে চলবে।


ভাল পয়েন্ট - আপনি এমন কোনও 64-বিট হার্ডওয়্যার পাবেন না যা অ্যাড্রেসযোগ্য 64-বিট মেমরি স্পেসের (অথবা এটির 1x10 ^ -12) কাছাকাছি যে কোনও কিছুকে সমর্থন করবে।
বেসিক

3

আমার টিউরিটি হ'ল কারণ আমরা নেতিবাচক যুক্তি ব্যবহার করছি ডিজিটাল ওয়ান (1) মোটেই কোনও টেনশন নয় (হে ভোল্ট) শুরুতে আমরা কেবলমাত্র শেষ 4 টি বিটগুলিতে টান লাগাতে পারি যাতে প্রোগ্রামের কাউন্টার (বা নির্দেশিকা নির্দেশক) 1111 1111 এ ল্যাক হয় 1111 1111 1111 1111 1111 0000. আমাদের উপরের 28 টি বিটগুলি সম্বোধন করতে হবে না কারণ বেশিরভাগ (পুরাতন) সিপিইউ 16 টি বিট ছিল এবং নীচু নীবলগুলি পুরানো দিনগুলিতে একটি একক ঠিকানা চিপ দ্বারা সম্বোধন করা যেতে পারে। এখন যেহেতু আমাদের কাছে 32 বিট এবং 32 বিট থেকে 16 বিটের সাথে সামঞ্জস্যের 64 বিট রয়েছে, তাই হার্ডওয়্যার কিল্ডটি উন্নত করা হয়েছে তবে পদ্ধতিটি স্থায়ী। এছাড়াও বায়োসেস সবসময় 64 বিট বা 32 বিট প্রোগ্রাম হয় না। আমার মতামতটিও যেহেতু স্মৃতিগুলি সর্বদা এক নয় তাই বায়োস অবশ্যই একই প্রথম বিভাগে অবস্থিত। বায়োসকে আমরা যেভাবে সম্বোধন করেছি তা সব সময় আসল ঠিকানা নয়। আমাকে শিখিয়েছি শুধু ...


2

রিসেটের উপরে একটি 8088/8086 সামঞ্জস্যপূর্ণ সিপিইউ 0FFFF0 এ নির্দেশাবলী কার্যকর করে, যা 1 মেগাবাইটের সীমা থেকে 16 বাইট কম। সাধারণত এই স্থানে রমটি (পিসি প্রয়োগে) বায়োস হত, সুতরাং বায়োস রমের শেষে, বায়োস রমের শুরুতে ঝাঁপ দাও।

এখানে প্রদর্শিত: ভেক্টর শুরু করুন এবং এর পিছনে 'তারিখ' স্বাক্ষর, আইবিএম 5150 পিসি 8 কেবি ইপ্রোম ডাম্প বায়োস তারিখ: 10/19/1981

00001FEE  FF                db 0xff
00001FEF  FF                db 0xff
00001FF0  EA5BE000F0        jmp word 0xf000:0xe05b
00001FF5  3130              xor [bx+si],si
00001FF7  2F                das
00001FF8  3139              xor [bx+di],di

নোট করুন যে ঠিকানাটি 8KB $ 2000 রোমের, যা সূচনা ঠিকানাটি (একেবারে দূরের জেএমপি, অন্য যে কোনও স্থানে, 8 কেবি রমের মধ্যেই, যদিও এই রমের মধ্যে স্বল্পতম ঠিকানা না হলেও): এফএফএফ এ: Se 0 বিভাগ বা F FFFF0 রৈখিক।

সামঞ্জস্যতা হিসাবে: যদি কিছু 'ভবিষ্যত' বা বর্তমান প্রসেসর 'প্রত্যাশা করে' তবে ঠিকানার সামনে এটি আরও অনেক বেশি এফ রাখবে, তাতে কিছু আসে যায় না। পুরানো সিস্টেমে আরও নতুন সিপাসের সামঞ্জস্যের জন্য অতিরিক্ত ঠিকানা লাইনগুলি সংযুক্ত থাকে এবং তাই ডাটাবাসের ডেটা হুবহু একই। যতক্ষণ না কমপক্ষে উল্লেখযোগ্য বিটগুলি এফএফএফএফ 0 থাকে 0

(মাত্র 1 এমএম র‌্যামযুক্ত একটি সিস্টেমে এবং র‌্যামটি সেই ম্যামের শেষের দিকে অবস্থিত, এবং অন্য কিছুই নয়, এটি আনন্দের সাথে 'চিন্তা' করবে এটি উচ্চ ঠিকানার সাথে কথা বলছে তবে সঠিক সঠিক তথ্য পাবে, কারণ সেই বাস্তবায়নগুলি কখনও শুনেনি have এ 19 এর চেয়ে বেশি ঠিকানা লাইন)

লক্ষ করুন যে পৃথিবীটি কেবল 'পিসি' নয় ... আইবিএম পিসি একটি 'দুর্ঘটনা' ছিল, এই প্রসেসরগুলি কখনও 'পিসি'র জন্য নির্দিষ্টভাবে তৈরি করা হয়নি এবং কেবল পিসি (যেমন উপগ্রহ, অস্ত্র সিটেম, ইত্যাদি)। 32 এবং 64 বিট সুরক্ষিত মোড সাধারণত-পছন্দসই হয় না। (ভার্চুয়াল 8086 মোডটি উদাহরণস্বরূপ আরও নতুন (386+) সংস্করণ বাছাই করার কারণ হিসাবে অনেক বেশি আকর্ষণীয়) সুতরাং 'ব্যাকওয়ার্ড সামঞ্জস্যতা' এর চেয়ে আরও অনেক কিছুই আছে কেবল 'এটি কি ডস চালাবে'।


1

মাদারবোর্ডটি নিশ্চিত করে যে রিসেট ভেক্টরের নির্দেশটি বিআইওএস এন্ট্রি পয়েন্টে ম্যাপ করা মেমরির অবস্থানটিতে ঝাঁপ দাও। এই লাফটি বিদ্যুত আপের উপস্থিত গোপন বেস ঠিকানা স্পষ্টভাবে সাফ করে। এই সমস্ত মেমোরি অবস্থানের সিপিইউ দ্বারা চিপসেটের দ্বারা রাখা মেমরি মানচিত্রে প্রয়োজনীয় সঠিক সামগ্রী রয়েছে। এগুলি সমস্ত বিআইওএস সমন্বিত ফ্ল্যাশ মেমরির সাথে ম্যাপ করা হয় কারণ এই মুহুর্তে র‌্যাম মডিউলগুলির মধ্যে এলোমেলো বকাঝকা রয়েছে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.