【北航软院+保研复习】操作系统复习笔记

本文详细介绍了操作系统的概念、功能和类型,强调了并发、共享、虚拟和异步四大特征。接着深入探讨了进程管理,包括进程状态、控制、同步和通信,并详细分析了内存管理,如连续分配、非连续分配、虚拟内存和页面置换算法。此外,文件系统的基础知识和实现也被提及,包括文件的逻辑结构、目录结构和存储空间管理。最后,I/O管理的几种控制方式和层次结构被阐述。

基于王道OS
1.0版本是 北航软院OS课程笔记
2.0版本是 保研复习笔记

文章目录

第一章 计算机系统概述

1.1 操作系统概念

计算机系统:硬件、操作系统、应用程序、用户

操作系统是指控制管理整个计算机系统的硬件和软件资源,合理地组织、调度计算机的工作与资源分配,进而为用户和其他软件提供方便的接口与环境程序集合。操作系统是计算机系统中最基本的系统软件

特征

① 并发

并发是指两个或多个事件在同一时间间隔内发生。操作系统的并发性是指计算机系统中同时存在多个运行的程序。

操作系统中引入进程的目的就是为了实现并发。

宏观上,多个程序是同时执行的。微观上,每个时刻只有一个程序执行。即操作系统的并发性是通过分时实现的。

并发和并行的区别

② 共享

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

互斥共享方式:虽然可供多个进程使用,但规定一段时间内只允许一个进程访问该资源。

同时访问方式:允许一段时间内同时由多个进程访问。(指宏观意义上的同时)

并发与共享互为条件

③ 虚拟

物理实体抽象为逻辑对应。即将物理上的硬件变为逻辑上用户感觉到的事物。

例子:

虚拟处理器技术,是将一个物理上的CPU虚拟为多个逻辑上的CPU,使其能同时为多个用户服务;

虚拟内存,将一台机器上的物理存储器变为虚拟存储器,从而从逻辑上扩充存储器容量;

虚拟外设,将一台物理I/O设备虚拟为多台逻辑I/O设备,使每个用户能够占用一台。

操作系统的虚拟技术可以分为时分复用技术(虚拟处理器)、空分复用技术(虚拟存储器)。

④ 异步

多个程序并发执行时,由于资源有限,他们并不是一贯到底的,而是走走停停的,它以不可预知的速度向前推进,这就是操作系统的异步性。

操作系统的目标和功能

① 管理系统资源

处理机管理:即对进程的管理,进程控制、进程同步、进程通信、死锁处理、处理机调度

存储器管理:内存分配与回收、地址映射、内存保护与共享、内存扩充等

文件管理:即对文件系统的管理,包括文件存储空间的管理、目录管理、文件读写管理和保护等

设备管理:完成用户I/O请求,方便用户使用各种设备,并提高设备利用率;包括缓冲管理、设备分配、设备处理和虚拟设备等

② 作为用户和计算机之间的接口

命令接口(用户通过这些命令来组织和控制作业执行)

​ 联机命令接口(用户和操作系统之间的交互性)、脱机命令接口(用户提供Mission List,系统依次完成)

程序接口(即系统调用)

图形接口(即GUI,图形用户界面)

③ 用于扩充机器

将裸机改造成功能更强、更方便使用的机器。

1.2 操作系统的发展和分类

手工操作阶段

批处理阶段(用户只能事先编写作业控制说明书,作业执行时用户无法干预;单道批处理、多道批处理)

分时操作系统(按时间片划分CPU资源分给各作业使用,并进行时间片轮转,如果一个作业在这一个时间片内没有执行完,它需要让出CPU资源等待下一次调度。由于计算机速度很快,作业运行轮转得也快,因此给每个用户的感觉就像是自己独占一台计算机)

实时操作系统(紧急任务不需排队。及时性,可靠性)

网络操作系统(把网络中各台计算机连接起来,共享资源,数据传送)

分布式计算机系统(各台计算机地位平等)

个人计算机操作系统(Windows、Linux)

