天天看點

「計算機基礎」作業系統的使用者界面

作者:架構思考
本月初圍繞作業系統分享了兩篇文章《「計算機基礎」作業系統的認識》和《「計算機基礎」作業系統的邏輯結構》,今天的分享内容是使用者界面。歡迎閱讀~

一、作業系統如何啟動的

1.1、BIOS和主引導記錄MBR

實模式(實位址模式,Real Mode)

學過微機的都知道Intel 8086的模式有兩種:實模式和保護模式

8086中的七種尋址方式

8086/8088有七種基本的尋址方式:立即尋址,寄存器尋址,直接尋址,寄存器間接尋址,寄存器相對尋址,基址變址尋址,相對基址變址尋址。

「計算機基礎」作業系統的使用者界面

實模式的尋址方式

8086是16位的cpu,有着16位的寄存器,16位資料總線以及20位位址總線,可以通路1MB的記憶體。位址由 [段:偏移] 組成,實體位址的計算公式為: physical address = segment * 16 + offset 其中,segment和offset都是16位的。就是通過分段和映射,使得可通路記憶體擴大。

通過上述分段技術,能夠表示的最大記憶體為:FFFFh:FFFFh=FFFF0h+FFFFh=10FFEFh=1M+64K-16Bytes(1M多餘出來的部分被稱做高端記憶體區HMA)。但8086/8088隻有20位位址線,隻能夠通路1M位址範圍的資料,是以如果通路100000h~10FFEFh之間的記憶體(大于1M空間),則必須有第21根位址線來參與尋址(8086/8088沒有)。是以,當程式員給出超過1M(100000H-10FFEFH)的位址時,因為邏輯上正常,系統并不認為其通路越界而産生異常,而是自動從0開始計算,也就是說系統計算實際位址的時候是按照對 1MB 求模的方式進行的,這種技術被稱為wrap-around。

到了 80286,雖然系統的位址總線由原來的20根發展為24根,這樣能夠通路的記憶體可以達到2^24=16MB,但是Intel在設計80286時提出的目标是向下相容,是以在實模式下,系統所表現的行為應該和8086/8088所表現的完全一樣,也就是說,在實模式下,80386以及後續系列應該和8086/8088完全相容仍然使用20位位址線。

保護模式

從80386開始,進入32位cpu時代,有32位位址總線。尋址仍然采用了[段 : 偏移] 的模式,雖然段值仍然由原來的16位cs/ds等寄存器指定,但此時這些寄存器中存放的不再是段基址,而是一個索引:從這個索引,可以找到一個表項,裡面存放了段基址等很多屬性,這個表項稱為段描述符,這個表就稱為GDT。有關GDT的相關介紹,可以參考GDT詳解。

  • 段大小

實模式下段的大小是固定的64k,而保護模式則不是固定的。關于段基址,實模式下,低16位是0;保護模式下堅持4KB對齊,就是說低 12位 都是0。

  • 段基址的存放地點

實模式下在cs/ds等寄存器中,保護模式在段描述符中,而要取得段描述符,又需要取得CS等中的段選擇子。

  • 對段的保護機制

實模式下沒有提供對段的保護,保護模式下面提供了對段的保護機制。

「計算機基礎」作業系統的使用者界面

BIOS的位置

「計算機基礎」作業系統的使用者界面

我們主要關系系統的BIOS,那麼什麼是BIOS呢?

「計算機基礎」作業系統的使用者界面

BIOS是基本輸入/輸出系統的縮寫,也稱為系統BIOS,ROM BIOS或PC BIOS。這是在IBM PC相容計算機上的引導過程(開機/啟動)期間使用的一種固件。BIOS固件内置于個人電腦中,它是上電時運作的第一個軟體。該名稱本身源于1975年CP / M作業系統中使用的基本輸入/輸出系統。

固件Firmware是持久存儲器,程式代碼和存儲在其中的資料的組合。包含固件的裝置的典型示例是嵌入式系統,如交通信号燈,消費電器,數字手表,計算機,計算機外圍裝置,手機和數位相機。這些裝置中包含的固件提供了該裝置的控制程式。

BIOS的功能

系統啟動的配置

「計算機基礎」作業系統的使用者界面

POST加電自檢和啟動

「計算機基礎」作業系統的使用者界面

基本的裝置I/O服務

「計算機基礎」作業系統的使用者界面

其中中斷的13H類型功能如下

「計算機基礎」作業系統的使用者界面

如:

「計算機基礎」作業系統的使用者界面

主引導記錄MBR

MBR磁盤分區都有一個引導扇區,稱為主引導記錄,英文簡稱為MBR。主引導扇區位于整個硬碟的0磁頭0柱面1扇區,包括硬碟主引導記錄MBR(Master Boot Record)和分區表DPT(Disk Partition Table)。其中主引導記錄的作用就是檢查分區表是否正确以及确定哪個分區為引導分區,并在程式結束時把該分區的啟動程式,也就是作業系統引導扇區調入記憶體加以執行。

