• 操作系统读书笔记02


    第二章 处理机管理

    1) 进程是指在系统中能独立运行并作为资源分配的基本单位,它是由一组机器指令,数据和堆栈等组成的,是一个能独立运行的活动实体,多个进程可以并发执行和交换信息

    2) 程序是一个在时间上严格有序的指令集合

    3) 在单道程序设计下,系统具有的特点

    a. 资源的独占性

    b. 执行的顺序性

    c. 结果的再现性

    在多道程序设计环境下,系统具有:

    a. 执行的并发性

    b. 相互的制约性

    c. 状态的多变性(不可再现性)

    5) 并发、并行、串行

    a. 从宏观上看是并行,同时在内存的多个程序都在执行着,互不影响

    b. 从微观上看是串行,由于CPU在任何时刻只能执行一个程序,因此这些程序轮流占用CPU,交替执行着

    c. 我们把“逻辑上相互独立的程序,在执行时间上相互重叠,一个程序的执行还没有结束,另一个程序的执行已经开始”的这种特性称为程序执行的并发性

    6) 对进程的描述

    a. 进程是程序的一次执行过程

    b. 进程的运行活动是建立在某个数据集合上的

    c. 进程是在获得资源的基础上从事自己的运行活动

    7) 进程的特征

    结构特征、动态性、并发性、独立性、异步性

    进程是一个动态的概念

    不同进程可以执行同一个程序

    每一个进程都有自己的生命周期

    进程之间具有并发性,进程间会相互制约

    8) 程序和进程的区别

    a. 程序是指令的有序集合,是静态的,进程是程序在处理机上的一次执行过程,是动态的。程序的存在时永久的,而进程是有生命周期的,它因创建而产生,因调度而运行,因撤销而消亡

    b. 进程是程序的一次执行过程,程序是进程赖以存在的基础

    c. 进程具有并发性,而程序并发执行会失去可再现性

    d. 进程是系统分配和调度的独立单位,进程由程序、数据集合和进程控制块组成

    9) 系统进程的使用级别高于用户进程

    10) 进程的状态

    创建、就绪、运行、阻塞

     

    a. 一个进程从运行状态变为就绪状态,一定会引起另一个进程从就绪变为运行

    b. 一个进程从运行状态变为阻塞状态,一定会引起另一个进程从运行状态变为就绪状态;这种因果变迁绝对不可能发生,因为一个CPU不可能真正同时运行两个进程

    c. 一个进程从阻塞状态变为就绪状态,不一定会引起另一个进程从就绪状态变为运行状态

    11) 进程的三个组成部分:程序、数据集合、进程控制块(PCB)

    12) 进程控制块是进程存在的唯一标示

    a. 作用:通过PCB,是原来不能独立运行的程序,成为一个可以独立运行的基本单位,一个能够并发执行的进程

    b. 其中的信息:进程标识符、处理机状态、进程调度信息、进程控制信息

    13) 操作系统中把做出“决定把CPU分配给谁用”的程序称为“进程调度程序”

    14) 常用的进程调度算法:

    a. 先来先服务调度算法

    b. 时间片轮转调度算法:为就绪队列中的每一个进程分配一个称为“时间片”的时间段,它是允许该进程占用CPU的最长时间长度

    c. 优先数调度算法:优先数高的先调度,若相同则先来先服务

    d. 多级队列调度算法:时间片调度和优先数调度算法的结合

    15) 进程调度程序的主要功能

    a. 记录系统中所有进程的有关情况,比如进程的当前状态,优先数等

    b. 确定分配处理机的算法

    c. 完成处理机的分配

    d. 完成处理机的回收

    16) 把处理剂分配给进程后,还有一个允许它占用多长时间的问题,有两种处理方式,一种是不可剥夺方式,另一种是剥夺方式

    17) 为了对进程进行有效的管理和控制,操作系统要提供若干基本的操作以便能创建进程、撤销进程、阻塞进程、唤醒进程,把具有这种特性的程序称为“原语”,原语的不可分割性,通常利用屏蔽中断的方法

    18) 程序接口:操作系统在程序一级给予用户的支持

    命令接口:操作系统在控制一级给予用户的支持

    19) CPU指令系统中的指令分为两类

    a. 操作系统和用户都能使用的指令,非特权指令

    b. 只能由操作系统使用的指令,特权指令

    20) CPU的两种工作状态:管态、目态

    a. 当CPU处于管态时,可以执行包括特权指令在内的一切机器指令

    b. 当CPU处于目态时,禁止使用特权指令

    21) 访管指令

    系统调用命令的程序属于操作系统,它应该在管态下执行

    用户程序只有通过计算机系统提供的访管指令才能实现由目态转为管态,进而调用这些功能程序的目的

    访管指令属于非特权指令,功能是执行它就会产生一个软中断,促使中央处理机由目态转为管态,进入操作系统并处理该中断

     

     

    22) 从功能上看,可以把系统调用命令分为五大类:

    a. 一是关于进程管理和控制的

    b. 二是关于外部设备输入/输出的

    c. 三是关于磁盘文件管理的

    d. 四是关于访问系统信息的

    e. 五是关于存储申请与释放的

    23) 从形式上看,操作系统提供的系统调用与一般的过程调用(子程序调用)相似,但它们有着明显 的区别

    作业管理:

    1) 把一个作业提交给系统时,系统要开辟一个作业控制块JCB,以便随时记录作业的信息

    2) 被系统接纳的作业,在没有投入运行之前,称为后备作业。这些作业存放在辅助存储器中,并由他们的JCB连接在一起,形成所谓的后备作业队列

    3) 作业调度:按照某种规则,从后备作业队列中挑选作业进入内存,参与处理机的竞争,这个过程称为作业调度

    4) 作业的状态:

    a. 提交状态:进入辅助存储器,作业的信息还没有全部进入系统,系统也没有为它建立JCB,感知不到它的存在

    b. 后备状态:建立起了JCB,并将JCB排到后备作业队列中

    c. 运行状态:(阻塞、运行、就绪)都属于运行状态

    d. 完成状态:也是一个暂时性的状态

     

    5) 作业的调度算法:

    a. 先来先服务:以作业进入后备作业队列的先后次序

    周转时间=完成时间-到达时间

    注:若分配一定的内存,且不允许作业在内存中移动时,要考虑所占内存大小

    b. 短作业优先:从后备作业队列中挑选所需CPU时间最少且资源能够得到满足的作业

    注:如果所有作业“同时”到达后备作业队列,那么采用短作业优先的作业调度算法总会获得最小的平均周转时间

    c. 响应比高着优先:先调度响应比高着   

    响应比=已等待时间/所需CPU时间

    6) 在确定作业调度算法时应注意的问题:

    a. 公平对待后备作业队列中的每一个作业,避免无故或无限期的延迟一个作业的执行,使各类用户感到满意

    b. 使进入内存的多个作业,能均衡地使用系统中的资源,避免出现有的资源没有作业使用,有的资源却被多个作业争抢的“忙闲”不均的情况

    c. 力争在单位时间内为尽可能多的作业提供服务,提高整个系统的吞吐能力

    第三章 存储管理

    1)  计算机操作系统的存储器:CPU寄存器,主存,辅存

    2) 在考虑计算机存储器的设计时,必须顾及

    a. 价格、容量、访问时间

    b. 存取时间越快,价格越高,容量越小

    3) 高速缓存:介于寄存器和存储器之间的存储器,主要用于备份主存中较常用的数据,以减少处理机对主存储器的访问次数,提高程序执行速度

    高速缓存容量远大于寄存器,比内存约小两到三个数量级左右

    为了缓和内存与处理机(CPU)速度的不匹配

    4) 字(字长):一次传送数据的长度{16、32、64…}依系统而定

    (主)内存储器和高速缓存之间是以“块”为单位传递数据的

    高速缓存与CPU之间则以“字”为单位传递数据

    5) 存储器管理的功能:

    a. 内存的分配与回收

    b. 存储的保护和共享

    c. 地址定位

    d. 存储扩充

    6) 内存储器由一个个存储单元组成,一个存储单元可存放若干个二进制的位(bit),8个二进制位被称为一个字节(byte)

    7) 在操作系统中,把用户程序指令中的相对地址变为所在绝对地址空间中的绝对地址的这个过程,称为地址重定位

    8) 地址的定位方式:

    a. 绝对定位方式:是在程序装入内存之前,程序指令中的地址就已经是绝对地址,已经正确地反映了它将要进入的存储区的位置,不适用于多道程序设计环境

     

    b. 静态重定位(多道程序环境下)

    根据内存的具体情况将装入模块装入到内存的适当位置,会使装入模块中的所有逻辑地址与实际装入内存后的物理地址不同。

    这种地址重定位是在程序执行前完成的

    c. 动态重定位

    将地址重定位的时间推迟到程序执行时再进行

    所以装入内存的所有地址都仍是逻辑地址

    连续分配存储方式 :

    1) 单一连续分配(静态重定位)

    a. 单道程序环境下,总体上把内存储器分为两个分区:系统区和用户区

    b. 系统总是把整个用户区分配给一个用户使用,把分配给了用户但未被使用的区域称为“内部碎片”

    c. 单一连续分区存储管理的缺点:

    a) 由于每次只能有一个进入内存,故它不适用于多道程序设计,工作效率不高,资源利用率低

    b) 只要作业比用户区小,在用户区里就会形成碎片,造成资源浪费

    c) 大作业无法在小内存中运行

    d. 为缓解大作业小内存的情况提出覆盖技术和对换技术

    a) 覆盖技术:允许一个作业的若干个程序段使用同一个存储区

    b) 对换技术:以辅助存储器作为内存的后援(硬盘)

    2) 固定分区存储管理(静态):分区数目、大小固定

    a. 预先把内存储器中可供分配的用户区划分成若干个连续分区,每个分区的尺寸可以相同,可以不同。每个分区中只允许装入一个作业运行,系统可以为每一个分区设置一个后备作业队列,一个作业到达时,总是进入到“能容纳该作业的最小分区”的那个后备队列中去排队

     

     

    b. 分区的分配与释放方案:

    a) 在队列中挑选出第一个可容纳的作业进入

    i. 优点:选择效率高

    ii. 缺点:小作业->大内存

    b) 在这个队列中进行搜索,找到这个分区能够容纳的最大的那个作业,让它进入运行

    i. 优点:存储空间利用率高,产生内部碎片尽可能的小

    ii. 缺点:选择效率低

    c) 在系统中至少保留一个小的分区,以避免因为运行小作业而被迫分配打分去的发生

    d) 为具体管理各个分区,并建立一个“分区分配表”,其中包括每个分区的起始位置大小及状态

    c. 特点

    a) 它是最简单的,具有“多道”色彩的存储管理方案,提高资源利用率

    b) 当把一个分区分配给某个作业时,该作业的程序将一次性的全部装入到分配给他的连续分区里

    c) 静态重定位,在分区内的程序不能随意移动

    d. 缺点

    a) 进入分区的作业尺寸不见得与分区的长度相吻合,势必产生内部碎片,引起资源的浪费

    b) 如果到达作业的尺寸比任何一个分区的长度都大,它就无法运行

     

    3) 可变分区存储管理:

    分区的边界划分随作业的需求可变,分区的数目随着进入作业的多少可变,消灭了内部碎片(可能会产生内部碎片)。

    外部碎片是指无法分配给用户使用的存储区

    a. 基本思想:在作业要求装入内存储器时,如果当时内存储器中有足够的存储空间满足该作业的需求,就划分出一个与作业相对地址空间同样大小的分区,并分配给它

     

    b. 要解决的问题

    a) 采用一种新的地址重定位技术,动态地址重定位,以便程序能够在内存储器中随意移动,为空闲区的合并提供保证

    b) 记住系统中各个分区的使用情况

    c) 给出分区分配算法

    c. 地址动态重定位过程(在程序执行时动态完成)

    a) 为实施地址动态重定位,硬件要增加一个地址转换机构,这个机构一般由地址转换线路和一个定位寄存器(基址寄存器)组成

    b) 地址的静态重定位和动态重定位的比较

    i. 地址转换时刻:静态重定位是在程序运行之前完成地址转换的,而动态重定位是在程序执行时完成

    ii. 谁来完成任务:静态重定位是由软件完成地址转换工作的,而动态重定位则是由一套硬件提供的地址转换机构来完成

    iii. 完成的形式:静态重定位是在装入时一次性集中地把程序指令中所有要转换的地址加以转换;而动态重定位则是每执行一条执行时,就对其地址加以转换

    iv. 完成的结果:实施静态重定位,原来的指令地址部分被修改了,而动态重定位只是按照所形成的地址去执行这条指令,并不对指令本身做任何修改

    d. 空闲区的合并

    e. 分区的管理

    a) 表格法:一张已分配表,一张空闲表(分区号,分区大小,分区起始地址、状态)

    b) 单链表法:一个存放该分区的长度,另一个存放它下一个空闲分区的起始地址

    c) 双链表法:还存放上一个空闲区起始地址

    f. 空闲分区的分配算法

    a) 最先适应算法:要求空闲分区链以地址递增的次序链接(对大作业不利)

    b) 最佳适应算法:每次为作业分配内存时,总是把能满足要求,又是最小的空闲分区分配给作业,避免“大材小用” 按其容量

    c) 最坏适应算法:挑选一个最大的空闲区,从中分割一部分存储空间给作者使用,以至于存储器中缺乏大的空闲分区,照顾中小作业的需求

    d) 循环首次适应算法:从上次分配的位置之后开始查找

    g. 可变分区存储管理的特点

    a) 作业一次性的全部装入到一个连续的存储分区中

    b) 分区是按照作业对存储的需求划分的,所以不会出现内部碎片

    c) 为了确保作业能够在内存中移动,要有硬件的支持,实行指令地址的动态重定位

    h. 缺点:

    a) 仍然没有解决小内存裕兴大作业的问题,只要作业的存储需求大于系统提供的整个用户区,该作业就无法投入运行

    b) 虽然避免了内部碎片,但有可能出现极小的翻去暂时分配不出去的情形,引起了外部碎片,

    c) 为了形成大的分区,可变分区存储管理通过移动程序来达到分区合并的目的,然而程序的移动是很花费时间的,增加了系统在这方面的投入与开销

    4) 分页式存储管理:

    需要两次访问内存,目的是提高内存利用率

    a. 分页式储存管理是将固定分区方法与动态重定位技术结合在一起,需要硬件支持

    基本思想:首先把整个内存储器划分成大小相等的许多分区,每个分区称为“一块”

    b. 在分页式存储管理中,块是存储分配的单位

    a) 用户作业仍然是相对于“0”进行编址,形成一个连续的相对地址空间

    b) 用户程序相对地址空间中的每一个分区被称为“页”,用户相对地址空间中的每一个相对地址,都可以用(页号,页内位移)这样的数对来表示

    i. 物理地址=页的大小*页号+页内位移

    ii. 页号=相对地址/块尺寸

    iii. 页内位移=相对地址%块尺寸

    c. 页与块对应关系表称为“页表”

    a) 快速寄存器组单独起名为“相联寄存器”,简称“快表”

    b) 快表与页表联合工作,先查找快表,若无再查找页表并把数据写入快表

    c) (访问页表时间+访问一次内存时间)*命中率+访问快表时间*命中率=平均内存存取时间

    d) 页面尺寸大多选在512byte到64kb之间

    d. 特点:

    a) 内存储器实现被划分成相等尺寸的块,它是进行存储分配的单元

    b) 用户作业的相对地址空间按照块的尺寸划分成页,这是在系统内部进行的,用户感觉不到

    c) 相对地址空间中的页可以进入内存中的任何一个空闲块,并且分页式存储管理实行的是动态重定位,因此它打破了一个作业必须占据连续的存储空间的限制,作业在不连续的存储区里,也能够得到正确的运行

    e. 缺点:

    a) 平均每一个作业要浪费半页大小的存储块,会产生内部碎片

    b) 作业虽然可以不占据连续的存储区,但是每次仍然要求一次全部进入内存。因此,如果作业很大,其存储需求大于内存,仍然存在小内存不能运行大作业的问题

    5) 分段式存储管理:

    a. 目的:方便用户使用编程,存储共享,存储保护,动态增长,动态链接

    b. 要求用户将自己的整个作业程序以多个相互独立的称为“段”的地址空间提交给系统,每个段都是一个从“0”开始的一维地址空间,长度不一,操作系统按照段长为作业分配内存空间

    c. 段表:段号、段长、该段在内存的基址(起始地址){段号,段内位移}

    a) 物理地址=段的起始地址+段内地址

    b) 逻辑地址=段号+段内地址

    d. 分段与分页的区别:

    a) 页是信息的物理单位,段是信息的逻辑单位

    i. 分页提高内存的利用率,仅仅是系统管理上的需要,用户不可见。段是信息的逻辑单位,它通常包括的是一组意义相对完整的信息,分段段的目的主要在于能更好地满足用户的需要

    b) 页的尺寸由系统决定,段的尺寸因段而异

    i. 段的长度取决于用户编写的程序,通常由编译程序在对源程序进行编译时根据信息的性质来划分

    c) 页的地址空间是一维的,段的地址空间是二维的

    i. 分页:用户必须通过链接编辑程序,把各程序段链接成一个相对于0编址的线性空间,程序中是通过地址编号来确定空间中的位置的。因此用户向系统提供的是一个一维的逻辑地址空间。

    ii. 分段:用户不把各程序段链接成一个相对于0进行编制的一维线性空间,各程序段之间是通过{段号,段内位移}进行访问的。因此,用户向系统提供的是一个二维的逻辑地址空间

    6) 段页式存储管理:(三次访问内存)

    a. 基本原理:分段和分页原理的结合,即先将用户程序分成若干个段,再把每个段分成若干个页,并为每一个段赋予一个段名。

    a) 作业地址空间结构:主程序段,子程序段,数据段

    b) 地址结构:段号,段内页号,页内地址

    b. 系统设置了位示图、段表和页表,记录主存的使用情况和作业分配情况

    a) 逻辑地址=段号+页号+页内位置

    b) 块号*块长+页内地址

    c. 虚拟存储器:是具有请求调入功能和置换功能,能从逻辑上对内存容量加以扩充的一种存储器系统,其逻辑容量由内存容量和外存容量之和所决定,其运行速度接近于内存速度。

    a) 特征:多次性、对换性、虚拟性、离散性

    d. 请求分页式存储管理(需要硬件支持)

    a) 是基于分页式存储管理的一种虚拟存储器

    “请求分页式”是指当程序运行中需要某一页时,再把它从辅助存储器里调入内存使用,解决了小内存与大作业的矛盾,但会产生内部碎片

    b) 缺页中断是指在指令执行期间,若发现所要访问的指令或数据不在内存时,便立即产生和处理缺页中断信号,以便能及时将所缺之页面调入内存

    e. 缺页中断与一般中断的区别 {缺页中断率=缺页次数/页面总数}

    a) 缺页中断是在执行一条指令中间时产生的中断,并立即去处理,一般中断则是一条指令执行完毕后,当发现有中断请求时,才去响应和处理

    b) 缺页中断处理完成后,仍返回到原指令去执行,因为那条指令并未执行;而一般中断则是到下一条指令去执行,因为上一条指令已经执行完毕了

    f. 影响缺页中断次数的因素:

    a) 分配给作业的内存块数

    b) 页面尺寸

    c) 程序的实现

    7) 页面淘汰(置换)算法:

    页面淘汰是由缺页中断引起的,但缺页中断不见得一定引起页面淘汰

    a. 先进先出页面淘汰(置换)算法(FIFO)

    淘汰最先进入内存的页面 (3个内存块都为空,3次缺页中断)

    b. 最近最久未用页面淘汰(置换)算法(LRU)

    总是把最长时间未被访问过的页面淘汰出去 (需要寄存器和栈)

    c. 最近最少用页面淘汰(置换)算法(LFU)

    总是把当前使用的最少的页面淘汰出去

    为每个内存中的页面设置一个计数器(移位寄存器) 加1

    d. 最优(最佳)页面淘汰(置换)算法(OPT)

    把以后不再使用的或最长时间内不会用到的页面淘汰出去(理论上,不会实现)

    注:对于FIFO页面淘汰算法,有时增加分配给作业的可用内存块数,它的缺页次数反而上升,通常称为异常现象

  • 相关阅读:
    JavaScript高级程序设计学习笔记事件(一)(事件流、事件处理程序/事件侦听器)
    JavaScript高级程序设计学习笔记事件(二)(事件对象DOM中的事件对象/IE中的事件对象/跨浏览器的事件对象)
    闭包学习小记
    JavaScript高级程序设计学习笔记DOM(一)(节点层次Node类型节点关系/操作节点)
    打印网页内容
    尝试写第一个js插件 图片轮播
    JavaScript高级程序设计学习笔记面向对象的程序设计(一) 创建对象 (工厂模式、构造函数模式、原型模式等)
    jQuery二维码插件 jquery.qrcode.js
    ajax请求地址后加随机数防止浏览器缓存
    location.href 和document.referrer、event.keyCode、setTimeout 与setInterval、前置与后置型递增递减操作符
  • 原文地址:https://www.cnblogs.com/XiaoGao128/p/14917572.html
Copyright © 2020-2023  润新知