操作系统期末复习

  • 目录
    • 一、引论
      • 1. 操作系统概念
      • 2. 操作系统的作用?
      • 3. 操作系统提供的服务?
      • 4. 操作系统的演变?
      • 5. SPOOLing假脱机技术
      • 6. 操作系统的基本概念:
      • 7. 个体重复系统发育:
      • 8. 系统调用
      • 9. 操作系统的功能
      • 10. 操作系统的特点?
      • 11. OS的发展与分类
      • 12. 中断、异常和陷入
      • 13. 操作系统的结构
        • ①单体系统
        • ②层次式系统
        • ③微内核
        • ④客户机——服务器
        • ⑤虚拟化
          • ⅠVM/370
          • Ⅱ 虚拟机的再现
          • Ⅲ Java虚拟机
        • 6.外核
    • 二、进程与线程
      • (一)进程
        • 1、创建进程的四种主要事件:
        • 2、进程的状态
        • 3、进程实现
        • 4、多道程序设计模型
        • 5、进程的特征
      • (二)线程
        • 1、线程定义:
        • 2、线程的特点:
        • 3、多线程的优点:
        • 4、构造服务器的三种方法
        • 5、POSIX线程
        • 6、两类线程的实现
        • 7、进程和线程的区别
      • (三)进程间的通信
        • 1.竞态
        • 2.临界区(Critical regions)
        • 3.其他概念解释
        • 4.4个前提avoid race condition:
        • 5.实现互斥的方案
        • 6.信号量semaphore(临界资源)
        • 7.PCP(生产者消费者)有界缓冲区
        • 8.条件变量
        • 9.管程
        • 10.三个经典IPC问题(考点读者写者写源码)
          • (1)哲学家进食
          • (2)读者——写者问题
          • (3)睡眠的理发师问题
        • 11.进程通信的概念
        • 12.共享内存通信
    • 三、死锁
    • 四、内存管理
    • 五、文件系统
    • 六、输入输出
    • 七、虚拟化和云(略)

目录

参考资料:课上内容、网络博文、王道考研。

一、引论

主要介绍操作系统的基本概念。

1. 操作系统概念

 是控制和管理计算机的硬件、软件资源,并且给上述应用程序提供公共服务的软件。

① 是一个软件(系统软件,而不是硬件)
② 作用a:管理计算机的硬件、软件资源
③ 作用b:给计算机硬、软件应用程序、用户提供公共服务

2. 操作系统的作用?

①是一个扩展的机器(如硬盘驱动)
②资源管理器:两种方式实现多路复用(时间/空间复用)
③进程管理器
④扩展的服务机器

3. 操作系统提供的服务?

a.创建程序
b.程序执行
c.访问I/O设备
d.文件控制存取
e.系统访问
f.错误检测和回应
g.系统统计

4. 操作系统的演变?

(1)最大限度利用资源
(2)硬件升级以及新型硬件的出现
(3)新服务
(4)修复
(5)用户体验

5. SPOOLing假脱机技术

(1)外部设备联机并行操作。
(2)假脱机是多道程序设计系统中处理独占 I/O 设备的一种方法。
(3)SPOOLing 系统的三大组成部分:

(磁盘中)输入井和输出井
(内存中)输入缓冲和输出缓冲输入进程和输出进程

(4)SPOOLing技术如何使一台打印机虚拟成多台打印机?

答:将一台独享打印机改造为可供多个用户共享的打印机,是应用SPOOLing技术的典型实例。具体做法是:系统对于用户的打印输出,但并不真正把打印机分配给该用户进程,而是先在输出井中申请一个空闲盘块区,并将要打印的数据送入其中;然后为用户申请并填写请求打印表,将该表挂到请求打印队列上。若打印机空闲,输出程序从请求打印队首取表,将要打印的数据从输出井传送到内存缓冲区,再进行打印,直到打印队列为空。

6. 操作系统的基本概念:

(1)进程
进程不只是程序,还需要处理器、内存等。是运行的程序
(2)地址空间
(3)文件

Unix所有程序都抽象成了文件。打印机不可读只可写,键盘是串行文件,鼠标只可读不可写。
(4)I/O
(5)保护机制
(6)命令解释器shell