「計算機基礎」作業系統的使用者界面

MBR 共占用了一個扇區,也就是 512 Byte。其中 446 Byte 安裝了啟動引導程式,其後 64 Byte 描述分區表,最後的 2 Byte 是結束标記。我們已經知道,每塊硬碟隻能劃分 4 個主分區,原因就是在 MBR 中描述分區表的空間隻有 64 Byte。其中每個分區必須占用 16 Byte,那麼 64 Byte 就隻能劃分 4 個主分區。

「計算機基礎」作業系統的使用者界面
MBR 中最主要的功能就是存儲啟動引導程式。
「計算機基礎」作業系統的使用者界面

啟動引導程式的作用

BIOS 的作用就是自檢,然後從 MBR 中讀取出啟動引導程式。那麼,啟動引導程式最主要的作用就是加載作業系統的核心。當然,每種作業系統的啟動引導程式都是不同的。

每種作業系統的檔案格式不同,是以,每種作業系統的啟動引導程式也不一樣。不同的作業系統隻有使用自己的啟動引導程式才能加載自己的核心。如果我的伺服器上隻安裝了一個作業系統,那麼這個作業系統的啟動引導程式就會安裝在 MBR 中。BIOS 調用 MBR 時讀取出啟動引導程式,就可以加載核心了。

但是在有些時候,我的伺服器中安裝了多個作業系統,而 MBR 隻有一個,那麼在 MBR 中到底安裝哪個作業系統的啟動引導程式呢?

很明顯,一個 MBR 是不夠用的。每塊硬碟隻能有一個 MBR 是不能更改的,是以不可能増加 MBR 的數量。系統隻能在每個檔案系統(可以看成分區)中單獨劃分出一個扇區,稱作引導扇區(Boot Sector)。每個分區的引導扇區中也能安裝啟動引導程式,也就是說,在 MBR 和每個單獨分區的引導扇區中都可以安裝啟動引導程式。這樣多個作業系統才能安裝在同一台伺服器中(每個作業系統要安裝在不同的分區中),而且每個作業系統都是可以啟動的。

還有一個問題,BIOS 隻能找到 MBR 中的啟動引導程式,而找不到在分區的引導扇區中的啟動引導程式。那麼,要想完成多系統啟動,我們的方法是増加啟動引導程式的功能,讓安裝到 MBR 中的啟動引導程式(GRUB)可以調用在分區的引導扇區中的其他啟動引導程式。

是以,啟動引導程式擁有以下功能:

  • 加載作業系統的核心。這是啟動引導程式最主要的功能。
  • 擁有一個可以讓使用者選擇的菜單,來選擇到底啟動哪個系統。大家如果在伺服器上安裝過雙 Windows 系統,就應該見過類似的選擇菜單,不過這個選擇菜單是由 Windows 的啟動引導程式提供的,而不是 GRUB。
  • 可以調用其他的啟動引導程式,這是多系統啟動的關鍵。不過需要注意的是,Windows 的啟動引導程式不能調用 Linux 的啟動引導程式,是以我們一般建議先安裝 Windows,後安裝 Linux,是為了将 Linux 的啟動引導程式安裝到 MBR 中,覆寫 Windows 的啟動引導程式。
「計算機基礎」作業系統的使用者界面

1.2、作業系統的啟動過程解析

按下電源鍵瞬間,第一條執行指令位于FFFF0處,JUMP POST;

「計算機基礎」作業系統的使用者界面
「計算機基礎」作業系統的使用者界面
「計算機基礎」作業系統的使用者界面
「計算機基礎」作業系統的使用者界面
「計算機基礎」作業系統的使用者界面

1.3、Windows的啟動過程

「計算機基礎」作業系統的使用者界面

1.4、Linux的啟動過程

「計算機基礎」作業系統的使用者界面

二、如何生成一個作業系統(利用已有的核心)

「計算機基礎」作業系統的使用者界面

Linux系統的生成步驟

「計算機基礎」作業系統的使用者界面

具體步驟實作:

「計算機基礎」作業系統的使用者界面
「計算機基礎」作業系統的使用者界面
「計算機基礎」作業系統的使用者界面
「計算機基礎」作業系統的使用者界面
「計算機基礎」作業系統的使用者界面
「計算機基礎」作業系統的使用者界面
「計算機基礎」作業系統的使用者界面

三、作業系統的使用者界面

3.1、作業系統的使用者界面

操作界面分類:

「計算機基礎」作業系統的使用者界面

常用普通指令

「計算機基礎」作業系統的使用者界面
「計算機基礎」作業系統的使用者界面

批處理命名

批處理(Batch),也稱為批處理腳本。顧名思義,批處理就是對某對象進行批量的處理。批處理檔案的擴充名為bat。

