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

一、(20分,每小题5分)简答题

(1)通过多任务共享实现的虚拟化CPU与通常虚拟机(VMware等)里所使用的虚拟化技术有什么不一样?

    多任务共享实现的虚拟化CPU通常指的是在操作系统层面,通过时间片轮转等技术,使得多个程序或任务在单个物理CPU上交替执行,从而模拟出多CPU并行的效果。然而,这种虚拟化主要是在操作系统内部实现,每个任务或程序仍然运行在同一个操作系统实例上,它们共享操作系统的资源,但彼此之间是隔离的。

    而通常虚拟机(如VMware等)里所使用的虚拟化技术则更为复杂和全面。它涉及到硬件级别的虚拟化,包括CPU、内存、磁盘、网络等资源的虚拟化。虚拟机通过虚拟化技术,可以在一个物理服务器上创建多个虚拟服务器,每个虚拟服务器都有自己的操作系统、应用程序和数据,彼此之间是完全隔离的。这种虚拟化技术允许在一个物理服务器上同时运行多个不同的操作系统和应用程序,从而显著提高了服务器的利用率和灵活性。

(源自文心一言3.5)

(2)试描述进程的所有状态,其中进程在哪些状态只出现一次,哪些会出现多次?

答:

1. 进程的所有状态包括:创建态、终止态、运行态、阻塞态、就绪态

2. 创建态和终止态只出现一次;运行态、阻塞态、就绪态会出现多次

(3)创建新进程的系统调用fork()和exec()有什么区别?

答:

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

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

(4)简述周转时间和响应时间的定义,并解释它们在不同调度算法(FIFO,SJF,RR)中的表现。

答:

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

    响应时间 = 首次运行时间 - 到达时间 

2. 一般来说,FIFO的周转时间较长,响应时间较长;SJF的周转时间较短,响应时间较长;RR的周转时间较长,响应时间较短

二、(20分)

给出图a图b所示代码的输出,函数fork,getpid,getppid的返回值可以是给定的任意正整形值,但要注意在上下文中保持一致。

#include<stdio.h>
#include<unistd.h>

int main(int argc, char**argv)
{
	pid_t pid;
	int count = 0;
	pid = fork();
	if (pid < 0)
		perror("fork error!");
	else if (pid == 0) {
		printf("the pid of son is %d\n", getpid());
		count++;
	}
	else {
		printf("the pid of parent is %d\n",getpid());
		count++;
	}
	printf("count = %d\n", count);
	return 0;
}
#include<sys/types.h>
#include<stdio.h>
#include<unistd.h>

int main(int argc, char** argv)
{
	int i = 0;
	for (i = 0;i < 2; i++){
	pid_t rpid = fork();
	if(rpid == 0)
		printf("%d son %4d %4d %4d\n", i, getppid(), getpid(),rpid);
	else
		printf("%d father %4d %4d %4d\n", i, getppid(), getpid(),rpid);
	}
	sleep(1);
	return 0;
}

答:

三、(20分)

 (1)在给定三个作业A、B、C按次序到达,运行长度分别为300、200、100,计算在使用SJF和FIFO调度策略时的响应时间、周转时间、等待时间(10分)

答:

1. SJF调度:

平均响应时间为400/3,平均周转时间为1000/3,平均等待时间为400/3

2. FIFO调度:

平均响应时间为800/3,平均周转时间为1400/3,平均等待时间为800/3

(2)某系统采用基于优先权的非抢占式进程调度策略,完成一次进程调度和进程切换的系统时间开销为1μs。在T时刻就绪队列中有3个进程P1、P2和P3,其在就绪队列中的等待时间、需要的CPU时间和优先权如下表所示。(2018年408统考真题)

进程等待时间需要的CPU时间优先权
P130μs12μs10
P215μs24μs30

P3

18μs36μs20

若优先权值大的进程优先获得CPU,从T时刻起系统开始进程调度,计算系统的平均周转时间。(10分)

答:

四、(20分)

分析多级反馈队列中五条规则的作用。

答:

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

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

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

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

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

五、(20分)

(1)给定3个进程(A、B、C)的步长(stride)值分别是80、160、40,初始行程值都是0,当存在几个进程有相同的行程值时,按顺序选择进程执行。使用步长调度算法画出调度程序的行为,直到当所有行程值再次相等。

答:

行程值(A)步长=80行程值(B)步长=160行程值(C)步长=40谁运行
000A
8000B
801600C
8016040C
8016080

A

16016080C
160160120C
160160160……

(2)为什么彩票调度算法和步长调度算法并没有作为CPU调度程序被广泛使用?解释其主要原因。(8分)

答:

原因1:这两种方式都不能很好地适合I/O

原因2:彩票调度的票数分配问题并没有确定的解决方式

  • 12
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

一二爱上蜜桃猫

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

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

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

打赏作者

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

抵扣说明:

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

余额充值