操作系统复习(结合09,10,11年计算机408考研题等)

1.4 操作系统基本特征

并发、共享、虚拟、异步。

  • 并发与共享
    二者是多用户(任务)OS的两个最基本特征,互为对方存在的条件。

    • 并发:2~多个事件在同一时间间隔内发生。(宏观上同时发生,微观上交替发生)

    • 共享:

      • 互斥共享方式:一段时间只允许一个进程访问资源
      • 同时共享方式:多个,但是是宏观上“同时”
  • 虚拟:

    • 时分复用技术:令设备(比如处理器)在为a服务的空闲时间服务b
    • 空分复用技术:利用设备(存储器)的空闲时间存放其他程序,提高内存利用率。
  • 异步

    • 进程是以人民不可预知的速度向前推进的
      但若在OS中配置完善的进程同步机制,且运行环境相同,则作业即便经过多次运行,也都会是完全相同的结果。因此异步运行方式被允许。

1.4.2 操作系统内核

1. 基本支撑功能

中断处理、时钟管理、原语操作(必须一气呵成,要么不做要么全做,不允许中断)。

2.资源管理功能

进程管理(进程调度、原语操作)、存储器管理(逻辑地址变换成物理地址,内存分配回收)、设备管理。通常都在内核里。

1.4.3处理机的双重工作模式

内核态、用户态。

1.5操作系统的主要功能

1.5.1处理机管理功能

进程控制、进程同步、进程通信、调度

  • 进程同步:对多个进程的运行进行协调。2种协调方式。
    1. 进程互斥方式:指各进程访问临界资源时采用互斥方式。
    2. 进程同步方式:在互相合作完成共同任务的各进程间,由同步机构协调它们的执行次序。比如说,给临界资源配锁,最常用的机制是信号量机制

3.2调度算法对比及相关选择题

先来先服务(FCFS)、短作业优先调度(SJF)、优先级调度、轮转调度(RR)、高响应比优先算法(HRRN)。
原理基本上看一下就懂了,主要是几个算法的对比,比如说会不会产生饥饿现象。
在这里插入图片描述

在这里插入图片描述
(以上图片是b站王道考研课的截图)

2009

在这里插入图片描述

  • 24.解析:
    在高响应比优先调度算法中,选出响应比最高的进程投入执行,响应比R定义如下:响应比R=(等待时间+执行时间)/执行时间。它综合考虑 了每个进程的等待时间和执行时间,对于同时到达的长进程和短进程,短进程会优先执行,以提高系统吞吐量;而长进程的响应比可以随等待时间的增加而提高,不会产生进程无法调度的情况。
2011

在这里插入图片描述

    1. 解析:
      高响应比优先算法在等待时间相同的情况下,作业执行时间越短则响应比越高, 满足短任务优先。随着长任务的等待时间增加, 响应比也会变大, 执行机会也就增大,所以不会发生饥饿现象。先来先服务和时间片轮转不符合短任务优先,非抢占式短任务优先会产生饥饿现象。

3.5 死锁选择题

在这里插入图片描述

    1. 解析:这种题用到组合数学中鸽巢原理的思想。 考虑最极端情况,因为每个进程最多需要 3 台打印机,如果每个进程已经占有了2台打印机,那么只要还有多的打印机,总能满足一个进程达到3台的条件,然后顺利执行,所以将 8台打印机分给K个进程,每个进程有2台打印机,这个情况就是极端情况,K为4。

位示图

eg1:若计算机系统的字长为128位,磁盘的容量为2048GB,物理块的大小为8MB,假设文件管理系统采用位示图(bitmap)法记录该计算机系统磁盘的使用情况,那么位示图的大小需要( )个字。

A.1024 B.2048 C.4096D.8192

答案解析:

磁盘容量2048G,物理块大小8MB,则磁盘共有2048GB/8MB=256 * 2^10个物理块。
采用位示图记录磁盘使用情况,每个磁盘块占据1bit,共需要256 * 2 ^ 10bit。
每128个bit为为1个字,则共需要256*2^10/128个字,即 2 ^ 11个字。

