HNU操作系统2023期中考试试卷及参考答案

2024-06-21 01:28

本文主要是介绍HNU操作系统2023期中考试试卷及参考答案,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本试题参考 @甘晴void 的CSDN博客【2.2】操作系统OS_甘晴void的博客-CSDN博客,本意为期中复习自用,答案在其基础上进行进一步完善,若有错误还请指正!

第一题:基础题(20分)

1.1(4分)

进程状态一共有多少个,是哪些?哪些状态只出现一次,哪些出现多次?

答:

(1)进程状态一共有5种,分别为运行态、就绪态、阻塞态、创建态、终止态。

(2)其中,创建态、终止态只出现一次;

         运行态、就绪态、阻塞态出现多次。

1.2(4分)

请结合进程状态转移图来说明,

答:

(1)进程状态转移图如下图所示(参考王道操作系统P37):

(2)其中,

         抢占式:运行态→阻塞态

         非抢占式:就绪态→运行态、阻塞态→就绪态

参考来源:

1.3(4分)

fork()与exec()调用的区别?

答:

(1)系统调用fork()用于创建子进程,得到两个返回值。新创建的子进程直接从fork()系统调用返回。父进程和子进程代码和数据段相同,但pid和内存空间不同。

(2)系统调用exec()并没有创建新进程,而是直接将当前运行的程序替换为不同的程序。并且,对exec()的成功调用永远不会返回。

1.4(8分)

基于抢占式的调度,优先权值越小表示越优先,运行调度程序进程切换用时1μs。从0开始调度程序,问平均周转时间为多少?

到达时间CPU耗时优先权值
P12μs12μs10
P21μs24μs30
P30μs36μs20

答:

P3的周转时间 = 完成时间 - 到达时间 = 36μs + 12μs + 3μs(切换) - 0μs = 51μs

P2的周转时间 = 完成时间 - 到达时间 = (36μs + 24μs + 12μs + 4μs) - 1μs = 75μs

P1的周转时间 = 完成时间 - 到达时间 = (2μs + 1μs + 12μs) - 2μs = 13μs

平均周转时间 = (P3的周转时间 + P2的周转时间 + P1的周转时间) / 进程数量

= (51μs + 75μs + 13μs) / 3

= 139μs / 3

≈ 46.33μs

所以,平均周转时间约为46.33μs。

(注意,刚开始运行时和进行进程切换时都要加上1μs)

第二题:MLFQ多级反馈队列(10分)

五条规则及其相应作用?

答:

五条规则:

规则1.如果A的优先级 > B的优先级,运行A(不运行B)

规则2.如果A的优先级 = B的优先级,轮转运行A和B

规则3.工作进入系统时,放在最高优先级(最上层队列)

规则4.一旦工作用完了其在某一层中的时间配额(无论中间主动放弃了多少次CPU),就降低其优先级(移入低一级队列)

规则5.经过一段时间S,就将系统中所有工作重新加入最高优先级队列

(见《操作系统导论》P63)

第三题:彩票调度与步长调度(20分)

3.1

写出彩票的意义,问彩票数与步长的关系

答:

(1)彩票数代表进程占有某个资源的份额

(2)步长与彩票数成反比

3.2

若ABC彩票数分别是200,300,500。给定整数60000,求出各自的票数

答:

A的彩票数为12000

B的彩票数为18000

C的彩票数为30000

3.3

模拟一遍,直至各自里程再次相同

答:

假设选择A先运行,

行程值(A)步长=300行程值(B)步长=200行程值(C)步长=120谁运行
000A
30000B
3002000C
300200120C
300200240

B

300400240C
300400360A
600400360C
600400480B
600600480C
600600600……

3.4

求出各自的CPU占比

答:

CPU占比2:3:5

第四题:僵尸进程(20分)

4.1

