王道——操作系统学习笔记

1.11 操作系统的概念与功能

操作系统(operating system,OS):①是系统资源的管理者——控制和管理计算机系统的硬件和软件资源;②向上层提供方便易用的服务——提供给用户和其他软件方便的接口和环境;3.是最接近硬件的一层软件——是计算机系统中最基本的系统软件。
在这里插入图片描述
详细解释1,2,3:
1.系统资源的管理者:提供功能:处理机管理;存储器管理;文件管理;设备管理。
目标:安全、高效
2-在硬件之上安装操作系统,操作系统对外暴露友好的交互接口——封装思想:操作系统奖丑陋的硬件功能封装成简单易用的服务,使用计算机,无需关心硬件。程序接口:可以在程序中进行系统调用来使用程序接口。其中系统调用类似于函数调用,是应用程序请求操作系统服务的唯一方式。
3-覆盖了软件的机器成为扩充机器,或称为虚拟机。引用自王道考研

1.1.2 操作系统的特征

4个特征:并发,共享(基本特征,互为存在条件),虚拟,同步
1)并发:
两个或多个事件在同一时间间隔内发生。宏观是同时发生;微观是交替发生(分时共享)。——在一天内进行两个任务,但是某一时刻最多只进行一个任务。
并行:两个或多个事件在同一时刻发生。——同一时刻进行两个任务

操作系统的并发性:计算机系统中“同时”运行着多个程序。宏观同时,微观交替。
4核CPU,只要4个以上程序同时进行,必然并发,并发性是操作系统的最基本特性。

单核CPU同一时刻只能执行一个程序,各个程序只能并发执行;
多核CPU同一时刻可以同时执行多个程序,多个程序可以并行的执行。

2)共享:
**即资源共享,指系统中的资源可供内存中的多个并发执行的进程共同使用。
两种资源共享:1)互斥共享方式:系统中某些资源,虽然可以供给多个进程使用,但是一个时间段内只允许一个进程访问该资源。——微信视频,摄像头在同一个时间段只能分配其中一个进程。2)同时共享资源:系统中某些资源,运行一个时间段内由多个进程“同时”对它们进行访问。——QQ和微信同时发送文件,两个进程都在访问硬盘资源,微观是交通访问硬盘的。
**
小结:共享和并发:两个进程正在并发执行;都需要访问硬盘资源。互为存在条件

3)虚拟:
指把一个物理上的实体变成若干个逻辑上的对应物。实体是实际存在的,对应物是用户感受到的。
一个程序需要放入内存中并给它分配CPU才能执行。
4GB的内存可运行远大于运行内存4GB的程序?单核CPU可以同时运行多个程序?
虚拟技术:空分复用技术(如虚拟存储技术)和时分复用技术(如虚拟处理器)——是在并发性的基础上实现意义

4)异步:
在多道程序环境下,运行多个程序并发进行,但由于资源有限,进程的执行不是一贯到底的,而是走走停停,以不可预知的速度向前推进,这就是进程的异步性。——失去并发,系统只能串行的执行各个程序,就会一贯到底执行。所以只有并发,才有可能导致并发
在这里插入图片描述

1.1.3 操作系统的发展与分类

在这里插入图片描述

1.1.5 中断与异常

中断作用:会使CPU由用户态变为内核态,使操作系统重新夺回对CPU的控制权
中断类型:中断类型:内中断:与当前执行的指令有关,中断信号来自CPU内部;外中断:与当前执行的指令无关,中断信号来自CPU外部
中断机制的基本原理:不同的中断信号,需要不同的中断处理程序区处理。根据中断信号,CPU在“中断向量表”中找到相应的中断处理程序在内存中的存放位置。中断信号类型→中断处理程序指针→中断处理程序(是内核程序,需要运行在内核态)。

1)中断作用:会使CPU由用户态变为内核态,使操作系统重新夺回对CPU的控制权。
背景:CPU上会运行两种程序:操作系统内核程序和应用程序。内核会让出CPU给应用程序,而“中断”是操作系统程序夺回对CPU使用权的唯一途径。
内核态→用户态:执行一条特权指令——修改PSW的标志位为“用户态”,这个动作意味着操作系统 将主动让出CPU使用权
用户态→内核态:由“中断”引发,硬件自动完成变态过程,触发中断信号意味着操作系统将强行夺 回CPU的使用权。
2)中断类型:内中断:与当前执行的指令有关,中断信号来自CPU内部;外中断:与当前执行的指令无关,中断信号来自CPU外部;
举例:内中断:在用户态下执行特权指令;执行除法发现除数为0;应用程序请求操作系统内核服务,执行一条特殊指令——陷入指令,奖CPU控制权交还操作系统,系统调用通过陷入指令完成。
外中断:时钟中断;I/O中断

