首页 > 其他 > 详细

课程学习总结报告

时间:2020-07-09 16:04:28      阅读:76      评论:0      收藏:0      [点我收藏+]

课程学习总结报告

 这门课对linux做了非常详细的讲解,包括计算机系统的基本原理,进程管理,系统调用,中断和文件系统等,下面对内容做简单的总结。

一、进程管理

在Linux内核中??个数据结构struct task_struct来描述进程,我们可以通过如图所示的进程描述符的结构示意图从总体上看清structtask_struct的结构关系,?如进程的状态、进程双向链表的管理,以及控制台tty、?件系统fs的描述、进程打开?件的?件描述符fifiles、内存管理的描述mm,还有进程间通信的信号signal的描述等。
 
技术分享图片
 

其中还包括:

  • 进程的创建过程和执行(最终都调用内核函数_do_fork)
  • 我们编写的可执行程序是如何作为?个进程工作的(ELF、程序的预处理、编译、汇编、链接过程)
  • 进程的上下文切换
  • 进程的特权模式切换(系统调用)
 
关于系统调用:
系统调?的库函数就是我们使?的操作系统提供的 API(应?程序编程接?)。系统调?是通过特定的软件中断(陷阱 trap)向内核发出服务请求int$0x80和syscall指令的执?就会触发?个系统调?。C库函数内部使?了系统调?的封装例程,其主要?的是发布系统调?,使程序员在写代码时不需要?汇编指令和寄存器传递参数来触发系统调?。?般每个系统调?对应?个系统调?的封装例程,函数库再?这些封装例程定义出给程序员调?的 API,这样把系统调?最终封装成?便程序员使?的C库函数。
技术分享图片

 

 二、中断和异常

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

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

中断信号会使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的系统调用来操作不同的文件系统。

读文件大概流程如下:

  • 读文件之前要先通过open函数打开文件,open会创建一个系统打开文件表;
  • 进程调用库函数向内核发起读文件请求;
  • 内核通过检查进程的文件描述符定位到虚拟文件系统的已打开文件列表表项;
  • 调用该文件可用的系统调用函数read()。read()函数通过文件表项链接到目录项模块,根据传入的文件路径,在目录项模块中检索,找到该文件的inode;
  • 在inode中,通过文件内容偏移量计算出要读取的页;
  • 通过inode找到文件对应的address_space;
  • 在address_space中访问该文件的页缓存树,查找对应的页缓存结点:
  •          如果页缓存命中,那么直接返回文件内容;
  •          如果页缓存缺失,那么产生一个页缺失异常,创建一个页缓存页,同时通过inode找到文件该页的磁盘地址,读取相应的页填充该缓存页;重新进行第6步查找页缓存;
  • 文件内容读取成功。

四、心得体会

这门课学了很多linux底层知识体系和原理,从进程管理,切换,程序的一般执行过程到系统调用,中断,文件管理等,老师都是结合内核源码进行分析讲解,还有案例演示,讲的很细致,让人容易理解,老师也很认真负责,难理解的地方会多讲解几遍,直到同学理解。在这门课程中学到了很多,对以后的学习有很大的帮助。

 

课程学习总结报告

原文:https://www.cnblogs.com/snowyaa/p/13270051.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!