四川大学_软件学院_操作系统笔记
作者:揆正_Gother
四川大学_软件学院_软件工程专业_2023级
操作系统修读时间:2024-2025年秋季学期
操作系统课程号:311006040
操作系统分数:97 / 100
本笔记编撰时参考了《操作系统——精髓与设计原理》第九版教材,并结合了教师的授课内容。在整理过程中,笔者借鉴了诸多前辈的研究成果,在此一并致以诚挚的谢意。尽管笔者已尽力确保内容的准确性,但限于个人水平,难免存在疏漏或错误之处,恳请读者批评指正。本笔记着重于基础知识的梳理与巩固,并未过多聚焦于期末考试的重点内容。关于期末考试的题型分析与应对策略,将在后续文章中详细探讨。祝每一位修读此课程的同学都能取得理想的成绩。也祝所有读者在各自的求知道路上一帆风顺,前程似锦。
🌟 点击跳转 期末考试选择题
Operating System Notes
Chapter 1 - Computer System Overview
The OS (Operating System) acts as an interface between the computer hardware and the human user. (硬件和用户之间的接口) 操作系统把一些抽象的硬件功能封装成简单易用的服务,使用户能更方便的使用计算机,只需要对操作系统发出命令,无需关系抽象复杂的底层硬件原理
An operating system exploits(利用) the hardware resources of one or more processors(处理器) to provide a set of services to system users. 利用硬件资源为系统用户提供一组服务.
本质:管理和控制计算机硬件与软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才能运行
1.0 Basic Elements (可省略)
The four main structural elements of a computer system are Processor, Main Memory, I/O Modules & System Bus.
Processor: Controls the operation of the computer and performs its data processing functions. When there is only one processor, it is often referred to as the central processing unit (CPU). One of the processor’s main functions is to exchange data with memory. 处理器:控制计算机的操作并执行数据处理功能。当只有一个处理器时,它通常被称为中央处理单元(CPU)。处理器的主要功能之一是与内存交换数据。
Main memory: Stores data and programs. This memory is typically volatile (易失性) ; that is, when the computer is shut down, the contents of the memory are lost. In contrast, the contents of disk memory are retained even when the computer system is shut down. Main memory is also referred to as real memory or primary memory. Each location in Main Memory contains a binary number value that can be interpreted(解释) as either an instruction or data. 主存储器(内存):用于存储数据和程序。这种存储器通常是易失性的;也就是说,当计算机关机时,存储器中的内容会丢失。相比之下,磁盘存储器的内容在计算机系统关机后仍然保留。主存储器也被称为真实存储器或内存。主存储器中的每个位置都包含一个二进制数值,可以被解释为指令或数据。
I/O modules: Move data between the computer and its external environment. The external environment consists of a variety of devices, including secondary memory devices (e.g. disks), communications equipment, and terminals. I/O模块:在计算机与外部环境之间传输数据。外部环境由各种设备组成,包括辅助存储设备(例如磁盘)、通信设备和终端。
System bus: Provides for communication among processors, main memory, and I/O modules. 系统总线:提供处理器、内存和I/O模块之间的通信
1.1 Introduction
操作系统是一种系统软件,控制和管理整个计算机的硬件和软件资源,组织调度计算机的工作和资源分配,为上层用户和应用程序提供简单易用的服务
操作系统的功能和目标:向上层提供方便易用的服务
1.2 Processor Registers (处理器寄存器)
寄存器是处理器(CPU)内部的存储单元,使用寄存器可以减少CPU对内存的读取次数。
CPU可以分为用户可见寄存器&控制和状态寄存器
Register is a memory inside CPU(Central Processing Unit), enable CPU to minimize main-memory references
用户可见寄存器 User-Visible Registers:用于存取寄存器中的数据,可以通过机器语言和汇编语言引用,适用于所用应用程序
控制和状态寄存器 Control and Status Registers:控制处理器操作,对用户不可见。比如说:程序计数器(PC)存储下一步要执行的指令的内存地址。指令寄存器(IR)存储下一步要执行的指令。
1.3 Instruction Execution(指令的执行)
Example—指令执行的过程:CPU通过PC(程序计数器,用于存储下一条需要执行的指令的地址)从内存中获取(Fetch)下一条指令,获取到的指令会存储到IR(指令寄存器)中,供后续使用。CPU中的解码器从IR指令寄存器中读取指令并解码(Decode)。CPU中的ALU(算数逻辑单元)根据解码的结果进行相关运算,执行(Instruction)指令。执行结束后,结果会被写回到对应的寄存器中,PC向下增加,指向下一条需要执行的指令的地址,IR等待下一轮指令的获取。
注:解码是控制单元(Control Unit) 的工作。
通过上面的过程,我们不难发现:
Program counter (PC) of CPU holds address of the instruction to be fetched next. CPU 的程序计数器 (PC) 保存下一条要获取的指令的地址
The fetched instruction is loaded into the Instruction Register (IR) . 获取到的指令被放入指令寄存器 (IR) 中
Program counter (PC) of CPU is incremented after each fetch. CPU 的程序计数器 (PC) 在每次取指令后都会递增
单条指令所需要的执行过程称为指令周期
取指令阶段(Fetch):在这个阶段,PC(程序计数器)中的地址被用来从内存中获取下一条要执行的指令。这条指令被加载到IR(指令寄存器)中。
解码阶段(Decode):一旦指令被放入 IR,接下来会进入解码阶段。控制单元(CU)会读取 IR 中的内容,分析该指令的操作码(opcode)以及操作数(operand),从而确定这条指令是什么类型的操作(例如加法、乘法、跳转等),以及需要用哪些寄存器或内存地址。
执行阶段(Execute):在解码之后,CU 根据解码结果,发出一系列控制信号,协调算术逻辑单元(ALU)和其他部件进行实际的操作。比如,若指令是一个加法操作,CU 会指示 ALU 执行加法并存储结果。
结果存储阶段(Write-back):执行完成后,结果可能会被写回寄存器或存储器中,具体取决于指令的类型。
IR的主要作用是暂时保存从内存中取回的指令。CU负责从IR中读取指令,并进行解码和执行。实际的解码和控制信号的生成是在 控制单元(CU) 完成的,CU 利用 IR 中的信息来决定具体执行什么操作。
1.4 Interrupt(中断)
通过中断这种机制,其他模块(如I/O,时钟)可以中断处理器的正常时序,进行一些必要的服务
为什么需要中断:I/O设备的要比其他处理器要慢,中断可以提高CPU的使用率;计数需要;避免设备独占CPU。提高CPU的使用效率
中断的类型:程序中断;定时器中断;I/O设备中断;硬件故障中断
多道程序设计:利用定时器中断使能的时间片
1.5 The Memory Hierarchy (内存层次结构)