在这里插入图片描述
3)中断机制的基本原理
不同的中断信号,需要不同的中断处理程序区处理。根据中断信号,CPU在“中断向量表”中找到相应的中断处理程序在内存中的存放位置。中断信号类型→中断处理程序指针→中断处理程序(是内核程序,需要运行在内核态)。
在这里插入图片描述

1.1.6 系统调用

系统调用定义:
系统调用与库函数:
系统调用是必须的:
什么功能要用系统调用实现:
系统调用过程:

1)系统调用定义,作用:是操作系统提供给应用程序(程序员)使用的接口,可以理解为可供应用程序调用的特殊函数。应用程序通过系统调用来获取操作系统内核服务。

背景:操作系统需要向上层提供一些简单易用的服务,主要包括命令接口和程序接口。其中,程序接口由一组系统调用组成。

2)系统调用与库函数的区别:应用程序可以使用库函数,也可直接进行系统的调用;有的库函数涉及系统调用(重建一个文件夹),有的不涉及(取绝对值) ;
普通应用程序 :可直接进行系统调用,也可使用库函数。 有的库函数涉及系统调用,有的不涉及 ;
编程语言 :向上提供库函数。有时会将系统调用封装 成库函数,以隐藏系统调用的一些细节, 使程序员编程更加方便。
操作系统 :向上提供系统调用,使得上层程序能请求内核的服务
裸机

3)系统调用的必须:多个用户进程需要使用共享资源,必须系统调用向内核请求,内核处理协调。
wps中的打印和word中的打印,两个进行并发进行,共享打印机资源,打印结果会混乱,这时需要操作系统内核对共享资源进行统一管理,并向上提供“系统调用”,用户进行需要使用打印机资源,必须提供系统调用向操作系统内核发出请求。内核会对各个请求进行协调处理

4)什么功能要用到系统调用:应用程序通过系统调用请求操作系统的服务。而系统中的各种共享资源都由操作系统内核统一掌管,因此凡是 与共享资源有关的操作(如存储分配、I/O操作、文件管理等),都必须通过系统调用的方式向操作系统内核提 出服务请求,由操作系统内核代为完成。这样可以保证系统的稳定性和安全性,防止用户进行非法操作。
Linux 系统调用,更为详细
系统调用过程
小结

1.1.7 操作系统体系结构

大内核/单核/宏内核:
微内核:
在这里插入图片描述
1)操作系统内核:内核是操作系统最基本,最核心的部分;实现操作系统内核功能的那些程序就是内核程序。操作系统内核需要运行在内核态;非内核功能运行在用户态。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

第二章 进程与线程

2.1.1 进程的概念,组成与特征

概念:理解进程与程序的区别:程序:是静态的,就是个存放在磁盘里的可执行文件,就是一系列的指令集合。进程(Process):是动态的,是程序的一 次执行过程

组成:哪些部分:进程由PCB(给操作系统用)、程序段和数据段(给进程自己用)组成。其中:pCB包括:进程描述信息,进程控制和管理信息、资源分配清单、处理机相关信息;程序段:程序的代码(指令序列);数据段:运行过程中产生的各种数据(如:程序中定义的变量。

特征:主要特征:1-动态性:进程是程序的一次执行过程,是动态产生,变化和消亡的——基本特性。
2-并发性:内存中有多个进程实体,各进程可以并发执行;
3-独立性:进程是能独立运行,独立获取资源,独立接受调度的基本单位;
4-异步性:各进程各自独立的,不可以预知的速度向前推进,操作系统要提供”进程同步机制“来解决异步问题——导致并发程序执行结果不确定性。
5-结构性:每个进程都会配置一个PCB,结构上看,进程由PCB,程序段和数据段组成。

1)进程与程序概念:程序:是静态的,就是个存放在磁盘里的可执行文件,就是一系列的指令集合。进程(Process):是动态的,是程序的一 次执行过程

同一个程序对此执行会对应多个进程。怎么区分进程?

2)进程的组成: 进程由PCB(给操作系统用)、程序段和数据段(给进程自己用)组成。其中:pCB包括:进程描述信息,进程控制和管理信息、资源分配清单、处理机相关信息;程序段:程序的代码(指令序列);数据段:运行过程中产生的各种数据(如:程序中定义的变量。)

