1. 程式人生 > >閱讀Linux0.11——head.s

閱讀Linux0.11——head.s

最近經過反饋,博主得知了自己在輸出自己的知識方面做的非常不好。經過認真的反思,好吧主要是思考別人是怎麼做的,以及結合我的特點,得出如下結論:
1、認為每一個聽眾或者讀者都是零基礎,要直白的講出想要講給別人的知識。雖然這句話聽起來像是廢話,但是挺不容易的。舉個栗子,拿Linux來說,我接觸這個已經三四年時間,很多知識我覺得是很理所當然的,比如講程式設計的時候我沒必要一字一句講的清清楚楚。解釋一些API的功能,甚至都不用說功能,我只要告訴你這個函式是可以解決你的問題,我覺得就可以了,剩下的你需要的全部資訊都在man手冊裡。然而事實是,這個辦法根本行不通,所以我要深入去剖析自己心裡的理所當然。

2、技術的東西並不代表著枯燥。博主一直固執的認為自己是一個很有趣的人,所以我希望我的博文,至少從語言上保持必要的趣味性。

Anyway,在這篇博文中,博主努力說明這幾點:本文說了一個什麼問題?我為什麼要說這個問題?這個問題是怎麼解決的?

說明:為了保持本文的簡潔性,程式碼並不像之前解釋C程式一樣一句一句詳細解釋。本文的重點是,解釋清楚這個知識點的來龍去脈,關於程式部分,博主只是儘可能詳細寫出程式碼的功能以及自己閱讀的感受,希望可以幫助到你。

本文分為三個部分:
1、鋪墊部分:其他的的知識科普
2、引題部分:什麼是head.s
3、正文部分:head.s是怎麼工作的

前面的一篇博文分析了載入程式的程式碼,下面我們來看看head的程式碼,這個程式是執行在保護模式下的程式,所以彙編的格式和前面的載入程式格式不一樣。這個格式是AT&T格式,而載入程式使用intel彙編寫的。
有人會問為什麼要用intel彙編寫?這裡我想說的是,我倒是想用強大的JAVA寫呢,問題是這個時候計算機要什麼沒什麼,跑不起來啊。除了bios給你的一些中斷之外,其他的什麼也沒有,別說一個java的編譯器了,就連java源程式都是儲存在磁碟上,載入不到記憶體中。這是一個很尷尬的事,什麼也不能用,所以我們第一件事必須脫離這個尷尬至極的境地。噹噹噹當,載入程式就是這麼來的。
在載入程式的結尾部分,控制權被交給了head這個程式,所以我想看看head這個程式是怎麼工作的,就是這麼簡單。

一、其他知識科普

二、什麼是head.s

三、head.s是怎麼工作的

相關推薦

閱讀Linux0.11——head.s

最近經過反饋,博主得知了自己在輸出自己的知識方面做的非常不好。經過認真的反思,好吧主要是思考別人是怎麼做的,以及結合我的特點,得出如下結論: 1、認為每一個聽眾或者讀者都是零基礎,要直白的講出想要講給別人的知識。雖然這句話聽起來像是廢話,但是挺不容易的。舉個栗

Linux0.11---head.s分析

head.s位於system模組的頭部,故其命名為head。 system模組位於磁碟上setup模組之後(4個扇區),即從磁碟上第6個扇區開始的位置 從此核心完全開始執行在保護模式下運行了。 head.s的彙編程式與前面的語法格式不同,它採用的是AT&T的組合語言格

linux0.00 "head.s"程式詳解

// head.s包含32位保護模式初始化設定程式碼、時鐘中斷程式碼、系統呼叫中斷程式碼和兩個任務的程式碼。 // 在初始化完成之後程式移動到任務0開始執行,並在時鐘中斷控制下進行任務0和1之間的切換操作。 LATCH = 119

閱讀linux0.11——boot

本文主要圍繞三個問題展開: 1、為什麼要有載入程式? 2、什麼是載入程式? 3、Linux 0.11載入程式怎麼工作? 一、為什麼要有載入程式? 解釋這個問題以前,先說一點BIOS的工作。當你按下電源鍵以後,計算機先進行的工作是加電自檢,自檢完了然後就

nasm重寫linux-0.11 head.s (博古以通今)

;檔名:followking/boot/head.s;本檔案改寫linux-0.11/boot/head.s,目的是為了體驗整個系統構建的過程。;我是看著趙炯《Linux核心0.11完全註釋》編寫的。不過,我是編寫程式碼,有疑問再看。;我用的nasm的語法格式。我想寫一個作業

linux0.11head.s分析

/* *注意!32位啟動程式碼是從絕對地址0x0000 0000開始的,這裡同樣也是頁目錄 *將要存在的地方,因此啟動程式碼會被頁目錄覆蓋掉 */ .text .globl _idt,_gdt,_pg_dir,_tmp_floppy_area _pg_dir: !頁

