මෙහෙයුම් පද්ධතියක් ක්‍රියාත්මක නොවී මෙහෙයුම් පද්ධති ක්‍රියාත්මක වන්නේ කෙසේද?


169

මම දැන් කුතුහලයෙන් සිටිමි. මම පයිතන් ක්‍රමලේඛකයෙක් වන අතර, මෙම ප්‍රශ්නය මට ව්‍යාකූල විය: ඔබ මෙහෙයුම් පද්ධතියක් ලියයි. ඔබ එය ක්‍රියාත්මක කරන්නේ කෙසේද? එය කෙසේ හෝ ධාවනය කළ යුතු අතර, එම මාර්ගය වෙනත් මෙහෙයුම් පද්ධතියක් තුළ තිබේද?

මෙහෙයුම් පද්ධතියක නොසිට යෙදුමක් ක්‍රියාත්මක වන්නේ කෙසේද? පරිගණකයට මෙහෙයුම් පද්ධතියක් නොමැති නම්, ක්‍රියාත්මක කිරීමට, කියන්න, සී, සහ මෙම විධානයන් තිරය වෙත ක්‍රියාත්මක කරන්නැයි ඔබ කියන්නේ කෙසේද?

එයට යුනික්ස් කර්නලයක් සමඟ සම්බන්ධයක් තිබේද? එසේ නම්, යුනික්ස් කර්නලය හෝ පොදුවේ කර්නලය යනු කුමක්ද?

මට විශ්වාසයි මෙහෙයුම් පද්ධති ඊට වඩා සංකීර්ණ බව, නමුත් එය ක්‍රියා කරන්නේ කෙසේද?


14
මට තරයේ විශ්වාසයි එය BIOS සඳහා වන දෙය - එය විශාල මෙහෙයුම් පද්ධතියක් ක්‍රියාත්මක කිරීම ආරම්භ කරන කුඩා මෙහෙයුම් පද්ධතියකි.
sevenseacat

64
මෙහෙයුම් පද්ධතියක් පහසුය , නමුත් පරිගණකයක වැඩසටහන් ක්‍රියාත්මක කිරීම සඳහා ඔබට එකක් අවශ්‍ය නොවේ.
ඇන්ඩ්‍රස් එෆ්.

10
මෙහෙයුම් පද්ධතියක් නොමැතිව OS නොවන මෘදුකාංගයක් පවා ලිවීමට පරිපූර්ණව හැකිය. බොහෝ ෆෝර්ත් පරිවර්තකයන් සාම්ප්‍රදායිකව මෙහෙයුම් පද්ධතියක් නොමැතිව ධාවනය විය (නැතහොත් ඔබට ඔවුන් මෙහෙයුම් පද්ධති යැයි කිව හැකිය). එය එතරම් අපහසු නැත. ඔබ සී හඳුනන්නේ නම්, ඉගෙනීමේ අභ්‍යාසයක් ලෙස එවැනි වැඩසටහනක් (කුඩා ක්‍රීඩාවක්, සමහර විට) ලිවීමට ඔබට හැකිය.
උපරිම

44
මෙම ව්‍යාකූලත්වය අප මේ දිනවල භාවිතා කරන පුදුමාකාර, ආරක්ෂිත, අතිශයින් වියුක්ත පරිගණක පද්ධතිවල පිරිවැයෙන් එකකි: මිනිසුන්ට ඉතා හොඳ හා දක්ෂ ක්‍රමලේඛකයින් විය හැකි අතර පරිගණකය ක්‍රියා කරන ආකාරය පිළිබඳ මූලධර්ම පවා නොදැන සිටිති. ඔබට කොතරම් පහත් මට්ටමකට යාමට අවශ්‍යද? ඉතා අඩු, නමුත් තවමත් භෞතික විද්‍යාවට ඉහළින් බලන්න පළමු මයික්‍රොප්‍රොසෙසරය ක්‍රමලේඛනය කළේ කෙසේද? ඉලෙක්ට්රොනික උපකරණ මත.
dmckee --- හිටපු උපපරිපාලක පූස් පැටවා

2
වර්තමාන මෙහෙයුම් පද්ධතියේ සංකල්පය සොයා ගැනීමට පෙර වැඩසටහන්කරණය සිදු කරන ලදී. නිසැකවම එම මට්ටමේ යමක් මෙහෙයුම් පද්ධතියෙන් ඉවත් වේ. මෙහෙයුම් පද්ධති ආරම්භ කර ඇත. බොහෝ විට මෙහෙයුම් පද්ධති පා .මාලාවේ පරිගණක න්‍යායක් අවශ්‍ය බැවින් මෙය අවම වශයෙන් CS 4 අවුරුදු වැඩසටහනක සඳහන් වේ.
රිග්

Answers:


263

ඇරඹුම් ක්‍රියාවලිය හරහා ගමන් කරන වෙබ් අඩවි ඕනෑ තරම් තිබේ ( පරිගණක ආරම්භ වන්නේ කෙසේද වැනි ). කෙටියෙන් කිවහොත්, එහි බහු-අදියර ක්‍රියාවලිය මඟින් මෙහෙයුම් පද්ධතිය ආරම්භ කිරීමට හැකි වන තෙක් පද්ධතිය මඳක් ගොඩනංවයි.

එය ආරම්භ වන්නේ මවු පුවරුවේ ඇති ස්ථිරාංග වලින් වන අතර එය CPU ඉහළට ගෙන ධාවනය කිරීමට උත්සාහ කරයි. ඉන්පසු එය කුඩා මෙහෙයුම් පද්ධතියක් වැනි BIOS පටවන අතර අනෙක් දෘඩාංග ඉහළට හා ක්‍රියාත්මක වේ. එය අවසන් වූ පසු එය ඇරඹුම් උපාංගයක් (තැටිය, සීඩී යනාදිය) සොයන අතර, එය සොයාගත් පසු, එය MBR (මාස්ටර් බූට් රෙකෝඩ්) සොයාගෙන එය මතකයට පටවා එය ක්‍රියාත්මක කරයි. මෙම කුඩා කේත කැබැල්ල පසුව මෙහෙයුම් පද්ධතිය ආරම්භ කරන්නේ කෙසේද සහ ආරම්භ කරන්නේ කෙසේදැයි දනී (හෝ දේවල් වඩාත් සංකීර්ණ වී ඇති බැවින් වෙනත් ඇරඹුම් කාරකයන්). මෙම අවස්ථාවෙහිදී කර්නලය වැනි දෑ පටවා ධාවනය වීමට පටන් ගනී.

එය කිසිසේත් ක්‍රියාත්මක නොවන බව විශ්වාස කළ නොහැකි තරම් ය!


108
අවසාන වාක්‍යය සඳහා +1.
සීවීඑන්

39
එය "ආරම්භ කිරීම" ලෙස හැඳින්වීමට හේතුවක් තිබේ; "බූට්ස්ට්රැපිං" සඳහා මෙම පදය කෙටි වන අතර, මෙන්, "ඔබේ බූට්ස්ට්රැප් මගින් ඔබම ඉහළට ඔසවා ගන්න".
කීත්ස්

5
යමෙකුට බූට්ස්ට්‍රැප් කේතයේ යතුර හෝ ටොගල් කිරීමට සිදු වූ කාලයක් තිබුණි. සමහර විට එය ROM හි වැඩසටහනක පළමු උපදෙස් වෙත සරල පැනීමකි. වෙනත් වේලාවක එය උපාංගයකින් කියවීම සහ කියවූ දත්තවල පළමු වැඩසටහන් උපදෙස් වෙත පනින්න. දැන් දේවල් වඩාත් සරලයි.
බිල්තෝර්


15
Ill බිල්තෝර්: “වඩා සරල” යන්නෙන් ඔබ අදහස් කරන්නේ “වඩා සංකීර්ණ” යන්නයි. ඒවා භාවිතා කිරීම පහසුය .
රෆායෙල් ෂ්වෙයිකර්ට්

175

“හිස් ලෝහ” මෙහෙයුම් පද්ධතියක් කිසිවක් තුළ ක්‍රියාත්මක නොවේ . එය භෞතික යන්ත්‍රයේ සම්පූර්ණ උපදෙස් මාලාව ක්‍රියාත්මක කරන අතර අථත්‍ය මතක ආධාරක දෘඩාංග පාලනය කරන සියලුම භෞතික මතක, සියලු උපාංග ලේඛණ සහ වරප්‍රසාදිත උපදෙස් වලට ප්‍රවේශය ඇත.

(මෙහෙයුම් පද්ධතිය අථත්‍ය යන්ත්‍රයක් මත ක්‍රියාත්මක වන්නේ නම්, එය ඉහත තත්වයටම සමාන යැයි සිතිය හැකිය . වෙනස වන්නේ යම් යම් දේ අනුකරණය කිරීම හෝ වෙනත් ආකාරයකින් හයිපර්වයිසර් විසින් හසුරුවනු ලැබීම ය; .)

කෙසේ වෙතත්, මෙහෙයුම් පද්ධතිය ක්‍රියාත්මක කළ හැකි වුවද (උදාහරණයක් ලෙස) සී, එයට සාමාන්‍ය සී පුස්තකාල සියල්ලම ලබා ගත නොහැක. විශේෂයෙන් එයට සාමාන්‍ය 'ස්ටීඩියෝ' පුස්තකාල නොමැත. ඒ වෙනුවට, එය තැටි කොටස් කියවීමට හා ලිවීමට ඉඩ සලසන තැටි උපාංග ධාවකයක් ක්‍රියාත්මක කරයි (උදාහරණයක් ලෙස). එය තැටි බ්ලොක් ස්තරයට ඉහළින් ගොනු පද්ධතියක් ක්‍රියාත්මක කරනු ඇති අතර, ඊට ඉහළින් පරිශීලක යෙදුමක ධාවන කාල පුස්තකාල මඟින් ගොනු සෑදීම, කියවීම සහ ලිවීම සඳහා (උදාහරණයක් ලෙස) ගොනු ඇමතුම් ක්‍රියාත්මක කරනු ඇත.

මෙහෙයුම් පද්ධතියක නොසිට යෙදුමක් ක්‍රියාත්මක වන්නේ කෙසේද?

එය I / O දෘඩාංග ආදිය සමඟ කෙලින්ම ක්‍රියා කරන්නේ කෙසේදැයි දන්නා විශේෂ ආකාරයේ යෙදුමක් (උදා: මෙහෙයුම් පද්ධතියක්) විය යුතුය.

පරිගණකයට මෙහෙයුම් පද්ධතියක් නොමැති නම්, ක්‍රියාත්මක කිරීමට, කියන්න, සී, සහ මෙම විධානයන් තිරය වෙත ක්‍රියාත්මක කරන්නැයි ඔබ කියන්නේ කෙසේද?

ඔයා එහෙම කරන්නේ නැහැ.

යෙදුම (එය C හි ලියා ඇති තර්කය සඳහා) සම්පාදනය කර ස්වදේශීය කේත රූපයක් ලබා දීම සඳහා වෙනත් යන්ත්‍රයකට සම්බන්ධ කර ඇත. එවිට රූපය BIOS හට සොයා ගත හැකි ස්ථානයක දෘ hard තැටියට ලියා ඇත. BIOS විසින් රූපය මතකය පටවන අතර යෙදුමේ පිවිසුම් ස්ථානයට පනින්න උපදෙස් ලබා දෙයි.

