课程学习总结报告

Linux模型

Linux系统一般有4个主要部分:内核、shell、文件系统和应用程序。

内核、shell和文件系统一起形成了基本的操作系统结构,它们使得用户可以运行程序、管理文件并使用系统。

而Linux内核主要完成了以下几个功能:

中断

中断是指在CPU正常运行期间,由于内外部事件或由程序预先安排的事件引起的CPU暂时停止正在运行的程序,转而为该内部或外部事件或预先安排的事件服务的程序中去,服务完毕后再返回去继续运行被暂时中断的程序。

中断类型

同步中断由CPU本身产生,又称为内部中断。这里同步是指中断请求信号与代码指令之间的同步执行,在一条指令执行完毕后,CPU才能进行中断,不能在执行期间。所以也称为异常(exception)。

异步中断是由外部硬件设备产生,又称为外部中断,与同步中断相反,异步中断可在任何时间产生,包括指令执行期间,所以也被称为中断(interrupt)。

异常又可分为可屏蔽中断(Maskable interrupt)和非屏蔽中断(Nomaskable interrupt)。而中断可分为故障(fault)、陷阱(trap)、终止(abort)三类。

从广义上讲,中断又可分为四类:中断、故障、陷阱、终止。

区分中断号与中断向量

I/O设备把中断信号发送给中断控制器与之相关联的是一个中断号,当中断控制器把中断信号发送给CPU时与之关联的是一个中断向量。换个角度分析就是中断号是从中断控制器层面划分,中断向量是从CPU层面划分,所以中断号与中断向量之间存在一对一映射关系。在Intel X86中最大支持256种中断,从0到255开始编号,这个8位的编号就是中断向量。其中将0到31保留用于异常处理和不可屏蔽中断。

进程管理

进程创建

在LINUX中,每个执行的程序(代码)都称为一个进程。每一个进程都分配一个ID号。 每一个进程,都会对应一个父进程,而这个父进程可以复制多个子进程。 每个进程都可能以两种方式存在的。前台与后台,所谓前台进程就是用户目前的屏幕上可以进行操作的。后台进程则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行。 一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中。直到关机才才结束。

进程状态

在Linux系统中,一个进程被创建之后,在系统中可以有下面5种状态。

  1. 就绪状态和运行状态
    就绪状态的状态标志state的值为TASK_RUNNING。此时,程序已被挂入运行队列,处于准备运行状态。一旦获得处理器使用权,即可进入运行状态。

  2. 可中断等待状态
    状态标志state的值为TASK_INTERRUPTIBL。此时,由于进程未获得它所申请的资源而处在等待状态。一旦资源有效或者有唤醒信号,进程会立即结束等待而进入就绪状态。

  3. 不可中断等待状态
    状态标志state的值为TASK_UNINTERRUPTIBL。此时,进程也处于等待资源状态。一旦资源有效,进程会立即进入就绪状态。

  4. 停止状态
    状态标志state的值为TASK_STOPPED。这种状态主要用于程序的调试,又被叫做“暂停状态”、“挂起状态”。

  5. 中止状态
    状态标志state的值为TASK_DEAD。进程因某种原因而中止运行,进程占有的所有资源将被回收,这种状态也叫做“僵死状态”,进程成为僵尸进程。

文件管理

VFS

Linux内核支持装载不同的文件系统类型,不同的文件系统有各自管理文件的方式。Linux中标准的文件系统为Ext文件系统族,当然,开发者不能为他们使用的每种文件系统采用不同的文件存取方式,这与操作系统作为一种抽象机制背道而驰。

为支持各种文件系统,Linux内核在用户进程(或C标准库)和具体的文件系统之间引入了一个抽象层,该抽象层称之为“虚拟文件系统(VFS)”。

文件系统

在LINUX系统中有一个重要的概念:一切都是文件。 其实这是UNIX哲学的一个体现,而Linux是重写UNIX而来,所以这个概念也就传承了下来。在UNIX系统中,把一切资源都看作是文件,包括硬件设备。UNIX系统把每个硬件都看成是一个文件,通常称为设备文件,这样用户就可以用读写文件的方式实现对硬件的访问。这样带来优势也是显而易见的:
UNIX 权限模型也是围绕文件的概念来建立的,所以对设备也就可以同样处理了。

时钟

x86体系的Linux中,主要用到了三种时钟:实时时钟RTC、时间戳计数器TSC及可编程间隔定时器PIT。

尽管与CPU指令执行没有什么直接关系,时钟对于操作系统来说还是有着很重要的意义:
1、记录系统时间。很多应用程序需要知道日期和时间、由日期和时间构成的时间戳也会被打在文件上面、等等;
2、统计功能。如top之类的用户程序可以查看一段时间内的系统负载、以及各个进程占用CPU的时间、等等;
3、定时功能。很多用户程序会使用到定时器,比如sleep一段时间后做某件事情、比如给select设置一个超时时间、等等;

课程心得

通过这门课程的学习,使得我从仅仅会用linux到理解了linux。两位老师不仅仅从原理层面带我们理解Linux操作系统,更是从从源码级别上层层剖析linux操作系统的运行过程。虽然疫情期间大家只能在网上上课,但是老师依然认真负责,遇到难点会仔细询问我们是否听懂,感谢两位老师的悉心指导。

posted @ 2020-07-09 19:42  LemonTreeKjy  阅读(173)  评论(0编辑  收藏  举报