更新中

本专栏是博主在大学浪了近两年啥也没学后重学计算机专业时写的,方便个人学习和复习,本人菜鸟一枚,如有错误或能优化的地方欢迎指正,也特别欢迎交流学习。

motto共勉:心之所向,素履以往;做喜欢的事不需要坚持

目录

第一章 计算机操作系统概述

1.1.1计算机系统概述

1.1.2  计算机硬件系统

220510 更新

1.1.3  计算机软件系统

220511 更新

1.2 计算机操作技术

1.2.1 计算机操作技术的发展

1.2.2 计算机操作系统

1.3 深入观察操作系统

1.3.1 资源管理的视角

1.3.2 控制程序执行的视角

1.3.3 操作控制计算机的视角

220512  更新

1.3.4 人机交互的视角

1.3.5 程序接口的视角

第二章   处理器管理

2.1 处理器

2.1.1 处理器与寄存器

220513  更新

2.1.2 指令与处理器模式

2.2 中断管理

2.2.1 中断

2.2.2 中断源

2.2.3 中断系统1

2.2.3 中断系统2

2.2.4 多中断的响应与处理

第三章  存储管理

3.1 存储管理基础

3.1.1 存储管理的主要模式

3.1.2 存储管理的功能

220526  更新

3.1.3 虚拟存储器的概念

3.1.4 存储管理的硬件支撑

3.2 单连续分区存储管理

3.2.1 单连续分区存储管理

3.2.2 可变分区存储管理

220527  更新

3.3 页式存储管理

3.3.1 页式存储管理的基本原理

3.3.2 页式存储管理的地址转换

3.3.3 页式虚拟存储管理

3.3.4 页面调度

220528  更新

3.4 段式存储管理

3.4.1 段式存储管理

3.4.2 段式虚拟存储管理

3.4.3  段页式存储管理

更新中......


第一章 计算机操作系统概述

操作系统(operating system,OS)是计算机系统中最重要的系统软件,它统一管理计算机系统的硬件资源与信息资源,控制与调度上层软件的执行并为其提供易于使用的接口。本章首先从计算机硬件和软件两个角度概述计算机系统的发展与基本概念,然后从计算机操作技术的发展和操作系统分类的角度介绍计算机操作系统的基本概念,最后从资源管理、程序控制、操作控制、人机交互、程序接口、系统结构6个角度深入观察操作系统。

1.1.1计算机系统概述

电子数字计算机 

电子数字计算机是一种能够自行按照已设定的程序进行数据处理的电子设备,它是软件与硬件相结合的、面向系统的、侧重于应用的自动化求解工具。1946年,第一台电子数字计算机ENIAC诞生于美国。短短70余年间,计算机技术得到了快速发展,从早期的科学计算与数据处理领域迅速扩展到实时控制、辅助设计、智能模拟等诸多领域。到今天,计算机技术已无所不在,深入社会生活各个领域,深刻改变了当今人类社会的组织行为。

计算机技术的发展 

计算机的诞生与发展经历了以下几个阶段。

第一代  电子管计算机(1946-1958年)

第二代  晶体管计算机(1958-1964年)

第三代  集成电路计算机(1964-1971年)

第四代  超大规模集成电路计算机(1971-至今)

1945-:电子真空管、机器语言,应用于科学计算

1956-:晶体管、批处理控制、Fortran/COBOL,扩展到数据处理领域

1959-:集成电路、多道程序、操作系统/数据库/高级语言,应用领域继续扩展

1976-:大规模/超大规模集成电路,向快速化/小型化/系统化/网络化/智能化等方面发展 1980-:微机出现,廉价化促使应用领域快速膨胀

1990-:图形化人机交互技术,友善化推动了应用人群的快速扩展

2003-:移动计算的出现,计算无处不在

计算机系统的组成 

现代计算机系统包括硬件和软件两个组成部分,硬件与软件共同构成一个求解计算问题的工具。硬件是软件运行的物质基础,软件能够充分发挥硬件潜能并扩充硬件功能,共同完成各种应用任务。一个计算机系统的软硬件层次结构中每层都具有一组功能并对外提供相应接口。接口对层内隐藏了实现细节,对层外提供了使用约定

计算机硬件系统是借助电、磁、光、机械等原理构造的各种物理部件的有机结合,是计算机系统工作的载体,包括处理器、存储器、I/O控制系统及外围设备。

计算机软件系统则包括各类程序和文件,用于指挥计算机系统按指定要求进行协同工作,包括系统软件、支撑软件和应用软件,其中最关键的系统软件是操作系统和语言处理程序

计算机系统的软硬件层次结构

计算机系统的用户视图

1.1.2  计算机硬件系统

计算机系统硬件的组成

计算机硬件系统包括中央处理器(central processing unit, CPU)、主存储器、外围设备等组件,它们通过系统总线连接。中央处理器包括运算单元和控制单元,运算单元用于执计算机硬件行具体的机器指令的运算,控制单元则解译机器指令。主存储器用系统于存储正在执行的程序和数据。外围设备则包括显示器等输出设备,键盘、鼠标等输入设备,硬盘等存储设备,以及机-机间的通信设备

冯·诺依曼计算机体系结构 

当今绝大部分计算机是基于冯·诺依曼模型设计的存储程序计算机。这一计算机模型由冯·诺伊曼等人在1946年总结并提出,明确了计算机系统包括运算器、控制器、存储器、输入设备和输出设备5个组成部分。该体系结构具有以下特点:

(二进制作为计算机数制进制基础;存储程序与程序控制)

①以运算单元为中心,控制流由指令流产生。

②采取存储程序原理,面向主存储器组织数据流。

③主存储器按照地址访问,提供线性编址空间。

④指令由操作码和地址码组成。

⑤数据以二进制编码。

存储器是该模型的核心部分,运算器和控制器都面向存储器进行操作,同时,外围设备也针对存储器进行数据的输入/输出。计算机的各个部件(存储器、控制器、运算器和输入/输出设备)需要通过总线相连接,从而构成完整的计算机硬件系统。