(සාමාන්‍යයෙන්) යෙදුම තුළ “ක්‍රියාත්මක වන සී සහ ක්‍රියාත්මක විධාන” නොමැත. එවැනි අවස්ථාවකදී, එය සිදු කිරීම සඳහා අවශ්‍ය සියලු යටිතල පහසුකම් ක්‍රියාත්මක කිරීම මෙහෙයුම් පද්ධතියේ වගකීම වේ. මැජික් නැත. කේත ගොඩක්.

බිල්ගේ පිළිතුර මඟින් බූට්ස්ට්‍රැපිං ආවරණය වන අතර එය ඔබ ක්‍රියා විරහිත යන්ත්‍රයක සිට සාමාන්‍ය මෙහෙයුම් පද්ධතිය ක්‍රියාත්මක වන යන්ත්‍රයකට යන ක්‍රියාවලියයි. කෙසේ වෙතත්, BIOS සිය කාර්යයන් සම්පූර්ණ කළ විට, එය (සාමාන්‍යයෙන්) දෘඩාංගවල සම්පූර්ණ පාලනය ප්‍රධාන මෙහෙයුම් පද්ධතියට ලබා දෙන අතර, ඊළඟ පද්ධතිය නැවත ආරම්භ වන තුරු තවත් කාර්යභාරයක් ඉටු නොකරයි. ප්‍රධාන මෙහෙයුම් පද්ධතිය නිසැකවම සාම්ප්‍රදායික අර්ථයෙන් BIOS තුළ “ක්‍රියාත්මක නොවේ”.

එයට යුනික්ස් කර්නලයක් සමඟ සම්බන්ධයක් තිබේද? එසේ නම්, යුනික්ස් කර්නලයක් හෝ පොදුවේ කර්නලයක් යනු කුමක්ද?

ඔව් එය එසේ වේ.

යුනික්ස් කර්නලය යුනික්ස් මෙහෙයුම් පද්ධතියේ හරය වේ. ඉහත විස්තර කර ඇති සියලුම “හිස් ලෝහ” දේවල් කරන්නේ යුනික්ස් හි කොටසයි.

"කර්නලය" පිළිබඳ අදහස නම්, ඔබ පද්ධති මෘදුකාංගය මූලික දේවල් (භෞතික උපාංග ප්‍රවේශය, සියලු මතකය ආදිය) සහ මූලික නොවන දේවල් ලෙස වෙන් කිරීමට උත්සාහ කිරීමයි. කර්නලය මූලික දේවලින් සමන්විත වේ.

යථාර්ථයේ දී, කර්නල් / හරය සහ කර්නල් නොවන / හරය නොවන අතර වෙනස ඊට වඩා සංකීර්ණ ය. කර්නලයක ඇත්ත වශයෙන්ම අයත් වන්නේ කුමක්ද සහ නැති දේ පිළිබඳව විශාල විවාදයක් ඇති වී තිබේ. (උදාහරණයක් ලෙස මයික්‍රෝ කර්නලය බලන්න.)


6
සුවිශේෂී පිළිතුර. හැකි නම් මම ඔබට තවත් උඩු යටිකුරු කිහිපයක් දෙන්නෙමි.
weberc2

7
මෙහි හොඳ පිළිතුරු රාශියක් ඇත, එබැවින් කිසිවෙකු මෙය මෙතෙක් සඳහන් කර නොමැති බැවින් මම මෙය විවරණයක් ලෙස එක් කරමි: මෙහෙයුම් පද්ධතියක ඇති එක් ප්‍රධාන අංගයක් වන්නේ පරිශීලකයාගේ දෘෂ්ටිකෝණයෙන් “එකවර” ක්‍රියාත්මක කිරීමට බහු යෙදුම්වලට ඉඩ දීමයි. ක්‍රියාවලි උපලේඛනගත කිරීමේ හැකියාව සහ එකිනෙකාගේ හැසිරීම වෙනස් කිරීමෙන් ක්‍රියාවලි ආරක්ෂා කිරීමේ හැකියාව සාමාන්‍යයෙන් දක්නට ලැබෙන්නේ මෙහෙයුම් පද්ධතියක පමණක් වන අතර ස්ථිරාංග හෝ BIOS නොවේ.
ෂෝන් බාබියු

2
The idea of a "kernel" is that you try to separate the system software into core stuffමෙම පදය kernelජර්මානු භාෂාවෙන් Kernවන අතර එහි අර්ථය හරය / න්‍යෂ්ටිය බව මතක තබා ගැනීම පහසුය .
deed02392

1
ආදරය මෙතන මේ පිළිතුර එය, එය සම්පාදනය හා ද්විමය කේත සී නෑ ධාවනය සම්බන්ධ වන සඳහන් නිසා
Travis Pessetto

3
"එයින් ඉවත් වීමෙන් පළාත් සභා භාවිතා කරන්නන් අඩු බුද්ධිමත් විය." - අඩු බුද්ධිමත් නොවේ ... පරිගණක සාක්ෂරතාව අඩුය. එය පළාත් සභා භාවිතා කරන්නන්ගේ සංඛ්‍යාව වැඩි කළ බව ඔබට පැවසිය හැකිය.
ස්ටීවන් සී

62

ආරම්භයේ දී CPU හි බලයක් නොතිබුණි.

මිනිසා "බලය තිබිය යුතුයි" යැයි පැවසූ අතර, CPU විසින් ලබා දී ඇති ලිපිනයක මතකයෙන් කියවා එහි තිබූ උපදෙස් ක්‍රියාත්මක කිරීමට පටන් ගත්තේය. එවිට බලයේ අවසානය දක්වා ඊළඟ එක සහ එසේ ය.

මෙය ආරම්භය විය. එහි කර්තව්‍යය වූයේ ප්‍රධාන මෘදුකාංගය තිබූ පරිසරයට ප්‍රවේශය ලබා ගැනීම සඳහා තවත් මෘදුකාංගයක් පටවා එය පැටවීමයි.

අවසාන වශයෙන්, සුහද තිරයක් ඔබට පිවිසීමට ආරාධනා කළේය.


60
මෙම පිළිතුර christianity.stackexchange.com වෙත ගෙන යා යුතුය
Coomie

6
“දී ඇති ලිපිනය” යනු කුමක්ද? චාල්ස් ඩාවින් මෙහි ක්‍රීඩා කිරීම ගැන කණගාටුයි.
මිඩ්හැට්

7
Id මිඩ්හාට් - CPU විසින් ලබා ගත යුතු පළමු ලිපිනය එය තුළ දැඩි ලෙස ක්‍රියා කරයි. සාමාන්යයෙන් එය 0.
mouviciel

17
... 7 වන දින මිනිසා සිය ක්‍රීඩා සමඟ විවේක ගත්තේය
කැනේඩියානු ලූක්

9
oumouviciel මතකයේ ඇති ලිපිනය 0x7C00ඕනෑම x86අනුකූල ගෘහ නිර්මාණ ශිල්පයක් සඳහා වන අතර පළමුව එය පුරවා ගත යුත්තේ BIOS විසින් වන අතර එය සාමාන්‍යයෙන් කැමති ඕනෑම ඇරඹිය හැකි උපාංගයක පළමු අංශය පටවනු ලැබේ ... හොඳ පිළිතුර: -7
ටොබියාස් කියෙන්ස්ලර්

30

ප්‍රමාද වීම ගැන කණගාටුයි, නමුත් මම එය මෙසේ විස්තර කරමි:

  • මවු පුවරුවට බලය ලැබේ.

  • කාල පරිපථ ආරම්භ වන්නේ සහ අවශ්‍ය නම් ස්ථාවර වන්නේ ඒවායේ විද්‍යුත් ලක්ෂණ මත පමණි. සමහර නව උපාංග ඇත්ත වශයෙන්ම ඉතා සීමිත මයික්‍රොප්‍රොසෙසරයක් හෝ අනුක්‍රමික යන්ත්‍රයක් භාවිතා කරයි.

    "කාල පරිපථ ආරම්භ වී අවශ්‍ය නම් ස්ථාවර කිරීම" වැනි දේවල් alot [sic] තවදුරටත් දෘඩාංගවල තවදුරටත් සිදු නොවන බව සැලකිල්ලට ගත යුතුය. එම කාර්යයේ අති විශාල ප්‍රමාණයක් ඇත්ත වශයෙන්ම ඉතා සීමිත උප ප්‍රොසෙසර / අනුක්‍රමික යන්ත්‍ර මත ක්‍රියාත්මක වන අතිශයින්ම විශේෂිත මෘදුකාංගයකි.

    - jkerian දී ඔක්තෝබර් 25 වැනි දින 5:20

  • CPU සහ RAM සඳහා බලය ලබා දෙනු ලැබේ.

  • CPU පැටවීම (එහි අභ්‍යන්තර රැහැන් මත පදනම්ව) BIOS වෙතින් දත්ත. සමහර යන්ත්‍රවල, BIOS RAM වෙත පිළිබිඹු කර එතැන් සිට ක්‍රියාත්මක කළ හැකි නමුත් එය දුර්ලභ IIRC ය.

    සක්‍රිය කළ විට, x86- අනුකූල CPUs ලිපින අවකාශයේ 0xFFFFFF0 ලිපිනයෙන් ආරම්භ වේ ...

    -මීෂල් ස්ටීල්, එක්ස්බොක්ස් ආරක්ෂක පද්ධතියේ මයික්‍රොසොෆ්ට් විසින් සිදුකරන ලද වැරදි 17 ක් ( ලේඛනාගාරය )

  • BIOS දෘඩාංග වරායන් සහ තැටි සහ අනෙකුත් දෘඩාංග IO සඳහා මවු පුවරුව භාවිතා කරන ලිපින වලට ඇමතුම් ලබා දෙන අතර තැටි භ්‍රමණය කරයි.

  • BIOS කේතය (CMOS සැකසුම් අනුව, දෘඩාංගවල ගබඩා කර ඇත) එක් එක් තැටියේ ඇරඹුම් අංශය කියවීම සඳහා පහත් මට්ටමේ IDE හෝ SATA විධානයන් භාවිතා කරයි, CMOS විසින් නියම කරන ලද අනුපිළිවෙලකට හෝ පරිශීලකයෙකු මෙනුවකින් අභිබවා යයි.

  • ඇරඹුම් අංශයක් සහිත පළමු තැටිය එහි ඇරඹුම් අංශය ක්‍රියාත්මක කරයි. මෙම ඇරඹුම් අංශය එකලස් කිරීම වන අතර තැටියෙන් වැඩි දත්ත පැටවීමට, විශාල NTLDR, පසුකාලීන අදියරයන් පැටවීමට උපදෙස් ඇත GRUB.

  • අවසාන වශයෙන්, මෙහෙයුම් පද්ධති යන්ත්‍ර කේතය ඇරඹුම් කාරකය මඟින් සෘජුව හෝ වක්‍රව දාම පැටවීම හරහා විකල්ප හෝ ඕෆ්සෙට් ස්ථානයකින් ඇරඹුම් අංශයක් පැටවීම සිදු කරයි.

එවිට ඔබට මිත්‍රශීලී කර්නල් භීතිකාවක්, හුස්ම හිරවූ පෙන්ගුවින් එකක් හෝ හිසේ බිඳවැටීමක් හේතුවෙන් ඔබේ තැටිය ඇඹරෙනු ඇත. =) විකල්ප අවස්ථාවෙහිදී, ඔබේ කර්නලය ක්‍රියාවලි වගු, මතකයේ ව්‍යුහයන් සහ තැටි සවි කිරීම, ධාවක පැටවීම, මොඩියුල සහ GUI හෝ සේවා සමූහයක් (සේවාදායකයක නම්) සකසයි. ඉන්පසු, ඒවායේ ශීර්ෂ පා read කියවන විට වැඩසටහන් ක්‍රියාත්මක වන අතර, ඒවායේ එකලස් කිරීම මතකයට ගෙන ඒ අනුව සිතියම් ගත කෙරේ.