进程创建时,操作系统为改进程分配一个唯一的,不重复的进程ID——PID(process ID),操作系统要记录PID、进程所属用户ID(UID)
还要记录给进程分配了哪些资源(如:分配了多少内存、正在使用哪些I/O设备、正在使用哪些文件)
还要记录进程的运行情况(如:CPU使用时间、磁盘使用情况、网络流量使用情况等) 这些信息都被保存在一个数据结构PCB (Process Control Block)中,即进程控制块 操作系统需要对各个并发运行的进程进行管理,但凡管理时所需要的信息,都会被放在PCB中。PCB是进程存在的唯 一标志,当进程被创 建时,操作系统为其 创建PCB,当进程结 束时,会回收其PCB。**
在这里插入图片描述
备注:
1)程序如何运行:
c代码——编译器——机器指令——cpu执行一条一条指令的过程=程序执行
可执行文件——运行前将程序放到内存中——创建PCB,程序段,数据段。==一个进程实体(进程映像)由PCB,程序段,数据段组成;进程时动态的;进程实体时静态的——反映进程在某一时刻的状态(x++后,x=2)
2)进程的组成:
进程时进程实体的运行过程,是系统进行资源分配和调度的一个独立单位,是进程实体的组成;
一个进程的调度是指操作系统决定这个进程上CPU运行。

3)进程的特征:
1-动态性:进程是程序的一次执行过程,是动态产生,变化和消亡的——基本特性。
2-并发性:内存中有多个进程实体,各进程可以并发执行;
3-独立性:进程是能独立运行,独立获取资源,独立接受调度的基本单位;
4-异步性:各进程各自独立的,不可以预知的速度向前推进,操作系统要提供”进程同步机制“来解决异步问题——导致并发程序执行结果不确定性。
5-结构性:每个进程都会配置一个PCB,结构上看,进程由PCB,程序段和数据段组成。

在这里插入图片描述
进程的组织——链接方式
执行指针——执行态的进程——单核CPU只有一个进程处于执行态;
就绪队列指针——就绪态的进程——优先级高的进程放在队头;
阻塞队列指针——阻塞态的进程。
进程的组织——索引方式
在这里插入图片描述

2.1.3 进程控制

1-定义:是对所有进程实施有效的管理,它具有创建新进程,撤销已有进程,实现进程状态转换等功能。(创建态,就绪态,运行态,阻塞态,终止态)
2-如何实现进程控制:原语实现——进程创建,终止,阻塞,唤醒,切换

3-原语:是一种特殊的程序,他的执行具有原子性,这段程序的运行必须一气呵成,不能中断。

2)如何实现进程控制:
1-将PCB2的state设置为1;
2-将PCB2从阻塞队列放到就绪队列。
背景:正常情况下:CPU每执行完一条指令都会例行检查是否有中断信号需要处理,有则暂停当前这段程序,转而执行相应的中断处理程序。开中断指令和关中断指令这两个特权指令实现原子性。 CPU执行关中断指令之后,就不再检查中断信号,直到执行开中断指令为止。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

2.1.4 进程通信

共享存储:1-基于数据结构的共享;2-基于存储区的共享:共享存储:两个进程对共享空间的访问必须是互斥的,而操作系统只提供共享空间和同步互斥工具(如P,V操作)。
1-基于数据结构的共享:如:共享空间中只放一个长度为10的数组。速度慢,限制多,低级通信方式;
2-基于存储区的共享:在内存中画出一个共享存储区,数据的形式、存放位置都由进程控制,而不是操作系统。速度快,高级通信方式。

消息传递:1-直接通信方式;2-间接通信方式:进程间的数据交换以格式化的消息(Message)为单位。进程通过操作系统提供的“发送消息/接收消息”两个原语进行数据交换。

管道通信:“管道”是指用于连接读写进 程的一个共享文件,又名pipe文件。其实就是在内存中开辟 一个大小固定的缓冲区

1)定义:指进程之间的信息交换。
进程是系统分配资源的单位,各进程拥有的内存地址空间是相互独立的。保证安全:一个进程不能直接访问另一个进程;同时,进程之间的信息交换是必须的。

2)共享存储:两个进程对共享空间的访问必须是互斥的,而操作系统只提供共享空间和同步互斥工具(如P,V操作)。
1-基于数据结构的共享:如:共享空间中只放一个长度为10的数组。速度慢,限制多,低级通信方式;
2-基于存储区的共享:在内存中画出一个共享存储区,数据的形式、存放位置都由进程控制,而不是操作系统。速度快,高级通信方式。