eg2:一磁盘有64000块,块号记为1~64000,现用2000个32位的字作该盘位示图,问第59999块对应于位示图中第几字的第几位(字、位均从0开始);第1599字的第17位对应于第几块?
根据题目画图:
在这里插入图片描述

(1)
在这里插入图片描述
(2)在这里插入图片描述

磁盘调度

2009

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

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
答案:A

动态分区

2010
在这里插入图片描述
在这里插入图片描述
注意是最佳适应分配。

分段存储,分页存储

举例介绍:

在这里插入图片描述
可以绘制一个这样的表格:
在这里插入图片描述

FIFO:

在这里插入图片描述

LRU(最近最少使用):

在这里插入图片描述

CLOCK(简单的最近未用,不考虑页面是否被修改):

给每个页面设置访问位,需要淘汰一个页面的时候,扫描页面,访问位为0的将其换出,如果是1,将其置为0,暂不换出。如果第一次扫描所有页面的访问位均为1,扫描一轮后就都变成了0,第2次扫描必能找到一个访问位为0的页面替换。具体的直接看10年的应用题。

2010

在这里插入图片描述

    1. 解析:在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(3)每页的访问位都是1,一轮扫描过后访问位都变成0,因为当前指向2号页,第二轮扫描的第一个是2号页,因为它的访问位变成0,可以替换掉,对应页框号就是2。物理地址计算方法和(2)一样。答案是0BCAH。

2009

在这里插入图片描述

    1. 解析:C
      分段存储管理的逻辑地址分为段号和位移量两部分,段内位移的最大值就是最大段长。地址长度为32位,段号占8位,则位移量占32-8=24位,故最大段长为2^24 B。

在这里插入图片描述
(1)根据页式管理的工作原理,应先考虑页面大小,以便将页号和页内位移分解出来。页面大小为4KB, 即2^12, 则得到页内位移占虚地址的低12位,页号占剩余高位。可得三个虚地址的页号P如下(十六进制的一位数字转换成4位二进制,因此,十六进制的低三位正好为页内位移,最高位为页号):

2362H: P = 2, 访问快表10ns,因初始为空, 访问页表100ns得到页框号, 合成物理地址后访问主存100ns, 共计10ns + 100ns + 100ns = 210ns。

1565H: P = 1, 访问快表10ns, 落空,访问页表100ns落空, 进行缺页中断处理10^8 ns, 访问快表10ns, 合成物理地址后访问主存100ns, 共计 10ns + 100ns + 10^8ns + 10ns + 100ns =100000220 ns。

25A5H: P=2, 访问快表, 因第一 次访问已将该页号放入快表, 因此花费10ns便可合成物理地址, 访问主存100ns, 共计10ns + 100ns =110ns。

(2)当访问虚地址1565H时,产生缺页中断,合法驻留集为2, 必须从页表中淘汰一个页面,根据题目的置换算法, 应淘汰0号页面, 因此 1565H 的对应页框号为101H。 由此可得1565H的物理地址为101565H。

磁盘块相关计算

2010

在这里插入图片描述

    1. 解析:
      每个磁盘索引块和磁盘数据块大小均为256B, 每个磁盘索引块有256/4=64个地址项。因此,4个直接地址索引指向的数据块大小为4x256B; 2个一级间接索引包含的直接地址索引数为2x(256/4), 即其指向的数据块大小为2x(256/4)x256B。1个二级间接索引所包含的直接地址索引数为(256/4)x(256/4), 即其所指向的数据块大小为(256/4)x(256/4)x256B。即7个地址项所指向的数据块总大小为4x256 + 2x(256/4)x256 + (256/4)x(256/4)x256 = 1082368B = 1057KB。