2
"කාල පරිපථ ආරම්භ වී අවශ්‍ය නම් ස්ථාවර කිරීම" වැනි දෑ බොහෝමයක් දෘඩාංගවල තවදුරටත් සිදු නොවන බව සැලකිල්ලට ගත යුතුය. එම කාර්යයේ අති විශාල ප්‍රමාණයක් ඇත්ත වශයෙන්ම ඉතා සීමිත උප ප්‍රොසෙසර / අනුක්‍රමික යන්ත්‍ර මත ක්‍රියාත්මක වන අතිශයින්ම විශේෂිත මෘදුකාංගයකි. - මිත්‍රශීලී අසල්වැසි ස්ථිරාංග ඉංජිනේරුවෙක්
jkerian

kerjkerian මම ඔබේ සටහන මගේ ලිපියට උපුටා දැක්වූ බව ඔබට මතකද?
nanofarad

හෙහ්, කොහෙත්ම නැහැ.
jkerian

BIOS වේ නොහැකි වන මෙහෙයුම් පද්ධතිය. BIOS මූලික ආදාන / ප්රතිදාන පද්ධතියෙන් සඳහා වන සරල යෙදුමකි, ඒ වන BIOS කරන්නේ කුමක්ද. නිෂ්පාදකයා විසින් සපයනු ලබන ධාවක සමඟ පහත් මට්ටමේ සම්පත් භාවිතා කිරීමට ක්‍රමලේඛකයන්ට එය ඉඩ දෙයි. OS ආරක්ෂිත (32bit) හෝ දිගු (64bit) මාදිලියට ඇතුළු වූ විට, BIOS තවදුරටත් ලබා ගත නොහැකි අතර මෙහෙයුම් පද්ධතිය තමන්ගේම ධාවක භාවිතා කරන අතර එය මූලික වශයෙන් BIOS විසින් සපයන ලද ක්‍රියාකාරීත්වය “පහළ” මට්ටම්වල ප්‍රතිස්ථාපනය කරයි. නවීන මෙහෙයුම් පද්ධති, උදාහරණයක් ලෙස ලිනක්ස් සහ වින්ඩෝස්, භාවිතා කළ හැකි RAM කොටස් හඳුනා ගැනීමට සහ අවශ්‍ය ධාවක පැටවිය හැකි ඔවුන්ගේම උසස් පැටවුමක් පැටවීමට පමණක් BIOS භාවිතා කරයි.
හැනස් කාර්පිල

1
Ann හැනස් කර්පිල යාවත්කාලීන කරන ලදි; මෙය දැන් අවුරුදු හතරක් පමණ වන අතර මම තවදුරටත් මෙම වෙබ් අඩවියේ ක්‍රියාකාරී නොවේ.
නැනෝෆරාඩ්

15

හොඳ පිළිතුරු බොහොමයක් ඇත, නමුත් මට මෙය එක් කිරීමට අවශ්‍ය විය: ඔබ සඳහන් කළේ ඔබ පයිතන් පසුබිමකින් පැමිණි අයෙකු බවයි. පයිතන් යනු අර්ථකථනය කරන ලද (හෝ "අන්තර් සම්බන්ධිත" හෝ ඕනෑම දෙයක්, අවම වශයෙන් සාමාන්‍ය සීපයිතන් භාවිත අවස්ථා වලදී) භාෂාවකි. මෙයින් අදහස් කරන්නේ ඔබ සතුව වෙනත් මෘදුකාංගයක් (පයිතන් පරිවර්තකය) ප්‍රභවය දෙස බලා එය යම් ආකාරයකින් ක්‍රියාත්මක කරන බවයි. මෙය කදිම ආකෘතියක් වන අතර සැබෑ දෘඩාංග වලින් වියුක්තව ඉතා උසස් මට්ටමේ භාෂාවන්ට ඉඩ දෙයි. අවාසිය නම් ඔබට සෑම විටම මෙම පරිවර්තක මෘදුකාංගය අවශ්‍ය වේ.

එවැනි පරිවර්තක මෘදුකාංග සාමාන්‍යයෙන් යන්ත්‍ර කේතයට සම්පාදනය කරන භාෂාවකින් ලියා ඇත, උදාහරණයක් ලෙස සී හෝ සී ++. යන්ත්‍ර කේතය යනු CPU හට හැසිරවිය හැකි දෙයකි. CPU එකකට කළ හැක්කේ මතකයෙන් බයිට් කිහිපයක් කියවීම සහ බයිට් අගයන් මත පදනම්ව නිශ්චිත මෙහෙයුමක් ආරම්භ කිරීමයි. එබැවින් එක් බයිට් අනුක්‍රමයක් යනු මතකයෙන් යම් දත්ත ලේඛනයක් වෙත පැටවීම සඳහා වන විධානයකි, තවත් අනුක්‍රමයක් අගයන් දෙකක් එකතු කිරීම, තවත් එකක් ලේඛනයේ සිට ප්‍රධාන මතකයට නැවත ගබඩා කිරීම සහ ඉක්මනින් (ලේඛනයක් යනු විශේෂ මතක ප්‍රදේශයකි cpu හි එය වඩාත් හොඳින් ක්‍රියා කළ හැකි), මෙම විධානයන් බොහොමයක් එම මට්ටමට වඩා බෙහෙවින් අඩු ය. මෙම යන්ත්‍ර කේත උපදෙස් සඳහා මිනිසාට කියවිය හැකි එකලස් කිරීමේ කේතය වේ. මෙම යන්ත්‍ර කේතය, මූලික වශයෙන් .exe or.com ලිපිගොනු කවුළු වල හෝ ලිනක්ස් / යුනික්ස් ද්විමය තුළ ගබඩා කර ඇත.

දැන් පරිගණකයක් ආරම්භ කළ හොත් එය ගොළු ය, එහි රැහැන් කිහිපයක් ඇතත් එවැනි යන්ත්‍ර කේත උපදෙස් කියවනු ඇත. පරිගණකයක මෙය සාමාන්‍යයෙන් (දැනට) BIOS (මූලික ආදාන ප්‍රතිදාන පද්ධතිය) අඩංගු ප්‍රධාන පුවරුවේ ඇති EEPROM චිපයකි, මෙම පද්ධතියට බොහෝ දේ කළ නොහැක, සමහර දෘඩාංග සඳහා ප්‍රවේශය පහසු කර පසුව ප්‍රධාන මෙහෙයුමක් කළ හැකිය: පළමු බයිට් කිහිපය (මාස්ටර් බූට් රෙකෝඩ්, එම්බීආර්) මතකයට පිටපත් කර පිටපත් කර පසුව සීපීයූට "මෙන්න, ඔබේ වැඩසටහන තිබේ" යැයි පවසන්න. සීපීයූ විසින් එම බයිට් යන්ත්‍ර කේත ලෙස සලකන අතර එය ක්‍රියාත්මක කරයි. සාමාන්‍යයෙන් මෙය සමහර මෙහෙයුම් පද්ධති පැටවුමක් වන අතර එමඟින් කර්නලය සමහර පරාමිතීන් සමඟ පටවා පාලනය එම කර්නලයට භාර දෙනු ඇත, එමඟින් සියළුම ඩ්‍රයිවර්ස්ටෝ සියළුම දෘඩාංග වෙත ප්‍රවේශ වන අතර ඩෙස්ක්ටොප් හෝ ෂෙල් ක්‍රමලේඛයක් හෝ ඕනෑම දෙයක් පටවා පරිශීලකයාට ප්‍රවේශ වීමට ඉඩ සලසයි. පද්ධතිය භාවිතා කරන්න.


6
"අන්තර් සම්බන්ධිත"? මම මීට පෙර කවදාවත් ඒ පදය අසා නැත.
බ්‍රයන් ඕක්ලි

3
එම පදය වසර 5 කට හෝ ඊට වැඩි කාලයකට පෙර භාවිතා කරන ලදි, එය ක්‍රියාත්මක කිරීමට වඩා වෙනස් වූ සුවිශේෂී සම්පාදක අවධියක් ඇති “නවීන” පරිවර්තකයන් විස්තර කිරීමට. මෙම පදය කොතැනක හෝ නොනැසී පවතින්නේ දැයි අදහසක් නැත ;-)
ජොහැන්නස්

1
"අර්ථ නිරූපණය"? මම මීට පෙර කවදාවත් ඒ පදය අසා නැත.
කෝල් ජොන්සන්

12

ඔබ අසන්නේ "මෙහෙයුම් පද්ධතියක නොසිට යෙදුමක් ක්‍රියාත්මක වන්නේ කෙසේද" යන්නයි. පහසුම පිළිතුර නම් “මෙහෙයුම් පද්ධතියක් යෙදුමක් නොවේ” යන්නයි. යෙදුමක් ලෙස එකම මෙවලම් වලින් මෙහෙයුම් පද්ධතියක් නිර්මාණය කළ හැකි අතර එකම අමුද්‍රව්‍ය වලින් සාදා ඇති නමුත් ඒවා එකම දේ නොවේ. යෙදුමක් යෙදුමට සමාන නීති රීති අනුව ක්‍රියා කළ යුතු නැත.

OTOH, ඔබට නියම දෘඩාංග හා ස්ථිරාංග මෙහෙයුම් පද්ධතිය "යෙදුම" ක්‍රියාත්මක වන "OS" ලෙස සිතිය හැකිය. දෘඩාංග යනු ඉතා සරල මෙහෙයුම් පද්ධතියකි - එය යන්ත්‍ර කේතයෙන් ලියා ඇති උපදෙස් ක්‍රියාත්මක කරන්නේ කෙසේදැයි දන්නා අතර එය ආරම්භ වන විට එහි පළමු උපදෙස් සඳහා නිශ්චිත මතක ලිපිනයක් දෙස බැලිය යුතු බව දනී. ඉතින්, එය ආරම්භ වී වහාම එම පළමු උපදෙස් ක්‍රියාත්මක කරයි, පසුව දෙවැන්න අනුගමනය කරයි.

ඉතින්, මෙහෙයුම් පද්ධතිය යනු හුදෙක් දන්නා ස්ථානයක පවතින යන්ත්‍ර කේතයක් වන අතර එමඟින් දෘඩාංග සමඟ කෙලින්ම අන්තර්ක්‍රියා කළ හැකිය.


1
+1 මම හිතන්නේ මෙය හොඳම පිළිතුරයි. වියුක්තයන් සම්බන්ධයෙන් ගත් කල, මම හිතන්නේ ඔබ එය නියම මට්ටමට ඇණ ගසයි.
ප්‍රීත් සං ha

6

ඔබේ ප්‍රශ්නයට පිළිතුරු සඳහා ස්වදේශීය (CPU සඳහා) කේතය පෙනෙන්නේ කෙසේද සහ එය CPU විසින් අර්ථ නිරූපණය කරන්නේ කෙසේද යන්න පිළිබඳ දැනුමක් අවශ්‍ය වේ.

