• 【笔试题】【day28】


    第一题(进程的创建)

    下面的程序执行输出几个hello?

    #include 
    #include  
    int main( ) {
    	fork( );
    	fork( );
    	fork( ); 
    	printf(“hello\n”); 
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    A、3
    B、4
    C、6
    D、8

    运行到第一个fork的时候,我们的父进程会创建一个子进程,算上父进程,一共两个进程,运行到第二个fork的时候,这两个进程又会创建出两个进程,一共四个进程,执行到第三个fork的时候,这四个进程每一个都会再产生一个进程,一共8个进程。

    D

    第二题(线程的读写)

    有一个程序中有A,B,C三个线程同时对一个文件进行读写操作,其中的A,B是写进程只负责往里面写数据,C是读线程,同时把读取的数据从文件中删除,A线程单独写满文件需要10个小时,B单独写程序需要6小时,C线程需要15小时才能读取完整个文件,不考虑三个线程之间的相互影响的情况下现在 小时才能写满文件
    A、5
    B、6
    C、5.5
    D、4.5
    E、4.8
    F、5.3

    假设总任务的单位是1,A的工作效率是1/10,B写的工作效率是1/6,C的读工作效率是1/15,那么总工作效率就是1/10+1/6-1/15,结果就是1/5
    所以需要5个小时

    A

    第三题(会导致饥饿的算法)

    下列进程调度算法中,()可能会出现进程长期得不到调度的情况。
    A、非强占式静态优先权法
    B、强占式静态优先权法
    C、时间片轮转调度算法
    D、非强占式动态优先权法

    1.强占式
    现行进程在运行过程中,如果有重要或紧迫的进;
    进程将被迫放弃处理机,系统将处理机立刻分配给新到达的进程
    2.静态优先权:在创建进程时确定的,优先权在进程的整个运行期间保持不变
    3.动态优先权:在创建讲程时所赋予的优先权,是可以随进程的推进或随其等待时间的增加而改变的,以便获得更好的调度性能,该优先权会随着等待的时间增长而增长。
    非强占式静态优先权法一优先权不会变,假如有一个最低优先权的线程在等待,那么等优先级高的进程执行完就可以轮到该进程执行了。
    强占式静态优先权法 一强占式,说明高优先权的可以抢夺CPU的执行权。假如一个低优先权的执行当一个高优先权的在就绪状态,那么CPU就会执行高优先权的那个进程,低优先权的就会处于等待假如一直有高优先权的进程在就绪,那么就会一直等待。
    时间片轮转调度算法一执行的时间片完毕后,被执行的进程会放到等待队列的队尾,一次循环,既然是循环的话,那就有机会轮到。
    非强占式动态优先权法一 虽然是非强占式的,但是如果一个进程一直在等待,那么他的优先权就会动态增长,就可以得到CPU的执行权

    B

    第四题(信号量

    如果信号量的当前值为-4,则表示系统中在该信号量上有()个进程等待。
    A、4
    B、3
    C、5
    D、0

    信号量=资源计数器+PCB等待队列
    1.count值大于0,表示这个信号量是空闲的(或者理解为资源还可以被使用),进程(线程)可以使用这个信号量
    2.count值等于0,表示信号量被其他进程使用,现在不可以使用这个信号量,但PCB等待队列也没有进程在等待
    3.count值小于0,count的绝对值表示有多少个进程(线程)在等待

    A

    第五题(互斥信号)

    设两个进程共用一个临界资源的互斥信号量mutex=1,当mutex=-1时表示()
    A、一个进程进入了临界区,另一个进程等待
    B、没有一个进程进入临界区
    C、两个进程都进入临界区
    D、两个进程都在等待

    互斥信号量,初始值为1,取值范围为-1,0,1
    当信号量为1时,表示两个进程皆未进入需要互斥的临界区
    当信号量为0时,表示有一个进程进入临界区运行,另一个必须等待
    当信号量为-1时,表示有一个进程正在临界区运行,另一个进程因等待而阻塞在信号量队列中,需要当前已在临界区运行的进程退出时唤醒。

    A

    第六题(处理机调度的单位)

    若系统中只有用户级线程,则处理机调度单位是()
    A、线程
    B、进程
    C、程序
    D、作业

    如果只有用户态线程,则线程对操作系统是不可兼得,操作系统只能调度进程。
    如果操作系统中有内核态线程,则操作系统可以按线程进行调度
    作业可以包括多个进程,完成某一个功能,和题意不符

    B

    第七题(不适合使用缓存的是)

    一个在线服务器通常需要读取存储着海量数据的数据库。为了提高服务器处理速度,通常需要加cache(缓存),以下场景中不适合使用cache的是()
    A、数据库中每条数据被访问的概率近似相等,且独立
    B、使用了多线程机制的服务
    C、单条线程尺寸太小的数据
    D、有着大量访问的服务

    缓存本质上是将在磁盘的数据提前缓存到内存当中,从而减少程序访问获取数据时的IO操作次数,缓存一般会将高频访问的数据,提前读到内存当中缓存起来
    A:访问的概率相等,且独立,就失去了缓存的意义,因为无法区分到底缓存了什么数据,能够提高程序的运行效率。除非全部缓存,对标的概念就是内存数据库
    B:多线程程序为了减少线程IO的时间,可以把线程使用的数据提前缓存起来,提高程序的运行效率
    C:尺寸较小的数据可以被放到换从当中,因为比较小,不会吃掉缓存的空间。同时缓存之后,也能提高程序的运行效率
    D:大量的访问的服务想要访问的数据可以缓存下来,减少IO次数,提高程序的运行效率

    A

  • 相关阅读:
    越南公司注册要求
    Ubuntu下Anaconda安装
    Docker常见面试题整理
    《java并发编程的艺术》读书笔记 1~2章
    Blob 对象实现文件预览下载
    Mach Systems—总线接口转换工具
    C++ | 大小端模式的概念、检测与影响
    CTFHub技能树 Web-SQL注入详解
    CRM与chatGPT结合的效果
    离子液体[EMIm][PF6],[HMIm][PF6],[C14MIm][PF6]修饰纳米Fe3O4,TiO2和SiO2(离子液体修饰物)
  • 原文地址:https://blog.csdn.net/weixin_62684026/article/details/127950196