首页 > 其他 > 详细

课程学习总结报告

时间:2020-07-09 16:00:16      阅读:67      评论:0      收藏:0      [点我收藏+]

根据所学知识,可以分为系统调用、中断处理、进程管理、文件系统四部分。

系统调用

  经过学习,我认为之所以要有系统调用,是因为一些访问权限不能直接开放给用户,防止用户编写的代码造成系统崩溃的情况,只有调用系统已经提供好的接口之后,才能进入内核态进行系统调用。

  系统调?是?种特殊的中断(中断在第二节在进行另外的内容总结概述)。

  从?户态进?内核态是由中断触发的,可能是硬件中断, 在?户态进程执?时,硬件中断信号到来,进?内核态,就会执?这 个中断对应的中断服务例程。也可能是?户态程序执?过程中,调? 了?个系统调?,陷?了内核态,叫作陷阱(trap)(系统调?是特殊的中断)。

  系统提供的API和系统调用存在着关系,比如:系统调?是通过特定的软件中断(陷阱 trap)向内核发出服务请求,int $0x80 和syscall指令的执?就会触发?个系统调?。C库函数内部使?了系统调?的封装例程, 其主要?的是发布系统调?,使程序员在写代码时不需要?汇编指令和寄存器传递参数来 触发系统调?。

  Linux内核中?约定义了四五百个系统调?,这时内核如何知道?户态 进程希望调?的是哪个系统调?呢?内核通过给每个系统调??个编 号来区分,即系统调?号,将API函数xyz()和系统调?内核函数 sys_xyz()关联起来了。内核实现了很多不同的系统调?,?户态进程 必须指明需要执?哪个系统调?,这需要使?EAX寄存器传递?个名为系统调?号的参数。

 

中断

  中断在本质上都是软件或者硬件发?了某种 情形?通知处理器的?为,处理器进?停?正在运?的当前进程,对这些通知做出相应反应,即 转去执?预定义的中断处理程序(内核代码??),这就需要从进程的指令流?切换出来。

  外中断——中断:指由于外部设备事件所引起的中断,如通常的磁盘中断、打印机中断等;

  内中断——异常:指由于 CPU 内部事件所引起的中断,如程序出错(非法指令、地址越界)。内中断(trap)也被译为“捕获”或“陷入”。

  异常是由于执行了现行指令所引起的。由于系统调用引起的中断属于异常。中断则是由于系统中某事件引起的,该事件与现行指令无关。

  每个中断和异常由0~255之间的一个数 (8位)来标识,Intel称其为中断向量。 每个能够发出中断请求的硬件设备控制器都有一条称为IRQ(Interrupt ReQuest) 的输出线。所有的IRQ线都与一个中断控制器的输入 引脚相连 。中断控制器与CPU的INTR引脚相连。

  而中断发生如何监听和处理呢?

  1. 中断控制器监视IRQ线,对引发信号检查。

  2.将信号转为对应的中断向量。

  3.把这个向量存放在中断控制器的一个I/O端口,从而 允许CPU通过数据总线读这个向量

  4.把引发信号发送到处理器的INTR引脚,即产生一个中断。

  5.等待,直到CPU应答这个信号;收到应答后,清INTR引脚

  6.返回第一步,继续监听。

  当处理完中断之后,就会返回原文,相应的处理程序会执行一条iret汇编指令,这条汇编指令让CPU控制单元做如下事情:

  1.用保存在栈中的值装载cs、eip和eflags寄 存器。如果一个硬件出错码曾被压入栈中, 那么弹出这个硬件出错码 。

  2.检查处理程序的特权级是否等于cs中最低 两位的值(这意味着进程在被中断的时候是 运行在内核态还是用户态)。若是,iret终止执行;否则,转入3。

  3.从栈中装载ss和esp寄存器。这步意味着返 回到与旧特权级相关的栈。

  4.检查ds、es、fs和gs段寄存器的内容,如 果其中一个寄存器包含的选择符是一个段描 述符,并且特权级比当前特权级高,则清除 相应的寄存器。这么做是防止怀有恶意的用 户程序利用这些寄存器访问内核空间。

  

进程管理

  首先思考,什么是进程?进程在我自己的理解里相当于运行的代码块,其中被系统分配了一定的资源,而其有一个结构体即PCB描述进程的基本信息和运行状态,所谓的创建进程和撤销进程,都是指对 PCB 的操作。

  进程的三个状态:就绪,运行,阻塞。区别是运行相当于有CPU资源的就绪,阻塞相较于就绪还缺了一些除CPU以外的资源,当进程运行时,发现缺了资源后就会陷入阻塞状态。但是运行时,时间片到了,会变成就绪而不是阻塞。

  因为系统中进程太多,所以要有系统调度:

  批处理系统:

  1. 先来先服务(FCFS):非抢占式的调度算法,按照请求的顺序进行调度。有利于长作业,但不利于短作业。

  2. 短作业优先(SJF):非抢占式的调度算法,按估计运行时间最短的顺序进行调度。长作业有可能会饿死,处于一直等待短作业执行完毕的状态。

  3. 最短剩余时间优先(SRTN):最短作业优先的抢占式版本,按剩余运行时间的顺序进行调度。 当一个新的作业到达时,其整个运行时间与当前进程的剩余时间作比较。

  交互式系统:

  1. 时间片轮转:将进程按 FCFS 的原则排成一个队列,每次调度时,把 CPU 时间分配给队首进程,该进程可以执行一个时间片。时间片用完时,调度程序便停止该进程的执行,并将它送往就绪队列的末尾。

  2. 优先级调度:为每个进程分配一个优先级,按优先级进行调度。

  3. 多级反馈队列:可以将这种调度算法看成是时间片轮转调度算法和优先级调度算法的结合。

  而linux的进程调度如下所示:

  1.linux的进程调度是基于优先级的调度。进程的优先级是动态的,避免了进程饥饿。

  2.linux进程分为普通进程和实时进程,实时进程的优先级高于普通进程。实时进程的优先级范围为1~99

  3.普通进程采用普通进程的时间片轮转算法

  4.实时进程采用实时进程的先进先出或实时进程的时间片轮转算法

文件系统

先去背会英语。。

 

课程学习总结报告

原文:https://www.cnblogs.com/yeyuan1/p/13273868.html

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