සාමාන්‍යයෙන් සම්පූර්ණ සම්පාදන ක්‍රියාවලිය පදනම් වී ඇත්තේ ඔබ සී, පැස්කල් හෝ පයිතන් (පයිපී භාවිතා කරමින්) සහ සී # වලින් ලියන දේවල් CPU තේරුම් ගන්නා දේවලට පරිවර්තනය කිරීමෙනි, එනම් “[මතක ලිපිනය] යටතේ යමක් ගබඩා කරන්න” වැනි සරල උපදෙස්, “රෙජිස්ටර් ඊක්ස් යටතේ ගබඩා කර ඇති අංක එකතු කරන්න. සහ ebx "," ඇමතුම් ශ්‍රිතය foo "," eax 10 සමඟ සසඳන්න ". එම උපදෙස්, එකින් එක ක්‍රියාත්මක කර, ඔබේ කේතය සමඟ කිරීමට අවශ්‍ය දේ කරන්න.

දැන් මේ ගැන සිතා බලන්න: මෙම ස්වදේශීය කේතය ක්‍රියාත්මක කිරීමට ඔබට ඇත්ත වශයෙන්ම මෙහෙයුම් පද්ධතියක් අවශ්‍ය නොවේ! ඔබට අවශ්‍ය වන්නේ මෙම කේතය මතකයට පටවා එය එහි ඇති CPU ට පැවසීම සහ එය ක්‍රියාත්මක කිරීමට ඔබට අවශ්‍යය. ඒ ගැන ඕනෑවට වඩා සැලකිලිමත් නොවන්න. BIOS කනස්සල්ලට පත්විය යුතු කාර්යය එයයි - එය CPU ආරම්භ වූ වහාම 0x7C00 යන භෞතික ලිපිනය යටතේ ඔබේ කේතය පටවනු ලැබේ (එක් හා එක් අංශයකට පමණි). ඔබේ කේතයේ මෙම එක් අංශයක් (512 බී) ක්‍රියාත්මක කිරීමට CPU ආරම්භ කරන්න. ඔබ සිතන ඕනෑම දෙයක් ඔබට කළ හැකිය! ඇත්ත වශයෙන්ම, මෙහෙයුම් පද්ධතියෙන් කිසිදු සහයක් නොමැතිව. ඒ ඔබ මෙහෙයුම් පද්ධතිය වන බැවිනි. නියමයි, හාහ්? සම්මත පුස්තකාලයක් නැත, තල්ලුවක් නැත, පයිතන් නැත, වැඩසටහන් නොමැත, රියදුරන් නැත! සෑම දෙයක්ම ඔබ විසින්ම ලිවිය යුතුය.

ඔබ දෘඩාංග සමඟ සන්නිවේදනය කරන්නේ කෙසේද? හොඳයි, ඔබට තේරීම් දෙකක් තිබේ:

  1. ඔබ "රියල් ප්‍රකාරය" තුළ රැඳී සිටින්න - 1 MB මතකයක් සහිත CPU ක්‍රියාත්මක කිරීමේ මාදිලිය (සහ ඊටත් වඩා අඩු), CPU දිගු කිරීම්, මතක ආරක්ෂණය, බහු කාර්යයන් වැනි උසස් CPU විශේෂාංග නොමැත; 16-බිට් ක්‍රියාත්මක කළ හැකි කේතය, පුරාණ ලිපින මාදිලිය ... නමුත් සරල තිර ප්‍රතිදානය, යතුරුපුවරු සහාය, තැටි I / O සහ බල කළමනාකරණය ඇතුළුව BIOS විසින් සපයනු ලබන සමහර ක්‍රියාකාරකම් සමඟ. එක වචනයකින් කිවහොත්, ඔබ MS-DOS සහ 16-bit CPU වල කාලයට නැවත පැමිණේ.
  2. ඔබේ CPU හි ඇති සියලුම අංග, ඔබ ස්ථාපනය කර ඇති සියලු මතකය සහ යනාදිය සමඟ ඔබ "ආරක්ෂිත ප්‍රකාරය" යටතේ යන්න. නමුත් ආරක්ෂිත මාදිලියේදී ඔබ සම්පූර්ණයෙන්ම තනිවම සිටින අතර සෑම දෙයක්ම ඔබ විසින්ම කළ යුතුය (තවද ඔබ දෘඩාංග සමඟ සන්නිවේදනය කරන්නේ I / O වරායන් වෙත දත්ත ආදානය / ප්‍රතිදානය කිරීම සහ බාධා කිරීම් භාවිතා කිරීම සඳහා "in" සහ "out" උපදෙස් භාවිතා කරමිනි. / ඕ). වින්ඩෝස් 95 සිට සෑම මෙහෙයුම් පද්ධතියක්ම මට පැවසිය යුතුද? මුලින්ම ලිනක්ස් මෙම විකල්පය තෝරා ගනීද?

දැන් ඔබ අහනවා කර්නලය කුමක්ද කියා. කෙටියෙන් කිවහොත්, කර්නලය යනු ඔබ නොදකින සහ කෙලින්ම අත්විඳින සියල්ලයි. එය ඔබගේ යතුරුපුවරුවේ සිට ඔබේ පරිගණකයේ ඇති සෑම දෘඩාංගයක්ම පාහේ ධාවක සමඟ සියල්ල කළමනාකරණය කරයි. ඔබ එය සමඟ සන්නිවේදනය කරන්නේ චිත්‍රක කවචය හෝ පර්යන්තයෙනි. හෝ ඔබේ කේතය තුළ ඇති කාර්යයන් මගින්, දැන් ක්‍රියාත්මක කර ඇත, වාසනාවකට මෙන්, මෙහෙයුම් පද්ධතියේ සහාය ඇතිව.

වඩා හොඳ අවබෝධයක් සඳහා මට ඔබට එක් උපදෙසක් දිය හැකිය: ඔබේම මෙහෙයුම් පද්ධතිය ලිවීමට උත්සාහ කරන්න. එය තිරය මත "හෙලෝ වර්ල්ඩ්" ලිවීමට ගියත්.


3

අතිශයින්ම පද්ධතිය මත රඳා පවතින මෙහෙයුම් පද්ධතියක් ක්‍රියාත්මක වන ආකාරය සඳහා යම් වෙනස්කම් තිබේ. ප්‍රයෝජනවත් වීමට පද්ධතියක් ආරම්භයේ දී පුරෝකථනය කළ හැකි යම් හැසිරීමක් තිබිය යුතුය, එනම් "X ලිපිනයෙන් ක්‍රියාත්මක කිරීම ආරම්භ කරන්න". වාෂ්පශීලී නොවන ගබඩා (ෆ්ලෑෂ් මතකය වැනි) ඒවායේ වැඩසටහන් අවකාශයට සිතියම් ගත කර ඇති පද්ධති සඳහා මෙය තරමක් පහසු බැවින් ආරම්භක කේතය ප්‍රොසෙසරයේ වැඩසටහන් අවකාශය තුළ නියම ස්ථානයේ තැබීමට ඔබ වග බලා ගන්න. මෙය ක්ෂුද්‍ර පාලක සඳහා අතිශයින්ම පොදු වේ. සමහර පද්ධති ක්‍රියාත්මක කිරීමට පෙර ඔවුන්ගේ ආරම්භක වැඩසටහන් වෙනත් ස්ථානයකින් ලබා ගත යුතුය. මෙම පද්ධති වලට සමහර මෙහෙයුම් දෘඩ වයර් (හෝ පාහේ දෘ w වයර්) ඇත. ආරම්භක කේතය වෙනත් චිපයකින් i2c හරහා ලබා ගන්නා සමහර සකසනයන් ඇත,

X86 ප්‍රොසෙසර පවුල භාවිතා කරන පද්ධති සාමාන්‍යයෙන් බහු-අදියර ඇරඹුම් ක්‍රියාවලියක් භාවිතා කරන අතර එහි පරිණාමය සහ පසුගාමී අනුකූලතා ගැටලු හේතුවෙන් තරමක් සංකීර්ණ වේ. පද්ධතිය මවු පුවරුවේ අස්ථාවර නොවන මතකයේ ඇති සමහර ස්ථිරාංග (BIOS - Basic Input / Output System, හෝ ඊට සමාන) ක්‍රියාත්මක කරයි. සමහර විට මෙම ස්ථිරාංග සමහරක් හෝ සියල්ලම RAM තුළට පිටපත් කර (නැවත ස්ථානගත කර) එය වේගයෙන් ක්‍රියාත්මක කරයි. මෙම කේතය ලියා ඇත්තේ දෘඩාංග පවතින්නේ කුමක් ද යන්න සහ දැනුම ආරම්භ කිරීම සඳහා ය.

ආරම්භක ස්ථිරාංග සාමාන්‍යයෙන් ලියා ඇත්තේ පද්ධතියේ ඇති දෘඩාංග මොනවාද යන්න පිළිබඳ උපකල්පන සමඟිනි. මීට වසර 28 කට පෙර 286 යන්ත්‍රයක I / O ලිපින X හි ෆ්ලෑපී ඩ්‍රයිව් පාලකයක් තිබිය හැකි යැයි උපකල්පනයක් තිබිය හැකි අතර යම් විධාන කට්ටලයක් ලබා දෙන්නේ නම් අංශ 0 නිශ්චිත මතක ස්ථානයකට පටවනු ඇත (සහ අංශ 0 හි කේතය වැඩි කේතයක් පැටවීම සඳහා BIOS හි කාර්යයන් භාවිතා කරන්නේ කෙසේදැයි දනී, අවසානයේදී මෙහෙයුම් පද්ධතියක් වීමට ප්‍රමාණවත් කේතයක් පටවනු ලැබේ). ඇරඹුම් ක්‍රියාවලිය දිගටම කරගෙන යාමට පෙර X කාලයක් සඳහා විධාන සඳහා (වඩාත් සංකීර්ණ ස්ථිරාංග යාවත්කාලීන කිරීමට) බලා සිටිය යුතු නිශ්චිත සැකසුම් සමඟ ක්‍රියාත්මක වන අනුක්‍රමික වරායක් මයික්‍රොකොන්ට්රෝලර් මත තිබිය හැකිය.

දී ඇති පද්ධතියක ආරම්භක ක්‍රියාවලිය ඔබට විවිධ පද්ධති වලට වඩා වෙනස් බව දැන ගැනීම තරම් වැදගත් නොවේ, නමුත් ඒ සියල්ලටම පොදු දේවල් තිබේ. බොහෝ විට ආරම්භක (බූට්ස්ට්‍රැපිං) කේතය තුළ I / O සිදු කිරීමට අවශ්‍ය වූ විට I / O උපාංග බාධා කිරීම් මත යැපීමට වඩා ඡන්දය ප්‍රකාශ කරනු ලැබේ. මෙයට හේතුව බාධා කිරීම් සංකීර්ණ බැවින්, ස්ටැක් RAM භාවිතා කරන්න (එය තවමත් සම්පූර්ණයෙන් සකසා නොමැති විය හැක), සහ ඔබ එකම මෙහෙයුම වන විට වෙනත් මෙහෙයුම් අවහිර කිරීම ගැන කරදර විය යුතු නැත.

මුලින්ම පටවන විට OS කර්නලය (බොහෝ OS වල කර්නලය ප්‍රධාන කොටස වේ) මුලදී ස්ථිරාංග මෙන් ක්‍රියා කරයි. එය දෘඩාංග පිළිබඳ දැනුමක් හෝ ක්‍රමලේඛනයක් අවශ්‍ය වේ, සමහර RAM තොග අවකාශයක් ලෙස සැකසීම, විවිධ පරීක්ෂණ සිදු කිරීම, විවිධ දත්ත ව්‍යුහයන් සැකසීම, ගොනු පද්ධතියක් සොයා ගැනීම සහ සවි කිරීම, පසුව බොහෝ විට සමහර වැඩසටහන් ආරම්භ කිරීම අවශ්‍ය වේ. ඔබ ලිවීමට පුරුදු වී ඇති වැඩසටහන් මෙන් (මෙහෙයුම් පද්ධතියක් පවතින බව මත රඳා පවතින වැඩසටහනක්).

