Basement

操作系统:控制和管理计算机系统的硬件和软件资源,并合理地组织调度计算机工作和资源的分配。

 

用户态和核心态:

  用户程序和操作系统内核  

  通过中断(外中断,来自CPU执行指令意外的时间发生:外设请求,人的干预)或者异常(内中断,CPU执行指令内部的时间:非法操作码、地址越界,专门的陷入指令,从而从用户态转换为核心态

 

进程控制块(Process Control Block, PCB):描述基本情况和运行状态

  进程切换:(1)保存处理机上下文,包括程序计数器和其他寄存器(2)保存程序控制块(3)将程序的程序控制块移入到相应的队列(4)选择另一个进程,并更新其程序控制块(5)更新内存管理的数据结构(6)恢复处理机上下文

进程的状态:

  运行状态:

  就绪状态:得到了处理机之外的一切所需资源

  阻塞状态:正在等待某一事件而暂停运行。(等待某资源可用,等待输入输出完)

  创建状态:正在被创建

  结束状态:

  就绪-运行:进程被调度

  运行-就绪:时间片用完

  运行-阻塞:请求某一资源或者等待某一事件的发生

  阻塞-就绪:中断结束

进程间通信:

  共享存储:进程之间存在一块可直接访问的共享空间,通过对共享空间进行读/写操作实现线程之间的信息交换

  消息传递:进程间数据交换是以格式化的信息为单位

  管道通信:管道是一个固定大小的缓冲区,只允许一边写入,另一边读出。用于连接一个读进程和一个写进程,来实现他们之间的通信

 

作业调度:按照一定的原则,在外存上处于后备的作业中挑选一个或多个作业给它们分配内存、输入输出设备等必要的资源。
中级调度(内存调度): 为了提高内存利用率和系统吞吐量。将暂时不能运行的进程,调至外存等待。
进程调度:从就绪队列中选取一个进程,将处理机分配给它。

进程调度方式:
  非剥夺调度方式:
  剥夺调度方式

先来先服务调度算法:不可剥夺算法
短作业优先:
优先级调度算法:
高响应比优先调度算法:响应比 = (等待时间+要求服务时间)/ 要求服务时间
时间片轮转调度算法
多级反馈队列调度算法:设置多个就绪队列,每个队列有不同的优先级,优先级越高,每个进程的运行时间就越短。当一个进程进入内存后,首先将它放入第1级队列的末尾,按先来先服务的调度算法等待调度,当轮到该进程执行时,能够在时间片里完成,就从系统中撤出。如果不能在时间片里完成,就进入第2级队列中。

临界资源:一次仅允许一个进程使用的资源。
同步:直接制约关系,源于他们之间的相互合作
互斥:间接制约关系

 

死锁预防处理策略:

  预防死锁:通过设置某些条件来破坏死锁的四个必要条件中的一个或几个

  避免死锁:在动态分配资源的过程中,计算分配资源会不会导致系统不安全 (银行家算法)

  死锁的检测及解除:

    检测:资源分配图(资源,进程,进程到资源-申请,资源到进程-分配),通过资源分配图简化进行检测,如果不能完全被简化,则死锁。

    解除:资源剥夺法(挂起某些进程),撤销进程法(强制撤销),进程回退法

 

内存分配:

  连续分配:

    单一固定分配:

    固定分区分配:

    动态分区分配:在进程装入内存时,根据进程的大小来建立分区。

      首次适应:顺序查找,找到能满足要求的第一个分区

      最佳适应:空闲分区以容量递增形成分区链,找到能满足要求的第一个分区

      最坏适应:空闲分区以容量递减形成分区链,找到能满足要求的第一个分区

      临近适应:在上一次查找结束的位置开始找

  非连续分配:

    基本分页:

      地址结构(页号+页内偏移量)

      页表:每一个进程都有一个页表,记录页号在内存中对应的块号(页号 + 块号)

      地址转换:逻辑地址.页号 + 页表寄存器.页表起始位置 -> 页表.页号 ->内存中块号 + 逻辑地址.页内偏移量 ->物理地址

      快表:高速缓冲器

      两级页表

    基本分段:按照用户进程的自然段划分逻辑空间

    段页式:

 

虚拟内存

  局部性原理:时间局部性(如果程序中某条指令一旦执行,不久后该指令可能再次执行)  空间局部性(一旦程序访问了某个存储单元,在不久之后,其附近的存储单元页将被访问)

  虚拟存储器:由于系统提供了部分载入,请求调入,置换功能后,给用户的感觉是提供了比实际内存要大的多的存储器。

  实现:分页,分段,段页式

  页面置换算法:

    最佳置换:选在的淘汰页面是以后永久或最长时间不用的,但无法实现

    先进先出:

    最近最久未使用(LRU):

    时钟置换(最近未用):

 

I/O控制方式:

  程序直接控制:CPU不断测试I/O设备的状态,字是否在I/O控制器的数据寄存器中

  中断驱动:允许设备主动打断CPU的运行并请求服务。I/O控制器从CPU接收到一个读命令,然后从外围设备读取数据,一旦数据读到I/O控制器的数据寄存器中,变通过控制线给CPU发送中断信号。I/O控制器在收到CPU的取数据请求后,将数据到总线上,传到CPU的寄存器中

  DMA(直接存储器存取):在I/O设备和内存中开辟直接的数据交换通路,解放CPU。 CPU在接收到I/O设备的DMA请求时,它给I/O控制器发送命令,启动DMA。DMA直接与存储器交互,传送整个数据块。在传送完成后,DMA发送中断信号给CPU。 需要CPU来控制传输的数据块大小,传输的内存位置,通道控制方式由通道决定。

  通道控制方式:当CPU需要完成堆一组相关的读(或写)操作,只需想I/O、通道发送一条指令给出其所要执行的通道程序的首地址和要访问的I/O设备

 

分类:

  阻塞IO,非阻塞IO,多路复用IO(select、poll),信号驱动和异步IO。

阻塞IO:

  用户进程会阻塞,等待数据的准备,拷贝。

非阻塞IO:

  当数据没有准备好的时候会返回error(调用之后激励返回),用户进程需要不断地轮询内核数据是否准备好了

多路复用IO:

  当用户进程调用select和epoll的时候,用户进程会被阻塞。select和epoll会轮询所有负责的socket,当socket有数据到达之后,会通知用户进程。能够在同一时间处理多个套接字IO请求。

信号驱动IO:当数据准备好的时候,内核通过发送信号通知用户进程。信号处理函数调用IO操作

异步IO:当用户发起请求之后,立刻可以去做其它的事。并由内核告诉我们操作完成。请求之后,内核系统马上返回,并在数据准备好之后将数据复制到用户内存,发送信号通知请求已完成。

posted @ 2020-06-10 20:49  lucy_cui  阅读(321)  评论(0)    收藏  举报