运行以下代码,写出输出结果(pid整数可以自定,但前后要自洽)

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>int main()
{printf("hello world (pid:%d)\n", (int)getpid());pid_t pid;int count = 0;pid = fork();if (pid < 0){printf("error occurred!\n");}else if (pid == 0){printf("%d son %4d\n", getppid(), getpid());count++;exit(0);}else{sleep(5);wait(NULL);printf("%d father %4d\n", getppid(), getpid());count++;}printf("count = %d\n",count);return 0;
}

答:

原因:

在子进程中,count被设置为1,但子进程随后退出,这个值不会被父进程看到。

在父进程中,count也被设置为1(因为父进程有自己的count副本)。

因此,当父进程打印count的值时,它显示的是1,而不是2(即使子进程也增加过count)。这是因为两个进程对count的修改是隔离的,父进程无法看到子进程对count的修改。

4.2

结合僵尸进程与孤儿进程的概念。这段代码会产生僵尸进程还是孤儿进程?如果是孤儿进程,请修改代码使其产生僵尸进程;如果是僵尸进程,请修改代码使其产生孤儿进程

答:

(1)这段代码会产生僵尸进程

原因:子进程结束时,父进程还处于sleep(5)状态,还在睡觉,暂时没有把子进程收回,导致僵尸进程的产生。但是,父进程睡了5ms,睡醒之后立刻把子进程收回了,所以僵尸进程只产生了5ms。我感觉吧,这题的意思是,只要产生过,就是有,这个程序就有问题,所以是僵尸进程。

(2)要将僵尸进程改成孤儿进程,就要让父进程先于子进程结束。可以将sleep(5)改为放在子进程那边,exit也换个位置。

代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>int main()
{printf("hello world (pid:%d)\n", (int)getpid());pid_t pid;int count = 0;pid = fork();if (pid < 0){printf("error occurred!\n");}else if (pid == 0){sleep(5);printf("%d son %4d\n", getppid(), getpid());count++;}else{printf("%d father %4d\n", getppid(), getpid());count++;exit(0);}printf("count = %d\n",count);return 0;
}

第五题:作业题(10分) 

题目提供了./process-run -l 4:100 -s 3 -c和./process-run -l 4:0 -s 3 -c的运行截图

要求我们写出./process-run -l 4:50  -s 3 -c的运行截图

答:

因为占用cpu运行的指令数为4,使用cpu概率为50%,所以就是cpu→io→cpu→io(其他情况也行,均分即可),如下图所示:

第六题:实验题

实验自2024年已改版,所以2023年实验题没有参考价值,不再赘述。

这篇关于HNU操作系统2023期中考试试卷及参考答案的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1079817

相关文章

荣耀嵌入式面试题及参考答案

在项目中是否有使用过实时操作系统? 在我参与的项目中,有使用过实时操作系统。实时操作系统(RTOS)在对时间要求严格的应用场景中具有重要作用。我曾参与的一个工业自动化控制项目就采用了实时操作系统。在这个项目中,需要对多个传感器的数据进行实时采集和处理,并根据采集到的数据及时控制执行机构的动作。实时操作系统能够提供确定性的响应时间,确保关键任务在规定的时间内完成。 使用实时操作系统的

Linux操作系统 初识

在认识操作系统之前,我们首先来了解一下计算机的发展: 计算机的发展 世界上第一台计算机名叫埃尼阿克,诞生在1945年2月14日,用于军事用途。 后来因为计算机的优势和潜力巨大,计算机开始飞速发展,并产生了一个当时一直有效的定律:摩尔定律--当价格不变时,集成电路上可容纳的元器件的数目,约每隔18-24个月便会增加一倍,性能也将提升一倍。 那么相应的,计算机就会变得越来越快,越来越小型化。

CSP 2023 提高级第一轮 CSP-S 2023初试题 完善程序第二题解析 未完

