← 返回知识库计算机基础

操作系统学习笔记

33.22

第1章:计算机系统概述

33.22

原笔记图片缺失:1

1.操作系统的定义与目标

定义:操作系统是控制管理计算机系统的硬软件,分配调度资源的系统软件。

目标:方便性,有效性(提高系统资源的利用率、提高系统的吞吐量),可扩充性,开放性。‘

2.操作系统的功能:

操作系统主要提供了三大方面的功能:

  • 作为计算机系统资源的管理者
  • 作为用户与计算机硬件系统之间的接口
  • 作为对计算机资源的扩充
  • <img src="D:\桌面\学习\代码笔记\408\OS\images\2.png" alt="2" />

3.操作系统的特征(并发、共享、虚拟、异步)

最基本的特征,互为存在条件:并发,共享;

并发

并发是指两个或多个事件在同一时间间隔内发生。这些事件在宏观上是同时发生的,在微观上是交替发生的。(单核CPU)

并行是指两个或多个事件在同一时刻发生(多核CPU)

共享:

共享即资源共享,是指系统中的资源可供内存中多个并发执行的进程共同使用。

资源共享分为两类方式:互斥共享方式和同时访问方式

  • 互斥共享方式

    系统中的某些资源(如打印机等),虽然可以供给多个进程使用,但是为了使打印的结果不发生混淆,应规定一段时间内只允许一个进程访问该资源。

    因此,使用互斥共享方式的资源,在同一时间段内,只能有一个进程访问,例如,进程A想要访问某个资源,需要先提出请求,若此时资源空闲,则系统就将该资源分配给进程A,此时进程B如果也想访问资源,则进程B必须等待进程A使用完资源后释放资源。这种方式就是互斥共享。

  • 同时访问方式

    系统中的某些资源(如磁盘等),允许一段时间内多个进程“同时”访问,这里所说的“同时”是宏观上的。即这些资源允许多个进程并发性的访问。例如多个进程可以并发性的访问磁盘设备,读取某个文件。

并发和共享是操作系统两个最基本的特征,两者之间的关系是互为存在条件,若系统不允许程序并发执行,那么自然就不存在资源共享的问题;若系统不能对资源共享实施有效的管理,那么就会影响到程序的并发执行。

虚拟

虚拟是指把一个物理上的实体变为若干逻辑上的对应物。物理实体是实际存在的,逻辑上的对应物是不存在的,是用户感觉出来的事物。

在操作系统中,使用虚拟技术实现了虚拟处理器、虚拟内存以及虚拟外部设备等功能。

  • 虚拟处理器

    虚拟处理器是通过多道程序设计技术,采用让多道程序并发的执行,分时使用一个处理器。此时,虽然只有一个处理器,但是在宏观上,它可以同时为多个用户服务,使得每个终端用户都感觉有一个CPU在专门为它服务。

  • 虚拟内存

    虚拟内存是将一台计算机的实际物理内存变为虚拟内存,从逻辑上扩充内存容量,此时用户感觉到的内存容量是虚拟的。

  • 虚拟外部设备

    虚拟外部设备是通过虚拟技术,将一台物理I/O设备虚拟为多台逻辑上的I/O设备,允许每个用户占用一台逻辑上的I/O设备,使原来仅允许在一段时间内由一个用户访问的设备变为一段时间内允许多个用户同时访问的共享设备。

操作系统的虚拟技术可以总结为:时分复用技术(虚拟处理器)和空分复用技术(虚拟内存)。

操作系统的虚拟技术的前提条件是并发性,如果没有并发性,一段时间内系统中只能运行一个进程,那么虚拟性就失去了意义,即,没有并发性,就没有虚拟性。

异步

操作系统在多道程序的环境下,由于多个程序是并发执行的,因此每个进行的执行不是一贯到底的,而是走走停停的,每个进程都是以不可预知的速度向前推进,这就是进程的异步性。

由于并发运行的进程会争抢有限的系统资源,因此进程的执行不是一贯到底的,只有系统拥有并发性,才有可能导致异步性。

原笔记图片缺失:4

4.操作系统的运行机制

一个程序是如何运行的?

原笔记图片缺失:5

两种指令(特权指令与非特权指令)、两种程序(内核程序与用户程序)、两种状态(用户态与内核态)

1.内核程序与用户程序:

在操作系统中,CPU执行两种不同性质的程序,一种是操作系统内核程序,简称“内核程序”,一种是系统外层的应用程序,简称“用户程序”。

其中内核程序是用户程序的管理者,在内核程序中可以执行特权指令,在用户程序中只能执行非特权指令。

我们程序员写的程序一般就是用户程序。

2.特权指令与非特权指令

