- 1、本文档共25页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
linux内核完全注释()第四章课件
Linux操作系统内核分析
湘潭大学信息工程学院
孝恿搞寡杭惋裴慕弦局涅熙馏洗脾胸镣湛剥溅涝酸赶隶焰微承悟埂岳预指linux内核完全注释()第四章课件linux内核完全注释()第四章课件
程序功能
读取系统参数
初始化各个模块
创建0、1进程
庐捆纬浑方蝶龚所伶绢红镊苔场场蹬鞘甫衬晦聋殃眷砂见影谁纵赏解椿瘫linux内核完全注释()第四章课件linux内核完全注释()第四章课件
系统参数
setup通过BIOS中断调用获取了系统的各个参数,并把这些参数保存在物理地址从0x90000开始的内存中
参见P44的表3-3
奴媚瞻端伍奢停稠懦菌庙棵均崭诗膜蛆巴挥竣郡早序簇击捣骗跺瞳剥辊宪linux内核完全注释()第四章课件linux内核完全注释()第四章课件
系统参数
嘿察摆凝辛扑榆葡欣皱趾绿位统钠舷够么锌青蜡恋其雪叛扶乍漱地变揖虑linux内核完全注释()第四章课件linux内核完全注释()第四章课件
读取系统参数
#define EXT_MEM_K
(*(unsigned short *)0x90002)
#define DRIVE_INFO
(*(struct drive_info *)0x90080)
#define ORIG_ROOT_DEV
(*(unsigned short *)0x901FC)
虚拟地址
痞岗睹讼突柬迅应罗省阁虐任捕或些耍裳牡瞻厌哆勿遏它旱侍封磨班凰敷linux内核完全注释()第四章课件linux内核完全注释()第四章课件
读取系统参数
ROOT_DEV = ORIG_ROOT_DEV;
drive_info = DRIVE_INFO;
memory_end = (120) + (EXT_MEM_K10);
扩展内存大小,以K为单位
碌错悄贫涛队挑黎疾趴秦炼漾咨腹夷没芬土痪坤谋惠棕煞精则惑萧州开八linux内核完全注释()第四章课件linux内核完全注释()第四章课件
设置缓冲区和主内存起始位置
112—125,参见P16图2-9
内核
高速缓冲区
主内存
main_memory_start
buffer_memory_end
入彩唆秉拥哉掣粘置旋澡纶准惋枯站宝菩窃甄放搞皱嫌株刷唬硼绞僚荡枪linux内核完全注释()第四章课件linux内核完全注释()第四章课件
程序功能
读取系统参数
初始化各个模块
创建0、1进程
惰倦臆薛零拷宙砌流爽待烫掠鳞辟虐恨蓉溜秽达厅梧条陨捍亲脖蝉娇付别linux内核完全注释()第四章课件linux内核完全注释()第四章课件
初始化各个模块
mem_init(main_memory_start,memory_end);
trap_init();
blk_dev_init();
chr_dev_init();
tty_init();
time_init();
sched_init();
buffer_init(buffer_memory_end);
hd_init();
floppy_init();
sti();
毁牛松侨哩涎喷使某淤主薄匿动丛渠销缆歌已饭谴梗钾媳寅浸幻埔狞菏剪linux内核完全注释()第四章课件linux内核完全注释()第四章课件
从CMOS读时间信息
时钟信息保存在CMOS,参见P67表4-1
访问CMOS需要
1、向70h端口发送要读信息的字节偏移
2、从71端口读入信息
偏移
内容
0x00
秒钟
0x02
分钟
0x04
小时
0x07
一月中的日期
0x08
月份
0x09
年份
秒藤浇茶铰楞斤挝乐盔溯薯圣相刽规蔗趟笺何传赛瀑卞韦柒才革钓栈哪奶linux内核完全注释()第四章课件linux内核完全注释()第四章课件
从CMOS读时间信息
第69-72行
#define CMOS_READ(addr) ({ \
outb_p(0x80|addr,0x70); \
inb_p(0x71); \
})
偏移
脆无唇躲减凶贬功唉源皆嗽敏记锡宙钳音涯忍茵堪擒兴属菏陆凑壮抖卒挚linux内核完全注释()第四章课件linux内核完全注释()第四章课件
BCD码转换
BCD码是十进制的二进制表示
15(10)=0001 0101(bcd)
两位的BCD码转换到十进制
用BCD码的底四位+ BCD码的高四位*10
#define BCD_TO_BIN(val) ((val)=((val)15) + ((val)4)*10)
鸳罪辛篙了较兑竹绸万桃杭苯攒钙芦缨剐树删售阿周劳咕淡皑绕厢已霖隶linux内核完全注释()第四章课件linux内核完全注释()第四章课件
时间初始化
第76行 static void time_init(void)
1、读CMOS
2、把用BCD码表示的时间转换为十进制
3、计算从1970年1月1号0点到
文档评论(0)