用户与OS打交道的中介

#cat file1 file2 file3 | sort >/dev/lp &

显示三个文件依次到屏幕上,排序三个文件的内容
cat显示文件
|管道,把上一步结果输入给下一步命令
其中>代表重定向
dev写到另一个文件
/lp打印机
&后台运行

(7)系统调用
用户程序与OS之间的接口
用户只能请求系统调用,请求内核帮你从磁盘中读取一个文件

7. 个体重复系统发育:

操作系统的发展符合达尔文演化理论,一个个体重复着物种的演化过程。

(1)大型内存
(2)保护硬件
(3)硬盘
(4)虚拟内存

8. 系统调用

9. 操作系统的功能

a.进程管理
b.内存管理
c.设备管理
d.文件系统管理
e.用户界面管理(命令行,GUI,API)
f.作业管理

10. 操作系统的特点?

(1)并发
·同一个时间执行多个任务(并发就是时间管理大师,并行就是分身)
·并行执行(在重叠时间段内,新任务在其他任务结束前开始)
·非顺序执行
·通用处理资源(如中央处理单元CPU,主内存)
(2)共享
(并发和共享互为条件)
(3)虚拟化
(4)异步化执行

11. OS的发展与分类

12. 中断、异常和陷入

(1)中断:

是为了设备与CPU之间的通信。

异常:

异常是由当前正在执行的进程产生。

(2)中断的两种方式:外部和陷入
interrupt 即外中断,指来自处理机和内存外部的中断,包括 I/O 设备发出的 I/O中断、外部信号中断、各种定时器引起的时钟中断以及调试程序中设置的断点等引起的调试中断等。
trap 即内中断(异常),主要指在处理机和内存内部产生的中断。它包括程序运算引起的各种错误。软中断是通信进程之间用来模拟硬中断的一种信号通信方式。
(3)中断和陷阱的主要区别:

① 陷阱通常由处理机正在执行的现行指令引起,而中断则是由与现行指令无关的中断源引起的。
② 陷阱处理程序提供的服务为当前进程所用,而中断处理程序提供的服务则不是为了当前进程的。
③ CPU 在执行完一条指令之后,下一条指令开始之前响应中断,而在一条指令执行中也可以响应陷阱。
④ 在有的系统中,陷入处理程序被规定在各自的进程上下文中执行,而中断处理程序则在系统上下文中执行。

(4)用户态、内核态之间的切换是怎么实现的?
答:通过中断实现,并且中断是唯一途径。通过执行一个特权指令,将程序状态字(PSW)的标志位设为“用户态”。

13. 操作系统的结构

①单体系统

主程序:处理服务过程请求
服务过程:执行系统调用
实用过程:辅助服务过程

②层次式系统

高层→调用下层
下层不能调用高层

③微内核

为了实现高可靠性,将操作系统划分成小的、良好定义的模块,只有其中一个模块–微内核–运行在内核态上,其余的模块,由于功能相对弱些,则作为普通用户进程运行。特别地由于把每个设备驱动和文件系统分别作为普通用户,这些模块中的错误虽然会使这些模块崩溃,但是不会使得整系统死机。

④客户机——服务器

微内核的略微变体

  1. 服务器:每个服务器提供某种服务。
  2. 客户端:使用这些服务。
    通常在系统最底层是微内核,这个模式的本质是存在客户端进程和服务器进程。

⑤虚拟化

ⅠVM/370

最初命名为CP/CMS,后来改名为VM/370,它的目的是为了将多道程序和获取更方便的裸机彻底隔离。它的核心称为虚拟机监控程序,它在裸机上运行并且具备了多道程序功能。该系统向上层提供了若干个虚拟机。它不同于其他操作系统:这些虚拟机不是那种具有文件等优良特征的扩展计算机。它们仅仅是裸机硬件的精确复制品,包含了内核态/用户态、I/O功能、中断及其他真是硬件所具备的全部内容。

Ⅱ 虚拟机的再现

虚拟化的优点:

  1. 一台物理机就可以运行许多虚拟机,每个虚拟机看起来都是一台完全的机器。这样可以节省费用。
  2. 可以同时运行两个或多个操作系统。