在CPU可以识别的指令中,按照权限分为两种指令,特权指令和非特权指令。

  • 特权指令

    不允许用户直接使用的指令,如I/O指令、置中断指令,存取用户内存保护的寄存器、送程序状态字到程序状态字寄存器等的指令。

  • 非特权指令

    允许用户直接使用的指令,非特权指令不能直接访问系统中的软硬件资源,仅限于访问用户的地址空间,可以防止用户程序对系统程序进行破坏。

3.用户态与内核态

CPU的运行模式分为两种模式,用户态(目态)**和**内核态(核心态、管态)。处于内核态的CPU可以执行特权指令,处于用户态的CPU不能执行特权指令。

对于用户态和内核态这方面的内容,各位读者需要弄清楚两个主要问题。

原笔记图片缺失:6

5.中断和异常

中断是操作系统内核抢夺回CPU使用权的唯一途径。

原笔记图片缺失:7

中断的基本原理:

原笔记图片缺失:8

原笔记图片缺失:10

6.系统调用

原笔记图片缺失:11

7.操作系统结构

结构名称 特性 优点 缺点
分层结构 内核分为多个层次,高层向低层单向依赖 便于调试;易于扩充与维护 各层边界难以确定;效率低,无法跨层使用
模块化 将内核划分为多个模块 易于维护;各个模块之间可以相互通信;支持动态加载新的模块 模块之间的接口定义未必合理;模块之间相互依赖,难以调试
宏内核 所有功能都放在内核中 性能高,各个模块相互直接调用 内核功能复杂,难以维护;某个功能出错可能导致整个系统崩溃
微内核 只把基本功能放在内核中,其余功能放在其他服务器中 内核功能少易于维护;可移植性强 性能较差,需要频繁在用户态和核心态切换
外核 内核负责进程调度、进程通信等功能,外核负责为用户分配未经抽象的硬件资源并保证资源使用安全 外核直接分配给用户“抽象的”硬件资源,使用户进程更加灵活地使用硬件资源 降低了系统的一致性

原笔记图片缺失:12

8.虚拟机

虚拟机是指利用虚拟化技术,通过隐藏特定计算平台的实际物理特性,为用户提供抽象的、统一的、模拟的计算环境的一种逻辑计算机。

目前虚拟机有两种虚拟化方法,我们可以分为第一类虚拟机和第二类虚拟机。

第一类虚拟机

​ 第一类虚拟机就像一个操作系统,它是计算机系统中唯一一个运行在最高特权级的程序,它在裸机上运行并具备多道程序功能。

第二类虚拟机

​ 第二类虚拟机就像一个普通进程一样,依赖于Windows、Linux等操作系统提供的资源。

例如:我们可以在Windows操作系统上安装VMware,然后再VMware上安装Linux操作系统的镜像,这样,我们就可以在Windows系统上使用Linux系统了,且可以同时在Windows系统上运行其他进程。

原笔记图片缺失:13

第2章:进程与线程

1.进程

原笔记图片缺失:14

进程的特征

15

进程的组成

16

进程的五种状态

17

进程的状态转换

18

进程控制相关内容

19

20

21

22

23

24

进程间的通信

25

2.线程

2627

线程与进程的比较

28

线程的实现方式

29

多线程模型

30

3.处理机调度:

CPU调度

31

32

​ 调度的实现

33

调度算法的评价指标

34

4.调度算法

36

37

35

5.进程同步和互斥

6.死锁

死锁、饥饿、死循环的区别:

死锁:两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。永远在互相等待的进程称为死锁进程。

条件:两个及以上的进程;资源竞争或进程顺序不当;

饥饿:由于长期得不到资源导致进程无法推进;

死循环:代码逻辑BUG。

死锁的产生:竞争资源(共享资源数量不满足各进程需求)、进程调度顺序不当,当调度顺序为A->B->C->D时会产生死锁,但改为A->D->B->C则不会产生。

死锁的四个必要条件:

  1. 互斥条件:必须互斥使用资源才会产生死锁;
  2. 请求保持条件:进程至少保持一个资源,又提出新的资源请求,新资源被占用,请求被阻塞,被阻塞的进程不释放自己保持的资源;
  3. 不可剥夺条件:进程获得的资源在未完成使用前不能被剥夺(包括OS),只能由进程自身释放;
  4. 环路等待条件:发生死锁时,必然存在进程-资源环形链,环路等待不一定造成死锁,但是死锁一定有循环等待。

死锁的处理策略:

