课程学习总结报告
Linux内核主要由以下几个功能:进程管理、文件系统、IO体系结构和设备驱动程序、内存管理等等。
从这张图中,我们可以看到linux操作系统的架构。

进程管理
Linux内核中的进程是非常复杂的,在操作系统原理中,我们通过进程控制块PCB描述进程。为了管理进程,内核要描述进程的结构,我们也称其为进程描述符,进程描述符直接或间接提供了进程相关的所有信息。
进程控制块PCB是名字为struct task_struct的数据结构,它称为任务结构体,为了很好地描述一个进程地各个信息,其内部包含的数据非常多,通过下面的示意图可以从整体上看清内部结构关系。
进程代表一个执行流,它不仅绑定了CPU上下文,还关联着程序执行所需的其他各种资源。操作系统原理中PCB的概念在Linux中以task_struct结构体的形式实现。该结构体包含了一个进程实体所需的所有信息,它串联起了系统各个子模块,包括内存,文件,网络等等。
进程状态转换如下:

中断管理
异常又分为 故障(Fault)和陷阱(Trap),它们的共同特点是既不使用中断控制器,又不能被屏蔽(异常其实是CPU发出的中断信号)。
中断又分为外部可屏蔽中断(INTR)和外部非屏蔽中断(NMI),所有I/O设备产生的中断请求(IRQ)均引起屏蔽中断,而紧急的事件(如硬件故障)引起的故障产生非屏蔽中断。

硬件产生的中断可被称为硬中断(hardirp),执行中断指令(int)产生的中断为软中断。
Linux下硬中断是可以嵌套的,但是没有优先级的概念,也就是说任何一个新的中断都可以打断正在执行的中断,但同种中断除外。软中断不能嵌套,但相同类型的软中断可以在不同CPU上并行执行。
当中断发生的时候,硬中断处理那些短时间就可以完成的工作,而将那些处理事件比较长的工作,放到中断之后来完成,也就是软中断(softirq)来完成。
硬中断的中断号是由中断控制器提供的,软中断的中断号由指令直接指出,无需使用中断控制器。
硬中断是可屏蔽的,软中断不可屏蔽。硬中断处理程序要确保它能快速地完成任务,这样程序执行时才不会等待较长时间,称为上半部。
软中断处理硬中断未完成的工作,是一种推后执行的机制,属于下半部。
时钟管理
x86体系的Linux中,主要用到了三种时钟:实时时钟RTC、时间戳计数器TSC及可编程间隔定时器PIT。
RTC一般自带电池,系统掉电后仍可计时,所以Linux刚启动时使用RTC来获取时间。
TSC精度高,进程时间相关的变量一般采用此时钟值进行记录。
PIT虽然精度没有TSC高,但是可以周期性的产生中断
文件系统UNIX 权限模型也是围绕文件的概念来建立的,所以对设备也就可以同样处理了。

正在运行的用户态进程X切换到运行用户态进程Y的过程
在运行的用户态进程X 发生中断,硬件完成以下:
save cs:eip/esp/eflags(current) to kernel stack
load cs:eip(entry of a specific ISR) and ss:esp(point to kernel stack).
SAVE_ALL //保存现场
中断处理过程中或中断返回前调用了schedule(),其中的switch_to做了关键的进程上下文切换
标号1之后开始运行用户态进程Y(这里Y曾经通过以上步骤被切换出去过因此可以从标号1继续执行)
已经变成Y进程上下文
restore_all //恢复现场
iret - pop cs:eip/ss:esp/eflags from kernel stack
继续运行用户态进程Y
心得体会
Linux的学习曲线图是非常陡峭的,入门会相当相当相当之困难,但是一但入门,难度曲线便直线下降,趋于平坦。通过本学期的学习收获良多,对linux系统的一般执行过程在脑海里有了一个概括性的框架,对中断机制、系统调用、进程管理、IO、文件管理等等概念有了全面的认知,并了解了更多细节方面的知识,通过实验了解了具体实现原理。最后感谢两位老师的悉心教导。

浙公网安备 33010602011771号