课程学习总结报告
Posted yshongblog
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了课程学习总结报告相关的知识,希望对你有一定的参考价值。
一、要求
请您根据本课程所学内容总结梳理出一个精简的Linux系统概念模型,最大程度统摄整顿本课程及相关的知识信息,模型应该是逻辑上可以运转的、自洽的,并举例某一两个具体例子(比如读写文件、分配内存、使用I/O驱动某个硬件等)纳入模型中验证模型。,
谈谈您对课程的心得体会,改进建议等。
二、总结梳理出一个精简的Linux系统概念模型
梳理出的模型如下:
由该模型可以看出,linux系统主要包括系统调用、进程管理、内存管理、文件管理、设备驱动管理等。
对于系统调用,可以看下面这张图来加以理解。
简单分为4步:
(1)应用程序代码调用系统调用( xyz ),该函数是一个包装系统调用的库函数 ;
(2)库函数 ( xyz )负责准备向内核传递的参数,并触发软中断以切换到内核;
(3)CPU被软中断打断后,执行中断处理函数 ,即 系统调用处理函数 ( system_call);
(4)系统调用处理函数 调用 系统调用服务例程 ( sys_xyz ),真正开始处理该系统调用。
对于进程管理,进程有很多状态,他们之间的转换关系如下:
当一个进程执行完了进入僵死状态,CPU就会重新从就绪队列里取出一个进程让其进入运行状态,又或者一个进程缺少资源进入睡眠状态,需要等待它需要的资源到来等等
进程切换本质上是两步:
1.切换页全局目录以安装一个新的地址空间。
2.切换内核态堆栈和硬件上下文。
对于内存管理,包括内存管理和虚拟内存管理
内存管理包括程序装入等概念、交换技术、连续分配管理方式和非连续分配管理方式(分页、分段、段页式)。
虚拟内存管理包括虚拟内存概念、请求分页管理方式、页面置换算法、页面分配策略、工作集和抖动。
对于文件管理,主要有以下三层
第一层为文件系统接口层,如open、write、close等系统调用接口。
第二层为VFS (Virtual File System)接口层。该层有两个接口:一个是与用户的接口;一个是与特定文件系统的接口。VFS与用户的接口将所有对文件的操作定向到相应的特定文件系统函数上。VFS与特定文件系统的接口主要是通过vfs-operations来实现的。
第三层是具体文件系统层,提供具体文件系统的结构和实现,包括网络文件系统,如NFS (network file system)。
对于设备驱动管理
设备驱动程序是操作系统最基本的组成部分,是linux内核的一部分,一般情况下可以将驱动 程序设计为一个模块,在需要时动态加载到内核中。 Linux将硬件设备看作一个特殊的文件来操作,该文件被称为设备文件;系统通过对设备文件的读写等操作,实现对外设的读写等操作驱动是应用软件和硬件的桥梁,它使得应用软件只需要调用系统软件的应用 编程接口(API)就可让硬件去完成要求的工作。
三、举例验证模型
例如读写文件,在读写文件之前,必须使用oepn打开一个文件,打开文件首先open会执行到C库,C库里有INT $0x80指令,然后在中断向量表中找到128项,中断向量表里有中断描述符,可以找到中断处理程序入口,128项是系统调用处理函数,进入系统调用处理函数,保存现场,系统调用号存储eax中,根据系统调用号执行系统调用表中对应那一项的函数。系统调用表是相应的函数指针,这里会执行sys_open。sys_open进行命令查找,找到文件控制块,根据不同文件类型,调用文件打开函数,文件打开函数会创建一个系统文件打开表file,file的很多内容来自文件控制块,填完之后,进程也有一个进程文件打开表,这个结构里面有fd数组,fd数组是指针,找个空闲的,把它指向之前已经创建的file结构,最后返回那一项的索引号,即fd。
当进程使用read系统调用读这个文件,就会根据fd数组的下标 找到fd数组的对应项,然后找到指向之前创建的file结构的指针,再找到这个file结构,最后找到file结构里的file_operations里的具体的read函数来读取文件。
当进程使用write系统调用写数据到这个文件时也会根据fd数组的下标 找到fd数组的对应项,然后找到之前创建的file结构的指针,再找到这个file结构,进而找到file结构里的file_operations里的具体的write函数来写文件。
四、心得体会和改进建议
心得体会:由于疫情,这学期是通过线上学习了这门课程,单纯从上课听讲而言,我认为效果要比线下好的多,因为可以清楚的看清PPT,没听懂的也可以回放,但是与老师的交流变得少了,在做课程实验的时候遇到了很多坑,只通过网络聊天的方式无法快速定位和解决问题,也因此浪费了很多时间。总的来说通过学习Linux操作系统分析这门课程,我还是学习到了很多知识,比如常用的Linux命令、汇编语言基础、用gdb去跟踪调试Linux内核启动过程和系统调用的内核处理过程、Linux系统一般的执行过程、进程管理、文件管理。驱动程序基础等等。
改进建议:我觉得课程各方面都还是挺好的,理论与实践相结合,就是最后的课程上的有些急促,可以多安排一些课时或者减少一些课程量。最后希望这门课越办越好!谢谢!
以上是关于课程学习总结报告的主要内容,如果未能解决你的问题,请参考以下文章