这门课对linux做了非常详细的讲解,包括计算机系统的基本原理,进程管理,系统调用,中断和文件系统等,下面对内容做简单的总结。
其中还包括:
中断和异常是操作系统重要的特性。
除了时间片用完进行调度外。
中断信号会使cpu停下正在做的事情。切换到另一个活动。
中断控制器会监视IRQ,检测中断信号。将信号转换成具体的中断向量,传到CPU的INTR引脚。(与Linux设备关系)
CPU会在运行下一条指令之前。检查是否发生中断。
如果有中断的话CPU应答中断时会去查找对应的中断服务历程。确定其是否合法。
若合法则进行中断处理。首先在内核栈中保存以前的ss和esp值,装载新的ss和esp寄存器。
保存eflags、cs和eip的值。处理异常。
中断、异常处理完后。产生iret指令。装载cs、eip、eflags。返回到用户态。或者如果有中断嵌套的话。返回到上一个中断嵌套。
在LINUX系统中有一个重要的概念:一切都是文件。把一切资源都看作是文件,包括硬件设备。把每个硬件都看成是一个文件,通常称为设备文件,这样用户就可以用读写文件的方式实现对硬件的访问。VFS层有两个接口:一个是与用户的接口;一个是与特定文件系统的接口。VFS与用户的接口将所有对文件的操作定向到相应的特定文件系统函数上。VFS与特定文件系统的接口主要是通过vfs-operations来实现的。
虚拟文件系统(Virtual File System)这一层,正是用来解决上面提出的第二个问题,试想,当我们通过mkfs.xxx系列命令创建了很多不同的文件系统,但这些文件系统都有各自的API接口,而用户想要的是,不管你是什么API,他们只关心mount/umount
,或open/close
等操作。所以,VFS就把这些不同的文件系统做一个抽象,提供统一的API访问接口,这样,用户空间就不用关心不同文件系统中不一样的API了。VFS所提供的这些统一的API,再经过System Call包装一下,用户空间就可以经过SCI的系统调用来操作不同的文件系统。
读文件大概流程如下:
这门课学了很多linux底层知识体系和原理,从进程管理,切换,程序的一般执行过程到系统调用,中断,文件管理等,老师都是结合内核源码进行分析讲解,还有案例演示,讲的很细致,让人容易理解,老师也很认真负责,难理解的地方会多讲解几遍,直到同学理解。在这门课程中学到了很多,对以后的学习有很大的帮助。
原文:https://www.cnblogs.com/snowyaa/p/13270051.html