核心開發文件 概述

2021-06-07 16:15:59 字數 1201 閱讀 2246

核心開發文件

一 概述

此實驗核心採用微核心方式,核心做最小化處理,程序間協同工作靠ipc完成.核心僅僅進行訊息的傳遞和部分必要的硬體維護,如中斷,分頁.

整個核心是乙個kernel結構.核心任務就是對這個結構進行維護.其餘模組都才有微核心經典設計,交由使用者程序來維護.該實驗程序不對程序進行區分,所有程序同等對待,沒有服務程序,客戶程序之分.程序之間的區別只有許可權區別,優先順序區別.ipc使用類ip協議方式傳遞訊息.ipc是一套協議,而非實現機制.

二 核心簡要工作過程

核心不自己實現引導過程,而是遵循多重引導協議,有第三方引導程式來載入核心.使核心開發過程簡化,得到乙個統一的執行環境.

首先,多重引導程式載入核心執行環境設定模組,setup和env到記憶體3mb處,setup是匯程式設計序,負責必須的硬體初始化工作,設定gdt,臨時棧,初始化8259a.然後呼叫env模組,env模組之後經由c語言完成,env模組負責完成setup未完成的任務,給核心提供乙個統一的執行環境.該統一的環境是,乙個線性記憶體空間,預設的中斷處理程式.env完成環境初始化工作後呼叫核心main,核心正式開始執行.main得到控制權,對起kernel結構進行初始化,設定die程序,然後人工初始化程序管理器pm,記憶體管理器mm.核心工作完成.

環境模組setup,env,核心主模組main,程序管理器pm,記憶體管理器mm為了程式設計方便,和核心對他們的依賴性,被編譯在同一可執行檔案vmgml中.

三 核心資料結構kernel

kernel在include/kernel.h中定義.其結構如下

typdef struct kernelkernel;

proc在include/proc.h中定義,其結構如下

typedef struct proc *proc;

struct proc;

四 核心api

核心向對外只提供3個api,

int send(pid_t pid,void *massage,int length); /* 該api像pid程序傳送大小為length位元組的訊息,訊息內容由massage指出. 返回成功傳送的位元組數 */

void *recv(int *length); /* 該api返回訊息佇列中第一條訊息,*length儲存了訊息的大小 */

void *recvform(pid_t pid,int *length); /* 該api接收來至pid的訊息,*length儲存了訊息的大小 */

mmx開發文件

i mmx簡介 ii mmx基本指令集 具體細節請參閱 intel 體系結構mmx技術程式設計師參考手冊 第五章 2.1 拷貝指令 movq 64位資料拷貝,如果記憶體8位對齊的話,是乙個64位寫,否則2個32位寫。movd 32位資料拷貝,注意 如果從記憶體向mmx暫存器拷貝,mmx高32位清零!...

zencart開發文件

在zencart開發中,做乙個新的功能模組時,首先要明確這個功能的流程和與原來 的關聯。然後,需要為這個功能模組取乙個名稱標識,盡量不要與原有的模組名稱不相同。zencart模組結構 1.資料庫資料表部分 2.後台管理部分 3.前台功能顯示部分 資料庫部分 zencart使用mysql數庫據,在設計...

RxJava開發文件

在我們的第乙個列子裡,我們將檢索安裝的應用列表並填充recycleview的item來展示它們。我們也設想乙個下拉重新整理的功能和乙個進度條來告知使用者當前任務正在執行。首先,我們建立observable。我們需要乙個函式來檢索安裝的應用程式列表並把它提供給我們的觀察者。我們乙個接乙個的發射這些應用...