计算机操作系统-整理

时间:2024-04-12 11:43:32

1 操作系统概述

操作系统 是一个大型的系统程序,负责为应用程序分配和调度软硬件资源,并控制与协调应用程序并发活动,帮助用户存取和保护信息,以及为用户提供接口

操作系统的功能

  1. 进程管理(CPU管理)
    1. 进程控制:创建、暂停、唤醒、撤销;
    2. 进程调度:调度策略、优先级;
    3. 进程通信:进程间通信;
  2. 内存管理
    1. 内存分配
    2. 内存共享
    3. 内存保护
    4. 虚拟内存
  3. 外备管理
    1. 设备的分配和调度
    2. 实现设备的无关性
    3. 设备传输控制
    4. 设备驱动
  4. 文件管理
    1. 存储空间管理
    2. 文件的操作
    3. 目录的操作
    4. 文件和目录的存取权限管理

计算机操作系统-整理

2 进程管理

一个系统由一系列进程组成:操作系统进程执行系统代码,用户进程执行用户代码

进程控制
计算机操作系统-整理
创建状态(new)-就绪状态(ready) -行状态(running) -阻塞状态(waiting) -结束状态(terminated)

进程调度

CPU调度是操作系统的基本功能。每当CPU空闲的时候,操作系统就会从就绪队列中选择一个程序来执行。多进程的目的是让多个进程同时运行,这样可以最大化利用cpu资源
时间分享的目的是让进程轮流享用cpu,这样可以让用户交互到所有程序

进程调度算法

  1. 先来先服务(FCFS):属于不可剥夺算法。算法每次从后备作业队列中选择最先进入该队列的一个或几个作业进行处理。特点:算法简单,效率低,对长作业有利,对短作业不利。

  2. 短作业优先:时间片短的任务先处理特点:有效降低作业的平均等待时间和提高系统的吞吐量。

  3. 时间片轮转:定义了一个的时间单元,称为时间片(或时间量)。一个时间片通常在1~100 ms之间。当正在运行的进程用完了时间片。后,即使此进程还要运行,操作系统也不让它继续运行,而是从就绪队列依次选择下一个处于就绪态的进程执行,而被剥夺CPU使用的进程返回到就绪队列的末尾,等待再次被调度。

  4. 高响应比优先调度算法:(响应比)Rp=(等待时间+预计执行时间)/执行时间=响应时间/执行时间

进程间通信

一般 进程的用户空间是互相独立的,一般而言是不能互相访问的 ,但是为了让程序员能够协调不同的进程,使之能在一个操作系统里同时运行,并相互传递、交换信息。这使得一个程序能够在同一时间里处理许多用户的要求 ,系统提供了 IPC(Inter-Process Communication)进程间通信,提供了各种进程间通信的方法

(1) 匿名管道(Pipes) : 用于 父子进程间或者兄弟进程之间的通信 ,存在于内存中

(2) FIFOs(命名管道) : 先进先出 ,可以实现本机任意两个进程通信。存在于实际的磁盘介质

(3) 消息队列 :息队列是消息的链表,具有特定的格式,存放在内存中并由消息队列标识符标识,消息队列存放在内核中,消息队列可以实现消息的随机查询,消息不一定要以先进先出的次序读取,也可以按消息的类型读取

(4) 信号量 :进程对共享数据的访问,信号量的意图在于进程间同步。这种通信方式主要用于解决与同步相关的问题并避免竞争条件。

(5) 共享内存 :使得多个进程可以访问同一块内存空间。这种方式需要依靠某种同步操作,如互斥锁和信号量等。

(6) 网络 Socket : Socket 是支持 TCP/IP 的网络通信的基本操作单元 两方的一种约定,用套接字中的相关函数来完成通信过程

上下文切换

当操作系统决定要把控制权从当前进程转移到某个新进程时,就会进行上下文切换,以及系统调用时的当前进程要进行模式的切换,要从用户态切换到内核态时候也会发生上下文切换,
当上下文切换发生时,内核将旧进程的上下文保存在PCB中,它包括CPU寄存器的值和内存管理信息等。当发生上下文切换时,内核会将旧进程的关联状态保存在其PCB中,然后装入经调度要执行的新进程的已保存的关联状态。