一.预防死锁:破坏四个必要条件的中一个或多个。

  1. 破坏互斥条件:将临界资源改造成共享资源(Spooling池化技术);(可行性不高,很多时候无法破坏互斥条件)
  2. 破坏请求保持条件:系统规定进程运行之前,一次性申请所有需要的资源;(资源利用率低,可能导致别的线程饥饿)
  3. 破坏不可剥夺条件:当一个进程请求新的资源得不到满足时,必须释放占有的资源;(实现复杂,剥夺资源可能导致部分工作失效,反复申请和释放造成额外的系统开销)
  4. 破坏环路等待条件:可用资源线性排序,申请必须按照需要递增申请;(进程实际使用资源顺序和编号顺序不同,会导致资源浪费)

二.避免死锁:银行家算法

条件:最大需求,已有资源,还需资源,总资源量

​ 通过银行家算法计算出安全序列,保证进程的进行。

注意:死锁的充分条件是不安全序列,但是不安全序列不能推出死锁,即死锁一定是不安全序列,但是不安全序列不一定为死锁

三.死锁的检测和解除:死锁检测算法,资源剥夺法,撤销进程法(终止进程法),进程回退法;

第3章:内存管理

总结:

​ 内存和CPU的速度总是不匹配的,内存大于cup的运行效率,所以引入内存管理,即要使内存传入cup保持速度一致,又要保证内存的稳定。

1.程序运行过程

程序的运行过程:编辑源代码文件->编译->链接->装入

其中编译是计算机进行的,我们要考虑链接和装入的问题。

44

45

2.程序运行后的内存处理

在程序运行后,内存装入成功,如果机器内存满了,该怎么办?

​ 把程序内存覆盖或者交换或者用虚拟技术

46

47

48

49

50

3.内存的分配与回收

总结:内存分配有三种方法:单一连续,固定分配,动态分配。

在分配完内存后,会出现外部碎片和内部碎片。同时回收内存时,出现如何分配的问题

内存分配方法:

51

52

内存回收的概念:有四种情况,但是合并为主要方法

57

内存分配算法

58

1.首次适应算法

59

2.最佳适应算法

60

3.最坏(大)适应算法

61

4.临近适应算法

62

5.四种算法归纳比较

63

4.内存的非连续分配

64

自己看书

5.虚拟内存

65

67

68

69

70

71

72

页面分配算法:

75

76

77

78

第4章:文件管理

73

磁盘调度算法有哪些

1、先来先服务算法(FCFS)First Come First Service

这是一种比较简单的磁盘调度算法。它根据进程请求访问磁盘的先后次序进行调度。此算法的优 点是公平、简单,且每个进程的请求都能依次得到处理,不会出现某一进程的请求长期得不到满 足的情况。此算法由于未对寻道进行优化,在对磁盘的访问请求比较多的情况下,此算法将降低 设备服务的吞吐量,致使平均寻道时间可能较长,但各进程得到服务的响应时间的变化幅度较 小。

2、最短寻道时间优先算法(SSTF) Shortest Seek Time First

该算法选择这样的进程,其要求访问的磁道与当前磁头所在的磁道距离最近,以使每次的寻道时 间最短,该算法可以得到比较好的吞吐量,但却不能保证平均寻道时间最短。其缺点是对用户的 服务请求的响应机会不是均等的,因而导致响应时间的变化幅度很大。在服务请求很多的情况 下,对内外边缘磁道的请求将会无限期的被延迟,有些请求的响应时间将不可预期。

3、扫描算法(SCAN)电

梯调度 扫描算法不仅考虑到欲访问的磁道与当前磁道的距离,更优先考虑的是磁头的当前移动方向。例 如,当磁头正在自里向外移动时,扫描算法所选择的下一个访问对象应是其欲访问的磁道既在当 前磁道之外,又是距离最近的。这样自里向外地访问,直到再无更外的磁道需要访问才将磁臂换 向,自外向里移动。这时,同样也是每次选择这样的进程来调度,即其要访问的磁道,在当前磁 道之内,从而避免了饥饿现象的出现。由于这种算法中磁头移动的规律颇似电梯的运行,故又称 为电梯调度算法。此算法基本上克服了最短寻道时间优先算法的服务集中于中间磁道和响应时间 变化比较大的缺点,而具有最短寻道时间优先算法的优点即吞吐量较大,平均响应时间较小,但 由于是摆动式的扫描方法,两侧磁道被访问的频率仍低于中间磁道。

4、循环扫描算法(CSCAN)

循环扫描算法是对扫描算法的改进。如果对磁道的访问请求是均匀分布的,当磁头到达磁盘的一 端,并反向运动时落在磁头之后的访问请求相对较少。这是由于这些磁道刚被处理,而磁盘另一 端的请求密度相当高,且这些访问请求等待的时间较长,为了解决这种情况,循环扫描算法规定 磁头单向移动。例如,只自里向外移动,当磁头移到最外的被访问磁道时,磁头立即返回到最里 的欲访磁道,即将最小磁道号紧接着最大磁道号构成循环,进行扫描。

第5章:IO管理

79