在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

知道計算機是怎樣把操作系統跑起來的嗎

jf_78858299 ? 來源:子牙OS ? 作者:子牙 ? 2023-05-09 16:12 ? 次閱讀

之前不是給大家發了個開發操作系統的環境搭建教程嗎?這不,又給自己找了一堆事。大家環境搭起來了,有環境寫內核了,問題就出來了。這篇文章就是整理的大家問的比較多的問題,還有我自己寫操作系統的一些問題,及研究后的一些心得體會

操作系統是任何一個想成為技術大牛的小伙伴必學的知識點。每個coder接觸的所有知識點,都是起源于操作系統。你可能想象不到,學會了操作系統,對于一個coder,是一件多么有意義的事情。我還是建議大家抽空學一學、寫一寫。當然如果你希望有人教,歡迎加入我的手寫操作系統小班

一個coder不想成為大牛,結局就是被淘汰

考慮到有些小伙伴沒寫過操作系統,我從操作系統是如何被運行起來的角度來寫這篇文章吧。相信如黑洞般的操作系統啟動過程,小伙伴們都存在著很多困惑及渴望解開謎團的好奇心

01

操作系統運行總覽

想探究這個過程,只有你自己寫操作系統才有這樣的機會。因為真實機器,你沒法調試,看不到這個過程

當你寫好了一個OS內核,用bochs運行起來,你會發現bochs停留在一個斷點處。這個斷點所在的內存地址是0xfffffff0,如圖。

圖片

注意:這時候還沒有運行你寫的OS內核,更進一步說,你寫的OS內核都還沒有裝入內存

這里引出來第一個問題:當我們運行我們自己寫的OS內核的時候,bochs為什么會在0xfffffff0處停下來

接下來第二個問題:0xfffffff0處的匯編指令是jmpf 0xf000:e05b,跳過去要執行的代碼是做什么的?

當把0xfe05b處的代碼執行完,會跳轉到地址0x7c00,這里是我們寫的OS內核開始的地方

圖片

第三個問題就是:為什么我們自己寫的OS內核要載入到0x7c00,為什么不是其他的內存地址

這里為什么顯示的是0x7c02呢?因為我們下的斷點占兩個字節,bochs從斷點的下一行開始顯示,所以如此

接下來咱們一個問題一個問題的分析

02

第一個問題

問題是,我們用bochs運行我們寫的OS內核,為什么會停留在0xffffff0處?

我們反著來推,如果我們寫的OS內核需要運行起來,之前需要完成內核的加載,在加載內核之前需要知道我們寫的OS內核是存儲在硬盤中還是軟盤中,根據不同的存儲介質,使用不同的方式進行讀取。還有,運行OS內核需要內存,在運行之前是不是要檢查下有沒有插內存條……

綜上,在運行OS內核之前,其實要做很多事情,這些事情由誰來做呢?BIOS例程。BIOS例程是寫死在主板ROM中的一段程序。如果你經歷過電腦開機啟動不了,你可能就聽過維修人員說這樣一句話:刷主板ROM試試

為什么要提到BIOS例程呢?因為0xffff0就是BIOS例程的入口地址。停留在這里,就是讓你有機會去調試BIOS例程,看它是如何檢測硬件、設置中斷、載入內核、交出執行權

03

第二個問題

問題是,0xfffffff0處的匯編指令是jmpf 0xf000:e05b,跳過去要執行的代碼是做什么的?

其實前面也提到了,做硬件檢測,比如檢測有沒有插內存條,內存條容量;有沒有接入存儲介質,接入了幾塊…檢測完硬件就需要填充中斷向量表,然后將我們寫的內核代碼讀入內存……最后把執行權限交給OS內核。怎么交呢?代碼類似于jmpf 0x7c00

為什么內存條松了開不了機,知道原因了吧

當時研究這個問題的時候,我在想,為什么要跳轉呢?講0xfe05b作為BIOS例程的入口不就可以了嗎?我也嘗試找了各種資料:Inter手冊、BIOS規范,沒找著答案,所以這個問題木有答案,大家就當純粹一聽。

當你走到一定高度,你會非常苦惱,因為計算機不是發源于我們國家,而且我們不是生活在那個年代,導致資料特別少,而且有些設計由于歷史原因流傳下來,又沒有資料說明,找不到答案

04

第三個問題

問題是,為什么我們自己寫的OS內核要載入到0x7c00,為什么不是其他的內存地址?

這個也是由于歷史原因。

0x7C00第一次出現在IBM PC 5150的BIOS處理int 19(19號中斷)的時候,IBM PC 5150是x86(32位)IBM PC/AT系列的祖先,這款PC于1981年發布,使用了intel8088(16位)的處理器和16KB的RAM內存,BIOS和微軟的基本指令均放在該內存中。當打開電源,BIOS開始自檢,然后出發 19號中斷,在處理19號中斷時,BIOS檢測電腦是否具有軟盤、硬盤或是固定磁盤,如果有任何可以使用的磁盤,BIOS就把磁盤的第一個扇區(512B)加載到內存的0x7C00地址處。

那0x7C00是怎么算出來的呢?那時候計算機的最小內存是32K,為了把盡量多的連續內存留給操作系統,主引導記錄就被放到了內存地址的尾部。由于一個扇區是512字節,主引導記錄本身也會產生數據,需要另外留出512字節保存。所以,它的預留位置就變成了:

0x7FFF - 512 - 512 + 1 = 0x7C00