3 内存管理

cpu只能访问内存和处理器内部的寄存器,如果某些数据不在内存中,那么,必须要移到内存后才能供cpu访问,比如某些机器指令,数据。

操作系统的内存管理主要负责内存的分配与回收(malloc 函数:申请内存,free 函数:释放内存),另外地址转换也就是将逻辑地址转换成相应的物理地址等功能也是操作系统内存管理做的事情。

  • 块式管理(连续分配) : 远古时代的计算机操系统的内存管理方式。将内存分为几个固定大小的块,每个块中只包含一个进程。如果程序运行需要内存的话,操作系统就分配给它一块,如果程序运行只需要很小的空间的话,分配的这块内存很大一部分几乎被浪费了。这些在每个块中未被利用的空间,我们称之为碎片。
  • 页式管理(非连续分配) :把主存分为大小相等且固定的一页一页的形式,页较小,相对相比于块式管理的划分力度更大,提高了内存利用率,减少了碎片。页式管理通过页表对应逻辑地址和物理地址。
  • 段式管理(非连续分配) : 页式管理虽然提高了内存利用率,但是页式管理其中的页实际并无任何实际意义。 段式管理把主存分为一段段的,每一段的空间又要比一页的空间小很多 。但是,最重要的是段是有实际意义的,每个段定义了一组逻辑信息,例如,有主程序段 MAIN、子程序段 X、数据段 D 及栈段 S 等。 段式管理通过段表对应逻辑地址和物理地址。
  • 段页式管理(非连续分配) : 把主存先分成若干段,每个段又分成若干页.

为了提高内存的性能
操作系统在 页表方案 基础之上引入了 快表 来加速虚拟地址到物理地址的转换。

为了避免把全部页表一直放在内存中占用过多空间 引入多级页表

页面置换算法

  1. 最佳置换算法(OPT)
  2. 页面置换算法
    1. FIFO(First In First Out)先进先出页面置换算法 使用先进先出,替换最先进来的页:
    2. LRU (Least Currently Used)最近最久未使用页面置换算法
    3. LFU (Least Frequently Used)最少使用页面置换算法

虚拟内存
程运行时,将一部分装入内存,当需要执行某些指令或访问数据时,再将那些装入内存

虚拟内存的实现需要建立在离散分配的内存管理方式的基础上

3 设备管理

计算机系统对除CPU和内存以外的所有输入、输出设备的管理。设备管理不但要管理实际I/O操作的设备(如磁盘机、打印机),还要管理诸如设备控制器、DMA控制器、中断控制器、I/O处理机(通道)等支持设备。如何有效而又方便地管理好种类繁多的设备是设备管理的重要任务。

设备适配器

控制一个或多个I/O设备,以实现I/O设备和计算机之间的数据交换。它是CPU与I/O设备之间的接口,它接收从CPU发来的命令,并去控制I/O设备工作,以使处理机从繁杂的设备控制事务中解脱出来。

I/O控制方式

  • 程序直接控制方式

    • 早期的计算机系统,没有中断机构,所以处理器对I/O设备直接进行控制,采用(Polling轮询)
  • 中断控制方式

    • 现代计算机系统,采用中断驱动方式,即当某进程要启动某个I/O设备时,便由CPU向相应的设备控制器发出一条I/O命令,然后立即返回继续执行原来的任务。设备控制器便按照该命令的要求去控制I/O设备,完成时,设备管理器向CPU发出一个中断信号,CPU接收到中断信号以后,转去执行设备中断处理程序。设备终中断处理程序将输入数据寄存器中的数据传送到内存的指定单元中,供要求输入的进程使用,然后再启动设备去读下一个数据。
  • DMA控制方式

    • 为了进一步减少CPU对I/O的干预,引入了直接存储器访问DMA控制方式。DMA方式是一种完全由硬件执行I/O数据交换的工作方式,它需要使用一个专门的DMA控制器(DMAC),DMAC中有控制状态寄存器、传送字节计数器、内存地址寄存器和数据缓冲寄存器。在这种方式中,DMAC采用盗窃总线控制权的方法从CPU接管对总线的控制,成批的数据交换不经过CPU而直接在内存和I/O设备之间进行
  • I/O通道控制方式

    • 由于DMA每次只能执行一条I/O指令,不能满足复杂的I/O操作要求。在大、中型计算机系统中,普遍采用由专用的I/O处理机–通道来接受CPU的委托,独立执行自己的通道程序来实现I/O设备与内存之间的信息交换,这就是通道技术。通道技术可以进一步减少 CPU的干预,即把对一个数据块为单位的读(或写)的干预,减少到对一组数据块为单位的读(或写)的有关的控制和管理的干预。这样可实现 CPU、通道和I/O设备三者之间的并行工作
      计算机操作系统-整理