3)管道通信:“管道”是指用于连接读写进 程的一个共享文件,又名pipe文件。其实就是在内存中开辟 一个大小固定的缓冲区
管道通信

  1. 管道只能采用半双工通信,某一时间段内只能实现单向的传输。如果要实现双向同时通信,则需要设置 两个管道。
  2. 各进程要互斥地访问管道。
  3. 数据以字符流的形式写入管道,当管道写满时,写进程的write()系统调用将被阻塞,等待读进程将数据 取走。当读进程将数据全部取走后,管道变空,此时读进程的read()系统调用将被阻塞。
  4. 如果没写满,就不允许读。如果没读空,就不允许写。
  5. 数据一旦被读出,就从管道中被抛弃,这就意味着读进程最多只能有一个,否则可能会有读错数据的情况

4)消息传递:进程间的数据交换以格式化的消息(Message)为单位。进程通过操作系统提供的“发送消息/接收消息”两个原语进行数据交换。
消息头——消息头包括:发送进程ID、接 受进程ID、消息类型、消息长 度等格式化的信息(计算机网 络中发送的“报文”其实就是 一种格式化的消息)和消息体;直接通信方式——消息直接挂到接收进 程的消息缓冲队列上和间接通信方式——消息要先发送到中间实体(信箱)中,因此 也称“信箱通信方式”。Eg:计网中的电子 邮件系统
在这里插入图片描述

2.1.5 线程的概念和特点

线程定义和引入:
线程与进程相比有什么特点:

1)线程定义和引入:进程是程序的一次执行,这些需要不同的几段程序才能实现,且还需要这几段程序并发运行。
QQ视频,发消息,传文件等功能——几段不同的程序
1-进程是资源分配的基本单位;是调度的基本单位;当切换进程时,需要保存和回复进程的运行环境,还需要切换内存地址空间,开销很大;
2-**进程依然是资源分配的基本单位,**从属于同一进程的各个线程共享进程的资源;**引入线程之后,线程是CPU调度的基本单位;**同一进程内的各个 线程间并发,不需要切换进程运行环 境和内存地址空间, 省时省力
3-比较:
3-1)进程间并发,开销很大,线程间并发,开销更小 。引入线程机制后,并发带来的系统开销降低,系统 并发性提升 注意:从属于不同进程的 线程间切换,也会导致进 程的切换!开销也大!
3-2)从属同一进程的各个线程共享进程拥有的资源。 进程间通信必须请求操作系统服务(CPU要切换到核心态),开销大同进程下的线程间通信,无需操作系统干预,开销更小 注意:从属于不同进程的线 程间通信,也必须请求操作 系统服务!
3-3)**引入线程前,进程既是资源 分配的基本单位,也是调度 的基本单位。 引入线程后,进程是资源分 配的基本单位,线程是调度 的基本单位。线程也有运行 态、就绪态、阻塞态 在多CPU环境下,各个线程 也可以分派到不同的CPU上 并行地执行。**引入线程后,进程是资源分配的基本单位。而 线程几乎不拥有资源,只拥有极少量的资源 (线程控制块TCB、寄存器信息、堆栈等)
在这里插入图片描述
可以把线程理解为“轻量级进 程”。 线程是一个基本的CPU执行单元, 也是程序执行流的最小单位。 引入线程之后,**不仅是进程之间 可以并发,进程内的各线程之间 也可以并发,从而进一步提升了 系统的并发度,使得一个进程内 也可以并发处理各种任务(**如QQ
视频、文字聊天、传文件) 引入线程后,进程只作为除CPU之 外的系统资源的分配单元(如打 印机、内存地址空间等都是分配 给进程的)。 线程则作为处理机的分配单元。
在这里插入图片描述
2)线程的实现方式:
2-1)用户级线程(User-Level Thread, ULT):用户级线程由应用程序通过线程库实现。 所有的线程管理工作都由应用程序负责(包 括线程切换) 用户级线程中,线程切换可以在用户态下即 可完成,无需操作系统干预。 在用户看来,是有多个线程。但是在操作系 统内核看来,并意识不到线程的存在。(用 户级线程对用户不透明,对操作系统透明) 可以这样理解,“用户级线程”就是“从用 户视角看能看到的线程
2-2)内核级线程(Kernel-Level Thread, KLT, 又称“内核支持的线程”):内核级线程的管理工作由操作系统内核完成。 线程调度、切换等工作都由内核负责,因此 内核级线程的切换必然需要在核心态下才能 完成。 可以这样理解,“内核级线程”就是“从操 作系统内核视角看能看到的线程”
2-3)在同时支持用户级线程和内核级线程的系统中,可采用二者组合的方式:将n个用户级线程映射到m 个内核级线程上( n >= m);**重点重点重点: 操作系统只“看得见”内核级线 程,因此只有内核级线程才是处理机分配的单位。**例如:左边这个模型中,该进程 由两个内核级线程,三个用户级 线程,在用户看来,这个进程中 有三个线程。但即使该进程在一 个4核处理机的计算机上运行,也 最多只能被分配到两个核,最多 只能有两个用户线程并行执行。