0x7C00就是這么算出來的

OK,到這來就把操作系統是如何被電腦運行起來的細節講明白了。你學廢了嗎?

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 計算機
    +關注

    關注

    19

    文章

    7496

    瀏覽量

    88001
  • 操作系統
    +關注

    關注

    37

    文章

    6829

    瀏覽量

    123339
  • coder
    +關注

    關注

    0

    文章

    6

    瀏覽量

    7852
收藏 人收藏

    評論

    相關推薦

    計算機操作系統PPT

    計算機操作系統PPT操作系統引論(1章)進程管理(2-3章)存儲管理(4章)設備管理(5章)文件管理(6章)操作系統接口(7章)系統安全性(
    發表于 11-07 11:19

    計算機軟件與操作系統

    計算機軟件與操作系統  功能強大的計算機自從走進了人類的生活就發揮著越來越重要的作用,隨著時代的發展,計算機已與人們的日常生活息息相關。不能不說計算
    發表于 09-13 10:09

    計算機操作系統

    計算機操作系統-進程(2)進程的狀態與轉換
    發表于 05-25 16:45

    什么是計算機操作系統

    什么是計算機操作系統操作系統是一種為應用程序提供服務的系統軟件,是一個完整的計算機系統的有機組成部分。從層次上來看,
    發表于 12-14 06:50

    嵌入式系統與通用計算機操作系統的區別是什么

    嵌入式系統與通用計算機操作系統的區別以前僅學習并接觸過嵌入式系統,通過對比,可以以前學過的知識對應到
    發表于 12-22 06:35

    計算機操作系統課件

    計算機操作系統課件內容如下第1章  計算機操作系統概述.ppt1.1  存儲程序式計算機模型1.2 
    發表于 11-07 09:43 ?0次下載
    <b class='flag-5'>計算機</b><b class='flag-5'>操作系統</b>課件

    2004年計算機操作系統試題

    計算機專業計算機操作系統試題 2004年1月一、選擇題(選擇一個正確答案的代號填入括號中,共40分)1.操作系統是為了提高計算機的C1](
    發表于 01-07 19:24 ?2次下載

    計算機操作系統》課程教學探討

    計算機操作系統課是一門涉及知識面廣的專業基礎課程,該課程的教學一直在計算機專業教學計劃中居重要位置.本文在分析了目前國內計算機操作系統教學現
    發表于 04-18 21:12 ?48次下載

    計算機操作系統試題及答案

    計算機操作系統試題及答案。
    發表于 11-12 16:41 ?0次下載

    計算機操作系統原理與設計

    計算機操作系統原理與設計算機操作系統原理與設計 計算機操作系統原理與設計
    發表于 06-03 14:30 ?43次下載

    FreeRTOS_003 _讓系統在板子上跑起來

    FreeRTOS_003_讓系統在板子上跑起來
    的頭像 發表于 03-14 11:25 ?2776次閱讀
    FreeRTOS_003 _讓<b class='flag-5'>系統</b>在板子上<b class='flag-5'>跑起來</b>

    操作系統是什么?計算機操作系統的詳細資料介紹

    操作系統計算機學科的基礎課程,是理解計算機運行原理的重要基石,學習操作系統不僅能夠讓編程人員了解計算機運行邏輯而且還有助于培養編程“軟實力
    的頭像 發表于 02-04 12:24 ?1.7w次閱讀
    <b class='flag-5'>操作系統</b>是什么?<b class='flag-5'>計算機</b><b class='flag-5'>操作系統</b>的詳細資料介紹

    計算機操作系統的幾種分類方式

    操作系統是管理計算機硬件與軟件的計算機程序,是計算機系統的核心,是計算機系統中最基礎和最重要的系統
    的頭像 發表于 03-21 14:58 ?2w次閱讀

    計算機操作系統的最基本特征是什么_計算機操作系統是什么的接口

    計算機操作系統是用戶與計算機的接口,在計算機中,操作系統是其最基本也是最重要的基礎性系統軟件;
    發表于 09-03 15:36 ?1.5w次閱讀

    為什么計算機需要操作系統

    今天,我們從三個方面來簡單聊聊為什么計算機系統需要操作系統這個話題。
    的頭像 發表于 02-03 11:00 ?2362次閱讀
    主站蜘蛛池模板: 特色毛片| 成人永久免费视频网站在线观看| 天天夜夜骑| 女张腿男人桶羞羞漫画| 色妞基地| 亚洲精品美女在线观看| 淫www| 五月婷婷婷婷婷| 中国业余老太性视频| 中文天堂最新版www| 婷婷丁香社区| 亚洲人成在线精品| 超h 高h 污肉1v1御书屋| 在线三级网| 九九re| 在线国产高清| 婷婷五月五| 欧美日一区| 日本最顶级丰满的aⅴ艳星| 欧美一区二区三区不卡片| 五月婷婷免费视频| 日韩视频高清| 精品特级毛片| 69色综合| 999毛片免费观看| 波多野结衣在线观看一区二区| 91精品国产91久久久久青草| 天天色天天草| 99综合在线| 国产午夜精品理论片免费观看| 手机福利在线观看| 国产肥女bbwbbw| 波多野吉衣一区二区三区在线观看| 91久操| 性欧美videofree视频另类| 年轻人影院www你懂的| 丁香五香天堂网卡| 美女视频久久| 亚洲高清一区二区三区四区| 性网站在线观看| 久久欧洲视频|