笔试强训48天——day26

一. 单选

1.在单处理器系统中,如果同时存在有12个进程,则处于就绪队列中的进程数量最多为()

A 1
B 9
C 10
D 11

正确答案:D

单处理器——单个cpu——即使有再多的进程都是并发的去运行的——在同一时刻,只有一个进程可以拥有cpu资源
一个在运行,剩下的11个在等(就绪)

2.在系统内存中设置磁盘缓冲区的主要目的是()

A 减少磁盘 I/O 次数
B 减少平均寻道时间
C 提高磁盘数据可靠性
D 实现设备无关性

正确答案:A

磁盘缓存(快取):磁盘缓存是属于内存的
磁盘缓冲区:是磁盘与PCI总线直接的容量固定的硬件
PCI:外设不见互联标准
减少磁盘 I/O 次数——提高性能

3.下列选项中,会导致进程从执行态变为就绪态的事件是()

A 执行 P(wait)操作
B 申请内存失败
C 启动 I/O 设备
D 被高优先级进程抢占

扫描二维码关注公众号,回复: 14993716 查看本文章

正确答案:D

P操作是进程请求某一资源,ABC都是因为请求某一资源会进入阻塞态
而D是被剥夺了处理机资源所以进入就绪态——一旦得到处理机即可运行。

4.下列关于管道(Pipe)通信的叙述中,正确的是 ()

A 一个管道可实现双向数据传输
B 管道的容量仅受磁盘容量大小限制
C 进程对管道进行读操作和写操作都可以被阻塞
D 一个管道只能有一个读写进程或一个写进程对其操作
正确答案:C

管道是半双工通信
管道的大小是64k
可以设置文件描述符的非阻塞属性来测试
可以有多个。例如创建出管道,再创建子进程,父子进程同时拥有管道的读写两端。但是在逻辑上,我们建议一个进程读,一个进程写。

5.在一个文件被用户进程首次打开的过程中,操作系统需做的是 ()

A 将文件内容读到内存中
B 将文件控制块读到内存中
C 修改文件控制块中的读写权限
D 将文件的数据缓冲区首指针返回给用户进程

正确答案:B

当打开一个文件时,操作系统会创建一个文件控制块,并返回一个文件描述符给程序员,所以首次打开一个文件的时候,是文件控制块读入到内存中

6.进程间通讯的方式中哪种的访问速度最快()

A 管道
B 消息队列
C 共享内存
D 套接字

正确答案:C

A 管道——速度慢,容量有限,半双工
B 消息队列——容量受到系统限制,需注意第一次读的时候,上一次没有读完数据的问题
C 共享内存——能够很容易控制容量,速度快
D 套接字——需要跨网络,虽然可以持续的传递,但是速度没有共享内存快

7.一个进程的读磁盘操作完成后,操作系统针对该进程必做的是 ()

A 修改进程状态为就绪态
B 降低进程优先级
C .进程分配用户内存空间
D 增加进程的时间片大小

正确答案:A

进程读磁区结束后,说明当前进程状态不是就绪或者运行状态,只能是阻塞状态。
所以当一个进程资源到位后,会修改进程的状态为就绪状态,使其等待被操作系统调度获取CPU,再进行计算。

8.系统为某进程分配了4 个页框,该进程已访问的页号序列为 2,0,2,9,3,4,2,8,2,4,8,4,5。若进程要 访问的下一页的页号为 7,依据 LRU 算法,应淘汰页的页号是()

A 2
B 3
C 4
D 8
正确答案:A

2,0,2,9,3,4,2,8,2,4,8,4,5。
2
02
202
9202
3920
4392
2439
8243
2824
8282
4828
5482
7458

9.设系统缓冲区和用户工作区均采用单缓冲,从外设读入1 个数据块到系统缓冲区的时间为 100,从系统缓冲区读入 1 个数据块到用户工作区的时间为 5, 对用户工作区中的 1 个数据块进行分析的时间为 90(如下图所示)。进程从外设读入并分析 2 个数据块的最短时间是( )。

在这里插入图片描述

A 200
B 295
C 300
D 390

正确答案:C

数据块1:外设——工作区:105,进入数据分析90(此时数据块2可以进行外设——系统缓冲区100)并行状态选取时间大的100
105+100+5+90=300

10.下面哪一种表述不属于操作系统的主要功能?()

A 处理机管理
B 存储器管理
C 设备管理和文件管理
D 可移植
正确答案:D

操作系统的主要功能是计算机资源管理、程序控制和人机交互等
计算机系统的资源可分为设备资源和信息资源两大类

二. 编程

1. 跳台阶扩展问题

链接

一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶(n为正整数)总共有多少种跳法。

示例1:
输入
3
输出
4

示例2:
输入
1
输出
1

正确答案:

class Solution {
    
    
public:
    int jumpFloorII(int number) {
    
    
        //2^(n-1) == 1 << (n-1)
        return 1 << (number - 1);
    }
};
class Solution {
    
    
public:
    int jumpFloorII(int number) {
    
    
        if (number == 1)
        {
    
    
            return 1;
        }
        return 2 * jumpFloorII(number - 1);
    }
};

有一阶的时候 f(1) = 1 ; 有两阶的时候可以有 f(2) = 1+f(1)=2; 有三阶的时候可以有 f(3) =1+f(2)+f(1)=4;…总跳法为: f(n) = 1+f(n-1) + f(n-2)+…+f(1) (第一个1是跳n阶只有一种方法)依次类推,得到类推公式有n阶时:f(n)=2^(n-1)

2. 快到碗里来

链接

小喵们很喜欢把自己装进容器里的(例如碗),但是要是碗的周长比喵的身长还短,它们就进不去了。
现在告诉你它们的身长,和碗的半径,请判断一下能否到碗里去。

输入描述:
输入有多组数据。
每组数据包含两个整数n (1≤n≤2^128) 和r (1≤r≤2^128),分别代表喵的身长和碗的半径。
圆周率使用3.14。
输出描述:
对应每一组数据,如果喵能装进碗里就输出“Yes”;否则输出“No”。

示例1:
输入
6 1
7 1
9876543210 1234567890
输出
Yes
No
No

正确答案:

#include<iostream>
using namespace std;

int main()
{
    
    
    double n,r;
    while(cin>>n>>r)
    {
    
    
        double c;
        c = 2*3.14*r;
        if(n<=c)
            cout<<"Yes"<<endl;
        else
            cout<<"No"<<endl;

    }
    
    return 0;
}

注意:输出Yes和No只是第一个字母大写
圆的周长:C = 2pir(pi = 3.14)

猜你喜欢

转载自blog.csdn.net/Ll_R_lL/article/details/128689608
今日推荐