OS කේතය සාමාන්‍යයෙන් සී සහ එකලස් කිරීමේ මිශ්‍රණයකින් ලියා ඇත. ඕඑස් කර්නලය සඳහා මුල්ම කේතය සෑම විටම එකලස් කර ඇති අතර එය සී කේතය රඳා පවතින තොගය සැකසීම වැනි දේ කරයි, පසුව සී ශ්‍රිතයක් ලෙස හැඳින්වේ. මෙහෙයුම් පද්ධතියක් විසින් කළ යුතු සමහර මෙහෙයුම් බොහෝ විට C හි ප්‍රකාශ කළ නොහැකි නිසා වෙනත් අතින් ලියන ලද එකලස් කිරීමක් ද එහි ඇත (සන්දර්භය මාරු කිරීම / මාරු කිරීමේ තොග වැනි). බොහෝ විට සී කොම්පයිලරය වෙත විශේෂ ධජ යැවිය යුතු අතර එය බොහෝ සී වැඩසටහන් භාවිතා කරන සම්මත පුස්තකාල මත විශ්වාසය නොතබන ලෙසත්, එහි ඇති බව අපේක්ෂා නොකිරීමටත් ය.int main(int argc, char *argv[])වැඩසටහන තුළ. බොහෝ යෙදුම් ක්‍රමලේඛකයින් කිසි විටෙකත් භාවිතා නොකරන විශේෂ සම්බන්ධක විකල්ප භාවිතා කළ යුතුය. මෙමඟින් කර්නල් වැඩසටහන කිසියම් ලිපිනයකට පටවනු ඇතැයි අපේක්ෂා කළ හැකිය. එසේ නැතහොත් ඇතැම් ස්ථානවල බාහිර විචල්‍යයන් ඇති බව පෙනෙන්නට දේවල් සකස් කළ හැකිය. එම විචල්‍යයන් කිසි විටෙක සී කේතයකින් ප්‍රකාශයට පත් නොකෙරුණි (මෙය මතක සිතියම්ගත කළ I / O හෝ වෙනත් විශේෂ මතක ස්ථාන).

සමස්ත මෙහෙයුම මුලදී මැජික් මෙන් පෙනේ, නමුත් ඔබ එය සොයා බලා එහි කොටස් තේරුම් ගත් පසු මැජික් යනු වැඩසටහන් මාලාවක් බවට පත්වන අතර එය ක්‍රියාත්මක කිරීමට තවත් සැලසුම් සහ පද්ධති දැනුම අවශ්‍ය වේ. ඒවා නිදොස් කිරීම මැජික් අවශ්‍ය වේ.


3

මෙහෙයුම් පද්ධති ක්‍රියා කරන ආකාරය අවබෝධ කර ගැනීම සඳහා, ඒවා කොටස් දෙකකට බෙදීම ප්‍රයෝජනවත් විය හැකිය: ඉල්ලීම මත යෙදුම් සඳහා සරලව සේවා සපයන ඒවා සහ යෙදුම් විසින් නොකළ යුතු දේ කිරීම වැළැක්වීම සඳහා CPU හි දෘඩාංග විශේෂාංග භාවිතා කරන ඒවා. MS-DOS කලින් ශෛලියට අයත් විය; 3.0 සිට වින්ඩෝස් හි සියලුම අනුවාදයන් පසුකාලීන ශෛලියයි (අවම වශයෙන් 8086 ට වඩා බලවත් දෙයක් ධාවනය කිරීමේදී).

මුල් IBM PC ධාවනය වන PC-DOS හෝ MS-DOS කලින් පැවති “OS” ශෛලියට උදාහරණයක් වනු ඇත. යෙදුමක් තිරය මත අක්‍ෂරයක් ප්‍රදර්ශනය කිරීමට කැමති නම්, එය කිරීමට ක්‍රම කිහිපයක් තිබෙන්නට ඇත. එම්එස්-ඩොස් විසින් එය "සම්මත ප්‍රතිදානය" වෙත යැවීමට ඉල්ලා සිටින පුරුද්දට එය ඇමතිය හැකිය. එය එසේ කළේ නම්, එම්එස්-ඩොස් විසින් ප්‍රතිදානය හරවා යවනු ලැබේදැයි පරීක්ෂා කරනු ඇති අතර, එසේ නොවුවහොත්, එය ROM හි ගබඩා කර ඇති පුරුද්දක් ලෙස හඳුන්වනු ඇත (මූලික ආදාන / ප්‍රතිදාන පද්ධතිය ලෙස හැඳින්වෙන චාරිත්‍ර එකතුවක). කර්සරයේ පිහිටීම සහ කර්සරය ගෙනයන්න ("ටෙලි ටයිප් ලියන්න"). එම BIOS පුරුද්දෙන් පසුව 0xB800: 0 සිට 0xB800: 3999 දක්වා පරාසයක බයිට් යුගලයක් ගබඩා වේ; වර්ණ ග්‍රැෆික් ඇඩැප්ටරයේ දෘඩාංග එම පරාසය තුළ නැවත නැවතත් බයිට් යුගල ලබා ගනී, අක්ෂර හැඩයක් තෝරා ගැනීමට එක් එක් යුගලයේ පළමු බයිට් භාවිතා කරන අතර දෙවැන්න පෙරබිම් සහ පසුබිම් වර්ණ තෝරා ගැනීමට භාවිතා කරයි. බයිට් ලබාගෙන රතු, කොළ සහ නිල් සං als ා වලට අනුපිළිවෙලින් සැකසෙන අතර එය පැහැදිලි පෙළ සංදර්ශනයක් ලබා දෙයි.

IBM පරිගණකයේ වැඩසටහන් වලට DOS “සම්මත නිමැවුම්” චර්යාව භාවිතා කිරීමෙන් හෝ BIOS “ලිවීමේ ටෙලි ටයිප්” චර්යාව භාවිතා කිරීමෙන් හෝ මතකය ප්‍රදර්ශනය කිරීම සඳහා කෙලින්ම ගබඩා කිරීමෙන් පෙළ පෙන්විය හැකිය. බොහෝ පා display පෙන්වීමට අවශ්‍ය බොහෝ වැඩසටහන් ඉක්මණින් පසුකාලීන ප්‍රවේශය සඳහා තෝරා ගත්තේය, මන්ද එය ඩොස් චර්යාවන් භාවිතා කිරීම මෙන් සිය ගුණයක් වේගවත් විය හැකි බැවිනි. මෙයට හේතුව ඩොස් සහ බයෝස් චර්යාවන් සුවිශේෂී ලෙස අකාර්යක්ෂම වීමයි; දර්ශනය හිස් නොවන්නේ නම්, එය ලිවිය හැක්කේ නිශ්චිත වේලාවක පමණි. චරිතයක් ප්‍රතිදානය කිරීම සඳහා BIOS පුරුද්දක් නිර්මාණය කර ඇති බැවින් එය ඕනෑම වේලාවක කැඳවිය හැකිය. මේ අනුව සෑම ඉල්ලීමක්ම ලිඛිත මෙහෙයුමක් සඳහා සුදුසු වේලාව එනතුරු නැවත බලා සිටිය යුතුය. ඊට වෙනස්ව, කළ යුතු දේ දැන සිටි යෙදුම් කේතයට දර්ශනය ලිවීමට ඇති අවස්ථාවන් වටා සංවිධානය විය හැකිය.

මෙහි ඇති වැදගත් කරුණක් නම්, DOS සහ BIOS ප්‍රදර්ශනයට පෙළ ප්‍රතිදානය කිරීමේ මාධ්‍යයක් සපයන අතර, එවැනි හැකියාවන් පිළිබඳව විශේෂයෙන් “ඉන්ද්‍රජාලික” කිසිවක් නොතිබීමයි. ප්‍රදර්ශනයට පෙළ ලිවීමට අවශ්‍ය යෙදුමකට එය effectively ලදායී ලෙස කළ හැකිය, අවම වශයෙන් දර්ශන දෘඩාංග යෙදුම අපේක්ෂිත ආකාරයට ක්‍රියා කළේ නම් (යමෙකු මොනොක්‍රොම් ඩිස්ප්ලේ ඇඩැප්ටරය ස්ථාපනය කර ඇත්නම්, එය සීජීඒ හා සමාන නමුත් එහි චරිත මතකය 0xB000: 0000-0xB000: 3999 හි පිහිටා ඇත), BIOS ස්වයංක්‍රීයව එහි අක්ෂර ප්‍රතිදානය කරයි; එම්ඩීඒ හෝ සීජීඒ සමඟ වැඩ කිරීමට ක්‍රමලේඛනය කරන ලද යෙදුමකට ද එසේ කළ හැකි නමුත් සීජීඒ සඳහා පමණක් වැඩසටහන්ගත කරන ලද යෙදුමක් එම්ඩීඒ මත සම්පූර්ණයෙන්ම නිෂ් less ල වනු ඇත).

නව පද්ධති වල, දේවල් ටිකක් වෙනස් ය. සකසනයන්ට විවිධ "වරප්‍රසාද" මාතයන් ඇත. ඒවා ආරම්භ වන්නේ වඩාත් වරප්‍රසාදිත මාදිලියෙනි, එහිදී කේතයට අවශ්‍ය ඕනෑම දෙයක් කිරීමට අවසර ඇත. ඉන්පසු ඔවුන්ට සීමිත මාදිලියකට මාරු විය හැකිය, එහිදී තෝරාගත් මතක පරාසයන් හෝ I / O පහසුකම් පමණක් ඇත. කේතයට සීමිත මාදිලියකින් වරප්‍රසාද ප්‍රකාරයට කෙලින්ම මාරු විය නොහැක, නමුත් ප්‍රොසෙසරය වරප්‍රසාදිත මාදිලියේ පිවිසුම් ස්ථාන නිර්වචනය කර ඇති අතර සීමිත මාදිලියේ කේතයට වරප්‍රසාදිත මාදිලියේ එක් පිවිසුම් ස්ථානයක සිට කේත ආරම්භ කිරීමට ප්‍රොසෙසරයෙන් ඉල්ලා සිටිය හැකිය. මීට අමතරව, මෙහෙයුම් ගණනාවකට සම්බන්ධ වරප්‍රසාදිත මාදිලියේ පිවිසුම් ස්ථාන ඇත, ඒවා සීමිත ප්‍රකාරයේදී තහනම් වේ. උදාහරණයක් ලෙස, යමෙකුට එකවර MS-DOS යෙදුම් කිහිපයක් ක්‍රියාත්මක කිරීමට අවශ්‍ය යැයි සිතමු, සෑම කෙනෙකුම තමන්ගේම තිරයක් ඇත. යෙදුම් වලට 0xB800: 0 හි සෘජුවම දර්ශන පාලකයට ලිවිය හැකි නම්, එක් යෙදුමක් තවත් යෙදුමක තිරය නැවත ලිවීම වැළැක්වීමට ක්‍රමයක් නොමැත. අනෙක් අතට, මෙහෙයුම් පද්ධතියකට යෙදුම සීමිත ආකාරයකින් ධාවනය කළ හැකි අතර දර්ශන මතකයට ඕනෑම ප්‍රවේශයක් උගුලට හසු විය හැකිය; "පසුබිමෙහි" තිබිය යුතු යෙදුමක් 0xB800: 160 ලිවීමට උත්සාහ කරන බව සොයාගත හොත්, එය පසුබිම්-යෙදුම් තිර බෆරයක් ලෙස වෙන් කර ඇති දත්ත යම් මතකයකට ගබඩා කළ හැකිය. එම යෙදුම පසුව පෙරබිමට මාරු කළහොත්, බෆරය සැබෑ තිරයට පිටපත් කළ හැකිය. මෙහෙයුම් පද්ධතියකට යෙදුම සීමිත ආකාරයකින් ධාවනය කළ හැකි අතර දර්ශන මතකයට ඕනෑම ප්‍රවේශයක් උගුලට හසු වේ; "පසුබිමෙහි" තිබිය යුතු යෙදුමක් 0xB800: 160 ලිවීමට උත්සාහ කරන බව සොයාගත හොත්, එය පසුබිම්-යෙදුම් තිර බෆරයක් ලෙස වෙන් කර ඇති දත්ත යම් මතකයකට ගබඩා කළ හැකිය. එම යෙදුම පසුව පෙරබිමට මාරු කළහොත්, බෆරය සැබෑ තිරයට පිටපත් කළ හැකිය. මෙහෙයුම් පද්ධතියකට යෙදුම සීමිත ආකාරයකින් ධාවනය කළ හැකි අතර දර්ශන මතකයට ඕනෑම ප්‍රවේශයක් උගුලට හසු වේ; "පසුබිමෙහි" තිබිය යුතු යෙදුමක් 0xB800: 160 ලිවීමට උත්සාහ කරන බව සොයාගත හොත්, එය පසුබිම්-යෙදුම් තිර බෆරයක් ලෙස වෙන් කර ඇති දත්ත යම් මතකයකට ගබඩා කළ හැකිය. එම යෙදුම පසුව පෙරබිමට මාරු කළහොත්, බෆරය සැබෑ තිරයට පිටපත් කළ හැකිය.