嵌入式操作系统、服务器操作系统、智能手机操作系统

1.3 操作系统的运行环境

1.3.1 操作系统的运行机制

CPU执行的程序有两种:内核程序和用户程序。内核程序可以执行一些特权指令,如I/O指令、置中断指令等,而出于安全考虑,用户程序不能。

具体实现方式是将CPU划分为用户态和内核态两个状态。当CPU处于内核态时才能执行内核程序的特权指令,否则不能。

层次式结构的操作系统:最底层是与硬件关联紧密的模块,如时钟管理、中断处理、设备驱动等;其次是运行频率较高的程序,如进程管理、存储器管理和设备管理。这两部分内容构成了操作系统的内核。

操作系统内核大致包含以下四部分内容:

① 时钟管理
② 中断机制
③ 原语

按照层级结构设计的操作系统,其底层必然是一些可被调用的公用小程序,它们各自完成一个操作。

  1. 它们处于操作系统的最底层,是最接近硬件的部分
  2. 这些程序都具有原子性
  3. 这些程序运行时间较短,调用频繁。

相当于有特定功能的原子性的小工具函数。将这些函数称为原语。

定义原语的方法:关闭中断,让其所有动作不可分割地完成之后再打开中断。

④ 系统控制的数据结构及处理

进程管理

存储器管理

设备管理

1.3.2 中断和异常的概念

CPU从用户态进入内核态的唯一方式是通过中断或异常。

中断(外中断)

指来自CPU执行指令以外的事件发生,如设备发出的I/O结束中断,表示设备输入/输出已完成;时钟中断,表示一个固定时间已到,让处理机处理计时、启动定时运行的任务等。外中断是强迫中断。

异常(内中断)

指源自CPU执行指令内部的事件,如程序的非法操作码、地址越界、算术溢出、缺页中断(强迫中断)及专门的陷入指令(自愿中断)等引起的事件。

有些异常,如非法指令、除数为零等异常,无法通过异常处理程序恢复故障,因此不能回到原断点执行,必须终止进程。

中断处理流程
  1. 关中断。CPU开始处理一个中断后,要保护现场,此时不能再被其他高级中断源的中断请求打断,因此要关闭中断
  2. 保存断点(即程序计数器PC)
  3. 中断处理程序寻址(本质是取出中断处理程序的入口地址送入程序计数器PC)
  4. 保存现场和屏蔽字(保存程序状态字寄存器PSWR和某些通用寄存器的内容)
  5. 开中断
  6. 执行中断服务程序
  7. 关中断(保证在恢复现场和屏蔽字时不被中断)
  8. 恢复现场和屏蔽字
  9. 开中断、中断返回

其中1—3是由硬件自动完成的(中断隐指令),4—9是由操作系统的中断处理程序完成的。

1.3.3 系统调用

系统调用的处理由操作系统内核态来完成,用户可以执行陷入指令来发起系统调用,请求操作系统提供服务。用户执行陷入指令,相当于把CPU的使用权主动交给操作系统内核程序(CPU会从用户态进入内核态),随后操作系统对系统调用请求做出处理,处理完成后将CPU使用权再还给用户。

引入系统调用的目的是:用户不能直接执行对系统有很大影响的命令,必须通过系统调用这一接口来完成,这样可以保证系统运行的稳定性和安全性。

系统调用是操作系统内核提供给用户的接口,它发生在用户态;而系统调用的处理函数是对系统有较大影响的操作,是操作系统内核预设的操作,发生在内核态

所以外部中断、缺页、系统调用、陷入指令都发生在用户态;而其处理函数发生在内核态。(所以trap指令不是特权指令)

系统调用的执行顺序:① 传递系统调用参数 ② 执行陷入指令 ③ 执行相应的服务程序 ④ 返回用户态

第二章 进程管理

2.1 进程和线程

引入进程的目的:更好地描述和控制程序的并发执行,实现操作系统的并发性和共享性。

进程控制块PCB(Process Control Block)

