- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验12 Linux内核启动分析
实验12 Linux内核启动分析
实验目的
就boot.s和head.s了解Linux启动的部分工程
实验步骤
下载源码
分析源码
源码分析结果
head.s
# head.s contains the 32-bit startup code.
# Two L3 task multitasking. The code of tasks are in kernel area,
# just like the Linux. The kernel code is located at 0x10000.
;头文件包含32位的启动代码
;两个L3 分配多个任务,就像linux,它的任务代码在核心区域
;核心代码在0x10000的地址上
SCRN_SEL = 0x18
TSS0_SEL = 0x20
LDT0_SEL = 0x28
TSS1_SEL = 0X30
LDT1_SEL = 0x38
;将代码段和数据段的地址设为0x10
;lss传送目标指针,将目标指针内容送入
;LSS DI,string ;把段地址:偏移地址存到SS:DI.
.text
startup_32:
movl $0x10,%eax
mov %ax,%ds
# mov %ax,%es
lss init_stack,%esp;将init_stack+4送入ss,并将init_stack地址送入esp
# setup base fields of descriptors.;设置基本描述符域
call setup_idt
call setup_gdt;在完成两个设置程序的调用之后就重置所有段寄存器
movl $0x10,%eax # reload all the segment registers
mov %ax,%ds # after changing gdt.
mov %ax,%es
mov %ax,%fs
mov %ax,%gs
lss init_stack,%esp
# setup up timer 8253 chip.;设置计时器芯片8523
movb $0x36, %al
movl $0x43, %edx
outb %al, %dx #向43端口写入36
movl $11930, %eax # timer frequency 100 HZ
movl $0x40, %edx
outb %al, %dx #向40端口写入11930
movb %ah, %al
outb %al, %dx
# setup timer system call interrupt descriptors.;
movl $0 %eax
movw $timer_interrupt, %ax;中断
movw $0x8E00, %dx
movl $0x08, %ecx # The PC default timer int.
lea idt(,%ecx,8), %esi
movl %eax,(%esi)
movl %edx,4(%esi)
movw $system_interrupt, %ax
movw $0xef00, %dx
movl $0x80, %ecx
lea idt(,%ecx,8), %esi
movl %eax,(%esi)
movl %edx,4(%esi)
# unmask the timer interrupt.
# movl $0x21, %edx
# inb %dx, %al
# andb $0xfe, %al
# outb %al, %dx
# Move to user mode (task 0)
pushfl
andl $0xffffbfff, (%esp)
popfl
movl $TSS0_SEL, %eax
ltr %ax
movl $LDT0_SEL, %eax
lldt %ax
movl $0, current
sti
pushl $0x17
pushl $init_stack
pushfl
pushl $0x0f
pushl $task0
iret
/****************************************/
setup_gdt: /****************************将lgdt_opcode的入口地址装入GDTR寄存器
lgdt lgdt_opcode
ret
将中断描述符表 idt 设置成具有 256 个项,并都
您可能关注的文档
- 定轴轮系教案(公开课).doc
- 宝石 玉石 鉴赏 教案 12.任务十一: 白色宝石的鉴定.ppt
- 宝钢大型高炉的操业技术与管理.ppt
- 宝石 玉石 鉴赏 教案 10.任务九: 褐色宝石的鉴定.ppt
- 宝马冷却系统毕业论文.doc
- 宝钢实习研究心得.pptx
- 实习项目二 声光控延时开关原理与制作.doc
- 宝鸡 英文介绍.ppt
- 实事求是 做好工作 提升指数.doc
- 实习内心(2-28)双面.doc
- LNG撬装站方案介绍27页PPT.docx
- 2025年中国漏电流传感器行业市场调查研究及投资前景预测报告.docx
- 2019-2025年中国秸秆发电行业市场调查研究及投资前景预测报告.docx
- 2024-2030年中国耦合器行业市场全景监测及投资前景展望报告.docx
- 中国中低压变频器市场供需格局及未来发展趋势报告.docx
- 中国专用汽车行业市场全景评估及发展战略规划报告.docx
- 2025年中国新能源汽车产业园行业市场调查研究及发展战略规划报告.docx
- 2025-2031年中国静力压桩机行业市场发展监测及投资策略研究报告.docx
- 中国工业脚轮行业市场全景分析及投资规划建议报告.docx
- 中国电工机械市场竞争格局及投资前景展望报告.docx
文档评论(0)