LinuxLab4---课程学习总结报告

一、课程概述

本次Linux操作系统分析由孟宁老师和李春杰老师分别授课。

课程的主要内容为Linux源码阅读、编译调试和启动,可执行程序工作原理,进程的创建和切换,进程管理,中断和异常,linux驱动管理,linux文件系统,linux时钟和定时测量等。

下面分别对本次Linux课程进行一个个人总结

 

下面对各个模块分别做一些总结,其中会穿插该模块与其他模块的关系。

 

二、进程管理

进程部分的内容主要有创建、切换、进程的具体结构、调度等。涉及到Linux的时钟等。

当前Linux进程切换往往是时间片用完或者当前进程运行完毕。

时间片用完。这里的时间片由Linux时钟和定时测量部分来判断。Linux中的时钟源有tsc、pit等。注册在对应的链表上,Linux根据优先级来选取。选取后。会根据进程的优先级等分配具体的时间片大小。

每次时钟中断时都会对当前进程时间片进行减操作。直到时间片用完进行调度。(与Linux时钟关系)

进程间也存在父子关系,fork操作产生了子进程,复制了父进程的所有部分,并采用了写时复制技术。

fork产生的子进程和父进程是共享时间片的。

进程调度有FIFO、时间片、优先级调度等

 

三、Linux时钟

主要用于时间片的计时,进程运行时间。和操作系统的墙上时间,即显示的年月日具体。

Linux在启动时首先会去读RTC,RTC是存储在单独的一个结构里,有单独的供电。在系统关闭的情况下,也在进行计时。

Linux启动过程中会注册时钟源。根据优先级来选择具体的时钟源,优先级为(pit、tsc)。根据优先级选择具体的时钟源。

选择时钟源后会定期产生时钟中断(与中断的关系)。产生时钟中断的过程中会减去当前进程时间片。若当前时间片用完则会调用切换函数。

此外也会去更新墙上时间。

 

四、中断和异常

中断和异常是操作系统重要的特性。

除了时间片用完进行调度外。

中断信号会使cpu停下正在做的事情。切换到另一个活动。

 

中断控制器会监视IRQ,检测中断信号。将信号转换成具体的中断向量,传到CPU的INTR引脚。(与Linux设备关系)

CPU会在运行下一条指令之前。检查是否发生中断。

如果有中断的话CPU应答中断时会去查找对应的中断服务历程。确定其是否合法。

若合法则进行中断处理。首先在内核栈中保存以前的ss和esp值,装载新的ss和esp寄存器。

保存eflags、cs和eip的值。处理异常。

中断、异常处理完后。产生iret指令。装载cs、eip、eflags。返回到用户态。或者如果有中断嵌套的话。返回到上一个中断嵌套。

 

 

五、文件系统

vfs向上提供服务,向下可以兼容不同的具体文件系统。

进程打开文件时。会维护一个进程的文件打开表fd,fd指向一个系统的文件打开表。在系统文件打开表中,存在一个f_op,对应的是具体的文件系统操作函数(read/write)。

进程是程序的一次活动。 代码和可执行程序就存储在文件系统中。(Linux设备驱动和代码文件、可执行文件都存储在文件系统中)

 

六、设备驱动

Linux具有一切皆文件的特性,所以其实,设备驱动是依赖于Linux文件系统来注册的。

Linux使用设备号来标识设备文件。

设备会注册到IRQ中,会产生中断信号给中断控制器。(跟中断关系)

 

 

七、读写文件过程

根据Linux一切都是文件的概念,具体的不同的文件系统都会被抽象成到vfs。不同的具体文件系统被抽象成vfs的文件,对上层提供read/write等操作。在底层对应不同文件系统具体操作。

当进程要读某个文件时,进行系统调用read,产生一个中断INT80,对应第120个中断向量,找到中断处理程序,带上系统调用号。访问文件系统中的文件。

而具体文件系统具体存取的设备对应的往往是块设备。进程打开表中会使用文件打开描述符来映射系统打开文件中的具体设备。在系统打开文件表file的文件结构中中,f_op中定义了具体的设备操作函数。这些操作函数往往是设备开发厂商完成的设备驱动。

由此读取到数据。

 

八、课程感受和体会

两位老师讲的都很好,各有特色。

孟老师对于Linux的具体编译和一整个流程进行了详细的介绍,

留下的作业使我们以后在遇到未学习到的Linux知识时也可以自行看代码进行调试。

李春杰老师则是对于课程中涉及的各个运行的模块单独进行了介绍。

经过本次课程的学习,收获很大。以前对于Linux可能更多的是在操作系统的理论层次,这次亲身体验了Linux的具体实验,对操作系统如何运行有了更深的理解。

 

你可能感兴趣的:(LinuxLab4---课程学习总结报告)