进程是系统进行资源分配和调度的一个独立单位

2.1.1 进程的特征

  1. 动态性

    进程与程序是截然不同的两个概念,进程是程序的一次执行过程,包括创建、活动、暂停、终止等,是动态的。而程序只是静态的代码。

  2. 并发性

    多个进程存在于内存中可以并发执行

  3. 独立性

    指进程是一个能独立运行、独立获得资源和独立接受调度的基本单位。

  4. 异步性

    由于进程之间的相互制约,使得进程具有独立执行的间断性。即进程不可预知的速度向前推进,这会导致执行结果的不可再现性,为此操作系统必须配置相应的同步机制。

  5. 结构性

    每个进程都配置一个PCB对其进行描述。从结构上看,进程实体是由程序段、数据段和进程控制块三部分组成的。

2.1.2 进程的状态

  1. 运行态
  2. 就绪态
  3. 阻塞态(等待态)
  4. 创建态
  5. 结束态

区别就绪态和阻塞态,就绪态是指进程已经得到了除处理机外的所有资源,一旦得到处理机,就能立即执行。而阻塞态(等待态)是指由于正在等待某一事件而暂停运行。就绪态是已得到资源,等待处理机;而阻塞态是等待资源。

img进程状态转换

系统由运行态进入阻塞态是主动的行为,是由于进程主动请求某一资源失败导致的;而由阻塞态进入就绪态是被动的行为,一定是由于其他进程对资源的占用状态发生了变化而引起的。

线程请求资源失败进入阻塞态,线程被高优先级线程抢占进入就绪态。

2.1.3 进程的控制

进程创建

子进程继承父进程的资源,子进程退出时要将其使用的资源归还给父进程,父进程退出时必须退出所有子进程。

进程创建原语:

  1. 分配进程ID(标识符),创建一个空白的PCB(PCB是有限的,如果PCB创建失败,则进程创建失败)
  2. 为进程分配资源。如果资源分配失败,并不是创建失败,而是处于阻塞态
  3. 初始化PCB。包括初始化标志信息、处理机状态信息、处理机控制信息,及设置进程优先级
  4. 若进程就绪队列能够接纳新进程,则将其插入就绪队列,等待被调度运行。
进程终止

进程终止原因:① 正常结束;② 异常结束:进程发生异常事件而结束 ③ 外界干预:进程应外界请求而终止运行,如父进程请求、父进程终止、操作员或操作系统干预等。

进程终止/退出/撤销原语:

  1. 根据进程标识符检索PCB,读取进程状态
  2. 若进程处于运行态,结束其执行,将CPU资源分配给其他进程
  3. 若该进程还有子孙进程,将其子孙进程全部终止
  4. 将该进程的所有资源归还给父进程或操作系统
  5. 将该PCB在队列中删除
进程的阻塞和唤醒

进程的阻塞指正在执行的进程由于请求系统资源失败、等待某种操作、新数据尚未到达等,由系统自动执行阻塞原语,使自己由运行态转为阻塞态。进程的阻塞是进程主动的动作。

阻塞原语:

  1. 根据要被阻塞的进程的标识符,找到其PCB
  2. 若该进程为运行态,保护现场,将其转为阻塞态
  3. 将PCB插入相应事件的等待队列,将CPU资源调度给其他进程

唤醒原语:

  1. 在该事件的等待队列中找到相应进程的PCB
  2. 将其从等待队列中移除,并将其状态设置为就绪态
  3. 将PCB插入线程就绪队列,等待调度程序调度
进程切换
  1. 保存上下文,包括程序计数器和其他寄存器
  2. 更新PCB状态等信息
  3. 将进程PCB移入相应队列
  4. 选择另一个进程执行,并更新其PCB
  5. 更新内存管理的数据结构
  6. 恢复CPU上下文

调度和切换:调度是指决定资源分配给哪个进程,是一种决策行为;切换是指实际的分配行为,是执行行为。先有资源的调度,后有进程的切换。

2.1.4 进程的组织结构

进程控制块PCB

