青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆-80  評(píng)論-24  文章-0  trackbacks-0
終于跳轉(zhuǎn)到main.c文件中的cbegin()函數(shù)執(zhí)行了,這是從boot到loader再到內(nèi)核,第一次執(zhí)行c代碼的地方。我們先看main.c都做了什么。

 1 #include <type.h>
 2 #include <asm/system.h>
 3 #include <winixj/clock.h>
 4 #include <winixj/mm.h>
 5 #include <winixj/hdd.h>
 6 #include <winixj/sys_call.h>
 7 #include <winixj/process.h>
 8 #include <getpid.h>
 9 
10 //指向在loader.s中保存的系統(tǒng)參數(shù)表
11 //包括顯示卡參數(shù)、硬盤參數(shù)等等
12 void *sys_param = (void *)0xf0000;
13 volatile int cursor_pos = 0;
14 
15 
16 //這個(gè)函數(shù)是真正的第一個(gè)C函數(shù),從_start函數(shù)中跳入
17 //最好將cbegin函數(shù)用volatile關(guān)鍵字修飾,這樣做的好處
18 //是:用volatile修飾函數(shù)的話則是告訴gcc編譯器該函數(shù)
19 //不返回(可能是函數(shù)內(nèi)含有exit()或者死循環(huán)之類的),這樣
20 //gcc在函數(shù)優(yōu)化的時(shí)候就不會(huì)將返回值壓入堆棧,這樣,起到
21 //優(yōu)化的作用,在cbegin中start_proc0()啟動(dòng)了第一個(gè)init進(jìn)程
22 //下面的for循環(huán)永遠(yuǎn)不可能執(zhí)行到,就算執(zhí)行到那cbegin()也不會(huì)
23 //返回
24 void cbegin()
25 {
26     //初始化系統(tǒng)調(diào)用,包括將0x30號(hào)中斷與自陷框架sys_call函數(shù)掛鉤
27     //以及安裝對(duì)用系統(tǒng)調(diào)用號(hào)的中斷入口函數(shù)
28     init_sys_call();
29     //初始化proc_list進(jìn)程鏈表以及對(duì)init和sys進(jìn)程進(jìn)行初始化
30     init_proc_list();
31     //初始化心跳值為0,以及打開時(shí)鐘中斷、初始化開機(jī)時(shí)間等
32     init_clock();
33     init_mm();
34 
35     //這里調(diào)試了很久!!!!!!!!!!
36     //注意這里一定要開中斷,因?yàn)楫?dāng)前中斷是關(guān)閉的
37     //init_hd()中有涉及到硬盤中斷的操作
38     //如果中斷關(guān)閉那么將響應(yīng)不到硬盤中斷
39     sti();
40     init_hd();
41     cli();
42 
43     //啟動(dòng)第一個(gè)進(jìn)程也即0號(hào)init進(jìn)程
44     start_proc0();
45 
46     //下面的代碼應(yīng)該永遠(yuǎn)不會(huì)被執(zhí)行,因?yàn)閟tart_proc0()函數(shù)不會(huì)返回,
47     //start_proc0()函數(shù)執(zhí)行完iretd命令后便啟動(dòng)了第一個(gè)init進(jìn)程,
48     //自此系統(tǒng)便開始了多進(jìn)程的運(yùn)行
49     for(;;){}
50 }
51 
52 //proc0
53 //第一個(gè)進(jìn)程
54 void init()
55 {
56     int i;
57     uint8 *= (uint8 *)(0xb8000);
58     *= (uint8)getpid() + '0';
59 
60     for(;;)
61     {
62         for ( i = 0; i < 1000000++i);
63 
64         if (*< '9')
65         {
66             *= ++(*p);
67         }
68     };
69 }
70 
71 //proc1
72 //第二個(gè)進(jìn)程
73 void sys()
74 {
75     int i;
76     //這里由sys進(jìn)程調(diào)用partition()系統(tǒng)調(diào)用來完成硬盤的初始化
77     //之所以在不在內(nèi)核中完成硬盤的初始化是因?yàn)檫@里需要讀取硬盤
78     //MBR的內(nèi)容,而讀取硬盤需要將當(dāng)前進(jìn)程睡眠,而內(nèi)核是不允許
79     //睡眠的,因此選擇在sys進(jìn)程中初始化硬盤
80     //這里的工作包括獲取硬盤柱面、柱頭、磁道、每磁道扇區(qū)數(shù)等的
81     //信息
82     uint8 *= (uint8 *)(0xb8002);
83     *= (uint8)getpid() + '0';
84 
85     for(;;)
86     {
87         for ( i = 0; i < 1000000++i);
88 
89         if (*< '9')
90         {
91             *= ++(*p);
92         }
93     };
94 }
95 

