课程学习总结报告(代码片段)

chengjin96 chengjin96     2022-12-05     149

关键词:

@

Linux概念模型

在Linux系统分析这门课中,我们主要学习了中断,系统调用,程序加载执行,进程管理,文件系统,计时器方面等方面的内容。

通过这门课的学习让我初步了解到了,Linux系统的大致运行过程。

  • 时钟贯穿了整个系统,文件的创建需要带有时间信息,进程的执行也需要确定CPU的使用时间,Linux的计时器保证了整个系统的有序运行。
  • 文件管理中VFS通过构建一个通用文件模型,使得VFS使用一套统一的操作来管理不同的文件系统。另外在Linux中外设也被看成是一种文件,系统对设备文件的读写将转换成驱动程序对外设的读写操作。
  • 进程更是Linux系统中资源分配和CPU调度的基本单位,是Linux任务执行的载体。多种进程调度算法使得Linux系统可以充分利用CPU资源进行多任务并发。
    技术图片

Linux系统启动

Linux系统的启动做了些什么,我们大致可以从start_kernel这个函数里面略窥一二。

  • 文件系统的挂载
  • 时钟的初始化,开始整个系统的计时任务
  • 中断向量的初始化,为后续产生的中断程序提供入口地址
  • 0号进程的创建,以及kernel_init(所有用户进程的祖先),kthreadd(所有内核进程的祖先)的初始化及运行
  • 其他内容的初始化....

用户态和内核态

宏观上 Linux 操作系统的体系架构分为?户态和内核态。

计算机的硬件资源是有限 的,为了减少有限资源的访问和使?冲突,CPU 和操作系统必须提供?些机制对?户程序进?权限划分。

一些和底层相关的执行就需要高权限,那就是内核态。普通的执行就是用户态。有权限的执行,这样就避免了普通的程序使用高权限的指令导致系统崩溃。
技术图片

进程管理和调度

在系统运行的过程中,我们会创建新的进程去执行新的任务。为了提高CPU的利用率(有些进程等待IO资源,CPU无事可做),设计了各种进程调度算法。

为了实现进程的切换,引入中断的概念。在中断的过程中,保存下当前进程运行所需要的信息,然后将下一个进程的信息加载到当前的寄存器和内存中,开始执行新的进程。

这样就使得多任务能同时在系统内执行,而且合适的进程调度算法使得不会有进程得不到执行。

技术图片

文件管理

在Linux中,一切都是文件,通过对文件的定义和操作来控制设备的执行和数据的存储。并且使用VFS虚拟文件系统,实现对多种文件系统的兼容。

要实现操作系统对其它各种不同文件系统的支持,就要将对各种不同文件系统的操作和管理纳入到一个统一的框架中。 对用户程序隐去各种不同文件系统的实现细节,为用户程序提供一个统一的、抽象的、虚拟的文件系统界面,这就是所谓的虚拟文件系统(VFS)。

技术图片

例子讲解

例子 LED灯

在Linux中,LED灯这个外设被看成是一个设备文件。Linux系统通过打开这个文件,对它进行read() write() 操作,从而转化成设备驱动程序对设备的操作。

  1. 程序运行,尝试读取文件,触发read系统调用,中断,进入内核态
  2. 保存中断上下文,进入中断处理函数
  3. 到达VFS层次,sys_read()会根据fd在进程打开文件表中找到相应的系统打开文件表
  4. 返回文件描述符
  5. 恢复中断上下文
  6. 此后,用户通过文件描述符对设备文件进行的读写操作,会通过VFSsys_readsys_write,等函数,转化为对设备的操作

这样,Linux系统就通过对文件的简单读写,完成了对外设的操作。
技术图片

心得体会与改进建议

孟老师课程+博客的方式个人觉得很好,通过自己线下的博客编写,不仅加深了自己的理解,也有助于自己期末进行知识的复习。

李老师的授课中,源码讲解,要素过多,上课的时候不容易跟得上,建议也有一个小作业加深对上课内容的理解。




课程学习总结报告(代码片段)

课程学习总结报告Linux之进程  概述:进程是Linux进行资源分配和调度的基本单位,进程也被看做是程序的一次执行过程,当持久化在磁盘上的二进制代码被载入内存时,Linux操作系统为其分配了用户栈和内核栈,同时使用task_s... 查看详情

课程学习总结报告(代码片段)