PCB是进程存在的唯一标志。

进程描述信息:进程标识符PID、用户标识符UID

进程控制和管理信息:进程当前状态、进程优先级、代码运行入口地址、程序的外存地址、进入内存时间、CPU占用时间、信号量

资源分配清单:代码段指针、数据段指针、堆栈段指针、文件描述符、键盘、鼠标

CPU相关信息:通用寄存器值、地址寄存器值、控制寄存器值、标志寄存器值、状态字

进程PCB表通常包括链接方式和索引方式两种。将不同状态的进程放在不同的队列或索引表中。

程序段

程序段就是能被进程调度程序调度到CPU执行的程序代码段。程序可被多个进程共享。

数据段

一个进程的数据段可以是进程对应的程序加工处理的原始数据,也可以是程序执行时产生的中间或最终结果。

2.1.5 进程的通信

低级通信方式:PV操作。

高级通信方式能够高效传输大量数据。

共享存储

多个进程可以共享某一块区域,都可以对其进行读写操作。但是需要通过同步互斥工具(PV操作等)进行控制。

低级:基于结构体的共享

高级:基于存储区的共享

消息传递

进程间数据以格式化的消息为单位传递,通过发送消息和接收消息的原语进行数据交换。

直接通信

间接通信

管道通信

管道是指用于连接读进程和写进程以实现它们之间的通信的一个共享文件,又名pipe文件。向管道提供写进程,以字符流的形式将大量数据送入写管道,读进程从管道中读数据。

为了协调双方通信,管道必须提供同步、互斥和确定对方存在三个功能。

半双工通信。

  1. 限制管道大小,管道相当于一个缓冲区,当缓冲区满时,write()调用默认阻塞
  2. 当读进程比写进程快时,缓冲区中没有数据,read()系统调用默认阻塞

2.1.6 线程的概念和多线程模型

引入线程的目的:减小程序在并发执行时所付出的时间和空间开销,提高操作系统的并发性能。

线程不拥有资源,但与同一进程中的其他线程共享资源。进程是资源分配的最小单位,线程是调度的最小单位。

线程实现的方式:用户级线程、内核级线程、组合方式。

用户级线程中线程的管理和调度由应用程序在用户空间完成,内核意识不到线程的存在(即对内核来说仍然是一整个进程)。

内核级线程中线程的管理和调度在内核空间中完成,用户空间只有相应接口。

多线程模型

  1. 多对一模型

    将多个用户级线程映射到一个内核级线程,线程的管理在用户空间中完成。效率高,但并发能力欠缺。

  2. 一对一模型

    将每个用户级线程映射到一个内核级线程。并发能力强,但开销大。

  3. 多对多模型

    将m个用户级线程映射到n个内核级线程。m<=n

2.2 CPU调度

2.2.1 调度

作业调度:从外存中选取后备作业,为其分配内存、设备等

内存调度:将暂时不能运行的进程调至外存等待,此时进程状态为挂起态。内存调度的作用是提高内存利用率和系统吞吐量。

进程调度:从进程就绪队列中选取一个进程运行

2.2.2 调度的时机、切换与过程

不能进行进程调度的情况:

  1. 正在处理中断,中断处理逻辑上不属于任何一个进程,不应被剥夺处理机资源
  2. 进程在操作系统内核程序临界区中,应当加锁且不能切换进程
  3. 正在进行原子操作

应当进行进程调度的情况:

  1. 发生引起调度条件且当前进程无法继续运行下去时
  2. 中断处理结束或自陷处理结束后,返回被中断进程的用户态程序执行现场前

请求调度事件 -> 进程调度程序 -> 调度新的就绪程序 -> 进程切换

2.2.3 调度方式

  1. 非剥夺式调度(非抢占式调度):如果有高优先级进程就绪队列,仍然执行完当前进程,才能将处理机让出
  2. 剥夺式调度(抢占式调度):如果有高优先级进程进入就绪队列,立即进行进程切换让出CPU

2.2.4 调度算法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值