一、题目阅读 (最大值之和)给定整数序列 a0,⋯,an−1,求该序列所有非空连续子序列的最大值之和。上述参数满足 1≤n≤105 和 1≤ai≤108。 一个序列的非空连续子序列可以用两个下标 ll 和 rr(其中0≤l≤r<n0≤l≤r<n)表示,对应的序列为 al,al+1,⋯,ar​。两个非空连续子序列不同,当且仅当下标不同。 例如,当原序列为 [1,2,1,2] 时,要计算子序列 [

HNU-2023电路与电子学-实验3

写在前面: 一、实验目的 1.了解简易模型机的内部结构和工作原理。 2.分析模型机的功能,设计 8 重 3-1 多路复用器。 3.分析模型机的功能,设计 8 重 2-1 多路复用器。 4.分析模型机的工作原理,设计模型机控制信号产生逻辑。 二、实验内容 1.用 VERILOG 语言设计模型机的 8 重 3-1 多路复用器; 2.用 VERILOG 语言设计模型机的 8 重 2-1 多

1、简述linux操作系统启动流程

1、简述linux操作系统启动流程 启动第一步--加载BIOS 当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它。这是因为BIOS中包含了CPU的相关信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息、PnP特性等等。开机时将ROM中的指令映射到RAM的低地址空间,CPU读取到这些指令,硬件的健康状况进行检查,按照BIOS中设置的启

操作系统是怎么为不同的程序分配所需的内存空间的

操作系统为不同的程序分配内存空间的过程涉及多个关键步骤,确保每个程序都有其所需的内存资源,同时避免程序之间的冲突。以下是操作系统如何为程序分配内存空间的详细过程: 1. 内存管理的基础概念 虚拟内存:现代操作系统使用虚拟内存机制来为程序提供隔离的内存空间。每个程序运行在其独立的虚拟地址空间中,这使得程序间的内存互不干扰。物理内存:实际的 RAM(随机存取存储器),由操作系统和硬件共同管理。虚拟

诺瓦星云校招嵌入式面试题及参考答案(100+面试题、10万字长文)

SPI 通信有哪些内核接口? 在嵌入式系统中,SPI(Serial Peripheral Interface,串行外设接口)通信通常涉及以下内核接口: 时钟控制接口:用于控制 SPI 时钟的频率和相位。通过设置时钟寄存器,可以调整 SPI 通信的速度以适应不同的外设需求。数据发送和接收接口:负责将数据从主机发送到从机以及从从机接收数据到主机。这些接口通常包括数据寄存器,用于存储待发

操作系统安全保护

操作系统安全概述 概念:满足安全策略要求,具有响应安全机制及安全功符合特定安全标准,在一定约束条件下 能抵御常见网络安全威胁,保障自身安全运行及资源安全 安全等级:根据安全功能和安全保障要求分为 用户自主保护级  系统审计保护级 安全标记保护级 结构化保护级 访问验证保护级 操作系统作用: 负责计算系统的资源管理、支撑和控制各种应用程序运行,为用户提供计算机系统管理接口 是构成网络信息

Linux操作系统命令集(一)

最近开了操作系统的课,弄着虚拟机的linux系统命令学学 文件和目录操作命令: ls:列出目录内容 示例:ls -l 以长格式列出目录内容cd:切换目录 示例:cd /home/user 切换到 /home/user 目录mkdir:创建目录 示例:mkdir new_directory 创建名为 new_directory 的目录rmdir:删除空目录touch:创建空文件或更新文件的时间戳

操作系统分页式存储管理

每次输入地址后,计算出页号,若页号越界,则给出错误提示。否则依次调用FIFO和LRU算法,这里值得注意的是,由于我们的FIFO算法先于LRU算法被调用,那么当在处理FIFO算法时,我们暂且不将位视图相应位置做变化,留到处理LRU算法再做处理。 对于FIFO、LRU算法的缺页,我们分两种情况考虑,第一种是模拟栈内还有空间,那么直接将其入栈。第二种是模拟栈内无空间,要发生置换。发生置换时把模拟栈最底