Ⅲ Java虚拟机

它是一种体系结构。Java编译器为JVM生成代码,这些代码以后可以由一个软件JVM解释器质性。这种处理方式的优点在于,JVM代码可以通过Internet传送到任何有JVM解释器的机器上,并在该机器执行。使用JVM的优点就是如果解释器正确地完成,并不意味着结束,还要对所输入的KVM进行安全性检测,然后在一直保护环境下执行,这样,这些程序就不能偷窃数据或进行其他任何有害的操作。

6.外核

与虚拟机克隆真实机器不同,另一种策略是对机器进行分区。给每个用户整个资源的一个子集。
在底层中,一种称为外核的程序在内核态中运行。它的任务是为虚拟机分配资源,并检查试图使用这些资源的企图,以确保没有机器会使用他人资源。每个用户层的虚拟机可以运行自己的操作系统,但限制在只能使用已经申请并且获得分配的那部分资源。
外核机制的优点是减少了映像层。在其他的设计中,每个虚拟机都认为它有的磁盘,其盘块号从0到最大编号,这样虚拟机监控程序必须维护一张表格用以重映像磁盘地址,有了外核这个重映像处理就不需要了,外核只需要记录已经分配各个虚拟机的有关资源即可。这个方法还有一个优点,它将多道程序(在外核内)与用户操作系统代码(在用户控件内)加以分离,而且相应负载并不重,这是因为外核所做的一切,只是保持多个虚拟机彼此不发生冲突。

二、进程与线程

程序vs进程 就像 菜谱 vs 美食
进程:资源分配的基本单位
线程:调用的基本单位

(一)进程

1、创建进程的四种主要事件:

1)系统初始化:前台进程 后台进程(守护进程)
2)正在运行的程序执行了创建进程的系统调用
3)用户请求创建新进程
4)批处理作业初始化

2、进程的状态



阻塞状态不参与cpu调动

3、进程实现

每个进程在内核中,表现为结构体PCB(结构控制块),该表项包含了进程状态的重要信息,字段分三类:进程管理、存储管理和文件管理。进程的PID代表进程的唯一存在。
进程表:接口控制块组(操作系统维护之)
通过调用小程序scheduler来切换进程
中断进行的程序切换:

1)硬件压入堆栈程序计数器等
2)硬件从中断向量装入新的程序计数器
3)汇编语言过程保存寄存器值
4)汇编语言过程设置新的堆栈
5)C中断服务例程运行(典型的读和缓冲输入)
6)调度(scheduler)程序决定下一个将运行的进程
7)C过程返回至汇编代码
8)汇编语言过程开始运行新的当前进程

4、多道程序设计模型


CPU 利用率 = 1-p^n
p:一个进程等待 I/O 操作的时间与其停留在内存中时间的比。
n:进程的数目。
e.g. 假设一个内存 8GB 的计算机,操作系统占用 2GB,每个进程占用 2GB,且进程有 80% 的时间用于 I/O 等待,则内存空间中最多允许同时运行 3 个进程,CPU 利用率为 1-0.8^3 ≈ 49%。若增加 8GB 的内存,CPU 利用率可增加到 79%,再增加 8GB 内存可使 CPU 利用率增加到 91%。所以增加一次内存就够了。

5、进程的特征

(二)线程

1、线程定义:

在一个过程内部,不同片段并发执行
每个线程都有自己的寄存器&栈

2、线程的特点:

1)依附于进程存在
2)资源由进程分配
3)执行:多个系统并发(通过函数调用call)

3、多线程的优点:

(1)响应及时
(2)资源共享
(3)经济实惠
(4)多处理器提高利用率

4、构造服务器的三种方法

模型 特性
多进程 并行性、阻塞系统调用
单线程进程 无并行性、阻塞系统调用
有限状态机 并行性、非阻塞系统调用、中断

5、POSIX线程

6、两类线程的实现

a.用户态(用户空间,不知道线程)


b.内核态(知道线程)

c.混合实现

7、进程和线程的区别

地址空间:线程:共享本进程的地址空间,进程之间:独立的地址空间。

