
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
<br />异常处理:<br />在开启分页的状态下,CPU执行线性地址到物理地址转化的过程中检测到如下条件,就会引起页异常(Page fault)int 14:<br />1、页目录或者页表项中的存在位为0;<br />2、当前程序没有足够的权限访问指定页面。<br />这时CPU会做以下操作:<br />1、将错误码压入栈中,在14号中断中只有最低三位有效。位0(P):0/1 页或者页表不存在
<br />x86中断子系统<br />x86微机系统中采用了8259A可编程中断控制器,每个8259A可以管理8个中断源,通过多片级联方式,可以构成最多管理64个中断向量的系统。PC/AT中使用了2片8259A,共可管理15个中断向量。CPU通过IO指令对8259A进行初始化后,芯片就可以根据当前设定的优先级状态通过INT引脚来通知CPU中断请求。CPU响应后,会从数据总线D7-D0获取从芯片发
<br />Linux0.11中设备命名方式:<br /><br />1-内存、2-磁盘、3-硬盘、4-ttyx(串行终端)、5-tty(控制终端)、6-并口、7-匿名管道。<br />硬盘逻辑设备号命名方式:设备号*0x100+次设备号。<br />次设备号:(硬盘号-1)*5+分区号,如不带分区号则代表整块硬盘。<br />这种命名方式在0.95内核以后被废除。<br /><br />boot
<br />Linux内核是宏/单内核,分5个模块:进程调度模块、内存管理模块、文件系统模块、进程间通讯模块、网络接口模块。<br /><br />三种地址概念:<br />虚拟地址(Virtual Address)、逻辑地址(Logical Address):是程序产生的。虚拟地址由段选择符和段内偏移两部分组成,段内偏移又称逻辑地址。需根据GDT和LDT进行分段变换才能进行下一步地址处理。x86
<br />PCB(Process Control Block 进程控制块)又称任务数据结构,位于include/linux/sched.h中:<br />struct task_struct{long state; //任务的运行状态(-1 不可运行,0 可运行(就绪),>0 已停止)。long counter; //任务运行时间计数(递减)(滴答数),运行时间片。long priority;
<br /> 在qemu+gdb的调试环境中,gdb的b命令生效地址必须是虚拟机的物理地址,但是OS中运行的程序大部分都是以虚拟地址出现的,所以计算出真实的物理地址才能下断点。<br /> MIT6.828的LAB1中的内核代码中,内核段基址为0x10000000(可由kern/entry.S中的mygdt标号下的数据计算得到),这样如果一个虚拟地址是0xF010013A(kern/init.