冯诺依曼计算机体系结构

计算机总线与网络总线 

总线是计算机各种功能部件之间传送信息的公共通信干线。按照所传输的信息分类,总线可分为控制线、数据线和地址线。为了提高计算机系统通信的效率,计算机总线的设计是分级的,即计算机系统存在多类总线,具体包括以下三个类型。

①内部总线:用于CPU芯片内部各元件的连接。

②系统总线:用于连接CPU、存储器和各个I/O模块。

③通信总线:用于计算机系统之间通信

220510 更新

北桥芯片是电脑主板上的一块芯片,位于CPU插座边,起连接作用;北桥在电脑里起着主导的作用,所以又称为主桥

南桥芯片是主板芯片组的重要组成部分,一般位于主板上离CPU插槽较远的下方,PCI插槽的附近,连接I/O总线;不与CPU直接相连,而是通过一定的方式与北桥芯片相连

 中央处理器(CPU)

中央处理器是计算机的运算核心和控制单元,主要包括:

运算逻辑部件:一个或多个运算器

寄存器部件:包括通用寄存器、控制与状态寄存器,以及高速缓冲存储器(Cache

控制部件:实现各部件间联系的数据、控制及状态的内部总线;负责对指令译码、发出为完成每条指令所要执行操作的控制信号、实现数据传输等功能的部件

 存储器的组织层次

 外围设备及其分类

输入设备

输出设备

存储设备

机机通信设备

I/O控制方式 :

轮询方式:CPU忙式控制I/O,CPU执行内存数据交换

中断方式:CPU启动I/O设备,设备进行I/O,设备中断CPU以善后,CPU执行内存数据交换 DMA方式(直接存储访问):CPU启动DMA,DMA独立进行I/O和内存数据交换,DMA中断CPU以善后

1.1.3  计算机软件系统

计算机软件系统的组成

系统软件:操作系统、实用程序、语言处理程序、数据库管理系统

操作系统实施对各种软硬件资源的管理控制

实用程序为方便用户所设,如文本编辑等

语言处理程序把用汇编语言/高级语言编写的程序,翻译成可执行的机器语言程序

支撑软件有接口软件、工具软件、环境数据库,支持用户使用计算机的环境,提供开发工具 也可认为是系统软件的一部分

应用软件是用户按其需要自行编写的专用程序

程序员的计算机系统视图

 软件开发的不同层次

计算机硬件系统:机器语言

操作系统之资源管理:机器语言+广义指令(扩充了硬件资源管理)

操作系统之文件系统:机器语言+系统调用(扩充了信息资源管理)

数据库管理系统:+数据库语言(扩充了功能更强的信息资源管理)

语言处理程序:面向问题的语言

计算机程序的执行过程 

220511 更新

1.2 计算机操作技术

1.2.1 计算机操作技术的发展

操作平台与操作系统

任何一台机器都有其操作平台与操作系统,计算机也不例外,由此产生了极为系统的计算机操作平台——计算机操作系统

计算机的手工操作

开关表示,按钮控制,亮灯显示

问题:手工操作速度与电子计算速度不匹配

装入程序的引进

引入卡片或纸带描述程序指令与数据 引入装入程序(Loader) 自动化执行程序装入,必要时进行地址转换 通常存放在ROM中

引入汇编语言后的计算机控制

引入高级语言后的计算机控制

简单批处理系统的操作控制

引入作业控制语言,用户编写作业说明书,描述对一次计算机求解(作业)的控制

操作员控制计算机成批输入作业,成批执行作业

这一方式明显缩短了手工操作的时间,提高了计算机系统的使用效率

简单批处理系统的操作进展

初步的资源管理程序出现,屏蔽了硬件处理细节

I/O中断出现,实现了CPU与I/O设备的并行

磁带设备出现 卡片与纸带等机械输入方式得以提高

磁盘文件系统形成

I/O效率还是不支持多道程序切换

操作系统与自动化操作控制

电子计算速度与机械I/O速度的矛盾 :设备在慢慢输,CPU在等

在程序执行过程中能否同时输入作业,重叠时间 需要多道程序同时执行 程序切换需要高速的外存储设备

磁盘设备出现 计算机操作系统浓墨登场,实现了计算机系统的自动化控制

1.2.2 计算机操作系统

操作系统的概念

OS是计算机系统最基础的系统软件,管理软硬件资源,合理组织计算机工作流程,为用户使用计算机提供良好运行环境和接口

操作系统

操作系统是方便用户、管理和控制计算机软硬件资源的系统程序集合,在整个计算机系统中具有承上启下的地位

从用户角度看,OS管理计算机系统的各种资源,扩充硬件的功能,控制程序的执行

从人机交互看,OS是用户与机器的接口,提供良好的人机界面,方便用户使用计算机

从系统结构看,OS是一个大型软件系统,其功能复杂,体系庞大,采用层次式、模块化的程序结构

操作系统的组成

进程调度子系统

进程通信子系统

内存管理子系统

设备管理子系统

文件管理子系统

网络通信子系统

作业控制子系统

操作系统的类型

从操作控制方式看

多道批处理操作系统,脱机控制方式

分时操作系统,交互式控制方式

实时操作系统

操作系统的应用领域分类

服务器操作系统

并行操作系统

网络操作系统

分布式操作系统

个人机操作系统

手机操作系统

嵌入式操作系统

传感器操作系统

1.3 深入观察操作系统

1.3.1 资源管理的视角

计算机系统的资源

硬件资源 处理器、内存、外设

信息资源 数据、程序

管理计算机系统的软硬件资源

处理器资源:那个程序占有处理器运行?

内存资源:程序/数据在内存中如何分布?

设备管理:如何分配、去配和使用设备?

信息资源管理:如何访问文件信息?

信号量资源:如何管理进程之间的通信?

屏蔽资源使用的底层细节

驱动程序:最底层的、直接控制和监视各类硬件(或文件)资源的部分

职责是隐藏底层硬件的具体细节,并向其他部分提供一个抽象的、通用的接口

资源的共享方式

独占使用方式 如:打印机在一个时间段内只能被一个进程独立使用

并发使用方式 如:一个文件可以同时被多个进程一起读

资源分配策略

静态分配方式:进程运行前一次拿到全部独占资源 资源使用效率低 动

态分配方式:使用资源前临时申请 可能产生竞争资源的死锁

资源抢占方式 被抢夺资源的进程需要回滚执行

1.3.2 控制程序执行的视角

多道程序同时计算

CPU速度与I/O速度不匹配的矛盾,非常突出

只有让多道程序同时进入内存争抢CPU运行,才可以够使得CPU和外围设备充分并行,从而提高计算机系统的使用效率

多道程序设计

指让多个程序同时进入计算机的主存储器进行计算

多道程序系统的实现

为进入内存执行的程序建立管理实体:进程

进程:一段程序的执行过程,是动态概念

OS应能管理与控制进程程序的执行

OS协调管理各类资源在进程间的使用,处理器的管理和调度,主存储器的管理和调度,其他资源的管理和调度

多道程序系统的实现要点

如何使用资源:调用操作系统提供的服务例程(如何陷入操作系统)

如何复用CPU:调度程序(在CPU空闲时让其他程序运行)

如何使CPU与I/O设备充分并行:设备控制器与通道(专用的I/O处理器)

如何让正在运行的程序让出CPU:中断(中断正在执行的程序,引入OS处理)

1.3.3 操作控制计算机的视角

计算机系统操作方式

OS规定了合理操作计算机的工作流程

OS的操作接口——系统程序

OS提供给用户的功能级接口,为用户提供的解决操作计算机和计算共性问题的所有服务的集合

OS的两类作业级接口

脱机作业控制方式:作业控制语言

联机作业控制方式:操作控制命令

脱机作业控制方式——批处理系统

OS:提供作业说明语言

用户:编写作业说明书,确定作业加工控制步骤,并与程序数据一并提交

操作员:通过控制台输入作业

OS:通过作业控制程序自动控制作业的执行

例:批处理OS的作业控制方式,UNIX的shell程序,DOS的bat文件

联机作业控制方式

计算机:提供终端(键盘/显示器)

用户:登录系统

OS:提供命令解释程序

用户:联机输入操作控制命令,直接控制作业步的执行

例:分时OS的交互控制方式

命令解释程序

命令解释程序:接受和执行一条用户提出的对作业的加工处理命令

命令解释程序的处理过程

OS启动命令解释程序,输出命令提示符,等待键盘中断、鼠标点击、多通道识别 每当用户输入一条命令(暂存在命令缓冲区)并按回车换行时,申请中断 CPU响应后,将控制权交给命令解释程序,接着读入命令缓冲区内容,分析命令、接受参数,执行处理代码

前台命令与后台命令

前台命令执行结束后,再次输出命令提示符,等待下一条命令 后台命令处理启动后,即可接收下条命令

220512  更新

1.3.4 人机交互的视角

操作系统的人机交互部分

OS改善人机界面,为用户使用计算机提供良好的环境

人机交互设备包括传统的终端设备和新型的模式识别设备

OS的人机交互部分用于控制有关设备运行和理解执行设备传来的命令

人机交互功能是决定计算机系统友善性的重要因素,是当今OS研发热点

1.3.5 程序接口的视角

操作系统的程序接口

操作系统的程序接口:操作系统为程序运行扩充的编程接口

系统调用:操作系统实现的完成某种特定功能的过程;为所有运行程序提供访问操作系统的接口

POSIX支持

系统调用的实现机制

陷入处理机制:计算机系统中控制和实现系统调用的机制

陷入指令:也称访管指令,或异常中断指令,计算机系统为实现系统调用而引起处理器中断的指令

每个系统调用都事先规定了编号,并在约定寄存器中规定了传递给内部处理程序的参数

系统调用的实现流程

操作系统提供的程序接口

应用程序、库函数、系统调用的调用关系链

1.3.6 系统结构的视角

操作系统软件的结构设计

OS构件

内核、进程、线程、管程等

设计概念 模块化、层次式、虚拟化

内核设计是OS设计中最为复杂的部分

操作系统内核

单内核:内核中各部件杂然混居的形态,始于1960年代,广泛使用;如Unix/Linux,及Windows(自称采用混合内核的CS结构)

微内核:1980年代始,强调结构性部件与功能性部件的分离,大部分OS研究都集中在此

混合内核:微内核和单内核的折中,较多组件在核心态中运行,以获得更快的执行速度

外内核:尽可能减少内核的软件抽象化和传统微内核的消息传递机制,使得开发者专注于硬件的抽象化;部分嵌入式系统使用

操作系统实现的一种层次式结构

操作系统实现的第二种层次结构

第二章   处理器管理

2.1 处理器

2.1.1 处理器与寄存器

处理器部件的简单示意

用户程序可见寄存器

可以使程序员减少访问主存储器的次数,提高指令执行的效率

所有程序可使用,包括应用程序和系统程序

数据寄存器:又称通用寄存器

地址寄存器:索引、栈指针、段地址等寄存器

控制与状态寄存器

用于控制处理器的操作;主要被具有特权的操作系统程序使用,以控制程序的执行

程序计数器PC:存储将取指令的地址

指令寄存器IR:存储最近使用的指令

条件码CC:CPU为指令操作结果设置的位,标志正/负/零/溢出等结果 标志位:中断位、中断允许位、中断屏蔽位、处理器模式位、内存保护位、…,等

程序状态字PSW

PSW既是操作系统的概念,指记录当前程序运行的动态信息,通常包含: 程序计数器,指令寄存器,条件码 中断字,中断允许/禁止,中断屏蔽,处理器模式,内存保护、调试控制 PSW也是计算机系统的寄存器 通常设置一组控制与状态寄存器 也可以专设一个PSW寄存器

220513  更新

2.1.2 指令与处理器模式

机器指令

机器指令是计算机系统执行的基本命令,是中央处理器执行的基本单位

指令由一个或多个字节组成,包括操作码字段、一个或多个操作数地址字段、以及一些表征机器状态的状态字以及特征码

指令完成各种算术逻辑运算、数据传输、控制流跳转

指令执行过程

CPU根据PC取出指令,放入IR,并对指令译码,然后发出各种控制命令,执行微操作系列,从而完成一条指令的执行

一种指令执行步骤如下:

取指:根据PC从存储器或高速缓冲存储器中取指令到IR

解码:解译IR中的指令来决定其执行行为

执行:连接到CPU部件,执行运算,产生结果并写回,同时在CC里设置运算结论标志;跳转指令操作PC,其他指令递增PC值

指令执行周期与指令流水线

指令执行周期

指令流水线

特权指令与非特权指令

特权指令:只能被操作系统内核使用的指令

非特权指令:能够被所有程序使用的指令

处理器模式

设置处理器模式实现特权指令管理 一般设置0、1、2、3等四种运行模式,建议分别对应:0OS内核、1系统调用、2共享库程序、3用户程序等保护级别

0模式可以执行全部指令;3模式只能执行非特权指令;其他每种运行模式可以规定执行的指令子集

操作系统常用的处理器模式

一般来说,现代操作系统只使用0和3两种模式,分别对应于内核模式和用户模式

处理器模式的切换

中断、异常或系统异常等事件导致用户程序向OS内核切换,触发:用户模式→内核模式

程序请求操作系统服务

程序运行时发生异常

程序运行时发生并响应中断

OS内核处理完成后,调用中断返回指令(如Intel的iret)触发:内核模式→用户模式

2.2 中断管理

2.2.1 中断

中断的概念

中断是指程序执行过程中,遇到急需处理事件时,暂时中止CPU上现行程序的运行,转去执行相应的事件处理程序,待处理完成后再返回原程序被中断处或调度其他程序执行的过程

中断是激活操作系统的唯一方式

中断、异常与系统异常

狭义的中断指来源于处理器外的中断事件,即与当前运行指令无关的中断事件,如I/O中断、时钟中断、外部信号中断等

异常指运行指令引起的中断事件,如地址异常、算术异常、处理器硬件故障等

系统异常指执行陷入指令而触发系统调用引起的中断事件,如请求设备、请求I/O、创建进程等

2.2.2 中断源

处理器硬件故障中断事件

由处理器、内存储器、总线等硬件故障引起的中断事件

处理原则为:保护现场,停止设备,停止CPU,向操作员报告,等待人工干预

程序性中断事件

处理器执行机器指令引起的中断事件

除数为零、操作数溢出等算术异常:简单处理,报告用户;也可以由用户编写中断续元程序处理

非法指令、用户态使用特权指令、地址越界、非法存取等指令异常:终止进程

终止进程指令:终止进程

虚拟地址异常:调整内存重新执行指令

自愿性中断事件(系统调用)

处理器执行陷入指令请求OS服务引起的中断事件;又被称作系统调用

请求分配外设、请求I/O、等等

处理流程是:陷入OS,保护现场,根据功能号查入口地址,跳转具体处理程序

I/O中断事件

来源于外围设备,用于报告I/O状态的中断事件

I/O完成:调整进程状态,释放等待进程,加入就绪进程队列

I/O出错:等待人工干预

I/O异常:等待人工干预

外部中断事件

由外围设备发出的信号引起的中断事件

时钟/间隔时钟中断:记时与时间片处理

设备报到与结束中断:调整设备表

键盘/鼠标信号中断:根据信号作出相应反应

关机/重启动中断:写回文件,停止设备与CPU

2.2.3 中断系统1

中断系统

中断系统是计算机系统中响应和处理中断的系统,包括硬件子系统和软件子系统两部分 中

断响应由硬件子系统完成

中断处理由软件子系统完成

中断响应处理与指令执行周期

在指令执行周期最后增加一个微操作,以响应中断

中断装置

计算机系统中发现并响应中断/异常的硬件装置称为中断装置

这些中断装置因计算机而异,通常有:

处理器外的中断:由中断控制器发现和响应

处理器内的异常:由指令的控制逻辑和实现线路发现和响应,相应机制称为陷阱

请求OS服务的系统异常:处理器执行陷入指令时直接触发,相应机制称为系统陷阱

中断控制器

中断控制器:CPU中的一个控制部件,包括中断控制逻辑线路和中断寄存器

外部设备向其发出中断请求IRQ,在中断寄存器中设置已发生的中断

指令处理结束前,会检查中断寄存器,若有不被屏蔽的中断产生,则改变处理器内操作的顺序,引出操作系统中的中断处理程序

陷阱与系统陷阱

陷阱与系统陷阱:指令的逻辑和实现线路的一部分

执行指令出现异常后,会根据异常情况转向操作系统的异常处理程序

虚拟地址异常后,需要重新执行指令,往往越过陷阱设置页面异常处理程序

执行陷入指令后,越过陷阱处理,触发系统陷阱,激活系统调用处理程序

中断响应过程

发现中断源,提出中断请求

发现中断寄存器中记录的中断

决定这些中断是否应该屏蔽

当有多个要响应的中断源时,根据规定的优先级选择一个

中断当前程序的执行

保存当前程序的PSW/PC到核心栈

转向操作系统的中断处理程序

2.2.3 中断系统2

中断处理程序

OS处理中断事件的控制程序, 主要任务是处理中断事件和恢复正常操作

中断处理过程

保护未被硬件保护的处理器状态

通过分析被中断进程的PSW中断码字段,识别中断源

分别处理发生的中断事件

恢复正常操作

恢复正常操作

情况一:对于某些中断,在处理完毕后,直接返回刚刚被中断的进程

情况二:对于其他一些中断,需要中断当前进程的运行,调整进程队列,启动进程调度,选择下一个执行的进程并恢复其执行

中断系统处理流程

2.2.4 多中断的响应与处理

中断屏蔽

当计算机检测到中断时,中断装置通过中断屏蔽位决定是否响应已发生的中断

有选择的响应中断

中断优先级

当计算机同时检测到多个中断时, 中断装置响应中断的顺序,有优先度的响应中断

一种可能的处理次序:

处理机硬件故障中断事件

自愿性中断事件

程序性中断事件

时钟等外部中断事件

输入输出中断事件

重启动和关机中断事件 不

同类型操作系统有不同的中断优先级

中断的嵌套处理

当计算机响应中断后,在中断处理过程中,可以再响应其他中断

操作系统是性能攸关程序系统,且中断响应处理有硬件要求,考虑系统效率和实现代价问题,中断的嵌套处理应限制在一定层数内,如3层

中断的嵌套处理改变中断处理次序,先响应的有可能后处理

多中断的响应与处理

中断屏蔽可以使中断装置不响应某些中断

中断优先级决定了中断装置响应中断的次序

中断可以嵌套处理,但嵌套层数应有限制

中断的嵌套处理改变了中断处理的次序

多重中断处理-1

X、Y两个中断同时发生

先响应X

因Y被屏蔽,继续处理X

再响应并处理Y

多重中断处理-2

X、Y两个中断同时发生

根据中断优先级,先响应X

因未屏蔽Y,再响应并处理Y

Y处理完成后,再处理X

第三章  存储管理

3.1 存储管理基础

3.1.1 存储管理的主要模式

逻辑地址

逻辑地址:又称相对地址,即用户编程所使用的地址空间

逻辑地址从0开始编号,有两种形式:

一维逻辑地址(地址)

二维逻辑地址(段号:段内地址)

段式程序设计

把一个程序设计成多个段,代码段、数据段、堆栈段、等等

用户可以自己应用段覆盖技术扩充内存空间使用量

这一技术是程序设计技术,不是OS存储管理的功能

物理地址

物理地址:又称绝对地址,即程序执行所使用的地址空间 处理器执行指令时按照物理地址进行

主存储器的复用

多道程序设计需要复用主存

按照分区复用: 主存划分为多个固定/可变尺寸的分区 一个程序/程序段占用一个分区

按照页架复用: 主存划分成多个固定大小的页架 一个程序/程序段占用多个页架

存储管理的基本模式

单连续存储管理:一维逻辑地址空间的程序占用一个主存固定分区或可变分区

段式存储管理:段式二维逻辑地址空间的程序占用多个主存可变分区

页式存储管理:一维逻辑地址空间的程序占用多个主存页架区

段页式存储管理:段式二维逻辑地址空间的程序占用多个主存页架区

存储管理模式示意图

3.1.2 存储管理的功能

地址转换

地址转换:又称重定位,即把逻辑地址转换成绝对地址

静态重定位:在程序装入内存时进行地址转换 由装入程序执行,早期小型OS使用

动态重定位:在CPU执行程序时进行地址转换 从效率出发,依赖硬件地址转换机构

主存储器空间的分配与去配

分配:进程装入主存时,存储管理软件进行具体的主存分配操作,并设置一个表格记录主存空间的分配情况

去配:当某个进程撤离或主动归还主存资源时,存储管理软件要收回它所占用的全部或者部分存储空间,调整主存分配表信息

主存储器空间的共享

多个进程共享主存储器资源:多道程序设计技术使若干个程序同时进入主存储器,各自占用一定数量的存储空间,共同使用一个主存储器

多个进程共享主存储器的某些区域:若干个协作进程有共同的主存程序块或者主存数据块

主存储器空间的扩充

主存扩充:把磁盘作为主存扩充,只把部分进程或进程的部分内容装入内存

对换技术:把部分不运行的进程调出

虚拟技术:只调入进程的部分内容

这一工作需要软硬件协作完成 对换进程决定对换,硬件机构调入

CPU处理到不在主存的地址,发出虚拟地址异常,OS将其调入,重执指令

220526  更新

3.1.3 虚拟存储器的概念

虚拟存储器思想的提出

主存容量限制带来诸多不便

用户编写程序必须考虑主存容量限制

多道程序设计的道数受到限制

用户编程行为分析

全面考虑各种情况,执行时有互斥性

顺序性和循环性等空间局部性行为 某一阶段执行的时间局部性行为 因此可以考虑部分调入进程内容

虚拟存储器的基本思想

存储管理把进程全部信息放在辅存中,执行时先将其中一部分装入主存,以后根据执行行为随用随调入

如主存中没有足够的空闲空间,存储管理需要根据执行行为把主存中暂时不用的信息调出到辅存上去

虚拟存储器的实现思路

需要建立与自动管理两个地址空间 (辅存)虚拟地址空间:

容纳进程装入 (主存)实际地址空间:承载进程执行

对于用户,计算机系统具有一个容量大得多的主存空间,即虚拟存储器

虚拟存储器是一种地址空间扩展技术,通常意义上对用户编程是透明的,除非用户需要进行高性能的程序设计

虚拟存储器示意图

3.1.4 存储管理的硬件支撑

存储器的组织层次

 存储管理涉及的存储对象

存储管理是OS管理主存储器的软件部分

为获得更好的处理性能,部分主存程序与数据(特别是关键性能数据)被调入Cache,存储管理需要对其进行管理,甚至包括对联想存储器的管理 为获得更大的虚拟地址空间,存储管理需要对存放在硬盘、固态硬盘、甚至网络硬盘上的虚拟存储器文件进行管理

高速缓存存储器(Cache)

Cache是介于CPU和主存储器间的高速小容量存储器,由静态存储芯片SRAM组成,容量较小但比主存DRAM技术更加昂贵而快速, 接近于CPU的速度

CPU往往需要重复读取同样的数据块,Cache的引入与缓存容量的增大,可以大幅提升CPU内部读取数据的命中率,从而提高系统性能

高速缓存存储器的构成

高速缓冲存储器通常由高速存储器、联想存储器、地址转换部件、替换逻辑等组成

联想存储器:根据内容进行寻址的存储器

地址转换部件:通过联想存储器建立目录表以实现快速地址转换。命中时直接访问Cache;未命中时从内存读取放入Cache

替换部件:在缓存已满时按一定策略进行数据块替换,并修改地址转换部件

高速缓存存储器的组织

由于CPU芯片面积和成本,Cache很小 根据成本控制,划分为L1、L2、L3三级

 高速缓存存储器的分级

L1 Cache:分为数据缓存和指令缓存;内置;其成本最高,对CPU的性能影响最大;通常在32-256KB之间

L2 Cache:分内置和外置两种,后者性能低一些;通常在512KB-8M之间

L3 Cache:多为外置,在游戏和服务器领域有效;但对很多应用来说,总线改善比设置L3更加有利于提升系统性能

地址转换/存储保护的硬件支撑

 存储管理与硬件支撑

鉴于程序执行与数据访问的局部性原理,存储管理软件使用Cache可以大幅度提升程序执行效率

动态重定位、存储保护等,若无硬件支撑在效率上是无意义的,即无实现价值

无虚拟地址中断,虚拟存储器无法实现 无页面替换等硬件支撑机制,虚拟存储器在效率上是无意义的

3.2 单连续分区存储管理

3.2.1 单连续分区存储管理

单连续分区存储管理

每个进程占用一个物理上完全连续的存储空间(区域)

单用户连续分区存储管理

固定分区存储管理

可变分区存储管理

单用户连续分区存储管理

主存区域划分为系统区与用户区

设置一个栅栏寄存器界分两个区域,硬件用它在执行时进行存储保护

一般采用静态重定位进行地址转换 硬件实现代价低 适用于单用户单任务操作系统,如DOS

单用户连续分区存储管理示意

静态重定位:在装入一个作业时,把该作业中程序的指令地址和数据地址全部转换成绝对地址

固定分区存储管理的基本思想

支持多个分区

分区数量固定

分区大小固定

可用静态重定位

硬件实现代价低

早期OS采用

固定分区方式的主存分配 

主存分配表

分区号

起始地址

长度

占用标志

1

8K

8K

0

2

16K

16K

Job1

3

32K

16K

0

4

48K

16K

0

5

64K

32K

Job2

6

96K

32K

0

主存分配与去配

固定分区方式的地址转换

硬件实现机制与动态重定位

可变分区存储管理概述

固定分区存储管理不够灵活,既不适应大尺寸程序,又存在内存内零头,有浪费

能否按照进程实际内存需求动态划分分区,并允许分区个数可变

这就是可变分区存储管理

3.2.2 可变分区存储管理

可变分区存储管理

按进程的内存需求来动态划分分区

创建一个进程时,根据进程所需主存量查看主存中是否有足够的空闲空间

若有,则按需要量分割一个分区

若无,则令该进程等待主存资源

由于分区大小按照进程实际需要量来确定,因此分区个数是随机变化的

可变分区方式的内存分配示例

可变分区方式的主存分配表

已分配区表与未分配区表,采用链表

起址

长度

标志

起址

长度

标志

4k

6k

J1

10k

36k

未分配

46k

6k

J2

52k

76k

未分配

(a)已分配区情况表

(b)未分配区情况表

 可变分区方式的内存分配

最先适应分配算法

邻近适应分配算法

最优适应分配算法

最坏适应分配算法

可变分区方式的内存回收

地址转换与存储保护

硬件实现机制与动态重定位

可变分区方式的内存零头

固定分区方式会产生内存内零头

可变分区方式也会随着进程的内存分配产生一些小的不可用的内存分区,称为内存外零头

最优适配算法最容易产生外零头

任何适配算法都不能避免产生外零头

移动技术(程序浮动技术)

移动分区以解决内存外零头 需要动态重定位支撑

 移动技术的工作流程

220527  更新

3.3 页式存储管理

3.3.1 页式存储管理的基本原理

页式存储管理的基本原理

分页存储器将主存划分成多个大小相等的页架

受页架尺寸限制,程序的逻辑地址也自然分成页

不同的页可以放在不同页架中,不需要连续

页表用于维系进程的主存完整性

页式存储管理中的地址

页式存储管理的逻辑地址由两部分组成,页号和单元号

页式存储管理的物理地址也有两部分组成:页架号和单元号

地址转换可以通过查页表完成

页式存储管理的地址转换思路

 页式存储管理的内存分配/去配

可用一张位示图来记录主存分配情况

建立进程页表维护主存逻辑完整性

页的共享

页式存储管理能够实现多个进程共享程序和数据

数据共享:不同进程可以使用不同页号共享数据页

程序共享:不同进程必须使用相同页号共享代码页

共享代码页中的(JMP <页内地址>)指令,使用不同页号是做不到

3.3.2 页式存储管理的地址转换

页式存储管理的地址转换代价

页表放在主存:  每次地址转换必须访问两次主存

按页号读出页表中的相应页架号

按计算出来的绝对地址进行读写

存在问题:降低了存取速度

解决办法:利用Cache存放部分页表

页式存储管理的快表

为提高地址转换速度,设置一个专用的高速存储器,用来存放页表的一部分

快表:存放在高速存储器中的页表部分

快表表项:页号,页架号

这种高速存储器是联想存储器,即按照内容寻址,而非按照地址访问

引入快表后的地址转换代价

采用快表后,可以加快地址转换速度

假定主存访问时间为200毫微秒,快表访问时间为40毫微秒,查快表的命中率是90%,平均地址转换代价为 (200+40) *90%+(200+200+40)*10%=260毫微秒

比两次访问主存的时间(400毫微秒)下降了35%

基于快表的地址转换流程

按逻辑地址中的页号查快表

若该页已在快表中,则由页架号和单元号形成绝对地址

若该页不在快表中,则再查主存页表形成绝对地址,同时将该页登记到快表中

当快表填满后,又要登记新页时,则需在快表中按一定策略淘汰一个旧登记项

多道程序环境下的进程表

进程表中登记了每个进程的页表

进程占有处理器运行时,其页表起始地址和长度送入页表控制寄存器

用户作业名

页表始址

页表长度

AB

0010

4

CD

0014

3

EF

0017

7

多道程序环境下的地址转换

3.3.3 页式虚拟存储管理

页式虚拟存储管理的基本思想

把进程全部页面装入虚拟存储器,执行时先把部分页面装入实际内存,然后,根据执行行为,动态调入不在主存的页,同时进行必要的页面调出

现代OS的主流存储管理技术 首次只把进程第一页信息装入主存,称为请求页式存储管理

页式虚拟存储管理的页表

需要扩充页表项,指出: 每页的虚拟地址、实际地址 主存驻留标志、写回标志、保护标志、引用标志、可移动标志

标志位

主存块号

辅助存储器地址

第0页

第n页

页式虚拟存储管理的实现

CPU处理地址

若页驻留,则获得块号形成绝对地址

若页不在内存,则CPU发出缺页中断 OS处理缺页中断

若有空闲页架,则根据辅存地址调入页,更新页表与快表等

若无空闲页架,则决定淘汰页,调出已修改页,调入页,更新页表与快表

页式虚拟存储管理的地址转换

缺页中断的处理流程

3.3.4 页面调度

页面调度

当主存空间已满而又需要装入新页时,页式虚拟存储管理必须按照一定的算法把已在主存的一些页调出去

选择淘汰页的工作称为页面调度 选择淘汰页的算法称为页面调度算法

页面调度算法设计不当,会出现(刚被淘汰的页面立即又要调入,并如此反复)

这种现象称为抖动或颠簸

缺页中断率

假定进程P共n页,系统分配页架数m个

P运行中成功访问次数为S,不成功访问次数为F,总访问次数A=S+F

缺页中断率定义为:f=F/A

缺页中断率是衡量存储管理性能和用户编程水平的重要依据

影响缺页中断率的因素

配给进程的页架数:可用页架数越多,则缺页中断率就越低

页面的大小:页面尺寸越大,则缺页中断率就越低

用户的程序编制方法:在大数据量情况下,对缺页中断率也有很大影响

用户编程的例子

程序将数组置为“0”,假定仅分得一个主存页架,页面尺寸为128个字,数组元素按行存放,开始时第一页在主存

OPT页面调度算法

理想的调度算法是:当要调入新页面时,首先淘汰以后不再访问的页,然后选择距现在最长时间后再访问的页

该算法由Belady提出,称Belady算法,又称最佳算法(OPT)

OPT只可模拟,不可实现

先进先出FIFO页面调度算法

总是淘汰最先调入主存的那一页,或者说主存驻留时间最长的那一页(常驻的除外) 模拟的是程序执行的顺序性,有一定合理性

最近最少用LRU页面调度算法

淘汰最近一段时间较久未被访问的那一页,即那些刚被使用过的页面,可能马上还要被使用到

模拟了程序执行的局部属性,既考虑了循环性又兼顾了顺序性 严格实现的代价大(需要维持特殊队列)

LRU算法的模拟实现

每页建一个引用标志,供硬件使用

设置一个时间间隔中断:中断时页引用标志置0

地址转换时,页引用标志置1

淘汰页面时,从页引用标志为0的页中间随机选择

时间间隔多长是个难点

最不常用LFU页面调度算法

淘汰最近一段时间内访问次数较少的页面,对OPT的模拟性比LRU更好

基于时间间隔中断,并给每一页设置一个计数器

时间间隔中断发生后,所有计数器清0

每访问页1次就给计数器加1

选择计数值最小的页面淘汰

 时钟CLOCK页面调度算法

采用循环队列机制构造页面队列,形成了一个类似于钟表面的环形表

队列指针则相当于钟表面上的表针,指向可能要淘汰的页面

使用页引用标志位

CLOCK算法的工作流程

页面调入主存时,其引用标志位置1

访问主存页面时,其引用标志位置1

淘汰页面时,从指针当前指向的页面开始扫描循环队列

把所遇到的引用标志位是1的页面的引用标志位清0,并跳过

把所遇到的引用标志位是0的页面淘汰,指针推进一步

220528  更新

3.3.5 反置页表

反置页表的提出

页表及相关硬件机制在地址转换、存储保护、虚拟地址访问中发挥了关键作用

为页式存储管理设置专门硬件机构

内存管理单元MMU:CPU管理虚拟/物理存储器的控制线路,把虚拟地址映射为物理地址,并提供存储保护,必要时确定淘汰页面

反置页表IPT:MMU用的数据结构

反置页表的基本设计思想

针对内存中的每个页架建立一个页表,按照块号排序

表项包含:正在访问该页框的进程标识、页号及特征位,和哈希链指针等

用来完成内存页架到访问进程页号的对应,即物理地址到逻辑地址的转换

反置页表的页表项

页号:虚拟地址页号

进程标志符:使用该页的进程号(页号和进程标志符结合起来标志一个特定进程的虚拟地址空间的一页)

标志位:有效、引用、修改、保护和锁定等标志信息

链指针:哈希链

基于反置页表的地址转换过程

MMU通过哈希表把进程标识和虚页号转换成一个哈希值,指向IPT的一个表目

MMU遍历哈希链找到所需进程的虚页号,该项的索引就是页架号,通过拼接位移便可生成物理地址

若遍历整个反置页表中未能找到匹配页表项,说明该页不在内存,产生缺页中断,请求操作系统调入

反置页表下的地址转换示意

未显示选择淘汰页面,同样由MMU完成

3.4 段式存储管理

3.4.1 段式存储管理

段式程序设计

每个程序可由若干段组成,每一段都可以从“0”开始编址,段内的地址是连续的

分段存储器的逻辑地址由两部分组成 段号:单元号

程序的分段结构

段式存储管理的地址转换流程

段的共享

通过不同进程段表中的项指向同一个段基址来实现

对共享段的信息必须进行保护,如规定只能读出不能写入,不满足保护条件则产生保护中断

3.4.2 段式虚拟存储管理

段式虚拟存储管理的基本思想

把进程的所有分段都存放在辅存中,进程运行时先把当前需要的一段或几段装入主存,在执行过程中访问到不在主存的段时再把它们动态装入

段式虚拟存储管理中段的调进调出是由OS自动实现的,对用户透明

与段覆盖技术不同,它是用户控制的主存扩充技术,OS不感知

段表的扩充

特征位: 00(不在内存)01(在内存)11(共享段)

存取权限: 00(可执行)01(可读)11(可写)

扩充位: 0(固定长)1(可扩充)

标志位: 00(未修改)01(已修改)11(不可移动)

段式虚拟存储管理的地址转换

3.4.3  段页式存储管理

段页式存储管理的基本思想

段式存储管理可以基于页式存储管理实现

每一段不必占据连续的存储空间,可存放在不连续的主存页架中

能够扩充为段页式虚拟存储管理 装入部分段,或者装入段中部分页面

段页式存储管理的段表和页表

段页式存储管理的地址转换

段页式虚拟存储管理的地址转换

更新中...... 

操作系统教程(第6版) 预习笔记相关推荐

  1. 费翔林, 骆斌. 操作系统教程(第五版).第121页28、29题笔记

    参考文献:[1]费翔林, 骆斌. 操作系统教程(第五版) [M]. 北京:高等教育出版社,2014. 题目:某多道程序系统采用可变分区存储管理,供用户使用的内存空间为200KB,磁带机5台.采用静态方 ...

  2. 费翔林, 骆斌. 操作系统教程(第五版).Page118第19题笔记

    参考文献:[1]费翔林, 骆斌. 操作系统教程(第五版) [M]. 北京:高等教育出版社,2014. 题目:在单处理器多到分时系统中,有三道作业依次提交,其提交时刻及运行时间分别为 作业 作业提交时刻 ...

  3. 《Python基础教程(第3版)》笔记:第8章异常

    <Python基础教程(第3版)>笔记:异常 重点 第8章 异常 异常对象未被处理(或捕获)时,程序将终止并显示一条错误信息:traceback 每个异常都是某个类的实例, 如何创建异常 ...

  4. Python基础教程(第3版)》笔记:第6章抽象

    Python基础教程(第3版)>笔记:第6章抽象 **斐波那契数列:**每个数都是前两个数的和. fibs = [0,1] for i in range(8):fibs.append(fibs[ ...

  5. 数据库概论(王珊 萨师煊著)第5版 预习笔记

    更新中 本专栏是博主在大学浪了近两年啥也没学后重学计算机专业时写的,方便个人学习和复习,本人菜鸟一枚,如有错误或能优化的地方欢迎指正,也特别欢迎交流学习. motto共勉:心之所向,素履以往:做喜欢的 ...

  6. HTML5与CSS3基础教程第八版学习笔记16-21章

    第十六章,表单 HTML5引入了新的表单元素.输入类型和属性,以及内置的对必填字段.电子邮件地址.URL以及定制模式验证. 元素: <input type="email"&g ...

  7. Python基础教程(第3版)读书笔记:第3章 使用字符串

    相关阅读:python字符串-内建函数.转义字符.运算符 第3章 使用字符串 关于字符串与字符串的编码,可参考:廖雪峰的文章 Unicode ( https://www.unicode.org/ ) ...

  8. 操作系统教程第六版——第四章课后作业

    一.简答题. (4)I/O控制方式可分为哪些类型?各类控制方式的优缺点有哪些? I/O控制方式类型:轮询方式.中断方式.DMA方式.通道方式. 轮询方式 优点:实现技术比较简单,易于理解. 缺点:处理 ...

  9. HTML5与CSS3基础教程第八版学习笔记7~10章

    第七章,CSS构造块 CSS里有控制基本格式的属性(font-size,color),有控制布局的属性(position,float),还有决定访问者打印时在哪里换页的打印控制元素.CSS还有很多控制 ...

  10. 操作系统教程第六版——第三章课后作业

    1.思考题 (1)什么是逻辑地址?什么是物理地址? (2)什么是地址转换?哪些方法可以实现地址转换? (3)什么是存储保护?在分区存储管理中如何实现分区的存储保护? (4)在页式存储器中实现程序共享时 ...

最新文章

  1. 数据库归档及热点库_postgresql连续归档及时间点恢复的操作
  2. 6 种激活函数核心知识点,请务必掌握!
  3. 研究一个新的功能的时候,如何获取该资源的文档
  4. windows找不到文件javaw_windows电脑上,怎么快速找文件?
  5. 语言怎么得到直流电压并采样_交流电AC如何转换成直流电DC?
  6. 远程mysql定时删除数据_mysql定时备份数据库 删除历史文件 将备份数据库传送到另外服务器...
  7. android 勿扰模式代码,android机勿扰模式代码是什么
  8. 5233杨光--第十四周学习总结
  9. 改善C#程序的建议2:C#中dynamic的正确用法
  10. linux的boot可用fat格式吗,u-boot中的FAT命令
  11. 一级计算机办公软件,计算机一级与高级办公软件
  12. PDA开发从入门到精通
  13. leetcode 741. 摘樱桃
  14. 访问服务器本地端口/网址
  15. 万洲金业:投资现货黄金的收益与风险如何平衡?
  16. 英伟达面向开发者群体建立深度学习课程
  17. Go 语言中的字符串拼接
  18. 含有单相铁芯变压器的铁磁混沌电路的分析及控制
  19. Problem A: 农夫果园
  20. 三步集成美图软件背景虚化景深效果【iOS篇】

热门文章

  1. Java基础-数组01
  2. 软件项目量化管理(CMMI高成熟度)实践经验谈——之概述篇
  3. 2329: 小新同学爱加密
  4. 干货 | 4步带你完成私有云盘搭建
  5. 5. DR与BDR选举
  6. idea打包jar包,运行后显示 没有主清单属性
  7. java pem 读取_java读取微信Pem格式证书对字段加密
  8. 透过分布地图,看我中华大地!
  9. [RK356x] [Firefly-Ubuntu] 1min教你在Ubuntu系统安装GCC开发工具
  10. 统计学习方法总结、应用对比