2011

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

    1. 解析:
      在单缓冲区中, 当上一个磁盘块从缓冲区读入用户区完成时, 下一磁盘块才能开始读入,也就是当最后一块磁盘块读入用户区完毕时所用时间为150 x10 = 1500μs, 加上处理最后一个磁盘块的时间 50μs, 得1550μs。 双缓冲区中, 不存在等待磁盘块从缓冲区读入用户区的问题 ,10个磁盘块可以连续从外存读入主存缓冲区, 加上将最后一个磁盘块从缓冲区送到用户区的传输时间50μs以及处理时间50μs, 也就是100x10 + 50 + 50 = 1100μs。

信号量机制应用题

2009 45

在这里插入图片描述

  • 缓冲区剩余单元 > 0——> P1将正整数放入,缓冲区剩余单元减少
  • P1生成奇数——>向P2发出信号——>P2取出奇数——>缓冲区剩余单元增加
  • P1生成偶数——>向P3发出信号——>P3取出偶数——>缓冲区剩余单元增加

在这里插入图片描述

每个进程按图,按P,V顺序写就行。
标答:
互斥资源:缓冲区只能互斥访问, 因此设置互斥信号量mutex。
同步问题:P1、P2因为奇数的放置与取用而同步,设同步信号量odd; P1、P3 因为偶数的放置与取用而同步,设置同步信号量even; P1、P2、P3 因为共享缓冲区,设同步信号量empty,初值为N。程序如下:
在这里插入图片描述

2011 45

在这里插入图片描述在这里插入图片描述
45. 解答:
1)互斥资源:取号机(一次只一位顾客领号),因此设一个互斥信号量 mutex。
2)同步问题:顾客需要获得空座位等待叫号,当营业员空闲时,将选取一位顾客并为其服务。空座位的有、无影响等待顾客数量,顾客的有、无决定了营业员是否能开始服务,故分别设置信号量empty和full来实现这一同步关系。另外,顾客获得空座位后,需要等待叫号和被服务。这样 ,顾客与营业员就服务何时开始又构成了一个同步关系,定义信号量service来完成这一同步过程。

在这里插入图片描述

其他题目

2009

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

    1. 解析:D
      在单处理机系统(不包含多核的情况)中,同一 时刻只能有一个进程占用处理机,因此进程之间不能并行执行。 通道是独立于CPU的控制输入/输出的设备,两者可以并行,显然,设备与设备之间也是可以并行的。
    1. 解析:A
      每个进程都拥有自己独立的进程空间,若一个进程在运行时 所产生的地址在其地址空间之外, 则发生地址越界,因此需要进行界地址保护,即当程序要访问某个内存单元时,由硬件检查是否允许,如果允许则执行,否则产生地址越界中断。
    1. 解析:B
      文件的物理结构包括连续、 链式、 索引三种,其中链式结构不能 实现随机访问,连续结构的文件不易于扩展。 因此随机访问且易于扩展是索引结构的特性。
    1. 解析:A
      为了实现 “ 按名存取 ”,在文件系统中为每个文件设置用于描述和控制文件的数据结构,称之为文件控制块(FCB )。在文件控制块中,通常包含以下三类信息,即基本信息、存取控制信息及使用信息。
    1. 解析:B
      建立符号链接时, 引用计数值直接复制;建立硬链接时, 引用计数值加1。删除文件时,删除操作对于符号链接是不可见的, 这并不影响文件系统, 当以后再通过符号链接访问时, 发现文件不存在, 直接删除符号链接;但对于硬链接则不可以直接删除, 引用计数值减1, 若值不为O, 则不能删除此文件, 因为还有其他硬链接指向此文件。
      当建立F2时,Fl和F2的引用计数值都为1。 当再建立F3时,Fl和F3的引用计数值就都变成了 2。 当后来删除Fl时,F3的引用计数值为2-1 = 1, F2的引用计数值 一直不变。
    1. 解析:A
      设备管理具有设备独立性的特点, 操作系统以系统调用方式来请求某类设备时, 使用的是逻辑设备名。 而在程序实际执行时, 将逻辑设备名 转换为对应的物理设备名。
