课程学习总结报告

要求:

根据本课程所学内容总结梳理出一个精简的Linux系统概念模型,最大程度统摄整顿本课程及相关的知识信息,模型应该是逻辑上可以运转的、自洽的,并举例某一两个具体例子(比如读写文件、分配内存、使用I/O驱动某个硬件等)纳入模型中验证模型。并谈谈您对课程的心得体会,改进建议等。

前言:

这门课程主要由两部分组成,前半部分由孟宁老师讲授,主要包括基础、系统调用、进程及实验;后半部分由李春杰老师讲授,主要包括中断、内存、文件等。下面我借助这次作业机会,对通过这门课程所学习到的知识进行总结。

 

一、Linux系统结构模型

 

 

由Linux的基本模型,分为用户态和核心态:

  用户态:即上层应用程序的活动空间,应用程序的执行必须依托于内核提供的资源,包括CPU资源、存储资源、I/O资源等。在⽤户态,代码能够掌控的范围会受到限制。

  内核态:所有的指令包括特权指令都可以执⾏。

 Linux内核实现了操作系统的三⼤核⼼功能,即进程管理、内存管理和⽂件系统。是连接计算机软硬件的桥梁,起到了非常关键的承上启下作用。它提供了各式各样基础且关键的API接口,供上层库函数和程序通过系统调用来使用;同时,它可以直接对接硬件设施,实现基本功能。

  • 进程管理:保证各个进程能够合理地利用CPU资源完成自身任务。
  • 内存管理:管理内存资源,使得内存被进程安全使用。         

  • 虚拟文件系统:将硬盘、光盘等外设抽象为虚拟文件,Linux内核提供诸如open、write、read等接口函数对其统一管理。

  • 网络系统:管理涉及网络操作的资源。

  • 进程间通信:为进程间交流资源提供渠道。 

 

二、进程管理

进程:是进程实体 的运行过程,是系统进行资源分配和调度的一 个独立单位

 

 

  • 进程实体由进程控制块(PCB),程序段,相关的数据段组成,动态性,并发性,独立性,异步性
  • 进程控制块:进程控制块PCB是名字为task_struct的数据结构,它 称为任务结构体。当一个进程被创建时,系统就为该进程建立一个 task_struct任务结构体。当进程运行结束时,系统撤 消该进程的任务结构体。进程的任务结构体是进程存在的唯一标志。
  • 进程上下文:把系统提供给进程的处于动态变化的运行环境总和称为进程上下文。
  • 进程栈:linux系统为每个用户进程分配了两个栈:用户栈和内核栈。内核进程只有内核栈,没有用户栈。
  • 进程链表:为了对给定类型的进程进行有效的搜索,内核维护了几个进程链表。一般进程链表是双向链表。
  • 进程的状态:运行态、可运行态、等待态、暂停态、僵死态。

 

 

Linux进程调度策略

  • linux的进程调度是基于优先级的调度。进程的优先级是动态的,避免了进程饥饿。
  • linux进程分为普通进程和实时进程,实时进程的优先级高于普通进程。实时进程的优先级范围为1~99
  • 普通进程采用普通进程的时间片轮转算法
  • 实时进程采用实时进程的先进先出或实时进程的时间片轮转算法

 

三、中断机制

当发生了一个中断或异常,CPU会进行如下操作:

① 确定与中断或者异常关联的向量i;② 读idtr寄存器指向的IDT表中的第i项;③ 从gdtr寄存器获得GDT的基地址,并在GDT中查找, 以读取IDT表项中的段选择符所标识的段描述符;

④ 确定中断或异常是否是由授权的发生源发出的,即中断处理程序的特权不能低于引起中断的程序的特权(对应GDT表项中的DPL vs CS寄存器中的 CPL);若是编程异常,还需比较CPL与对应IDT表项中的DPL;

⑤ 检查是否发生了特权级的变化,一般指是否由用户态陷入了内核态。 如果是由用户态陷入了内核态,控制单元必须开始使用与新的特权级相关的堆栈

   a,读tr寄存器,访问运行进程的tss段

   b,用与新特权级相关的栈段和栈指针装载ss和esp寄存器。这些值可以在进程的tss段中找到

   c,在新的栈中保存ss和esp以前的值,这些值指明了与旧特权级相关的栈的逻辑地址;

 

四、文件系统

 

 课程中主要介绍了虚拟文件系统(Virtual File System, 简称 VFS):

  • 是 Linux 内核中的一个软件层,用于给用户空间的程序提供文件系统接口;
  • 同时,它也提供了内核中的一个抽象功能,允许不同的文件系统共存。
  • 系统中所有的文件系统不但依赖 VFS 共存,而且也依靠 VFS 协同工作。
  • 为了能够支持各种实际文件系统,VFS 定义了所有文件系统都支持的基本的、概念上的接口和数据 结构;
  • 同时实际文件系统也提供 VFS 所期望的抽象接口和数据结构,将自身的诸如文件、目录等概念在形式 上与VFS的定义保持一致。一个实际的文件系统想要被 Linux 支持,就必须提供一个符合VFS标准 的接口,才能与 VFS 协同工作。实际文件系统在统一的接口和数据结构下隐藏了具体的实现细节,所以在VFS 层和内核的其他部分看来,所有文件系统都是相同的。

 

五、关于课程的总结

通过这门课程我学习到了很多关于Linux系统的知识,感谢孟宁老师和李春杰老师的授课,希望这门课越办越好。

posted @ 2020-07-08 15:16  学习啊不简单  阅读(282)  评论(0)    收藏  举报