代碼量并不多,但是完成的事情其實(shí)并不少,主要的函數(shù)以及功能如下:
1、init_sys_call 初始化系統(tǒng)調(diào)用
2、init_proc_list 初始化進(jìn)程控制塊數(shù)組
3、init_clock 初始化時(shí)鐘中斷
4、init_mm 初始化告訴緩沖區(qū)
5、init_hd 初始化硬盤及硬盤中斷
6、start_proc0 啟動(dòng)第一個(gè)進(jìn)程init進(jìn)程
其中每一項(xiàng)功能的實(shí)現(xiàn)都不簡(jiǎn)單,之后的章節(jié)再一一詳細(xì)論述。
這里有必要將內(nèi)存分配的情況展示一下:
在boot執(zhí)行過程中:
1、首先BIOS將自動(dòng)從軟盤第一扇區(qū)讀取boot代碼(共512B),然后將其加載到內(nèi)存物理地址0x7c00處,開始執(zhí)行第一條代碼,boot開始執(zhí)行。
2、我們的boot程序完成從軟盤的第二個(gè)扇區(qū)開始將loader和kernel Image加載到物理地址0x80000開始的地方,然后便急切的跳轉(zhuǎn)到0x80000地址處去執(zhí)行l(wèi)oader。
3、loader此時(shí)開始執(zhí)行,它首先分析kernel Image,將其各個(gè)段(包括若干代碼段、數(shù)據(jù)段等)復(fù)制到內(nèi)存合適的地址處(我們編譯內(nèi)核的時(shí)候指定了內(nèi)核起始虛擬地址為0x0,由于我們的分段機(jī)制使得虛擬地址等于線性地址,所以內(nèi)核開始執(zhí)行時(shí)的線性地址也是0x0,又由于此時(shí)分頁(yè)機(jī)制是地址對(duì)等映射,所以物理地址也同樣是0x0,所以我們是將內(nèi)核搬運(yùn)到內(nèi)存起始物理地址0x0開始運(yùn)行的);然后從BIOS ROM區(qū)獲取一些系統(tǒng)參數(shù),將參數(shù)保存在物理地址0xf0000開始的地方;之后準(zhǔn)備GDT,并填充適當(dāng)?shù)腉DT描述符項(xiàng),然后通過打開A20地址線和置cr0寄存器最后一位PE位為1來打開保護(hù)模式,然后跳轉(zhuǎn)到保護(hù)模式運(yùn)行;而進(jìn)入保護(hù)模式之后loader什么也不干,畢竟我們想盡快的到內(nèi)核世界去旅行,所以這里只簡(jiǎn)單的跳轉(zhuǎn)到kernel去執(zhí)行。
至此為止,boot運(yùn)行完成時(shí)的內(nèi)存分布如下:



而當(dāng)loader執(zhí)行完畢后的內(nèi)存分布如下:



之后內(nèi)存分布不會(huì)有太大的變化。
posted on 2012-02-14 13:01 myjfm 閱讀(620) 評(píng)論(0)  編輯 收藏 引用 所屬分類: 操作系統(tǒng)
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美日韩三区四区| 免费观看成人| 国产最新精品精品你懂的| 国产精品爱啪在线线免费观看| 女女同性精品视频| 欧美看片网站| 国产精品任我爽爆在线播放| 国产精品视频最多的网站| 国产精品视频自拍| 在线精品国产成人综合| 99视频精品免费观看| 午夜在线视频一区二区区别| 久久久久久久久久久久久9999 | 欧美伦理91| 欧美丝袜一区二区三区| 国产亚洲精品一区二555| 亚洲黄色在线观看| 亚洲欧洲99久久| 欧美成人免费观看| 亚洲一区二区在线免费观看视频| 久久大逼视频| 欧美日韩亚洲一区二| 国产自产在线视频一区| 在线视频免费在线观看一区二区| 久久精品国产99精品国产亚洲性色| 亚洲国产精品va在看黑人| 亚洲免费黄色| 久久婷婷综合激情| 国产精品久久77777| 亚洲国产日日夜夜| 久久激情视频免费观看| 日韩网站在线| 免费视频久久| 国产日本欧美在线观看| 一区二区高清视频| 欧美国产在线观看| 欧美在线啊v一区| 国产精品久久久对白| 99re热这里只有精品免费视频| 久久久夜夜夜| 亚洲一区二区三区中文字幕在线| 免费久久99精品国产| 国语自产偷拍精品视频偷| 亚洲欧美在线高清| 一区二区三区免费在线观看| 欧美高清免费| 亚洲国产第一| 免费看亚洲片| 久久不射中文字幕| 亚洲高清在线| 久久亚洲色图| 欧美在线高清| 国产一区二区高清不卡| 先锋影音一区二区三区| 在线视频一区二区| 欧美丝袜第一区| 亚洲综合国产| 亚洲自拍偷拍一区| 国产伦精品一区二区三| 欧美在线观看视频| 性一交一乱一区二区洋洋av| 国产欧美日韩精品在线| 欧美有码在线视频| 欧美在线亚洲| 亚洲福利视频专区| 亚洲夫妻自拍| 欧美日韩少妇| 午夜久久99| 欧美一区二区三区免费视频| 国产有码在线一区二区视频| 老司机午夜精品视频在线观看| 久久久精品视频成人| 91久久精品国产91久久性色| 亚洲激情图片小说视频| 欧美日韩美女| 欧美在线啊v一区| 久久久久这里只有精品| 亚洲精品国产视频| 一区二区三区高清在线| 国产视频不卡| 欧美黄色小视频| 欧美系列亚洲系列| 久久久久国产一区二区| 牛夜精品久久久久久久99黑人| 在线视频精品一| 久久成人国产| 夜夜嗨网站十八久久| 亚洲午夜精品一区二区| 一区二区三区自拍| 99热在线精品观看| 影音先锋欧美精品| 99在线精品免费视频九九视| 国产一区二区av| 亚洲精品日韩一| 狠狠色狠狠色综合日日91app| 亚洲日本在线观看| 国产主播精品| 在线亚洲一区| 亚洲日本va午夜在线电影| 亚洲一区免费看| 日韩视频在线一区二区| 欧美专区第一页| 亚洲欧美另类国产| 欧美激情视频网站| 久久精品成人欧美大片古装| 欧美日韩国产精品成人| 麻豆免费精品视频| 国产欧美一区二区三区在线老狼| 亚洲日本欧美在线| 亚洲激情欧美激情| 久久久99免费视频| 欧美中文字幕精品| 一本色道88久久加勒比精品| 久久九九全国免费精品观看| 亚洲视频中文字幕| 免费看亚洲片| 久久综合九色综合欧美就去吻| 国产精品国产三级国产普通话99 | 午夜国产不卡在线观看视频| 亚洲精品专区| 裸体一区二区三区| 蜜桃精品一区二区三区 | 一本色道久久综合亚洲91| 久久国产精品久久精品国产 | 一区二区三区免费网站| 欧美 日韩 国产 一区| 狂野欧美一区| 好吊妞这里只有精品| 久久av一区二区| 久久久久国产精品www| 国产伦精品一区二区三区视频黑人| 亚洲人体影院| 99国产精品久久久| 欧美日韩高清一区| 99国产精品99久久久久久粉嫩| 日韩亚洲欧美一区| 欧美日韩第一区| 在线中文字幕一区| 性8sex亚洲区入口| 国产亚洲欧美日韩日本| 欧美一区高清| 美女久久网站| 亚洲九九精品| 欧美日韩网址| 亚洲男女自偷自拍| 久久久国产一区二区| 亚洲精品日韩在线观看| 日韩视频在线免费观看| 久热这里只精品99re8久| 久久婷婷一区| 亚洲日本视频| 亚洲欧美日韩国产综合| 国产精品久久久久久久久久妞妞| 国产一二精品视频| 鲁大师影院一区二区三区| 国产精品资源| 亚洲欧美在线免费| 亚洲综合日韩| 欧美日韩调教| 久久精品一二三| 国内视频一区| 欧美中文在线观看国产| 午夜一级久久| 国产精品区一区| 亚洲综合激情| 欧美有码视频| 国产一区二区三区不卡在线观看| 久久精品国产一区二区三| 欧美激情bt| 亚洲综合色噜噜狠狠| 国产一区二区黄色| 久久亚洲视频| 亚洲人午夜精品| 亚洲人www| 欧美少妇一区二区| 午夜精品影院| 农村妇女精品| 亚洲午夜精品国产| 国产日韩欧美高清| 欧美福利小视频| 亚洲在线观看免费| 欧美r片在线| 午夜视频一区二区| 亚洲品质自拍| 国产日韩精品在线| 欧美激情视频网站| 午夜精品www| 亚洲国产小视频在线观看| 欧美一区二区视频在线| 亚洲日本激情| 国产日本亚洲高清| 欧美高清视频一区| 久久久综合香蕉尹人综合网| 日韩视频在线你懂得| 久久综合九色综合欧美狠狠| 亚洲五月六月| 亚洲另类春色国产| 国内精品久久久久影院优| 国产精品99免视看9| 欧美大片一区二区|