目前比較常見 的批處理包含兩類:DOS批處理和PS批處理。PS批處理是基于強大的圖檔編輯軟體Photoshop的,用來批量處理圖檔的腳本;而DOS批處理則是基于DOS指令的,用來自動地批量地執行DOS指令以實作特定操作的腳本。這裡要講的就是DOS批處理。

批處理是一種簡化的腳本語言,它應用于DOS和Windows系統中,它是由DOS或者Windows系統内嵌的指令解釋器(通常是COMMAND.COM或者CMD.EXE)解釋運作。類似于Unix中的Shell腳本。批處理檔案具有.bat或者.cmd的擴充名,其最簡單的例子,是逐行書寫在指令行中會用到的各種指令。更複雜的情況,需要使用if,for,goto等指令控制程式的運作過程,如同C,Basic等中進階語言一樣。如果需要實作更複雜的應用,利用外部程式是必要的,這包括系統本身提供的外部指令和第三方提供的工具或者軟體。

批處理檔案,或稱為批處理程式,是由一條條的DOS指令組成的普通文本檔案,可以用記事本直接編輯或用DOS指令建立,也可以用DOS下的文本編輯器Edit.exe來編輯。在“指令提示”下鍵入批處理檔案的名稱,或者輕按兩下該批處理檔案,系統就會調用Cmd.exe運作該批處理程式。一般情況下,每條指令占據一行;當然也可以将多條指令用特定符号(如:&、&&、|、||等)分隔後寫入同一行中;還有的情況就是像if、for等較進階的指令則要占據幾行甚至幾十幾百行的空間。

系統在解釋運作批處理程式時,首先掃描整個批處理程式,然後從第一行代碼開始向下逐句執行所有的指令,直至程式結尾或遇見exit指令或出錯意外退出。

「計算機基礎」作業系統的使用者界面

3.2、Shell腳本程式設計

Shell在計算機科學中指“為使用者提供使用者界面”的軟體,通常指的是指令行界面的解析器。一般來說,這個詞是指作業系統中提供通路核心所提供之服務的程式。Shell也用于泛指所有為使用者提供操作界面的程式,也就是程式和使用者互動的層面。是以與之相對的是核心,核心不提供和使用者的互動功能。

「計算機基礎」作業系統的使用者界面
「計算機基礎」作業系統的使用者界面
「計算機基礎」作業系統的使用者界面
「計算機基礎」作業系統的使用者界面

Shell的發展與分類

「計算機基礎」作業系統的使用者界面

Bash的主要功能

「計算機基礎」作業系統的使用者界面

下面是各種功能的介紹:

  • 指令行編輯功能
「計算機基礎」作業系統的使用者界面
  • 指令行補全功能
「計算機基礎」作業系統的使用者界面
  • 指令曆史與指令重複
「計算機基礎」作業系統的使用者界面
  • 管道與重定向操作
「計算機基礎」作業系統的使用者界面
「計算機基礎」作業系統的使用者界面

4、系統調用

在電腦中,系統調用(英語:system call),指運作在使用者空間的程式向作業系統核心請求需要更高權限運作的服務。系統調用提供使用者程式與作業系統之間的接口。大多數系統互動式操作需求在核心态執行。如裝置IO操作或者程序間通信。

「計算機基礎」作業系統的使用者界面
「計算機基礎」作業系統的使用者界面

4.1、使用者空間(使用者态)和核心空間(核心态)

作業系統的程序空間可分為使用者空間和核心空間,它們需要不同的執行權限。其中系統調用運作在核心空間。

4.2、庫函數

系統調用和普通庫函數調用非常相似,隻是系統調用由作業系統核心提供,運作于核心核心态,而普通的庫函數調用由函數庫或使用者自己提供,運作于使用者态。

4.3、典型實作(Linux)

Linux 的系統調用通過 int 80h 實作,用系統調用号來區分入口函數。作業系統實作系統調用的基本過程是:

應用程式調用庫函數(API);

  • API 将系統調用号存入 EAX,然後通過中斷調用使系統進入核心态;
  • 核心中的中斷處理函數根據系統調用号,調用對應的核心函數(系統調用);
  • 系統調用完成相應功能,将傳回值存入 EAX,傳回到中斷處理函數;
  • 中斷處理函數傳回到 API 中;
  • API 将 EAX 傳回給應用程式。

應用程式調用系統調用的過程是:

  • 把系統調用的編号存入 EAX;
  • 把函數參數存入其它通用寄存器;
  • 觸發 0x80 号中斷(int 0x80)。

4.4、典型實作(Dos)

「計算機基礎」作業系統的使用者界面
「計算機基礎」作業系統的使用者界面

4.5、隐式系統調用和Linux系統調用原理

「計算機基礎」作業系統的使用者界面
「計算機基礎」作業系統的使用者界面
「計算機基礎」作業系統的使用者界面

文章來源:雨夜※繁華_https://blog.csdn.net/qq_44861675/article/details/107788583

繼續閱讀