首页 > 其他 > 详细

课程学习总结报告

时间:2020-07-09 18:56:22      阅读:88      评论:0      收藏:0      [点我收藏+]

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

一、精简的Linux系统概念模型

  在Linux操作系统分析这门课程中,我们主要学习了Linux体系架构、系统调用、进程管理、中断、上下文切换等内容。

1.Linux内核

  内核是一个操作系统的内部核心程序,它向外提供了对计算机设备的核心管理调用。

  Linux内核实现了操作系统的三大核心功能:进程管理、内存管理和文件系统,这三个功能又分别对应了三个概念,进程、虚拟地址和文件。当内核从start_kernel()开始启动之后,系统实现进程的创建和初始化,我们首先讨论的便是进程管理问题。

2.进程管理

  进程管理中的要点主要有:进程描述符task_srtuct、进程的进程的创建和初始化、进程的状态、进程的调度和上下文的切换。

  我们通过系统调用fork来完成进程的创建,内核中使用task_srtuct描述进程,如下图所示。

技术分享图片

  当使?fork()系统调?来创建?个新进程时,新进程的状态是TASK_RUNNING(就绪),运行时就切换到运行态,基于CPU和资源的情况进行进程状态的转换,如图所示。
 
技术分享图片
  进程的运行过程中会涉及到上下文的切换,此时我们引入了一个函数框架的概念,来说明执行过程中是如何保存和恢复现场的。
  当处于用户态的进程需要与硬件设备进行系统交互的时候,我们就不得不提到一个概念——系统调用
  技术分享图片
  linux的系统架构分为两部分,用户态内核态,系统调用就是通过特定的软件中断,陷阱,从用户态进入到内核态的。前文中所提到的进程的创建,以及系统中可执行程序装载到内核的过程,都可以理解为执行了一次系统调用。
  中断信号提供了一种特殊的方式,使得CPU转去运行正常程序之外的代码。中断由CPU实现,终端在进行用户态和内核态的转换时,会进行中断上下文的切换,它是一个内核控制路径,系统保存当前的状态,中断服务程序或是一场处理程序执行完成后返回。
 
3.内存管理
  这里我们主要描述的是一个地址空间的概念。
  Linux操作系统采用虚拟内存管理技术,使得每个进程都有各自互不干涉的进程地址空间。该空间是块大小为4G的线性虚拟空间,用户所看到和接触到的都是该虚拟地址,无法看到实际的物理内存地址。利用这种虚拟地址可以起到保护操作系统的效果(用户不能直接访问物理内存),虚拟地址可以通过分段映射和分页映射转换为物理地址。为了方便管理,虚拟空间被划分为许多大小可变的(但必须是4096的倍数)内存区域,按照一定规律存放在一起。
  当我们在执行程序时,如果程序使用了动态库,所以除了程序本身使用的的内存区域外,还会包含那些动态库使用的内存区域(代码段、数据段等)
  进程的地址空间对应的描述结构是“内存描述符结构”,它表示进程的全部地址空间,——包含了和进程地址空间有关的全部信息,其中当然包含进程的内存区域。
 
4.文件管理
  文件系统是计算机组织、存取和保存信息的重要手段。要实现操作系统对其它各种不同文件系统的支持,就要将对各种不同文件系统的操作和管理纳入到一个统一的框架中。对用户程序隐去各种不同文件系统的实现细节,为用户程序提供一个统一的、抽象的、虚拟的文件系统界面,这就是所谓的虚拟文件系统(VFS)。
  Linux采用VFS来达到支持多种文件系统格式的目标,为各类文件系统提供一个统一的操作界面和编程接口,包括与用户的接口和与特定文件系统的接口,如下图所示。
技术分享图片
  
 文件系统的结构包括在磁盘上的结构和在内存中的结构。盘上的结构包括引导控制块、盘控制块、目录结构和FCB,内存中包括系统打开文件表和进程打开文件表。
技术分享图片
 
二、举例说明
  以读文件为例进行说明。
  进程调用库函数read向内核发起读文件请求,触发软中断指令,CPU陷入到内核态。
  触发系统调用sys_read(),获得当前进程的控制块。在这一过程中,系统保存上下文,通过中断向量找到对应中断程序入口地址。read的调用也会触发相应的VFS的read()函数。
  到达VFS层次后,read会找到file结构和fd数组,根据fd在进程打开文件表中找到相应的系统打开文件表,然后执行系统打开文件表中的file operations中read的具体操作。
  文件打开后,恢复现场,进程回到用户态,继续向下执行。
  
三、心得体会
  由于个人之前没有学过408中的操作系统课程,加上疫情的特殊原因,一直担心自己能否独自消化这门课的学习过程。所辛孟老师和李老师的教学过程都非常细致,对于重要概念都会进行反复的讲解,让我收获颇多,虽然个人仍然有需要查缺补漏的地方,不过对整个linux的系统运行机制和系统底层有了一个大致的了解,也在实验中加深了印象。个人建议老师在讲课总结的部分,可以串起之前学过的知识,有助于形成一个完整的知识链。最后非常感谢二位老师的悉心教导。

课程学习总结报告

原文:https://www.cnblogs.com/su-perqaq/p/13275054.html

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