资源拥有:同一进程内的线程——共享本进程的资源如内存、I/O、cpu等,进程之间的资源是独立的。一个进程崩溃后,在保护模式下不会对其他进程产生影响,一个线程崩溃整个进程都死掉。所以多进程要比多线程健壮。

进程切换时,消耗的资源大,效率高。所以涉及到频繁的切换时,使用线程要好于进程。同样如果要求同时进行并且又要共享某些变量的并发操作,只能用线程不能用进程。
执行过程:每个独立的进程程有一个程序运行的入口、顺序执行序列和程序入口。但是线程不能独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。
进程是处理器调度的基本单位,但是线程不是。
两者均可并发执行。

(三)进程间的通信

1.竞态

Race condition 两个或多个进程同时读、写→共享数据

最后结果依赖于进程运行的精确时序

2.临界区(Critical regions)

临界资源——易产生竞态的资源
临界区——进程访问临界资源(共享内存)的代码

3.其他概念解释

互斥:
以某种手段确保当一个进程在使用一个共享变量或文件时,其他进程不能做同样的操作。
信号量(Semaphore):
使用一个整型变量来累计唤醒次数,取值可以为0或者正值。信号量的操作均作为一个单一的、不可分割的原子操作完成。保证一旦一个信号量操作开始,则在该操作完成或阻塞之前,其他进程均不允许访问该信号量。
原语:
由若干条指令组成的,用于完成一定功能的一个过程。具有不可分割性,即原语的执行必须是连续的,在执行过程中不允许被中断。
忙等待:连续测试一个变量直到某个值出现为止。用于忙等待的锁,称为自旋锁。
互斥量(Mutex):
如果不需要信号量的计数能力,可以使用信号量的一个简化版本。
条件变量:
允许线程由于一些未达到的条件而阻塞。绝大部分情况下与互斥量一起使用。
优先级倒置(priority inversion):
在某一时刻,Low 处于临界区中,此时 High 变到就绪态。现在 High 开始忙等待,但是由于 High 优先级高,所以 Low 不会被调度也就无法离开临界区,所以 High 将永远忙等待下去。

4.4个前提avoid race condition:

1)任何两个进程不能同时处于其临界区
2)不应对CPU的速度和数量做任何假设
3)临界区外运行的进程不得阻塞其他进程(不买票别插队)
4)不得使进程无限期等待进入临界区

Repeat
entry section //显式声明请求进入
Critical sections; //临界区
exit section //显式离开
Reminder section; //提醒
until false

5.实现互斥的方案

① 屏蔽中断Disabling Interrupts
在单处理器系统中,最简单的方法是使每个进程在刚刚进入临界区后立即屏蔽所有中断,并在就要离开之前再打开所有中断。屏蔽中断后,时钟中断也被屏蔽。而 CPU 只有发生时钟中断或其他中断时才会进行进程切换,这样,在屏蔽中断之后 CPU 将不会被切换到其他进程。于是,一旦某个进程屏蔽中断之后,它就可以检查和修改共享内存,而不必担心其他进程介入。

但是把屏蔽中断的权力交给用户进程是不明智的。但是对内核来说,当它在更新变量或列表的几条指令期间将中断屏蔽是很方便的。所以结论是:屏蔽中断对于操作系统本身而言是一项很有用的技术,但对于用户进程则不是一种合适的通用互斥机制。

② 锁变量lock variables(fake)
设想有一个共享(锁)变量,其初始值为0。当一个进程想进入其临界区时,它首先测试这把锁。如果该锁的值为0,则该进程将其设置为1并进入临界区。若这把锁的值已经为,则该进程将等待直到其值变为0。
但是,这样还是会造成竞争条件。
所有人对其同时读写、产生竞态(读lock和set不是一条指令)
假设有线程A读取并存储锁变量的值时,发现为0,正要设为1时,被另一线程B抢占,也并进去临界区。这时就出现了两个线程同时处于临界区了。

③ 严格轮换法(Strict Alternation)

(谁拿到令牌谁喝酒?)
虽然解决了问题,但是仍然有三点弊端:
(1)两个进程速度不匹配(一快一慢)
(2)违反原则三(不买票生排队)
(3)忙等待 busy waiting
连续测试一个变量知道某个值出现为止。用于忙等待的锁,成为自旋锁(spin lock)

