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

隨筆-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>
            欧美视频日韩视频| 一本色道久久综合| 亚洲人成毛片在线播放| 国产精品毛片va一区二区三区| 欧美喷水视频| 欧美日韩1区2区| 欧美日韩你懂的| 国产精品天天看| 国产欧美精品久久| 1000部精品久久久久久久久| 亚洲韩国日本中文字幕| 亚洲美女中文字幕| 亚洲免费人成在线视频观看| 欧美专区日韩专区| 男人的天堂成人在线| 亚洲肉体裸体xxxx137| 欧美xx视频| 亚洲国产视频一区二区| 亚洲激情国产| 亚洲一区二区三区免费观看 | 午夜精品视频一区| 欧美在线观看你懂的| 欧美~级网站不卡| 国产精品播放| 亚洲国产精品va在线看黑人动漫 | 欧美日韩国产高清| 国产免费成人| 亚洲狼人精品一区二区三区| 亚洲视频精选| 美女成人午夜| 亚洲一区二区三区在线视频| 欧美一区二区视频观看视频| 欧美经典一区二区三区| 国产在线观看91精品一区| 亚洲伦理在线| 久久男人资源视频| 在线亚洲免费| 看片网站欧美日韩| 国产女主播在线一区二区| 亚洲黄色视屏| 欧美中日韩免费视频| 亚洲成色999久久网站| 午夜精品一区二区三区电影天堂 | 欧美亚洲一区二区在线| 欧美国产一区二区| 亚洲小说欧美另类社区| 欧美激情在线| 亚洲高清免费视频| 久久综合影视| 亚洲欧美日本国产专区一区| 欧美精品一区二区三区在线播放 | 一本久道久久综合婷婷鲸鱼 | 亚洲精品欧美| 欧美成人午夜| 亚洲国产日韩美| 久久久午夜精品| 亚洲欧美日本精品| 欧美午夜不卡在线观看免费 | 久久偷窥视频| 欧美综合二区| 国产精品综合不卡av| 亚洲午夜在线| 日韩视频免费观看| 91久久精品国产91久久性色| 久久久免费av| 伊人狠狠色丁香综合尤物| 久久精品卡一| 久久久91精品国产| 在线精品视频在线观看高清| 久久久久成人网| 久久乐国产精品| 亚洲国产欧美一区二区三区久久 | 欧美凹凸一区二区三区视频| 久久久www成人免费无遮挡大片| 国内精品视频一区| 久久久久国产精品厨房| 欧美专区在线观看| 影音先锋中文字幕一区| 欧美成人日本| 欧美福利视频在线| 一区二区日韩| 亚洲午夜日本在线观看| 国产视频一区免费看| 久久综合伊人77777麻豆| 久久综合99re88久久爱| 亚洲日本理论电影| 日韩午夜在线视频| 国产欧美日韩亚洲一区二区三区| 久久精品人人做人人爽| 久久亚洲春色中文字幕久久久| 亚洲精品1区2区| 一区二区av| 国产亚洲精品一区二区| 欧美成人tv| 欧美私人网站| 久久人人看视频| 欧美经典一区二区三区| 欧美一区二区三区精品| 久久综合一区二区三区| 这里只有精品视频| 欧美一区二区私人影院日本 | 国产精品福利网| 久热精品视频| 欧美午夜精品久久久| 久久美女性网| 欧美三级精品| 女仆av观看一区| 国产精品免费看片| 免费看的黄色欧美网站| 国产精品久久久久久久久久久久久久 | 久久精品免费看| 欧美天堂亚洲电影院在线观看| 亚洲视频精品| 欧美大香线蕉线伊人久久国产精品| 一区二区日韩免费看| 久久精品日产第一区二区| 一本久久a久久精品亚洲| 羞羞答答国产精品www一本 | 亚洲靠逼com| 欧美在线视频观看| 亚洲一区在线播放| 欧美激情国产精品| 久久本道综合色狠狠五月| 欧美久久久久久久久| 你懂的视频一区二区| 国产一区二区三区四区三区四| 99re热这里只有精品视频| 在线观看成人小视频| 欧美一区二区三区电影在线观看| 亚洲婷婷在线| 欧美成人精品| 亚洲国产精品va在看黑人| 国产午夜精品一区二区三区视频| 亚洲免费福利视频| 日韩一级精品| 欧美大片在线观看| 欧美国产日韩一区二区在线观看 | 亚洲尤物精选| 亚洲一区二区在线| 欧美日韩调教| 日韩一级免费观看| 亚洲网站视频福利| 欧美日韩在线视频一区二区| 亚洲国产天堂久久综合网| 在线免费观看成人网| 久久精品免费电影| 久久久最新网址| 尤物九九久久国产精品的特点| 久久久美女艺术照精彩视频福利播放| 久久婷婷麻豆| 亚洲黄色影片| 欧美国产在线视频| 亚洲人人精品| 亚洲欧美日韩中文视频| 国产精品午夜在线观看| 欧美一级大片在线观看| 久久影院午夜论| 伊人男人综合视频网| 欧美成人午夜视频| 日韩午夜精品| 久久精选视频| 激情丁香综合| 欧美精品自拍| 午夜一区二区三区在线观看| 蜜桃av一区二区在线观看| 在线高清一区| 欧美三日本三级少妇三2023| 亚洲天堂av图片| 久久爱91午夜羞羞| 亚洲三级视频| 国产精品久久久久久模特| 欧美怡红院视频一区二区三区| 欧美成人一区二区在线| 一区二区三区日韩精品视频| 国产欧美韩日| 欧美mv日韩mv亚洲| 亚洲午夜激情网页| 欧美成人三级在线| 国产精品无人区| 久久欧美肥婆一二区| 亚洲裸体视频| 欧美.com| 欧美一区二区高清在线观看| 在线观看av一区| 国产情人综合久久777777| 欧美大片一区| 久久精品在线观看| 亚洲视频在线二区| 亚洲国产裸拍裸体视频在线观看乱了| 午夜精品久久久久久久| 亚洲激情视频在线播放| 国产亚洲成精品久久| 欧美日本久久| 麻豆精品91| 欧美专区日韩专区| 亚洲欧美另类国产| 一本色道久久综合亚洲精品高清| 你懂的网址国产 欧美| 久久精视频免费在线久久完整在线看| 一区二区精品国产|