සැලකිල්ලට ගත යුතු ප්‍රධාන කරුණු නම් (1) පෙළ ප්‍රදර්ශනය කිරීම වැනි විවිධ සම්මත සේවාවන් ඉටු කිරීම සඳහා සම්මත ක්‍රමවේදයන් තිබීම බොහෝ විට පහසු වුවත්, “වරප්‍රසාදිත මාදිලියේ” ක්‍රියාත්මක වන යෙදුමකට කළ නොහැකි කිසිවක් ඔවුන් නොකරයි. ස්ථාපනය කර ඇති දෘඩාංග සමඟ කටයුතු කිරීම සඳහා එය නිසි ලෙස වැඩසටහන්ගත කර ඇත්නම්; (2) අද ක්‍රියාත්මක වන බොහෝ යෙදුම් ඔවුන්ගේ මෙහෙයුම් පද්ධතිය විසින් සෘජුවම එවැනි I / O කිරීම වලක්වනු ලැබුවද, වරප්‍රසාදිත ආකාරයකින් ආරම්භ වන වැඩසටහනකට අවශ්‍ය ඕනෑම දෙයක් කිරීමට හැකි වන අතර සීමිත මාදිලියකට අවශ්‍ය ඕනෑම නීති රීති සැකසිය හැකිය. වැඩසටහන්.


2

ස්ටීවන් සී පැවසූ පරිදි, එය මෙහෙයුම් පද්ධතිය ආරම්භ කිරීම ගැන පමණක් නොව, එය ක්‍රියාත්මක වන ආකාරය, දෘඩාංග හා ඊට ඉහළින් ඇති මෘදුකාංග සමඟ අන්තර්ක්‍රියා කරයි.

මම ඔහුගේ පිළිතුරට එකතු කරමි, ඔබට "පරිගණක පද්ධතිවල මූලද්‍රව්‍යයන්" දෙස බැලීමට අවශ්‍ය වනු ඇත . එය පොතක් සහ සමහර මෙවලම් වන අතර එය පරිගණකයක්, මෙහෙයුම් පද්ධතියක් සහ සම්පාදකයින් අන්තර්ක්‍රියා කරන ආකාරය පැහැදිලි කරයි. එහි ඇති අද්විතීය දෙය නම්, ඔබේම මෙහෙයුම් පද්ධතිය ඉතා ඉක්මණින් අනුකරණය කළ හැකි පරිසරයක් තුළ සංවර්ධනය කිරීම සඳහා මෙවලම් ලබා දීම, සැබෑ එකක් සඳහා අවශ්‍ය බොහෝ තොරතුරු නොසලකා හැරීම , එවිට ඔබට සංකල්ප ග්‍රහණය කර ගත හැකිය . එය ගස් වෙනුවට වනාන්තරය දැකීමට ඔබට ඉඩ සලසයි.

මෙහෙයුම් පද්ධතිය දෘඩාංග සමඟ අන්තර්ක්‍රියා කරන ආකාරය පිළිබඳ වැඩි විස්තර දැන ගැනීමට ඔබට අවශ්‍ය නම්, මිනික්ස් බලන්න .


1

ඔබ මෙහෙයුම් පද්ධතියක් ලියයි. එය කෙසේ හෝ ධාවනය කළ යුතු අතර, එම මාර්ගය වෙනත් මෙහෙයුම් පද්ධතියක් තුළ තිබේද?

ඔබගේ යෙදුම මෙහෙයුම් පද්ධතියක් තුළ ක්‍රියාත්මක වේ. මෙම මෙහෙයුම් පද්ධතිය ඔබගේ යෙදුමට සේවාවන් සපයයි, ගොනුවක් විවෘත කිරීම සහ එයට බයිට් ලිවීම වැනි දේ. මෙම සේවාවන් සාමාන්‍යයෙන් සපයනු ලබන්නේ පද්ධති ඇමතුම් හරහාය.

මෙහෙයුම් පද්ධතිය දෘඩාංග තුළ ක්‍රියාත්මක වේ. දෘඩාංග මඟින් මෙහෙයුම් පද්ධතියට සේවා සපයයි, අනුක්‍රමික වරායක බෝඩ් අනුපාතය සැකසීම සහ එයට බයිට් ලිවීම වැනි දේ. මෙම සේවාවන් සාමාන්‍යයෙන් සපයනු ලබන්නේ මතක සිතියම්ගත කළ ලේඛණ හෝ I / O වරායන් මගිනි.


මෙය ක්‍රියාත්මක වන ආකාරය පිළිබඳ ඉතා සරල උදාහරණයක් දීමට:

ඔබගේ යෙදුම මෙහෙයුම් පද්ධතියට ගොනුවකට යමක් ලිවීමට පවසයි. ඔබගේ යෙදුමට, මෙහෙයුම් පද්ධතිය ගොනු සහ නාමාවලි වැනි සංකල්ප සපයයි.

දෘඩාංග මත, මෙම සංකල්ප නොපවතී. දෘඩාංග මඟින් බයිට් 512 ක ස්ථාවර කොටස් වලට බෙදා ඇති තැටි වැනි සංකල්ප සපයයි. මෙහෙයුම් පද්ධතිය ඔබේ ගොනුව සඳහා කුමන කොටස් භාවිතා කළ යුතුද යන්න සහ තැටියේ නම, ප්‍රමාණය සහ ස්ථානය වැනි පාර-දත්ත සඳහා තවත් බ්ලොක් කිහිපයක් තීරණය කරයි. ඉන්පසු එය දෘඩාංගයට කියයි: මෙම අංකය සමඟ තැටියේ මෙම අංකය සමඟ අංශයට මෙම බයිට් 512 ලියන්න; එකම අංකයක් සහිත තැටියේ මෙම වෙනස් අංකය සමඟ මෙම අනෙක් බයිට් 512 අංශයට ලියන්න; සහ යනාදි.

මෙහෙයුම් පද්ධතිය දෘඩාංග වලට එය කරන ආකාරය බොහෝ වෙනස් වේ. මෙහෙයුම් පද්ධතියක එක් කාර්යයක් වන්නේ මෙම වෙනස්කම් වලින් යෙදුම් ආරක්ෂා කිරීමයි. තැටි උදාහරණය සඳහා, එක් ආකාරයක දෘඩාංගයක, මෙහෙයුම් පද්ධතියට තැටිය සහ අංශ අංකය I / O වරායකට ලිවිය යුතු අතර, පසුව බයිට් එකින් එක වෙනම I / O වරායකට ලියන්න. වෙනත් ආකාරයේ දෘඩාංගයක් මත, මෙහෙයුම් පද්ධතියට අංශයක මුළු බයිට් 512 ම මතක ප්‍රදේශයකට පිටපත් කිරීමටත්, එම මතක ප්‍රදේශයේ පිහිටීම විශේෂ මතක ස්ථානයකට ලිවීමටත්, තැටිය සහ අංශ අංකය තවත් කෙනෙකුට ලිවීමටත් සිදුවේ. විශේෂ මතක ස්ථානය.


අද ඉහළ මට්ටමේ දෘඩාංග අතිශයින්ම සංකීර්ණයි. සියළුම ක්‍රමලේඛන විස්තර ලබා දෙන අත්පොත් පිටු දහස් ගණනක් ඇති දොරකඩ දොරවල් ය; උදාහරණයක් ලෙස, නවතම Intel CPU අත්පොත වෙළුම් හතක් වන අතර එහි පිටු 4000 කට වඩා ඇත - එය CPU සඳහා පමණි. අනෙකුත් බොහෝ සංරචක මගින් මතක කොටස් හෝ අයි / ඕ වරායන් නිරාවරණය වන අතර, මෙහෙයුම් පද්ධතියට එහි ලිපින අවකාශය තුළ ලිපින සිතියම් ගත කිරීමට CPU ට පැවසිය හැකිය. මෙම සංරචක කිහිපයක් I / O වරායන් හෝ මතක ලිපින කිහිපයක් පිටුපස තවත් බොහෝ දේ හෙළි කරයි; උදාහරණයක් ලෙස, RTC (රියල් ටයිම් ඔරලෝසුව, පරිගණකයේ වේලාව ක්‍රියා විරහිත කර තබන සංරචකය) I / O වරායන් යුගලයක් පිටුපස මතක බයිට් සිය ගණනක් නිරාවරණය කරයි, එය ඉතා සරල අංගයකි. මුල් PC / AT. දෘ disk තැටි වැනි දේවලට වෙනම සකසනයක් ඇත, මෙහෙයුම් පද්ධතිය ප්‍රමිතිගත විධාන හරහා කථා කරයි. GPUs ඊටත් වඩා සංකීර්ණයි.

ඉහත අදහස් දැක්වීමේදී කිහිප දෙනෙක් Arduino යෝජනා කළහ. මම ඔවුන් සමඟ එකඟ වෙමි, එය තේරුම් ගැනීම වඩා සරල ය - USB සම්බන්ධකය අනුක්‍රමික වරායක් ලෙස නිරාවරණය කිරීම හැර Arduino Uno හි සෑම දෙයක්ම කරන ATmega328, අත්පොතක් ඇත්තේ පිටු සිය ගණනක් පමණි. Arduino හි, ඔබ මෙහෙයුම් පද්ධතියක් නොමැතිව කෙලින්ම දෘඩාංග මත ධාවනය කරයි; ඔබට අවශ්‍ය නැතිනම් භාවිතා කිරීමට අවශ්‍ය නොවන කුඩා පුස්තකාල ක්‍රියාකාරකම් කිහිපයක් පමණි.


1

ධාවනය කළ හැකි උදාහරණ

