• 【笔试题】【day27】


    第一题(系统调用)

    若一个用户进程通过read 系统调用读取一个磁盘文件中的数据,则下列关于此过程的叙述中,正确的是()。
    Ⅰ. 若该文件的数据不在内存中,则该进程进入睡眠等待状态
    Ⅱ. 请求 read 系统调用会导致 CPU 从用户态切换到核心态
    Ⅲ. read 系统调用的参数应包含文件的名称
    A、仅Ⅰ、 Ⅱ
    B、仅Ⅰ、 Ⅲ
    C、仅Ⅱ、 Ⅲ
    D、Ⅰ、 Ⅱ和Ⅲ

    当我们调用“read”系统调用之后,我们的进程本质山格式需要从磁盘请求数据的,此时进程会进入到阻塞状态,由于并不需要CPU的参与,需要磁盘IO的操作,所以,该进程就会进入可中断睡眠状态,等待磁盘IO操作的完毕
    read是系统库能够调用,会执行内核的代码,所以。程序会从用户态切换到内核态
    read函数模型
    `ssize_t read(int fd,void(buf ,size_t count);
    通过函数的模型,我们发现并不需要包含文件的名称,而是需要文件的描述符

    A

    第二题(虚拟存储)

    下列关于虚拟存储的叙述中,正确的是()。
    A、虚拟存储只能基于连续分配技术
    B、虚拟存储只能基于非连续分配技术
    C、虚拟存储容量只受外存容量的限制
    D、虚拟存储容量只受内存容量的限制

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

    B

    第三题(不可能在用户态发生的事件)

    下列选项中,不可能在用户态发生的事件是()。
    A、系统调用
    B、外部中断
    C、进程切换
    D、缺页

    A:系统调用:例如调用pipe系统调用函数
    B:外部中断:例如在程序运行的时候,ctrl+c,中断程序
    C:进程切换:进程的切换是由操作系统内核来调度产生的,所以在用户态是不会发生的
    D:访问某一块内存的时候,就可能导致缺页现象,是在用户态下实现的

    C

    第四题(同一进程下的线程可以共享什么)

    同一进程下的线程可以共享()
    A、stack
    B、data section
    C、register set
    D、thread ID

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

    线程独有
    1.线程ID
    2.栈
    3.错误返回码
    4.线程优先级
    5.errno

    B:data section代码段

    B

    第五题(缺页处理过程中,操作系统可能做什么)

    在缺页处理过程中,操作系统执行的操作可能是()
    Ⅰ.修改页表 Ⅱ.磁盘 I/O Ⅲ.分配页框
    A、仅Ⅰ、 Ⅱ
    B、仅Ⅱ
    C、仅Ⅲ
    D、Ⅰ、 Ⅱ和Ⅲ

    1.缺页中断产生后,需要在内存中找到空闲页框并分配给需要访问的页(可能涉及到页面置换)
    2.之后缺页中断处理程序调用设备驱动程序做磁盘I/O,将位于外存上面的页面调入内存
    3.调入后需要修改页表,将页表中代表该页是否在内存的标志位(或有效位)置为1,并将物理页框号填入相应位置

    D

    第六题(不会导致饥饿的调度算法

    下面选项中,满足短任务优先且不会发生饥饿现象的调度算法是()
    A、先来先服务
    B、高响应比优先
    C、时间片轮转
    D、非抢占式短任务优先

    先来先服务算法特点
    1.是一种最简单的调度算法,即可用于作业调度,也可用于进程调度
    2.有利于长作业(进程),而不利于短作业(进程)
    3.有利于CPU繁忙型作业,而不利于/O繁忙型作业
    高响应比优先算法特点
    1.当等待时间相同时,短进程的优先权高
    2.当需要运行时间相同时,作业的优先权又取决于等待时间,相当于先到先服务;
    3.长作业的优先级可以随着等待时间的增加而提高,因此长作业等待一段时间后仍能得到调度
    时间片轮转算法特点
    时间片轮转调度算法是一种最古老,最简单,最公平的且使用最广的算法。每个进程被分配一个时间段,称作它的时间片,即该进程允许进行的时间。如果在时间片结束时进程还在运行,则cpu将被剥夺并分配给另一个进程。如果进程在时间片结束前阳塞或结束,则cpu当即进行切换。调度程序所要做的就是维护一张就绪进程列表,当进程用完他的时间片后,就被移动到队列的末尾,
    非抢占式短任务优先
    因为是非抢占式且短任务优先,则长作业的优先级就比较低,在短作业非常多的情况下,对长作业非常的不友好

    B

    第七题(降低进程优先级的合理时机)

    下列选项中,降低进程优先级的合理时机是()
    A、进程的时间片用完
    B、进程刚完成I/O,进入就绪列队
    C、进程持久处于就绪列队
    D、进程从就绪状态转为运行态

    B:进程刚刚完成IO操作,刚进入就绪状态了,等待被操作系统用调度运行,此时是不合理的
    C:长时间地处于就绪队列,说明一直得不到调度,理应提高优先级,让操作系统调度,再不调度,我们的进程就要饿死了
    D:进程刚运行,就降低优先级,有可能会被其他进程抢断,也是不合理的。

    A

    第八题(活跃度失败的原因)

    在使用锁保证线程安全时,可能会出现活跃度失败的情况,活跃度失败主要包括()
    A、死锁
    B、饥饿
    C、活锁
    D、以上全部

    活跃度是指线程或者进程长时间得不到cpu占用
    在使用锁保证线程安全的时候,可能会出现活跃度失败的情况主要包括饥饿和活锁,死锁等问题
    饥饿
    饥饿是指如果线程T1占用了资源R,线程T2又请求封锁R,于是T2等待,T3也请求资源R,当T1释放了R上的封锁之后,系统批准了T3的请求,T2依然等待,然后T4又请求封锁R,当T3释放了R上的封锁之后,系统又批准了T4的请求……,T2可能永远等待
    活锁
    活锁是指线程1可以使用资源,但是他可以让其他线程优先使用资源,线程2也可以使用资源,但是它也可以让别的线程优先使用资源,这样你让我,我让你,最后两个线程都无法使用资源
    (活锁不会被阻塞,而是不停地检测一个永远不可能为真的条件,会耗费CPU宝贵的时间)
    死锁
    就是相互等着对方释放资源,结果是谁也得不到

    D

    第九题(导致创建新进程的操作)

    下列选项中,导致 创建 新进程的操作是()
    I用户登陆成功II设备分配III启动程序执行
    A、仅I和II
    B、仅II和III
    C、仅I和III
    D、I、II和III

    进程在运行期间通过创建进程系统调用来创建多个新进程。每一个进程都有生命其,即从创建到消亡的时间周期,当操作系统为一个程序构造一个进程控制快并分配地址空间之后,就创建了一个进程。进程的创建来源于以下四个条件
    1.提交一个批处理作业
    2.在终端上一个交互式作业等率
    3.操作系统传建一个服务进程
    4.存在的进程创建新的进程

    C

    第十题(进程和线程)

    10.对进程和线程的描述,以下正确的是()
    A、父进程里的所有线程共享相同的地址空间,父进程的所有子进程共享相同的地址空间
    B、改变进程里面主线程的状态会影响到其他线程的行为,改变父进程的状态不会影响到其他子进程
    C、多线程会引起死锁,而多进程不会
    D、以上选项都不正确

    A选项:子进程有自己独立的虚拟地址空间,所以A选项错误
    B选项:每个线程都是独立被操作系统调度的,所以有独立的状态信息。
    C选项:父进程创建子进程时,子进程的会复制父进程的内存(包括锁状态),有可能导致子进程陷入死锁状态

    D

  • 相关阅读:
    前端构建工具(webpack&vite)
    @Validated指定校验顺序
    Flutter实战-自定义键盘(二)
    曲线积分一个易错点
    C#对象序列化
    leetcode 47. 全排列 II(46题变形)
    Vue脚手架Ⅱ(props配置,mixin混入,插件,scoped样式)
    从ifelse到策略模式,谈谈我对设计模式的理解
    关于xlrd.biffh.XLRDError: Excel xlsx file; not supported的解决方法
    RocketMQ并行消费浅析
  • 原文地址:https://blog.csdn.net/weixin_62684026/article/details/127949452