3)多线程模型 :在同时支持用户级线程和内核级线程的系统中,由几个用户级线程映射到几个内核级线程的问题引 出了“多线程模型”问题。
3-1) 多对一模型:**多个用户及线程映射到一个内 核级线程。**每个用户进程只对应一个内核级 线程。 优点:用户级线程的切换在用户空间即可完 成,不需要切换到核心态,线程管理的系统 开销小,效率高 缺点:当一个用户级线程被阻塞后,整个进 程都会被阻塞,并发度不高。多个线程不可 在多核处理机上并行运行;
3-2)一对一模型:**一个用户及线程映射到一个内 核级线程。**每个用户进程有与用户级线程同 数量的内核级线程。 优点:当一个线程被阻塞后,别的线程还可 以继续执行,并发能力强。多线程可在多核 处理机上并行执行。 缺点:一个用户进程会占用多个内核级线程, 线程切换由操作系统内核完成,需要切换到 核心态,因此线程管理的成本高,开销大。
3-3)多对多模型:**n 用户及线程映射到 m 个内核 级线程(n >= m)。**每个用户进程对应 m 个 内核级线程。 克服了多对一模型并发度不高的缺点,又克 服了一对一模型中一个用户进程占用太多内 核级线程,开销太大的缺点。
在这里插入图片描述

2.2.1 处理机调度的概念、层次

处理机调度基本概念:
三个层次:高级调度(作业调度);中级调度(内存调度);低级调度(进程调度)
三层调度的联系与对比:
补充知识:进程的挂起态;7状态模型

1)处理机调度基本概念:当有一堆任务要处理,但由于资源有限,这些事情没法同时处理。这就需要确定某种规则来决定处理 这些任务的顺序,这就是“调度”研究的问题。
2)三个层次:高级调度(作业调度);中级调度(内存调度);低级调度(进程调度):
高级调度(作业调度)。按一定的原则从外存上处于后备队列的作业中挑选一个(或多个)作业, 给他们分配内存等必要资源,并建立相应的进程(建立PCB),以使它(们)获得竞争处理机的权 利。高级调度是辅存(外存)与内存之间的调度。每个作业只调入一次,调出一次。作业调入时会建 立相应的PCB,作业调出时才撤销PCB。高级调度主要是指调入的问题,因为只有调入的时机需要 操作系统来确定,但调出的时机必然是作业运行结束才调出。
中级调度(内存调度),就是要决定将哪个处于挂起状态的进程重新调入内存。 一个进程可能会被多次调出、调入内存,因此中级调度发生的频率要比高级调度更高。
引入了虚拟存储技术之后,可将暂时不能运行的进程调至外存等待。等它重新具备了运行条件且 内存又稍有空闲时,再重新调入内存。 这么做的目的是为了提高内存利用率和系统吞吐量。 暂时调到外存等待的进程状态为挂起状态。值得注意的是,PCB并不会一起调到外存,而是会常驻 内存。PCB中会记录进程数据在外存中的存放位置,进程状态等信息,操作系统通过内存中的PCB
来保持对各个进程的监控、管理。被挂起的进程PCB会被放到的挂起队列中。
低级调度(进程调度),其主要任务是按照某种方法和策略从就绪队列中选取一个进程,将处理 机分配给它。 进程调度是操作系统中最基本的一种调度,在一般的操作系统中都必须配置进程调度。 进程调度的频率很高,一般几十毫秒一次
在这里插入图片描述

3)补充知识:进程的挂起态;7状态模型:
暂时调到外存等待的进程状态为挂起状态(挂起态,suspend) 挂起态又可以进一步细分为就绪挂起、阻塞挂起两种状态 阻塞态 创建态 就绪态 运行态 终止态 五状态模型 à 七状态模型
在这里插入图片描述

注意“挂起”和“阻塞”的区别,两种 状态都是暂时不能获得CPU的服务,但 挂起态是将进程映像调到外存去了,而 阻塞态下进程映像还在内存中。 有的操作系统会把就绪挂起、阻塞挂起 分为两个挂起队列,甚至会根据阻塞原 因不同再把阻塞挂起进程进一步细分为 多个队列。
在这里插入图片描述

2.2.2 进程调度的时机切换与过程调度方式

时机:什么时候需要进程调度;什么时候不能进程调度
切换与过程:侠义的调度与切换的区别;进程切换过程中需要做什么?
方式:非剥夺调度方式;剥夺调度方式(抢占式)

  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值