课程学习总结报告

中断和异常:

其中中断分为异步的(由硬件随机产生,在程序执行的任何时候可能出现)以及同步的(异常:在特殊的或出错的指令执行时由CPU控制单元产生,用“中断信号”来通称这两种类型的中断

linux为了提高处理中断的效率将中断分为上半部和下半部。

中断分为:可屏蔽中断(Maskable interrupt)I/O设备发出的所有中断请求(IRQ)都可以产生可屏 蔽中断。可屏蔽中断可以处于两种状态:屏蔽的(masked)和 非屏蔽的(unmasked) 非屏蔽中断(Nonmaskable interrupt) 只有几个特定的危急事件才引起非屏蔽中断。如硬件故障或是掉电

异常分为: 处理器探测异常由CPU执行指令时探测到一个反常条件时产生,如溢出、除0错等。编程异常由编程者发出的特定请求产生,通常由int类指令触发通常叫做“软中断”例如系统调用。

中断是CPU提供的一个重要的机制,它使得指令流可以被强制跳转。

狭义上的中断专指来自CPU外部的硬件中断,而来自CPU内部的特殊信号则称为异常。前者可进一步分为可屏蔽中断和非屏蔽中断;后者可以细分为终止,故障和陷阱。其中陷阱是由用户代码主动引发的中断,系统调用正是由此实现。除了上述由硬件自动保存和恢复的寄存器之外,还有很多寄存器需要手动维护(SAVE_ALL和RESTORE_ALL )。这些在栈中暂存的寄存器值一起构成了pt_regs结构。

中断处理程序依次执行以下操作:

  1. 将中断向量入栈

  2. 保存所有其他寄存器

  3. 调用do_IRQ

  4. 跳转到ret_from_intr

异常处理程序依次执行以下操作:

  1. 在内核堆栈中保存大多数寄存器的内容。

  2. 调用C语言的函数

  3. 通过ret_from_exception()从异常处理程序退出。

中断处理函数直接在被中断进程的内核栈内执行,即所谓的中断上下文。需要注意的是,Linux允许中断嵌套执行。


文件系统的组成:

 

文件系统,就是操作系统中实现文件统一管理的一组软件、被管理的文件以及为实施文件管理所需要的一些数据结构的总称。

 

 

 

第一层为文件系统接口层,如open、write、close等系统调用接口。

第二层为VFS (Virtual File System)接口层。该层有两个接口:

  (1)与用户的接口;

  (2)与特定文件系统的接口。

  VFS与用户的接口将所有对文件的操作定向到相应的特定文件系统函数上。VFS与特定文件系统的接口主要是通过vfs-operations来实现的。

第三层是具体文件系统层,提供具体文件系统的结构和实现,包括网络文件系统,如NFS (network file system)。

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

1、文件的打开步骤:

  (1)应用程序对open ( )的调用将引起内核调用服务例程sys_open ( )函数,该函数接收的参数为:要打开文件的路径名和访问模式等;

  (2)该系统调用成功后将返回一个文件描述符,也就是文件对象指针数组的一个索引;

  (3)系统调用不成功时返回-1。

2、文件关闭步骤:

  (1)用户程序通过close ( )系统调用关闭打开的文件,该函数接收的参数为要关闭文件的文件描述符。

  (2)内核服务例程为sys_close ( )函数。

3、读文件大概流程如下:

  (1)进程调用库函数向内核发起读文件请求;

  (2)内核通过检查进程的文件描述符定位到虚拟文件系统的已打开文件列表表项;

  (3)调用该文件可用的系统调用函数read()。read()函数通过文件表项链接到目录项模块,根据传入的文件路径,在目录项模块中检索,找到该文件的inode;

  (4)在inode中,通过文件内容偏移量计算出要读取的页;

  (5)通过inode找到文件对应的address_space;

  (6)在address_space中访问该文件的页缓存树,查找对应的页缓存结点:

  (7)如果页缓存命中,那么直接返回文件内容;

  (8)如果页缓存缺失,那么产生一个页缺失异常,创建一个页缓存页,同时通过inode找到文件该页的磁盘地址,读取相应的页填充该缓存页;重新进行第6步查找页缓存;

  (9)文件内容读取成功。

 进程管理

 进程的四大特点: 并发、共享、虚拟、异步。

   进程调度便是实现并发的关键一环。

   在操作系统中存在多种调度算法,其中有的调度算法适用于作业调度,有的调度算法适用于进程调度,有的调度算法两者都适用。

  1.先来先服务(FCFS)

  一种简单的调度算法,适用于作业和进程调度。先来先服务算法按照进程/作业到达先后顺序来进行调度。当作业调度采用该算法时,每次调度都会从后备队列中取出最先到达的作业,为他分配内存,创建PCB,放入就绪队列中;当进程调度采用该算法时,每次调度都会从就绪队列中取出最先进入该队列的进程,给他分配处理机(处理机=CPU+主存储器+IO设备)。

  2.短作业优先(SJF)

  作业或进程的长短是以作业或进程要求运行时间的长短来衡量的。

       3.优先级调度

  作业或进程的优先级来确定优先调度权。

  (1)静态优先级  --- 优先级在进程/作业调度前就确定并不会更改。

  (2)动态优先级 --- 优先级会随进程的执行情况而改变,更灵活,科学。

  4.时间片轮转法(RR)

  主要用于分时系统的进程调度。进程/作业放在一个队列上,CPU拿出第一个进程运行一个时间片后,将其放在队尾,轮询执行。

  进程的几种状态:

 
 

创建状态:进程在创建时需要申请一个空白PCB,向其中填写控制和管理进程的信息,完成资源分配。如果创建工作无法完成,比如资源无法满足,就无法被调度运行,把此时进程所处状态称为创建状态

就绪状态:进程已经准备好,已分配到所需资源,只要分配到CPU就能够立即运行

执行状态:进程处于就绪状态被调度后,进程进入执行状态

阻塞状态:正在执行的进程由于某些事件(I/O请求,申请缓存区失败)而暂时无法运行,进程受到阻塞。在满足请求时进入就绪状态等待系统调用

终止状态:进程结束,或出现错误,或被系统终止,进入终止状态。无法再执行


 

 

 

posted @ 2020-07-09 16:32  Atsuko  阅读(204)  评论(0)    收藏  举报