2010

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

    1. 解析:A
      操作系统提供的接口主要有两类:命令接口和系统调用。系统调用是能完成特定功能的子程序, 当应用程序请求操作系统提供某种服务时, 便调用具有相应功能的系统调用。库函数则是高级语言中提供的与系统调用对应的函数(也有些库函数与系统调用无关), 目的是隐藏访管指令的细节, 使系统调用更为方便、抽象。但要注意,库函数属千用户程序,而非系统
      调用, 是系统调用的上层。
    1. 解析:C
      引起进程创建的事件有:用户登录、作业调度、提供服务、应用请求等。I. 用户录成功后, 系统要为此创建一个用户管理的进程, 包括用户桌面、环境等。所有的用户进程会在该进程下创建和管理。II. 设备分配是通过在系统中设置相应的数据结构实现的, 不需要创建进程。III. 启动程序执行是典型的引起创建进程的事件。
    1. 解析:B
      信号量表示相关资源的当前可用数量。当信号量K>O时, 表示还有K个相关资源可用,所以该资源的可用个数是1。而当信号量K<O时,表示有[K]个进程在等待该资源。由于资源有剩余, 可见没有其他进程等待使用该资源, 故进程数为0。
    1. 解析:A
      进程时间片用完, 可降低其优先级以让别的进程被调度进入执行状态。B 选项中进程刚完成1/0, 进入就绪队列等待被处理机调度, 为了让其尽快处理1/0结果, 故应提高优先权。 C 选项中进程长期处于就绪队列, 为不至于产生饥饿现象, 也应适当提高优先级。D选项中进程的优先级不应该在此时降低, 而应在时间片用完后再降低。
    1. 解析:D
      这是皮特森算法的实际实现, 保证进入临界区的进程合理安全。该算法为了防止个进程为进入临界区而无限期等待, 设置变量turn, 表示不允许进入临界区的编号, 每个进程在先设置自己标志后再设置tum标志,不允许另 一个进程进入,这时,再同时检测另 一个进程状态标志和不允许进入表示,这样可以保证当两个进程同时要求进入临界区时只允许一个进程进入临界区。保存的是较晚的一次赋值,因此较晚的进程等待,较早的进程进入。 先到先入,后到等待, 从而完成临界区访问 的要求。其实这里可以想象为两个人进门,每个人进门前都会和对方客套一 句 “ 你先走 ”。如果进门时没别人,就当和空气说句废话,然后大步登门入室;如果两人同时进门,就互相请先,但各自只客套一 次,所以先客套的人请完对方,就等着对方请自己,然后光明正大地进门。
    1. 解析:C
      当一个文件系统含有多级目录时,每访问 一个文件,都要使用从树根开始到树叶为止、 包括各中间结点名的全路径名。当前目录又称工作目录,进程对各个文件的访问都相对于当前目录进行,而不需要从根目录一层一层的检索,加快了文件的检索速度。选项A 和 B都与相对目录无关;选项D, 文件的读/写速度取决于磁盘的性能。
    1. 解析:B
      键盘是典型的通过中断1/0方式工作的外设,当用户输入信息时,计算机响应中断并通过中断处理程序获得输入信息。