තාක්ෂණික වශයෙන්, මෙහෙයුම් පද්ධතියක් නොමැතිව ක්‍රියාත්මක වන වැඩසටහනක් යනු මෙහෙයුම් පද්ධතියකි. එබැවින් අවම ආයුබෝවන් ලෝක මෙහෙයුම් පද්ධති නිර්මාණය කර ක්‍රියාත්මක කරන්නේ කෙසේදැයි බලමු.

පහත දැක්වෙන සියලුම උදාහරණ වල කේතය මෙම GitHub repo හි ඇත.

ඇරඹුම් අංශය

X86 මත, ඔබට සිදු කළ හැකි සරළ හා අවම මට්ටමේ දෙයක් නිර්මාණය කිරීමට වන ප්රධාන ඇරඹුම් අංශය (MBR) වර්ගයක් වන, ඇරඹුම් අංශයේ , පසුව තැටියට එය ස්ථාපනය කරන්න.

මෙන්න අපි තනි printfඇමතුමකින් එකක් නිර්මාණය කරමු :

printf '\364%509s\125\252' > main.img
sudo apt-get install qemu-system-x86
qemu-system-x86_64 -hda main.img

ප්‍රති come ලය:

රූප විස්තරය මෙහි ඇතුළත් කරන්න

උබුන්ටු 18.04, QEMU 2.11.1 හි පරීක්ෂා කර ඇත.

main.img පහත සඳහන් දෑ අඩංගු වේ:

  • \364octal == 0xf4in hex: hltඋපදෙස් සඳහා කේතන ක්‍රමය , වැඩ කිරීම නවත්වන ලෙස CPU ට පවසයි.

    එබැවින් අපගේ වැඩසටහන කිසිවක් නොකරනු ඇත: ආරම්භ කර නතර කරන්න.

    \xහෙක්ස් අංක POSIX මගින් නිශ්චිතව දක්වා නොමැති නිසා අපි අෂ්ටක භාවිතා කරමු .

    අපට මෙම කේතනය පහසුවෙන් ලබා ගත හැකිය:

    echo hlt > a.asm
    nasm -f bin a.asm
    hd a
    

    නමුත් 0xf4කේතන ක්‍රමය ඇත්ත වශයෙන්ම ඉන්ටෙල් අත්පොතෙහි ලේඛනගත කර ඇත.

  • %509sඅවකාශ 509 ක් නිපදවන්න. බයිට් 510 වන තෙක් ගොනුව පිරවීම අවශ්‍ය වේ.

  • \125\252octal == 0x55ඉන්පසු 0xaa: දෘඩාංගයට අවශ්‍ය මැජික් බයිට්. ඒවා 511 සහ 512 බයිට් විය යුතුය.

    නොමැති නම්, දෘඩාංග මෙය ආරම්භ කළ හැකි තැටියක් ලෙස සලකන්නේ නැත.

කිසිවක් නොකර, අක්ෂර කිහිපයක් දැනටමත් තිරය මත මුද්‍රණය කර ඇති බව සලකන්න. ඒවා ස්ථිරාංග මඟින් මුද්‍රණය කර ඇති අතර පද්ධතිය හඳුනා ගැනීමට සේවය කරයි.

සැබෑ දෘඩාංග මත ධාවනය කරන්න

ඉමියුලේටර් විනෝදජනකයි, නමුත් දෘඩාංග යනු සැබෑ ගනුදෙනුවයි.

කෙසේ වෙතත් මෙය භයානක බව සලකන්න, ඔබට වැරදීමකින් ඔබේ තැටිය අතුගා දැමිය හැකිය: විවේචනාත්මක දත්ත අඩංගු නොවන පැරණි යන්ත්‍රවල පමණක් මෙය කරන්න! හෝ ඊටත් වඩා හොඳ, රාස්ප්බෙරි පයි වැනි ඩිවෝබෝඩ්, පහත ARM උදාහරණය බලන්න.

සාමාන්‍ය ලැප්ටොප් පරිගණකයක් සඳහා, ඔබ මෙවැනි දෙයක් කළ යුතුය:

  • රූපය USB පොල්ලකට පුළුස්සා දමන්න (ඔබගේ දත්ත විනාශ කරයි!):

    sudo dd if=main.img of=/dev/sdX
    
  • පරිගණකයක් මත USB ප්ලග් කරන්න

  • එය සක්‍රිය කරන්න

  • USB වෙතින් ආරම්භ කිරීමට එය කියන්න.

    මෙයින් අදහස් කරන්නේ දෘඩ තැටියට පෙර ස්ථිරාංග USB තෝරා ගැනීමයි.

    එය ඔබගේ යන්ත්‍රයේ සුපුරුදු හැසිරීම නොවේ නම්, ඔබ USB වෙතින් ආරම්භ කිරීමට තෝරා ගත හැකි ඇරඹුම් මෙනුවක් ලබා ගන්නා තෙක් බලය ක්‍රියාත්මක කිරීමෙන් පසු Enter, F12, ESC හෝ වෙනත් අමුතු යතුරු එබීම දිගටම කරගෙන යන්න.

    බොහෝ විට එම මෙනු වල සෙවුම් අනුපිළිවෙල වින්‍යාස කිරීමට හැකිය.

උදාහරණයක් ලෙස, මගේ පැරණි ලෙනොවෝ තින්ක්පැඩ් T430, UEFI BIOS 1.16 හි මට දැකිය හැකිය:

හෙලෝ වර්ල්ඩ්

දැන් අපි අවම වැඩසටහනක් කර ඇති නිසා, අපි ආයුබෝවන් ලෝකයකට යමු.

පැහැදිලිව පෙනෙන ප්‍රශ්නය නම්: IO කරන්නේ කෙසේද? විකල්ප කිහිපයක්:

  • ස්ථිරාංග වලින් විමසන්න, උදා: BIOS හෝ UEFI, අප වෙනුවෙන් නම් කරන්න
  • VGA: විශේෂ මතක කලාපයක් ලියා ඇත්නම් තිරයට මුද්‍රණය වේ. ආරක්ෂිත මාදිලියේ භාවිතා කළ හැකිය.
  • ධාවකයක් ලියන්න සහ දර්ශන දෘඩාංග සමඟ කෙලින්ම කතා කරන්න. මෙය කිරීමට “නිසි” ක්‍රමය මෙයයි: වඩා බලවත්, නමුත් වඩා සංකීර්ණ.
  • අනුක්‍රමික වරාය . මෙය ඉතා සරල ප්‍රමිතිගත ප්‍රොටෝකෝලයක් වන අතර එය ධාරක පර්යන්තයකින් අක්ෂර යවා ලබා ගනී.

    මූලාශ්රය .

    අවාසනාවකට එය බොහෝ නවීන ලැප්ටොප් පරිගණකවල නිරාවරණය වී නැත, නමුත් සංවර්ධන මණ්ඩල සඳහා යා හැකි පොදු ක්‍රමය මෙයයි, පහත ARM උදාහරණ බලන්න.

    උදාහරණයක් ලෙස ලිනක්ස් කර්නලය නිදොස් කිරීමට එවැනි අතුරුමුහුණත් ඇත්තෙන්ම ප්‍රයෝජනවත් බැවින් මෙය ඇත්තෙන්ම ලැජ්ජාවකි .

  • චිප්ස් වල නිදොස් කිරීමේ අංග භාවිතා කරන්න. ARM ඔවුන්ගේ අර්ධ හොස්ටින් ලෙස හැඳින්වේ . සැබෑ දෘඩාංග මත, එයට අමතර දෘඩාංග හා මෘදුකාංග සහාය අවශ්‍ය වේ, නමුත් ඉමුලේටර් මත එය නොමිලේ පහසු විකල්පයක් විය හැකිය. උදාහරණය .

X86 මත සරල වන බැවින් මෙන්න අපි BIOS උදාහරණයක් කරන්නෙමු. නමුත් එය වඩාත්ම ශක්තිමත් ක්‍රමය නොවන බව සලකන්න.

main.S

.code16
    mov $msg, %si
    mov $0x0e, %ah
loop:
    lodsb
    or %al, %al
    jz halt
    int $0x10
    jmp loop
halt:
    hlt
msg:
    .asciz "hello world"

link.ld

SECTIONS
{
    . = 0x7c00;
    .text :
    {
        __start = .;
        *(.text)
        . = 0x1FE;
        SHORT(0xAA55)
    }
}

එකලස් කර සම්බන්ධ කරන්න:

gcc -c -g -o main.o main.S
ld --oformat binary -o main.img -T linker.ld main.o

ප්‍රති come ලය:

රූප විස්තරය මෙහි ඇතුළත් කරන්න

පරීක්ෂා කර ඇත්තේ: ලෙනොවෝ තින්ක්පැඩ් T430, UEFI BIOS 1.16. උබුන්ටු 18.04 ධාරකයක තැටිය ජනනය කර ඇත.

සම්මත පරිශීලක එක්රැස්වීමේ උපදෙස් වලට අමතරව, අපට ඇත්තේ:

  • .code16: බිට් 16 කේතය ප්‍රතිදානය කිරීමට GAS ට කියයි

  • cli: මෘදුකාංග බාධා කිරීම් අක්‍රීය කරන්න. එමඟින් ප්‍රොසෙසරය නැවත ක්‍රියාත්මක වීමට පටන් ගත හැකියhlt

  • int $0x10: BIOS ඇමතුමක් දෙයි. අක්ෂර එකින් එක මුද්‍රණය කරන්නේ මෙයයි.

වැදගත් සම්බන්ධක කොඩි:

  • --oformat binary: අමු ද්විමය එකලස් කිරීමේ කේතය ප්‍රතිදානය කරන්න, සාමාන්‍ය පරිශීලක ක්‍රියාකරවන්නන් සඳහා වන පරිදි ඊඑල්එෆ් ගොනුවක් තුළ එය උණුසුම් නොකරන්න.

එකලස් කිරීම වෙනුවට C භාවිතා කරන්න

සී එකලස් කිරීම සඳහා සම්පාදනය කරන බැවින්, සම්මත පුස්තකාලයක් නොමැතිව සී භාවිතා කිරීම ඉතා සරල බැවින් ඔබට මූලික වශයෙන් අවශ්‍ය වන්නේ:

  • දේවල් මතකයේ තබා ගැනීමට සම්බන්ධක පිටපතක්
  • සම්මත පුස්තකාලය භාවිතා නොකරන ලෙස GCC ට පවසන ධජ
  • අවශ්‍ය සී තත්වය සකසන ඉතා කුඩා එකලස් කිරීමේ ස්ථානයක් main, විශේෂයෙන්:
    • තොගය
    • බීඑස්එස් වලින් බිංදුව

TODO: GitHub හි x86 උදාහරණයක් සම්බන්ධ කරන්න. මෙන්න මම නිර්මාණය කළ ARM එකක් .

කෙසේ වෙතත් ඔබට සම්මත පුස්තකාලය භාවිතා කිරීමට අවශ්‍ය නම් දේවල් වඩාත් විනෝදජනක වේ, මන්ද අප සතුව ලිනක්ස් කර්නලය නොමැති බැවින් POSIX හරහා C සම්මත පුස්තකාල ක්‍රියාකාරිත්වය බොහෝමයක් ක්‍රියාත්මක කරයි .