④ Peterson解法 (Solved)(笑死了,Peterson荣誉中国国民)
如果双方都争着想进入临界区,那可以让进程尝试“孔融让梨”,主动让对方先使用临界区。

⑤ TSL指令 硬件


【小结】
A.忙等待
B.优先级反转
将优先级低的提到最高,使它获得足够的时间片,迅速执行完任务,为优先级高的腾地方。

6.信号量semaphore(临界资源)

Primitive原语:不可分割、单一的代码段。
Down():对信号量减一(资源申请)==sleep
Up():对信号量增一(资源释放)==wakeup

7.PCP(生产者消费者)有界缓冲区


产生竞态→信号量解决
mutex互斥量,取值为0或1

其中,typedef int semaphone是伪代码,信号量是内核态建立和创建使用的,并非int如此简单。
读信号量无意义,只有调用原语有意义。



如下是信号量集合的概念:

现代操作系统两大特点:共享、并发

8.条件变量

互斥量可以允许或阻塞对临界区的访问,而条件变量则允许线程由于一些未达到的条件而阻塞。

条件变量与互斥量经常一起使用。这种模式用于让一个线程锁住一个互斥量,然后当它不能获得它期待的结果时等待一个条件变量。最后另一个线程会向它发信号,使它可以继续执行。wait(condition,mutex) 原子性地调用并解锁它持有的互斥量,所以互斥量也是 wait(condition,mutex) 的参数之一。

但是条件变量不会像信号量那样存在内存中,如果将一个信号传递给一个没有线程在等待的条件变量,那么这个信号就会丢失。所以必须小心使用以防丢失信号。

9.管程




事件计数器:



一段时间只能有一段进程调用代码再出去,不会出现两个进程同时调用。

管程是一种高级同步原语。是一个由过程、变量及数据结构等组成的一个集合,它们组成一个特殊的模块或软件包。进程可在任何需要的时候调用管程中的过程,但它们不能再管程之外声明的过程中直接访问管程内的数据结构。

管程有一个很重要的特性,即任一时刻管程中只能有一个活跃进程,这一特性使管程能有效地完成互斥。而进入管程时的互斥由编译器负责,一般的解决方法是引入条件变量,wait 和 signal 操作。

Java 中可以使用 synchronized ,wait 和 notify 来实现管程,没有内嵌的条件变量,而且方法 wait 会被中断,需要显式表示异常处理。

10.三个经典IPC问题(考点读者写者写源码)

(1)哲学家进食


(2)读者——写者问题


读者优先:

写者优先:

(3)睡眠的理发师问题


11.进程通信的概念

(1)概念:进程之间的信息交换。
(2)进程的互斥和同步可归结为低级通信
(3)信号量机制作为通讯工具的不足:①效率低:生产者每次只能向缓冲区中投放一个消息 ②通信对用户不透明:程序员必须从低层来实现
(4)进程通信的类型:a共享内存 b消息传递 c管道通信

12.共享内存通信

共享内存:在相互通信的进程之间设有一个公共内存区,一组进程向该公共内存中写,另一组进程从公共内存中读,通过这种方式实现两组进程间的信息交换。

需解决的两个问题:
1怎样提供共享内存
2公共内存中的读写互斥问题

三、死锁

四、内存管理

五、文件系统

六、输入输出

七、虚拟化和云(略)