一、基础知识1、Liunx汇编主要寄存器:EAX、EBX、ECX、EDX、EBP、ESI、EDI、EIP、ESP(其中ESP是堆栈栈顶寄存器,EBP是堆栈基址指证针,EIP寄存器不能直接使用和修改。调用call时会修改EIP指针。EBP和ESP总指向同一个堆栈,EBP指向栈底... 查看详情

《密码安全新技术》课程总结报告(代码片段)

《密码安全新技术》课程总结报告课程学习内容总结第一次课网络(Web)安全与内容安全本次讲座的学习内容主要为两方面:1.Web应用安全SQL注入HavijPangolin1.反射型XSS2.存储型XSSApache解析漏洞Nginx解析漏洞2.隐私安全用户轨迹:移动... 查看详情

课程学习总结报告(代码片段)

@目录Linux概念模型Linux系统启动用户态和内核态进程管理和调度文件管理例子讲解例子LED灯心得体会与改进建议Linux概念模型在Linux系统分析这门课中,我们主要学习了中断,系统调用,程序加载执行,进程管理,文件系统,计时... 查看详情

课程学习总结报告(代码片段)

一、Linux系统模型  其中最重要的部分是内核,向上为系统调用和应用程序提供支持,向下对硬件资源和驱动程序进行管理。 二、传统I/O操作读写流程  1.用户进程向CPU发起read系统调用读取数据,由用户态切换为内... 查看详情

课程学习总结报告(代码片段)

Linux内核主要由以下几个功能:进程管理、文件系统、IO体系结构和设备驱动程序、内存管理等。一.进程管理在Linux中,进程是系统资源分配的基本单位,也是使用CPU运行的基本调度单位。它实现了对进程的控制和调度。进程管... 查看详情

课程学习总结报告(代码片段)

目录一、linux系统概念模型1.概述2.函数调用函数调用过程概述函数调用中的硬件操作函数调用中的软件操作3.中断和异常中断和异常的区别与联系:中断上下文中断和异常的硬件级处理中断和异常的软件级处理4.系统调用5.进程管... 查看详情

课程学习总结报告(代码片段)

从存储程序计算机到冯诺依曼体系结构存储程序计算机的主要思想是将程序存放在计算机存储器中,然后按存储器中的存储程序的首地址执行程序的第一条指令,以后就按照该程序中编写好的指令执行,直至程序执行结束。冯诺... 查看详情

第九周课程总结&实验报告(代码片段)

第九周课程总结&实验报告(七)实验任务详情:要求:(1)总票数1000张;(2)10个窗口同时开始卖票;(3)卖票过程延时1秒钟;(4)不能出现一票多卖或卖出负数号票的情况。实验代码:packageproject7;classMyThreadimplementsRunna... 查看详情

第九周课程总结&实验报告(代码片段)

实验内容:源代码:主类:packageexercise;publicclassTrainStationTicketSalesimplementsRunnableprivateintticket=1000;publicvoidrun()for(inti=0;i<1000;i++)this.sale();ticket--;publicsynchronizedvoidsale()if(ticket>=0)tryThread.sleep(100);catch(InterruptedExceptione)e.printStackTrace();... 查看详情

第九周课程总结&实验报告(代码片段)

课程总结1、继承Thread类创建线程:Thread类本质上是实现了Runnable接口的一个实例,代表一个线程的实例。启动线程的唯一方法就是通过Thread类的start()实例方法。start()方法是一个native方法,它将启动一个新线程,并执行run()方法... 查看详情

第八周课程总结&实验报告(代码片段)

实验报告六编写一个类,在其main()方法中创建一个一维数组,在try字句中访问数组元素,使其产生ArrayIndexOutOfBoundsException异常。在catch子句里捕获此异常对象,并且打印“数组越界”信息,加一个finally子句,打印一条信息以证明... 查看详情

第八周课程总结&实验报告(代码片段)

第八周课程总结&实验报告(六)一、实验目的(1)理解异常的基本概念;(2)掌握异常处理方法及熟悉常见异常的捕获方法。二、实验要求(1)练习捕获异常、声明异常、抛出异常的方法、熟悉try和catch子句的使用(2)掌... 查看详情

第七周课程总结及实验报告(代码片段)

(一)设计一个类层次,定义一个抽象类--形状,其中包括有求形状的面积的抽象方法。继承该抽象类定义三角型、矩形、圆。分别创建一个三角形、矩形、圆存对象,将各类图形的面积输出。注:三角形面积s=sqrt(p(p-a)(p-b)*(p-c))其... 查看详情

第七周课程总结&实验报告(代码片段)

第七周课程总结&实验报告(五)实验四类的继承实验目的理解抽象类与接口的使用;了解包的作用,掌握包的设计方法。实验要求掌握使用抽象类的方法。掌握使用系统接口的技术和创建自定义接口的方法。了解Java系统包的... 查看详情

第八周课程总结&实验报告(代码片段)

第八周课程总结&实验报告(六)实验六 Java异常实验目的理解异常的基本概念;掌握异常处理方法及熟悉常见异常的捕获方法。实验要求练习捕获异常、声明异常、抛出异常的方法、熟悉try和catch子句的使用。掌握自定义... 查看详情

第七周课程总结&实验报告(代码片段)

第七周课程总结一、接口的实际应用接口在实际中更多的作用是用来制定标准的。抽象类和接口的的关系No.区别点抽象类接口1定义包含一个抽象方法的类抽象方法和全局常量的集合2组成构造方法、抽象方法、普通方法、常量、... 查看详情

第七周课程总结及实验报告(代码片段)

实验报告(一)抽象类的使用1.设计一个类层次,定义一个抽象类--形状,其中包括有求形状的面积的抽象方法。继承该抽象类定义三角型、矩形、圆。分别创建一个三角形、矩形、圆存对象,将各类图形的面积输出。注:三角... 查看详情