缓冲技术

由于I/O传输数据的速度远远低于CPU的执行熟读,在计算机系统中引入了缓冲区

  1. 缓和CPU与I/O设备间速度不匹配的矛盾。
  2. 减少对CPU的中断操作,放宽对CPU中断响应时间的限制。
  3. 提高CPU与I/O设备间的并行性,缓冲的引入可以显著的提高CPU和I/O设备间的并行操作程度,提高系统的吞吐量和设备的利用率。

缓冲技术一般分为四种:单缓冲,双缓冲,循环缓冲,缓冲池

磁盘I/O
在现代的计算机系统中,都把磁盘作为文件存储器,存储容量大,存取速度也快
而且是可以随机存取的共享设备,是实现虚拟存储器所必需的硬件

磁盘调度算法

  • CFQ(完全公平排队I/O调度程序)
    • 算法的特点是按照IO请求的地址进行排序,而不是按照先来后到的顺序来进行响应。
  • NOOP(电梯式调度程序)
    • 实现了最最简单的FIFO队列,所有IO请求大致按照先来后到的顺序进行操作。
  • Deadline(截止时间调度程序)
    • 在CFQ的基础上,解决了IO请求饿死的极端情况。除了CFQ本身具有的IO排序队列之外,DEADLINE额外分别为读IO和写IO提供了FIFO队列
  • AS(预料I/O调度程序)
    • CFQ和DEADLINE考虑的焦点在于满足零散IO请求上。对于连续的IO请求,比如顺序读,并没有做优化。为了满足随机IO和顺序IO混合的场景。TICIPATORY的在DEADLINE的基础上,为每个读IO都设置了6ms的等待时间窗口。如果在这6ms内OS收到了相邻位置的读IO请求,就可以立即满足。

IO调度器算法的选择,既取决于硬件特征,也取决于应用场景。在传统的SAS盘上,CFQ、DEADLINE、ANTICIPATORY都是不错的选择;对于专属的数据库服务器,DEADLINE的吞吐量和响应时间都表现良好。然而在新兴的固态硬盘比如SSD、Fusion IO上,最简单的NOOP反而可能是最好的算法,因为其他三个算法的优化是基于缩短寻道时间的,而固态硬盘没有所谓的寻道时间且IO响应时间非常短。

4 文件管理

文件管理,由于系统的内存有限并且不能长期保存,故平时总是把它们以文件的形式存放在外存中,需要时再将它们调入内存。如何高效的对文件进行管理是操作系统实现的目标。
文件是对磁盘的抽象。文件是指一组带标识(标识即为文件名)的、在逻辑上有完整意义的信息项的序列。

计算机操作系统-整理
设计一个文件系统需要考虑的因素

  • 文件的描述、分类
  • 文件目录的实现
  • 存储空间的管理
  • 文件的物理地址
  • 磁盘实际运作方式(与设备管理的接口)
  • 文件系统性能

文件的分类

按性质和用途分类:系统文件、库文件、用户文件。
按操作保护分类:只读文件、可读可写文件、 可执行文件。

文件的物理结构

  • 顺序结构
    • 文件的信息存放在若干连续的物理块中
  • 链接结构
    • 在链接结构中,一个文件的信息存放在若干不连续的物理块中,各块之间通过指针连
  • 索引结构
    • 系统为每个文件建立一个专用数据结构—索引表,并将这些物理块的块号存放在该索引表中。索引表就是磁盘块地址数组,其中第i个条目指向文件的第i块

参考 :
操作系统原理