ලිනක්ස් වැනි පූර්ණ මෙහෙයුම් පද්ධතියකට නොයා හැකියාවන් කිහිපයක්,

  • නිව්ලිබ්

    විස්තරාත්මක උදාහරණ: /electronics/223929/c-standard-libraries-on-bare-metal/223931

    නිව්ලිබ් හි, ඔබ විසින්ම සිස්කල් ක්‍රියාත්මක කළ යුතු නමුත් ඔබට ඉතා අවම පද්ධතියක් ලැබෙන අතර ඒවා ක්‍රියාත්මක කිරීම ඉතා පහසුය.

    උදාහරණයක් ලෙස, ඔබට printfUART හෝ ARM පද්ධති වෙත හරවා යැවිය හැකිය , නැතහොත් අර්ධ හොස්ටිංexit() සමඟ ක්‍රියාත්මක කළ හැකිය .

  • FreeRTOS සහ Zephyr වැනි කාවැද්දූ මෙහෙයුම් පද්ධති .

    එවැනි මෙහෙයුම් පද්ධති සාමාන්‍යයෙන් ඔබට පූර්වභංග කාලසටහන අක්‍රිය කිරීමට ඉඩ සලසයි, එම නිසා වැඩසටහනේ ධාවන කාලය පිළිබඳ පූර්ණ පාලනය ඔබට ලබා දේ.

    ඒවා කලින් ක්‍රියාත්මක කළ නිව්ලිබ් වර්ගයක් ලෙස දැකිය හැකිය.

ARM

ARM හි, සාමාන්‍ය අදහස් සමාන වේ. මම උඩුගත කර ඇත:

රාස්ප්බෙරි පයි සඳහා, https://github.com/dwelch67/raspberrypi අද පවතින වඩාත්ම ජනප්‍රිය නිබන්ධනය ලෙස පෙනේ.

X86 හි සමහර වෙනස්කම් වලට ඇතුළත් වන්නේ:

  • IO සිදු කරනු ලබන්නේ මැජික් ලිපින වලට කෙලින්ම ලිවීමෙනි, උපදෙස් inහා outඋපදෙස් නොමැත .

    මෙය මතක සිතියම්ගත කළ IO ලෙස හැඳින්වේ .

  • රාස්ප්බෙරි පයි වැනි සමහර සැබෑ දෘඩාංග සඳහා, ඔබට ස්ථිරාංග (BIOS) තැටි රූපයට එක් කළ හැකිය.

    එය හොඳ දෙයක්, එමගින් එම ස්ථිරාංග යාවත්කාලීන කිරීම වඩාත් විනිවිද පෙනෙන බවට පත් කරයි.

ස්ථිරාංග

ඇත්ත වශයෙන්ම, ඔබේ ඇරඹුම් අංශය පද්ධතියේ CPU මත ක්‍රියාත්මක වන පළමු මෘදුකාංගය නොවේ.

මුලින්ම ක්‍රියාත්මක වන්නේ මෘදුකාංගයක් වන ඊනියා ස්ථිරාංග වේ:

  • දෘඩාංග නිෂ්පාදකයින් විසින් සාදන ලදී
  • සාමාන්‍යයෙන් සංවෘත ප්‍රභවයක් නමුත් බොහෝ විට සී මත පදනම් වේ
  • කියවීමට-පමණක් මතකයේ ගබඩා කර ඇති අතර එම නිසා විකුණුම්කරුගේ අවසරයකින් තොරව වෙනස් කිරීමට අපහසු / කළ නොහැකි ය.

ප්‍රසිද්ධ ස්ථිරාංග වලට ඇතුළත් වන්නේ:

  • BIOS : පැරණි සියලුම වර්තමාන x86 ස්ථිරාංග. සීබියොස් යනු QEMU විසින් භාවිතා කරන සුපුරුදු විවෘත කේත ක්‍රියාත්මක කිරීමකි.
  • UEFI : BIOS අනුප්‍රාප්තිකයා, වඩා හොඳ ප්‍රමිතිගත, නමුත් වඩා දක්ෂ, සහ ඇදහිය නොහැකි තරම් පුපුරා ගියේය.
  • Coreboot : උතුම් හරස් ආරුක්කු විවෘත මූලාශ්‍ර උත්සාහය

ස්ථිරාංග වැනි දේ කරයි:

  • ඔබ ආරම්භ කළ හැකි යමක් සොයා ගන්නා තෙක් එක් එක් දෘඩ තැටිය, USB, ජාලය ආදිය හරහා ලූප කරන්න.

    අපි QEMU ධාවනය කරන විට, එය දෘඩාංගයට සම්බන්ධ දෘඩ තැටියක් -hdaබව පවසයි main.img, සහ

    hda උත්සාහ කළ පළමු එක වන අතර එය භාවිතා වේ.

  • පළමු බයිට් 512 RAM මතක ලිපිනයට 0x7c00පටවන්න, CPU හි RIP එහි දමා එය ක්‍රියාත්මක වීමට ඉඩ දෙන්න

  • ඇරඹුම් මෙනුව හෝ BIOS මුද්‍රණ ඇමතුම් වැනි දේ දර්ශනයේ පෙන්වන්න

ෆර්ම්වෙයාර් බොහෝ ඕඑස්-එස් රඳා පවතින ඕඑස් වැනි ක්‍රියාකාරීත්වයක් ලබා දෙයි. උදා: BIOS / UEFI මත ධාවනය කිරීම සඳහා පයිතන් උප කුලකයක් වරාය කර ඇත: https://www.youtube.com/watch?v=bYQ_lq5dcvM

ස්ථිරාංග OS වලින් වෙන් කොට හඳුනාගත නොහැකි බවත්, කෙනෙකුට කළ හැකි එකම “සත්‍ය” හිස් ලෝහ ක්‍රමලේඛය ස්ථිරාංග බවත් තර්ක කළ හැකිය.

මෙම CoreOS dev පවසන පරිදි :

අමාරු කොටස

ඔබ පරිගණකයක් බලගන්වන විට, චිප්සෙට් (නෝර්ත්බ්‍රිජ්, සවුත්බ්‍රිජ් සහ සුපර් අයිඕ) සෑදෙන චිප්ස් තවමත් නිසි ලෙස ආරම්භ කර නොමැත. BIOS ROM CPU වෙතින් දුරස්ථව ඉවත් කළද, මෙය CPU වෙත ප්‍රවේශ විය හැකිය, මන්ද එය එසේ විය යුතුය, එසේ නොමැතිනම් CPU ක්‍රියාත්මක කිරීමට උපදෙස් නොමැත. මෙයින් අදහස් කරන්නේ BIOS ROM සම්පූර්ණයෙන්ම සිතියම් ගත කර ඇති බවයි, සාමාන්‍යයෙන් නොවේ. ඇරඹුම් ක්‍රියාවලිය ඉදිරියට ගෙන යාමට ප්‍රමාණවත් තරම් සිතියම් ගත කර ඇත. වෙනත් ඕනෑම උපාංගයක්, එය අමතක කරන්න.

ඔබ QEMU යටතේ Coreboot ධාවනය කරන විට, ඔබට Coreboot හි ඉහළ ස්ථර සමඟ සහ ගෙවීම් සමඟ අත්හදා බැලිය හැකිය, නමුත් QEMU අඩු මට්ටමේ ආරම්භක කේතය සමඟ අත්හදා බැලීමට සුළු අවස්ථාවක් ලබා දෙයි. එක් දෙයක් නම්, RAM ආරම්භයේ සිටම ක්‍රියාත්මක වේ.

පශ්චාත් BIOS ආරම්භක තත්වය

දෘඩාංග බොහෝ දේවල් වගේ, ප්රමිතිකරණය දුර්වල වන අතර, ඔබ කළ යුතු දේවල් එක් නොවන මත රඳා ලේඛන මූලික රාජ්ය ඔබගේ කේතය පරිගණකයේ BIOS පසුපස දිව ආරම්භ වන විට ය.

එබැවින් ඔබට උදව්වක් කර පහත සඳහන් ආකාරයේ ආරම්භක කේතයක් භාවිතා කරන්න: https://stackoverflow.com/a/32509555/895245

රෙජිස්ටාර් කැමති %dsහා %esවැදගත් අතුරු ආබාධ ඇති කරයි, එබැවින් ඔබ ඒවා පැහැදිලිව භාවිතා නොකලත් ඒවා ශුන්‍ය කළ යුතුය.

සමහර ඉමුලේටර් සැබෑ දෘඩාංග වලට වඩා හොඳ බවත් ඔබට හොඳ ආරම්භක තත්වයක් ලබා දෙන බවත් සලකන්න. ඔබ සැබෑ දෘඩාංග මත ධාවනය වන විට, සියල්ල කැඩී යයි.

GNU GRUB Multiboot

ඇරඹුම් අංශ සරල ය, නමුත් ඒවා එතරම් පහසු නැත:

  • ඔබට තිබිය හැක්කේ එක් තැටියකට එක් මෙහෙයුම් පද්ධතියක් පමණි
  • පැටවුම් කේතය සැබවින්ම කුඩා විය යුතු අතර බයිට් 512 ට ගැලපේ. මෙය int 0x13 BIOS ඇමතුම සමඟ විසඳා ගත හැකිය .
  • ආරක්ෂිත මාදිලියකට ගමන් කිරීම වැනි ආරම්භයක් ඔබ විසින්ම කළ යුතුය

GNU GRUB විසින් බහු බූට් නමින් වඩාත් පහසු ගොනු ආකෘතියක් නිර්මාණය කළේ එම හේතු නිසා ය .

අවම වැඩ කරන උදාහරණය: https://github.com/cirosantilli/x86-bare-metal-examples/tree/d217b180be4220a0b4a453f31275d38e697a99e0/multiboot/hello-world

USB මිලියනය වතාවක් දහනය නොකර සැබෑ දෘඩාංග මත සියලු උදාහරණ පහසුවෙන් ධාවනය කිරීමට හැකි වන පරිදි මම එය මගේ GitHub උදාහරණ repo හි භාවිතා කරමි . QEMU හි එය මේ ආකාරයෙන් පෙනේ:

රූප විස්තරය මෙහි ඇතුළත් කරන්න

ඔබ ඔබේ මෙහෙයුම් පද්ධතිය බහු බූට් ගොනුවක් ලෙස සකස් කරන්නේ නම්, සාමාන්‍ය ගොනු පද්ධතියක් තුළ එය සොයා ගැනීමට GRUB ට හැකි වේ.

බොහෝ ඩිස්ට්‍රෝස් කරන්නේ මෙයයි /boot.

බහු බූට් ගොනු මූලික වශයෙන් විශේෂ ශීර්ෂයක් සහිත ඊඑල්එෆ් ගොනුවකි. ඒවා GRUB විසින් මෙහි දක්වා ඇත: https://www.gnu.org/software/grub/manual/multiboot/multiboot.html

ඔබට බහු බූට් ගොනුවක් ආරම්භ කළ හැකි තැටියක් බවට පත් කළ හැකිය grub-mkrescue.

එල් ටොරිටෝ

සංයුක්ත තැටිවලට පුළුස්සා දැමිය හැකි ආකෘතිය: https://en.wikipedia.org/wiki/El_Torito_%28CD-ROM_standard%29

ISO හෝ USB මත ක්‍රියා කරන දෙමුහුන් රූපයක් නිෂ්පාදනය කිරීමට ද හැකිය. මෙය grub-mkrescue( උදාහරණ ) සමඟ කළ හැකි අතර, ලිනක්ස් කර්නලය make isoimageභාවිතා කිරීමෙන් ද එය සිදු කරයි isohybrid.

සම්පත්

  • http://wiki.osdev.org යනු මහා එම කරුණු සඳහා මූලාශ්රය.
  • https://github.com/scanlime/metalkit යනු ඉතා ස්වයංක්‍රීය / සාමාන්‍ය හිස් ලෝහ සම්පාදන පද්ධතියක් වන අතර එය ඉතා කුඩා අභිරුචි API එකක් සපයයි
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.