寄存器:寄存器在CPU上,是最快,最小,最昂贵的存储设备(寄存器比缓存快)
缓存(L123):从L1到L3,缓存的大小变大(但是实际上仍然比较小,只有十几或者几十MB)。从L1到L3,缓存的速度会变慢,L1缓存的速度比寄存器稍慢,但是仍然很快。
主存储器:也就是我们说的内存,使用动态随机存取存储器,速度稍慢,但是容量大且比缓存经济。
本地辅助存储器:也就是我们所说的C、D等盘包括U盘,是本地的磁盘存储,通常比内存慢,但容量非常大且便宜。
远程辅助存储器:云存储,通常位于远程服务器上
1.6 Cache Memory(高速缓存)
缓存在寄存器和主存(内存)之间,包含主存储器(内存)中的一部分文件的副本 Contains a copy of a portion of main memory,处理器会首先检查缓存,如果找到了所需要的数据,则直接使用该数据,不需要访问主存获取。如果没有找到,则需要将包含所需信息的主内存块从主存移到缓存中,传递给处理器
1.7 I/O Communication Techniques (I/O通信技术)
I/O(输入输出)操作指的是计算机处理器和外部设备(如硬盘、键盘、显示器等)之间的数据交换。
三种常见的I/O通信技术:可编程 I/O(Programmed I/O)、中断驱动 I/O(Interrupt-Driven I/O) 和 直接内存访问 (Direct Memory Access,DMA)。
Chapter 2 - Operating System Overview
操作系统是一个控制应用程序的执行的程序,作为应用程序和硬件之间的接口,屏蔽了硬件的详细信息,使应用程序开发人员无需关心硬件细节。
2.1 Operating System Objectives and Function(操作系统的目标和功能)
A primary objective of an operating system is Convenience, Efficiency & Ability to evolve. 方便、有效、扩展能力
-
Convenience: An Operating System makes a computer more convenient to use.
-
Efficiency: An Operating System allows the computer system resources to be used in an efficient manner.
-
Ability to evolve: An Operating System should be constructed in such a way as to permit the effective development, testing, and introduction of new system functions with out interfering with service.
外壳(Shell)包含了CLI(命令行界面)和GUI(图形用户界面 );
内核(Kernel)操作系统的一部分,在系统运行过程中一直包含在主存中,包含最常用的函数。
2.2 The Evolution of Operating System(操作系统的演化)
2.2.1 Serial Processing (串行处理)
无操作系统,用户直接与硬件交互 No operating system, the programmer interacted directly with the computer hardware.
串行处理的主要问题是:Setup time(准备时间)和 Scheduling(调度)
2.2.2 Simple Batch Systems (简单批处理)
多个作业被批量提交给计算机系统,按照顺序一个接一个地处理。使用监控程序来自动控制作业的执行过程,用户不需要干预每个作业的开始和结束。处理器主要执行单个作业,其他作业在处理器空闲时才会被处理,I/O和CPU 不能同时高效利用。without interactive from users. Only one job in memory at a time.
用户程序在用户模式(user mode)下执行:某些指令不能执行,某些内存区域无法访问。
监控程序在系统模式(内核模式)(kernel mode)下执行:可以执行特权指令,可以访问受保护的内存区域
2.2.3 Multiprogrammed Batch Systems (多道批处理)
multiple jobs in a memory at a time. 由于I/O设备的执行效率要比CPU慢很多,当一个作业等待 I/O 时,处理器若处于空闲状态,可以切换到另一个作业。提升了CPU的使用效率。
与简单批处理系统一样,多道程序批处理系统必须依赖于某些计算机硬件。对多道程序设计Multiprogrammed Batch Systems最有帮助的硬件是支持I/O中断(I/O Interrupt) 和直接内存访问(Direct Memory Access,DMA)的硬件。通过中断驱动的I/O或 DMA,处理器可为一个作业发出I/O命令,设备控制器执行I/O操作时,处理器执行另一个作业。(《操作系统—精髓与设计原理(第七版)》P42)
多道程序设计是为了让处理器和I/O设备同时处于忙碌状态,操作系统将对内存中驻留的不同程序进行处理器的切换(P45)
简单批处理和多道批处理的Hardware Features(硬件特性):
- Memory protection(内存保护):不允许包含监控程序的内存区域被修改
- Timer(定时器):防止某个作业独占系统
- Privileged instructions(特权指令):某些机器级指令只能由监控程序执行
- Interrupts(中断)
2.2.4 Time-Sharing Systems (分时系统)
处理多个交互用户/作业。 Requirement: handle multiple interactive users/jobs.
用户通过终端与系统交互,系统在多个任务之间分配时间片。
主要目标 | 向操作系统提供指令的来源 | |
---|---|---|
多道批处理 | 最大化处理器使用率 Maximize processor use | 作业中提供的作业控制语言命令 |
分时系统 | 最小化响应时间 Minimize response time | 从终端输入的命令 |
多道批处理的目的是最大化CPU使用率,分时系统的目的是最小化响应时间
两个的共同点是handle multiple jobs at a time 一次性处理多个作业
2.3 Major Achievements
2.3.1 Process(进程)
进程由三部分组成:一段可执行的程序,程序所需要的相关数据(工作空间,缓冲区等),程序执行的上下文(execution context)
进程执行的上下文(execution context):All information the operating system needs to manage the process
2.3.2 Memory management(内存管理)
虚拟内存从逻辑角度访问存储器。
分页系统中,进程由许多固定大小的块组成,称为页。分页系统提供了程序中的虚拟地址和内存中的实地址之间的动态映射
2.3.3 Information Protection and Security(信息的保护与安全)
可用性Availability,保密性Confidentiality,完整性Data integrity,认证Authenticity
2.3.4 .Scheduling and Resource Management(调度和资源管理)
考虑三个因素:公平性(Fairness),有差别的响应性(Differetal responsiveness),有效性(Efficiency)
一个full-featured的操作系统应该具备以下特征:late delivery(延迟交付),performance unexpected(性能意外), latent bugs(潜在bug), vulnerable to a variety of security attacks(收到各种安全问题的攻击)
多线程和对称多处理(Symmetric Multi-Processing, SMP),可以让线程在不同处理器上同时执行
Chapter 3 - Process (进程描述和控制)
The principal function of the processor is to execute machine instructions residing in main memory. 处理器的主要功能是执行驻留在主内存中的机器指令。
The principal responsibility of the OS is to control the execution of processes.操作系统的主要职责是控制进程的执行。
3.1 What is a process 什么是进程
进程的概念:①一个正在执行的程序,计算机上运行的程序实例 ;②正在执行的指令序列;③一个现时状态;④一个有关联的系统资源的活动单元
程序和进程有什么区别:程序是静态的,是一些列指令的合集。进程是动态的,是正在执行的程序是程序的一次执行过程(同一个程序的多次运行会对应多个进程)
操作系统在创建一个进程时会为其创造一个唯一的PID(Process ID),除了PID之外,还会有UID(进程所属用户),分配了什么资源(内存分配了多少,哪些I/O设备在使用),进程的运行情况(CPU使用时间,磁盘使用情况)。因为资源对于多个程序都是可用的,处理器要在多个程序之间来回切换,为了保证所有程序都在执行,处理器和I/O设备等能够得到充分的利用,我们引出**PCB(Process Control Block,进程控制模块)**这个概念。 凡是管理进程所需要的信息,都会放在PCB中
Process Control Block 用来描述进程执行的有关信息
PCB是一个进程存在的唯一标志,进程创建时,操作系统会为其创建一个PCB,进程结束后,操作系统回收PCB。
PCB会包含以下要素 Process Elements:
- Identifier(标识符,唯一,区别其他进程)
- State(状态,比如正在执行,执行/阻塞状态)
- Priority(优先级,相对其他进程优先顺序)
- Program counter (PC)(程序计数器,下一条指令地址)
- Memory pointers(内存指针,程序和数据)
- Context data(上下文数据,寄存器内容)
- I/O status information(输入/输出状态信息)
- Accounting information(统计信息)
3.2 Process States 进程的状态
3.2.1 Trace of Process
让我们以一个例子来看进程的处理过程:
图中,阴影部分代表由分派器执行的代码(就是阴影的位置分派器正在干活)。假设操作系统为避免任何一个进程独占处理器时间,仅允许一个进程最多连续执行6个指令周期,此后将被中断。如右图所示,进程A的前6条指令执行后,出现一个超时,然后执行Dispatcher(调度器)的某些代码,在将控制权转移给进程B前分派器执行了6条指令。在进程B的4条指令执行后,进程B请求一个它必须等待的I/O动作,因此处理器停止执行进程B,并通过调度器转移到进程C,在超时后,处理器返回进程A,这次超时后,进程B仍然等待那个I/O操作的完成,因此调度器再次转移到进程C。
3.2.2 Two-State Process Model (两状态进程模型)
进程可能处于以下两个状态:Running(运行状态)Not-Running(非运行状态)
解释:当操作系统创建一个新的进程(创建进程,操作系统在内存中给他分配内存地址空间)时,它会以未运行态加入系统中,相当于进入一个队列,等待执行的时机
进程的创建和终止:
操作系统为另一个进程显式请求创建一个进程时,成为进程派生,前面一个进程成为父进程,后面一个被派生出来的进程成为子进程。
创建和终止是一个进程的完整的生命周期,进程结束时,给操作系统发出结束的请求,操作系统处理请求,结束进程
★ 对于可运行进程,操作系统采用轮转的调度方式(round-robin) FIFO的方式 First In First Out
3.2.3 A Five-State Model (五状态模型)
为什么从两状态到五状态? 将两状态的非运行态(Not-Running)细分为了就绪态(Ready)和阻塞态(Blocked)
-
Running(运行态):进程正在执行(占有CPU并且在CPU上运行)
-
Ready (就绪态):进程已经在内存中(做好了准备,已经具备了运行条件但是没有空闲的CPU,暂时不能运行)
-
Blocked(阻塞态):进程已经在内存中,等待一个事件的发生,处于阻塞(等待)的状态
-
New(新建态):刚刚创建的进程,还未被列入可执行进程组
-
Exit(退出态):释放的进程,要么是进程自己停止,要么是因为某些原因被取消
在进程的PCB中有一个变量state来记录当前的状态
以下辅助理解上图:
- **空→新建:**创建一个新进程
- **新建→就绪:**新建的进程已经具备了运行的条件,只需等待调度器将其分配到处理器上执行。
- **就绪→运行:**选择某个已经就绪的进程进行运行
- **运行→就绪:**①正在运行的进程到达了“允许不中断执行”的最大时间段(达到了最大时间片(时间用完了));②优先级、抢占(优先级更高的进程抢占);③进程自愿释放对处理器的控制。
- **运行→阻塞:**进程运行时出现了必须等待的某些事件(比如说I/O输入),该进程开始等待,进入阻塞态。
- **阻塞→就绪:**当所等待的事件结束后,处于阻塞态的进程转换到就绪态。
- ** **→退出:**在某些系统中,父进程可以在任何时刻终止一个子进程。如果一个父进程终止,与该父进程相关的所有进程都将被终止
3.2.4 Suspended Process (进程的挂起)
当内存内的所有程序都处于阻塞态时,操作系统可以把其中一个进程设置为挂起态,把他转移到磁盘中(移出内存,移到外存),释放内存空间。
我们考虑以下四种状态:
就绪态:进程在内存中并且可以执行
阻塞态:进程在内存中但是等待另一个事件
就绪/挂起状态:进程在外存中但是只要被接入内存就可以被执行
阻塞/挂起状态 :进程外存中等待某个事件
从五状态到七状态的原因?判断阻塞与否和挂起与否
对于(b)图的解释:
- 阻塞→阻塞/挂起: ①没有就绪进程,则至少一个阻塞进程被换出,为另一个没有阻塞的进程让出空间。②操作系统确定当前正在运行的进程,或就绪进程为了维护基本的性能要求而需要更多的内存空间。
- **阻塞/挂起→就绪/挂起:**等待的事件发生了,处于阻塞/挂起状态的进程可转换到就绪/挂起态。(要求操作系统必须能够得到挂起进程的状态信息)
- 就绪/挂起→就绪: ①内存中没有就绪进程;②处于就绪/挂起态的进程比处于就绪态的任何进程的优先级都高。
- 就绪→就绪/挂起: ①如果释放内存以得到足够空间的唯一方法是挂起一个就绪态进程,那么这种转换也是必需的;②如果操作系统确信高优先级的阻塞态进程很快就会就绪,那么它可能选择挂起一个低优先级的就绪态进程,而不是一个高优先级的阻塞态进程。
- 新建→就绪/挂起&新建→就绪: 当创建一个新进程时,该进程或者加入就绪队列,或者加入就绪/挂起队列。
- 阻塞/挂起→阻塞: 一个进程终止,释放一些内存空间,阻塞/挂起队列中有一个进程比就绪/挂起队列中任何进程的优先级都高,并且操作系统有理由相信阻塞进程的事件很快发生,这时,把阻塞进程而不是仅需进程调入内存是合理的。
- 运行→就绪/挂起: 由于位于阻塞/挂起队列中的具有较高优先级的进程变得不再被阻塞,操作系统抢占这个进程,也可以直接把这个运行进程转换到就绪/挂起队列中,并释放一些内存。
- 各种状态→退出: 在某些操作系统中,一个进程可以被创建它的进程终止,或当父进程终止时终止。如果这样,则进程在任何状态都可转换到退出态。
3.3 Process Description (进程描述)
3.3.1 Operating System Control Structures
操作系统为其管理的每个实体构建并维护相应的信息表,操作系统控制表的结构Operating System Control Structures是:内存(MEMORY),输入输出设备(I/O),文件(FILE),进程(PROCESS) 注意选择题!!
下面这些稍作了解即可:
内存表(memory table):用于跟踪内存和外存,保护共享内存区域,以及管理虚拟内存
I/O 表(I/O table):用于管理 I/O 设备和通道,数据传输的源和目的地址
文件表:提供文件的存在信息、在辅存中的位置、当前状态及其他属性。
进程表:每个条目描述一个进程映像(程序、数据、栈和属性的集合)。
3.4 Process Control (进程控制)
3.4.1 Modes of Execution(CPU) (执行模式)
用户模式(用户态):用户程序通常在该模式下运行,权限较低,无法直接访问硬件和操作系统核心资源。
系统模式、控制模式或内核模式 kernel:高权限模式,操作系统内核在此模式下运行,具有对处理器、指令、寄存器和内存的完全控制权限。(原因/作用:为了保护操作系统和关键的系统数据结构(如进程控制块),防止用户程序的干扰或破坏)
当出现**中断(Interrupt)/ 陷阱(Trap)/ 系统调用(Syscall)/ 异常(Exception)**时,会出现模式转换的情况。
3.4.2 Process Creation (进程的创建)★★★重要★★★
- 分配唯一的进程标识符 Assign a unique process identifier
- 为进程分配空间 Allocate space for the process
- 初始化进程控制块 Initialize process control block
- 建立适当的链接 Set up appropriate linkages
- 创建或扩展其他数据结构 Create or expand other data structures
3.4.3 Process Switching (进程的切换)
什么时候会发生进程切换:
中断(Interrupt):时钟中断(进程已经执行了允许的最大时间片);I/O 中断;内存错误
陷阱(Trap):发生错误或异常,可能导致进程进入退出状态。
系统调用(Syscall):例如文件打开。这是一种系统中断类型,陷阱与当前正在运行进程中的错误或异常条件相关。
如何切换进程(略)
3.4.4 Process Terminate(进程终止)
可能原因:错误(数据错误 / 保护错误 / 内存故障 / 非法操作),被父进程终止,正常完成(任务已完成)
3.5 Execution of the Operating System(操作系统的执行)
无进程内核( Non-process Kernel):在所有进程外部执行操作系统内核;操作系统代码是在特权模式下单独运行的实体。Operating system code is executed as a separate entity that operates in privileged mode
在用户进程内运行( Execution Within User Processes):用户进程的上下文中执行所有操作系统软件; 进程在执行操作系统代码时以特权模式执行。优点:中断一个用户程序,使用操作系统例程,再恢复用户程序不用两次进程切换
基于进程的操作系统(Process-Based Operating System):把操作系统作为一组系统进程来实现;主要的内核功能被组织为独立的进程;在多处理器或多机环境中很有用
3.6 process API introduction (进程API介绍)
创建继承——fork() 系统调用: 通过复制调用进程(父进程)来创建一个新进程(子进程)
父进程:fork() 返回子进程的进程 ID
子进程:fork() 返回 0
错误情况:fork() 返回负值
进程等待——wait() 系统调用: 父进程等待子进程终止,这是必要的,因为进程不能自行销毁其进程控制块(PCB),父进程必须清理并释放子进程的资源。
进程执行——exec() 系统调用: 用新进程映像替换当前进程映像,通常在 fork() 之后使用,用于运行新程序。
孤儿进程 :父进程终止而子进程仍在运行。
僵尸进程 :子进程终止,但其 PCB 保留,直到父进程执行wait()清理。
Chapter 4 - Threads(线程)
4.1 Processes and Threads(进程和线程)
引入线程原因:减少并发执行的开销,提高程序执行的并发程度。
有很多进程需要同时执行很多程序,而传统的进程只能串行执行一系列指令,因此引入线程概念,增加并发度。
传统的进程是程序执行流的最小单位,引入线程之后,线程成为了程序执行流的最小单位,可以把线程理解为“轻量级进程”。
★★★进程是资源分配和保护的单元,线程是调度的基本单位★★★
线程是一个基本的CPU执行(调度)单元,也是程序执行流的最