笔试强训48天——day27

一. 单选

1.若一个用户进程通过read 系统调用读取一个磁盘文件中的数据,则下列关于此过程的叙述中,正确的是()。

Ⅰ. 若该文件的数据不在内存中,则该进程进入睡眠等待状态
Ⅱ. 请求 read 系统调用会导致 CPU 从用户态切换到核心态
Ⅲ. read 系统调用的参数应包含文件的名称
A 仅Ⅰ、 Ⅱ
B 仅Ⅰ、 Ⅲ
C 仅Ⅱ、 Ⅲ
D Ⅰ、 Ⅱ和Ⅲ

正确答案:A

应包含的是文件描述符

2.下列关于虚拟存储的叙述中,正确的是()。

A 虚拟存储只能基于连续分配技术
B 虚拟存储只能基于非连续分配技术
C 虚拟存储容量只受外存容量的限制
D 虚拟存储容量只受内存容量的限制

正确答案:B

1.虚拟存储本质上是进程的虚拟地址空间。装入程序是,值将程序的一部分装入内存,而将其余部分留在外存,就可以启动程序执行。
2.采用连续分配方式,会使一部分内存空间处于暂时会永久的空闲状态,从而造成内存资源的浪费,并且无法从逻辑上扩大内存容量,因此虚拟内存的实现只能建立在离散分配的内存管理基础上。
3.虚拟存储器容量不受内外存容量限制,是由CPU的寻址范围决定的。

3.下列选项中,不可能在用户态发生的事件是()。

A 系统调用
B 外部中断
C 进程切换
D 缺页

正确答案:C

A 系统调用——调用匹配系统调用函数
B 外部中断——ctrl+c,中断程序
C 进程切换——由操作系统内核来调度产生的
D 缺页——访问某一块内存的时候,优肯导致缺页现象

4. 同一进程下的线程可以共享()

A stack
B data section——代码段
C register set
D thread ID

正确答案:B

线程共享:
进程代码段
进程的公有数据(利用这些共享数据,线程很容易实现相互之间的通讯)
进程打开的文件描述符
信号的处理器
进程的当前目录和进程用户ID与进程组ID

线程独有:
线程ID

错误返回码
线程优先级
errno

5.在缺页处理过程中,操作系统执行的操作可能是()

Ⅰ.修改页表 Ⅱ.磁盘 I/O Ⅲ.分配页框
A 仅Ⅰ、 Ⅱ
B 仅Ⅱ
C 仅Ⅲ
D Ⅰ、 Ⅱ和Ⅲ

正确答案:D

6.下面选项中,满足短任务优先且不会发生饥饿现象的调度算法是()

A 先来先服务——有利于长作业
B 高响应比优先——短进程优先级高
C 时间片轮转——公平算法
D 非抢占式短任务优先——长作业优先级低,在短作业比较多的情况下对长作业不友好

正确答案:B

7.下列选项中,降低进程优先级的合理时机是()

A 进程的时间片用完
B 进程刚完成I/O,进入就绪列队
C 进程持久处于就绪列队
D 进程从就绪状态转为运行态

正确答案:A

8. 在使用锁保证线程安全时,可能会出现活跃度失败的情况,活跃度失败主要包括()

A 死锁
B 饥饿
C 活锁
D 以上全部
正确答案:D

活跃度是指线程或进程长时间得不到CPU占用

9.下列选项中,导致 创建 新进程的操作是()

I用户登陆成功 II设备分配 III启动程序执行
A 仅I和II
B 仅II和III
C 仅I和III
D I、II和III

正确答案:C

10. 对进程和线程的描述,以下正确的是()

A 父进程里的所有线程共享相同的地址空间,父进程的所有子进程共享相同的地址空间
B 改变进程里面主线程的状态会影响到其他线程的行为,改变父进程的状态不会影响到其他子进程
C 多线程会引起死锁,而多进程不会
D 以上选项都不正确
正确答案:D

1.子进程有自己独立的虚拟空间地址
2.每个线程都是独立被操作系统调度的,所以有独立的状态信息
3.父进程创建子进程是,子进程会复制父进程的内存(包括锁状态)有可能导致子进程陷入死锁状态

 
 

二. 编程

1. 不用加减乘除做加法

链接

写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。

数据范围:两个数都满足
进阶:空间复杂度 ,时间复杂度

示例1:
输入
1,2
输出
3

示例2:
输入
0,0
输出
0

正确答案:

class Solution {
    
    
public:
    int Add(int num1, int num2) {
    
    
        while(num2 != 0)
        {
    
    
            int s = num1 ^ num2;
            int m = (num1 & num2)<<1;
            num1 = s;
            num2 = m;
}
        return num1;

    }
};

1.不算进位相加的值:与按位异或的值一样(相同为0,不同为1)
2.计算进位的值:与按位与的值,再左移一位一样(按位与:两个全为1就是1,有0就是0)(num1&num2)<<1
3.进位的值不等于0就继续上序两个操作

2. 三角形

链接

给定三条边,请你判断一下能不能组成一个三角形。

输入描述:
输入包含多组数据,每组数据包含三个正整数a、b、c(1≤a, b, c≤10^100)。
输出描述:
对应每一组数据,如果它们能组成一个三角形,则输出“Yes”;否则,输出“No”。

示例1:
输入
1 2 3
2 2 2
输出
No
Yes

正确答案:

#include<iostream>
using namespace std;
#define add(x,y) ((x)+(y))
#define Cmp(x,y) ((x)>(y))

int main()
{
    
    
    double a,b,c;
    while(cin>>a>>b>>c)
    {
    
    
        //a+b > c && a+c > b && b+c >a
        if(Cmp(add(a,b),c) && Cmp(add(a,c),b) && Cmp(add(b,c),a))
            cout<<"Yes"<<endl;
        else
            cout<<"No"<<endl;
}
    return 0;
}

注意:定义的类型不能用int、long,要用double,不然范围不够

猜你喜欢

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