LINUX0.11 核心閱讀筆記

一.原始碼目錄圖1二.系統總體流程:系統從boot開始動作,把核心從啟動盤裝到正確的位置,進行一些基本的初始化,如檢測記憶體,保護模式相關,建立頁目錄和記憶體頁表,GDT表,IDT表。然後進入main進行初始化設定,main完成系統各個模組要用到的所有資料結構和外部裝置的初始

LINUX0.11核心閱讀筆記 (2)

 (五)檔案系統模組fs: 1.總體結構: Linux把所有裝置都做為檔案來看待。提供統一的開啟,關閉,讀寫系統呼叫介面。下面是檔案系統層次關係: <!--[if !vml]--><!--[endif]--> 圖4 總體來說,檔案系統提供兩類外部

linux 0.11 核心學習 -- head.s

# # 這段程式碼被連線到system模組的最前面,這也是它為什麼稱之為head.s的原因。 # 從這裡開始核心完全執行在保護模式下。head.s採用的是at&t格式的 # 彙編。注意的是程式碼中的賦值方向是從左到右。 # # 這段程式實際上是出於記憶體的絕對地址0開始處。首先是載入各個

LINUX0.11核心閱讀筆記 (1)

 我是通過閱讀趙炯老師編的厚厚的linux核心完全剖析看完LINUX0.11的程式碼,不得不發自內心的說Linus真的是個天才。雖然我覺得很多OS設計的思想他是從UNIX學來的,但是他自己很周全很漂亮很巧妙地實現瞭如此龐大一個系統的絕大多數程式碼。這裡面有太多環節需要注

Linux0.11核心讀書筆記/boot/bootsect.s

果凍QQ:457283! 本程式完成的主要功能! 1.bootsect.s從0x7c00處開始執行! 2.將自己複製到0x90000處! 3.將setup.s程式從磁碟第2扇區讀取到0x90200處! 4.將system讀取到0x10000處! 5.獲取根檔案系統裝置號! 6

第一次作業:基於Linux0.11操作系統的進程模型分析

機制 中斷處理程序 soft page tab nr_open sched move 關閉 1.前言 本文基於Linux0.11操作系統的源代碼,分析其進程模型。 Linux0.11下載地址:https://zhidao.baidu.com/share/20396e1704

linux-2.6.22.6內核啟動分析之head.S引導段代碼

common begin ber 字節數 static smd 我們 ovs pro 學習目標: 了解arch/arm/kernel/head.S作為內核啟動的第一個文件所實現的功能! 前面通過對內核Makefile的分析,可以知道arch/arm/kernel/head

Linux0.11從開機到準備執行main函數的啟動學習

輸入輸出 沒有 tel 輸入 特性 目的 image 實時 概念 最近一直在看操作系統以及內核設計的東西,不確定自己有能力會參與到類似的開發之中,但是爭取能自己改造這內核玩一下,然後按照Linux From Scratch那樣的把改造後的系統編譯運行就心滿意足了。正在看的書

Linux0.11核心引導啟動過程概述

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Linux0 11核心引導啟動過程概述

Linux0.11僅支援x86架構。它的核心引導啟動程式在資料夾boot內,共有三個彙編程式碼檔案。按照啟動流程依次是:     (1)bootsect.s。boot是啟動引導的意思,sect即sector,是扇區的意思,二者合在一起啟動引導扇區。這是 磁碟載

《Redis設計與實現》閱讀筆記11-Sentinel(哨兵)

15 哨兵 哨兵系統由一個或多個哨兵例項組成,可以監視任意多個主伺服器及其對應的所有從伺服器,並在監視的主伺服器下線的時候從其對應的從伺服器中選出一個作為新的主伺服器,然後讓剩餘的從伺服器去複製新的主伺服器,並在舊的主伺服器上線以後讓其成為新的主伺服器的從伺服器

嵌入式 arm平臺kernel啟動第一階段彙編head.s分析

arm_linux核心生成過程: 1. 依據arch/arm/kernel/vmlinux.lds 生成linux核心原始碼根目錄下的vmlinux,這個vmlinux屬於未壓縮,帶除錯資訊、符號表的最初的核心,大小約23MB;  命令:arm-linux-gnu-ld

流利閱讀12.19 Victoria’s Secret gets ready for a makeover

下載pdf資料: GitHub - zhbink/LiuLiYueDu: 流利閱讀pdf彙總 流利閱讀對每期內容均有很好的文章講解,向您推薦。 您可以關注微信公眾號:流利閱讀 瞭解詳情。 Victoria’s Secret gets ready for a makeov

linux0.11 編譯遇到的問題

在oldlinux網址下載了linux0.11能夠編譯通過的原始碼,在ubuntu13.10的機子上能夠編譯成功(gcc版本4.8.1),但是在boshs上確無法執行,總結有如下問題: 1. 反覆出現Loading system... 。一步一步除錯,發現當setup完後並