`
talin2010
  • 浏览: 501782 次
  • 性别: Icon_minigender_1
  • 来自: 河北
社区版块
存档分类
最新评论

[Linux内核完全剖析]第四章总结

阅读更多

第四章

本章主要讲述了IA32架构下的段页管理以及中断异常和任务的切换等基础知识。要点多,理解难度大。


要点1: 段描述符和门描述符的格式
要点2: 段选择和切换的时候进行的权限验证
要点3: 页目录和页表的格式以及权限设置
要点5: CR0-CR3 GTDR ITDR LTDR TR EFLAG寄存器在保护模式下的作用
要点6: 操作系统加载和初始化时必须设置好保护模式下使用的数据结构如下:
保护模式的IDT,GDT,TSS,LDT;
若开启分页,则最少设置一个页目录和一个页表;
处理器切换到保护模式下运行的代码段,含有终端和异常处理程序的代码模块;
GDTR,IDTR,CR1,CR2,CR3.

问题1: "因为中断和异常向量没有RPL,所以在调用中断或者异常处理过程时不会检查RPL。"(4.6.9 P117)虽然向量没有RPL,但是向量可以定位一个门描述符,门描述符中的段选择符是有RPL的,难道就不检查这个RPL么?
回答:中断和异常处理是调用门的一种特殊分类,在调用门中,调用门描述符中的段选择符的RPL是不检查的(清零),所以这里也不检查。

问题2:在使用从oldlinux网站上下载的bochs配置文件引导第四章的内核示例时,会产生错误要怎么修改(版本4.7.2)。
当载入文件的时候会提示 directive 'floppy_command_delay' not understood ,我查了它的man手册,发现这个版本的bochs不再提供floppy_command_delay选项,于是在配置文件中把这句注释掉。
然后再次载入配置文件,运行,提示 System BIOS must end at 0xfffff 。在网上查找了一下发现这个也是老版本遗留的问题,因为老版本的BIOS大小为64KB的,所以我们要手工指定一个0xf0000的入口点(超过64K了)。但是2.2.5版本以后支持到512K,所以就不需要手工指定。然后在配置文件中把romimage:那句后面的", address=0xf0000"去掉保存即可正常启动。
其实这还是麻烦了,用Vitrualbox把做好的软盘镜像挂在上去就直接可以看到效果。
顺便说一下用truncate -s 1474560 Image就可以即可把编译出来的Image文件做成1.4M的软盘映像了

疏漏与勘误1: "CPU会使用CS寄存器中选择符中的RPL资源来确定是否要求返回到低特权等级"(4.5.3.5 P108)这句话让人莫名其妙,应该改成"CPU会使用调用者的CS寄存器(保存在当前栈)中选择符中的RPL资源来确定是否要求返回到低特权等级"。
疏漏与勘误2: "表4-9 异常和中断的优先级"(4.6.6 P113)中第5级 外部中断:NMI终端、可屏蔽硬件中断 是对于486或者更早CPU生效。486以后的CPU把可屏蔽的硬件中断降低为第6级。
疏漏与勘误3: "表4-10 任务切换对忙标志、NT标志、前一任务链字段和TS标志的影响"(4.7.5 P127)IRET 对老任务忙标志B 影响是设置标志。错误,应该改成清除标志。

——————————————————————————————————————————————————

由于刚开始写总结,内容还不是很全,以后会把格式固定下来。

想到笑话一篇

1、某Windows程序员想转Unix/Linux下的系统开发工作,问某Unix资深黑客:Unix系统开发起来难么,我看没有在Windows下做开发的人多阿。这位黑客回答到:连Windows那么繁琐又复杂的机制你都搞懂了,还怕以简洁著称的Unix么。

X86的复杂机制配合windows,果然不愧是Wintel联盟 --!

分享到:
评论

相关推荐

    《深入分析Linux内核源代码》

    《深入分析Linux内核源代码》 第一章 走进Linux 第二章 Linux运行的硬件基础 第三章 中断机制 第四章 进程描述 第五章 进程调度与切换 第六章 Linux 内存管理 第七章 进程间通信 第八章 虚拟文件系统 第九章 Ext2 ...

    Linux内核分析及高级编程

    第一章linux内核简介 第二章linux内核探索工具 第三章linux内核引导分析 第四章进程管理分析 .....

    Linux内核源代码情景分析 (上下册 高清非扫描 )

    第4章 进程与进程调度 4.1 进程四要素 4.2 进程三部曲:创建、执行与消亡 4.3 系统调用fork()、vfork()与clone() 4.4 系统调用execve() 4.5 系统调用exit()与wait4() 4.6 进程的调度与切换 4.7 强制性...

    深入分析Linux内核源码.chm

    第四章 进程描述 4.1 进程和程序(Process and Program) 4.2 Linux中的进程概述 4.3 task_struct结构描述 4.4 task_struct结构在内存中的存放 4.5 进程组织的方式 4.6 内核线程 4.7 进程的权能 4.8 内核同步 第五章...

    深入分析linux内核源码

    第四章 进程描述 第五章进程调度 第六章 Linux内存管理 第七章 进程间通信 第八章 虚拟文件系统 第九章 Ext2文件系统 第十章 模块机制 第十一章 设备驱动程序 第十二章 网络 第十三章 启动系统

    LINUX内核修炼之道

    将Linux内核的修炼之道总结为四个层次:第一层次目的是对Linux以及内核有个全面的认识和了解,掌握Linux内核源代码的分析方法。第二个层次讨论了内核中系统初始化、系统调用、中断处理、进程管理及调度、内存管理、...

    国嵌嵌入式(Linux)开发培训课件 内核开发与系统移植

    5. Linux内核异常分析 第四天 1. 嵌入式Linux产品开发流程 2. 交叉工具链 3. 嵌入式Linux内核制作 4. 根文件系统制作 5. 嵌入式文件系统介绍 第五天 1. Bootloader介绍 2. U-Boot介绍 3. U-Boot命令 4. U-Boot移植 5...

    深入分析Linux内核源码

    第四章 进程描述 4.1 进程和程序(Process and Program) 4.2 Linux中的进程概述 4.3 task_struct结构描述 4.4 task_struct结构在内存中的存放 4.4.1 进程内核栈 4.4.2 当前进程(current宏) 4.5 进程组织的...

    《Linux内核修炼之道》精华版之方法论

    将Linux内核的修炼之道总结为四个层次:第一层次目的是对Linux以及内核有个全面的认识和了解,掌握Linux内核源代码的分析方法。第二个层次讨论了内核中系统初始化、系统调用、中断处理、进程管理及调度、内存管理、...

    《linux内核注释》

    《Linux内核注释》旨在给程序员和学生提供比以前更详细和更易理解的Linux内核代码注 释。作者分析了核心代码,并对重要的函数、系统调用和数据结构提供了大量的注释。 对《注释》系列丛书的写作灵感都来源于John...

    深入理解linux内核(第三版.中文)【有目录】

    但笫四、六两章切中肯紧的剖析,肯定能让你神清气爽;内存管双虽淮, 但多达三章细 致入微的说理一定会让你茅塞顿开。内容的组织更是别具匠心,每章开始部分一般性原 理的描述打破了知识的局限,将每个部分的全景...

    linux 内核源代码分析

    第4章 进程与进程调度 4.1 进程四要素 4.2 进程三部曲:创建、执行与消亡 4.3 系统调用fork()、vfork()与clone() 4.4 系统调用execve() 4.5 系统调用exit()与wait4() 4.6 进程的调度与切换 4.7 强制性...

    Linux2.6内核标准教程(共计8-- 第1个)

    第4章 进程管理 128 4.1 进程与线程的概念 129 4.1.1 程序与进程 129 4.1.2 进程与线程 129 4.2 进程描述符 131 4.2.1 进程标识符 132 4.2.2 进程的状态 132 4.2.3 进程上下文 134 4.2.4 当前进程...

    linux内核源代码情景分析

    《linux内核源代码情景分析》(非扫描电子版本) 第1章 预备知识 1.1 Linux内核简介 1.2 Intel X86 CPU系列的寻址方式 1.3 i386的页式内存管理机制 1.4 Linux内核源代码中的C语言代码 1.5 Linux内核源代码中的...

    Linux内核修炼之道 doc

    将Linux内核的修炼之道总结为四个层次:“全面了解抓基本,兴趣导向深钻研,融入社区做贡献,坚持坚持再坚持”。第一层次目的是对Linux以及内核有个全面的认识和了解,掌握Linux内核源代码的分析方法。第二个层次...

    linux内核模块.pdf

    最后第4章是驱动设计指导规范, 它是一个提纲性质的, 提醒我们在编写内核模块时的主要注意事项. 我们在做具体项目的时候, 可以查询此章节获得一个快速指引, 如果你对快速指引的细节遗忘了, 则需要重新理解第3章的内容...

    边干边学——LINUX内核指导

    第4章 内核模块 4. 1 概述 4. 2 模块实现机制 4. 3 实例 第5章 系统调用 5. 1 一个简单的例子 5. 2 系统调用基础知识 5. 3 相关数据结构. 源代码分析及流程 5. 4 详细讲解一个系统调用的实现 5. 5 简单系统调用的...

    Linux内核修炼之道

    将Linux内核的修炼之道总结为四个层次:第一层次目的是对Linux以及内核有个全面的认识和了解,掌握Linux内核源代码的分析方法。第二个层次讨论了内核中系统初始化、系统调用、中断处理、进程管理及调度、内存管理、...

    Linux内核分析与应用课件第4章-动手实践-Linux内存映射基础.pdf

    Linux内核分析与应用课件

    Linux2.6内核标准教程(共计8--第6个)

    第4章 进程管理 128 4.1 进程与线程的概念 129 4.1.1 程序与进程 129 4.1.2 进程与线程 129 4.2 进程描述符 131 4.2.1 进程标识符 132 4.2.2 进程的状态 132 4.2.3 进程上下文 134 4.2.4 当前进程...

Global site tag (gtag.js) - Google Analytics