2011

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

    1. 解析:A
      缺页处理和时钟中断都属千中断,在核心态执行;进程调度是操作系统内核进程, 无须用户干预, 在核心态执行;命令解释程序属于命令接口,是四个选项中唯 一 能面对用户 的, 它在用户态执行。
    1. 解析:D
      进程是资源分配的基本单位,线程是处理机调度的基本单位。因此, 进程的代码段、进程打开的文件 、 进程的全局变量等都是进程的资源, 唯有进程中某线程的栈指针是属千线程的, 属于进程的资源可以共享, 属于线程的栈是独享的, 对其他线程透明。
    1. 解析:B
      输入/输出软件 一 般从上到下分为四个层次:用户层、与设备无关的软件层、设备驱动程序以及中断处理程序。 与设备无 关的软件层也就是系统调用的处理程序。当用户使用设备时, 首先在用户程序中发起 一 次系统调用,操作系统的内核接到该调用请求后请求调用处理程序进行处理, 再转到相应的设备驱动程序, 当设备准备好或 所需数据到达后设备硬件发出中断, 将数据按上述调用顺序逆向回传到用户程序中。
    1. 解析:D
      本题应采用排除法,逐个代入分析。当剩余资源分配给Pi, 待P1 执行完后,可用资源数为(2,2, 1),此时仅能满足凡的需求,排除AB; 接着分配给P4 , 待凡执行完后,可用资源数为(2, 2, 2), 此时已无法满足任何进程的需求, 排除C。 此外,本题还可以使用银行家算法求解( 对于选择题来说, 显得过于复杂)。
    1. 解析:D
      缺页中断产生后, 需要在内存中找到空闲页框并分配给需要访问的页(可能涉及页面置换),之后缺页中断处理程序调用设备驱动程序做磁盘I/0, 将位于 外存上的页面调入内存,调入后需要修改页表, 将页表中代表该页是否在内存的 标志位(或有效位) 置为1, 并将物理页框号填入相应位置, 若必要还需修改其他相关表项等。
    1. 解析:A
      在具有 对换功能的操作系统中, 通常把外存分为文件区和 对换区。 前者用于存放文件, 后者用于存放从内存换出的进程。抖动现象是指刚刚被换出的页很快又要被访问, 为此又要换出其他页, 而该页又很快被访问, 如此频繁地置换页面, 以致大部分时间都花在页面置换上, 引起系统性能下降。 撤销部分进程可以减少所要用到的页面数,防止抖动。 对换区大小和进程优先级都与抖动无关。
    1. 解析:C
    1. 解析:C
      将P1中3条语句依次编号为1,2,3: P2 中3条语句依次编号为4,5,6 。 依次执行1,2,3,4,5,6得结果1 , 依次执行1,2,4,5,6,3得结果2 , 执行4,5,1,2,3,6得结果0 。因此结果-1不可能得出。

逻辑地址到物理地址的简单转换计算代码

#include <iostream>
#include <bitset>
#include <cmath>
#include <iomanip>

using namespace std;

int main() {
    // 输入逻辑地址
    cout << "请输入16进制逻辑地址:";
    string logicalAddressHex;
    cin >> logicalAddressHex;

    // 输入页的大小
    cout << "页的大小为:(如1024)B:";
    int pageSize;
    cin >> pageSize;
    int offsetBits = log2(pageSize);//11

    // 输入分页系统的页数和页号对应的物理块号
    cout << "请输入分页系统的页数:";
    int totalPages;
    cin >> totalPages;

    int logicalAddress = stoi(logicalAddressHex, nullptr, 16);

    // 计算页号和页内地址
    int pageNumber = logicalAddress >> offsetBits;//右移11位 
    int pageOffset = logicalAddress & (pageSize - 1);
cout<< "页内地址:"<< hex<<pageOffset<<endl; 

    // 查找页号对应的物理块号
    cout << "请输入页号对应的物理块号:" << endl;
    int physicalBlockNumber[totalPages];
    for (int i = 0; i < totalPages; i++) {
        cout << "页号:" << i << " 对应的物理块号:";
        cin >> physicalBlockNumber[i];
    }

    // 计算物理地址
    int physicalAddress = (physicalBlockNumber[pageNumber] << offsetBits) + pageOffset;

    // 设置输出流的格式,将字母转为大写
    cout << hex << uppercase;

    // 输出结果
    cout << "逻辑地址 " << logicalAddressHex << " 的页号是 " << pageNumber << ",页内地址是 0x" << hex << pageOffset << endl;
    cout << "对应的物理地址是 " << bitset<16>(physicalAddress) << ",十六进制物理地址是 0x" << hex << physicalAddress << endl;
 
    return 0;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

亦昭昭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值