操作系统期末复习笔记相关推荐

  1. 电子科技大学操作系统期末复习笔记(二):进程与并发控制

    目录 前言 进程管理 进程基本知识 程序的顺序执行 前趋图 程序的并发执行 并发程序 进程的定义和特征 进程的特征和状态 操作系统内核 定义 功能 原语 原子操作的实现 操作系统控制结构 进程控制块P ...

  2. 用户可以使用三种方式使用计算机,计算机操作系统期末复习笔记

    学长学姐精心编纂的计算机操作系统笔记,欢迎大家学习复习~~ 第一章 1. OS作为用户与计算机硬件系统之间的接口: 含义是:OS处于用户和计算机硬件系统之间,用户通过OS来使用计算机系统. 用户可以通 ...

  3. RFID原理及应用期末复习笔记 | 1.RFID概述【完结✿✿ヽ(°▽°)ノ✿】

    系列索引:RFID原理及应用期末复习笔记 | 快速索引 RFID是博主大三下的一门专业课,因为疫情缩短学期进程提前结课,所以期末考试也来的更早,这里就简单记录一下自己复习时的一些笔记,也给后来的学弟学 ...

  4. 南邮部分期末复习笔记汇总@tou

    README 知识库链接:tou/njupt-cst-notes 这个知识库存放了部分我在 NJUPT-CST 专业就读期间的期末复习笔记,这一部分公开的语雀笔记是我众多笔记中总结的还算 OK 的,仅 ...

  5. Linux 操作系统常用以下哪种编译器,Linux 操作系统期末复习资料(Alpha版)

    Linux 操作系统期末复习资料 >>问答题 1.请列举至少4个你知道的Linux发行版? 答:RedLinux.红旗Linux.Debain.SuSE Linux等. 2.Linux支持 ...

  6. 【期末复习笔记】知识产权法——著作权、专利法、商标权

    [期末复习笔记]知识产权法 著作权 著作权法不予以保护的客体 著作权的归属 著作权的内容 著作人身权 著作财产权 著作权的取得方式:自动取得 著作权的保护期限: 邻接权 表演者权 表演者义务 表演者权 ...

  7. 【Python数据分析与可视化】期末复习笔记整理(不挂科)

    [Python数据分析与可视化]期末复习笔记 1. 数据分析与可视化概述 对比 概念 常用工具 Python常用类库 Jupyter notebook中的常用快捷方式 2. Python编程基础 co ...

  8. 奇异矩阵能lu分解条件_矩阵分析-期末复习笔记(上)

    (复习笔记,可能有点乱.夹杂着乱七八糟的英文,因为要用英文考试.) (如果有误请一定要和我说!祝我final考个好成绩-) 目录: 特征值,特征向量,相似 (Eigenvalues, eigenvec ...

  9. 数理统计期末复习笔记(一)

    数理统计期末复习笔记 主要内容: 数据压缩,点估计,假设检验,区间检验 Reference: Statistical Inference, Casella&Berger Chapter 6 D ...

最新文章

  1. [学习]GridView 学习集合 -- GridView中使用超链接的技巧
  2. echo向文件中写入
  3. 处理2D图像和纹理——显示文字
  4. 一行代码让matplotlib图表变高大上
  5. php和mysql两种不同方式的分割字符串和类型转换
  6. Java LinkedList getFirst()方法与示例
  7. c#UDP发送接收消息
  8. nodejs ffmpeg 超级工具 rtsp fmp4 rtmp
  9. STM32工作笔记0072---UCOSIII在STM32F103上的移植
  10. GBDT、随机森林、xgboost算法原理解析视频公开
  11. 人工智能资料下载地址分享
  12. 中国省市地图JSON数据下载
  13. storm 阿姆歌曲_Eminem经典歌词
  14. 五分钟带你了解《操作系统原理》
  15. 意外收获:如何将中文转成拼音
  16. Java 多线程平行计算总结
  17. 提示no php怎么绕过,PHP-Nuke绕过SQL注入保护及多个SQL注入漏洞
  18. vivo android8公测,vivo安卓9.0公测招募开启:明年年初获得推送
  19. PYTHON 获取邮件发送时间
  20. 日期转换--接收日期与数据库存储不兼容问题时间段查询

热门文章

  1. HTTP协议缓存机制
  2. 华为平板和苹果平板哪个好_誓将安卓平板进行到底!华为平板M6即将发布
  3. mysql左键关联_Windows8/8.1下,键盘按键后,鼠标左键短暂失灵问题_MySQL
  4. AI全球格局之人工智能即将变革的三大领域
  5. Web3流量聚合平台Starfish OS,诠释真正商业的“P2E”生态
  6. 中级计算机证书需要什么,招教考试需要的计算机中级证书
  7. 聪明的人脸识别1——Keras 搭建自己的Facenet人脸识别平台
  8. 超好用的laravel短信发送扩展 toplan/laravel-sms的使用
  9. 1099:第n小的质数(C C++)
  10. PyCharm下载主题以及个性化设置