【C/C++笔试练习】单处理器系统、磁盘缓冲区、进程调度、管道、文件控制块、进程间通信、LRU算法、系统缓冲区、操作系统功能、变态跳台阶、快到碗里来

文章目录

  • C/C++笔试练习
  • 选择部分
    • (1)单处理器系统
    • (2)磁盘缓冲区
    • (3)进程调度
    • (4)管道
    • (5)文件控制块
    • (6)进程间通信
    • (7)进程调度
    • (8)LRU算法
    • (9)系统缓冲区
    • (10)操作系统功能
  • 编程题 day26
    • 变态跳台阶
    • 快到碗里来

C/C++笔试练习

选择部分

(1)单处理器系统

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

  A. 1
  B. 9
  C. 10
  D. 11

  答案:D

  这道题表示的是在单处理器,也就是单个cpu的环境下即使有再多的进程,都是并发的去运行的。也就是在同一时刻,只能有一个进程可以拥有CPU资源。 所以当前有12个进程,只有一个进程在CPU中运行,剩下11个进程都在就绪队列中进行等待。

  

(2)磁盘缓冲区

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

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

  答案:A

  磁盘缓存: 磁盘缓存是属于内存的。又称磁盘快取,实际上就是将下载到的数据先保存到系统为软件分配的内存空间中(这个内存空间被称之为“内存池”),当保存到内存池中的数据达到一个程度时,便将数据保存到硬盘中。这样可以减少实际的磁盘操作,有效的保护磁盘免于重复的读写操作而导致的损坏。

  磁盘缓冲区: 磁盘缓冲区是硬盘与PCI总线之间的容量固定的硬件磁盘的缓冲区是硬盘与外部总线交换数据的场所。硬盘的读数据的过程是将磁信号转化为电信号后,通过缓冲区一次次地填充与清空,再填充,再清空,一步步按照PCI总线的周期送出,可见,缓冲区的作用是相当重要的。它的作用也是提高性能,但是它与缓存的不同之处在于:

  一、它是容量固定的硬件,而不像缓存是可以由操作系统在内存中动态分配的。

  二、它对性能的影响大大超过磁盘缓存对性能的影响,因为如果没有缓冲区,就会要求每传一个字(通常是4字节)就需要读一次磁盘或写一次磁盘。 总而言之,磁盘缓存是属于内存的,而磁盘缓冲区是硬盘与PCI总线之间的容量固定的硬件。

  PCI: 外设不见互联标准()
  PCI是由Intel公司1991年推出的一种局部总线。从结构上看,PCI是在CPU和原来的系统总线之间插入的一级总线,具体由一个桥接电路实现对这一层的管理,并实现上下之间的接口以协调数据的传送。
【C/C++笔试练习】单处理器系统、磁盘缓冲区、进程调度、管道、文件控制块、进程间通信、LRU算法、系统缓冲区、操作系统功能、变态跳台阶、快到碗里来_第1张图片

  所以,磁盘缓冲区的作用是减少磁盘I/O次数,提高性能。

  

(3)进程调度

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

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

  答案:D

  处理机: 计算机系统中存储程序和数据,并按照程序规定的步骤执行指令的部件。处理机包活中央处理器(CPU),主存储器,I/O 接口。

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

【C/C++笔试练习】单处理器系统、磁盘缓冲区、进程调度、管道、文件控制块、进程间通信、LRU算法、系统缓冲区、操作系统功能、变态跳台阶、快到碗里来_第2张图片

  

(4)管道

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

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

  答案:C

  管道特性:

  1.管道的是半双工通信的,数据流只能从写端流向读端;

  2.匿名管道在内核创建出来的缓冲区是没有标识符的,导致了其他进程没有办法直接找到这个缓冲区。但是创建的进程可以通过读写两端的文件描述符进行操作;

  3.匿名管道只支持具有亲缘性关系的进程进行进程间通信;

  4.当文件描述符保持基础属性(阻塞),调用read读空管道的时候,则read函数就会阻塞;

  5.管道的大小为64k;

  6.当文件描述符保持基础属性(阻塞),一直调用write将管道写满之后,则write函数就会阻塞;

  7.管道的生命周期是跟随进程的;

  8.管道提供字节流服务,字节流:描述符的前后两个数据之间是没有明显边界的;

【C/C++笔试练习】单处理器系统、磁盘缓冲区、进程调度、管道、文件控制块、进程间通信、LRU算法、系统缓冲区、操作系统功能、变态跳台阶、快到碗里来_第3张图片

  9.从fd[1]当中读取内容的时候,是直接将数据读走了,并不是拷贝;

  10.管道的大小:64k
  pipe size (512 bytes,-p)8 = 4096字节

  11.当对管道进行读写的时候,如果读写的字节大小没有超过pipe_size, 则管道保证读写的原子性。

  12.匿名管道的非阻塞特性

  12.(1)读设置成为非阻塞:

  写不关闭, 一直读,读端调用read函数之后,返回值为-1,errno置为EAGAIN;

  写关闭, 一直读,读端ead函数返回0,表示什么都没有读到。

  12.(2)写设置成为非阻塞:

  读不关闭,一直写,当把管道写满之后,则在调用write,就会返回-1;

  读关闭, 一直写,写端调用write进行写的时候,就会发生崩溃。本质上是写端的进程收到了SIGPIPE信号,导致了写端的进程崩溃。

  

(5)文件控制块

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

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

  答案:B

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

  

(6)进程间通信

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

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

  答案:C

  管道: 管道中还有命名管道和非命名管道之分,非命名管道只能用于父子进程通讯,命名管道可用于非父子进程,命名管道就是FIFO,管道是先进先出的通讯方式。FIFO是一种先进先出的队列。它类似于一个管道,只允许数据的单向流动。每个FIFO都有一个名字,允许不相关的进程访问同一个FIFO,因此也成为命名管。

  消息队列: 是用于两个进程之间的通讯,首先在一个进程中创建一个消息队列,然后再往消息队列中写数据,而另一个进程则从那个消息队列中取数据。需要注意的是,消息队列是用创建文件的方式建立的,如果一个进程向某个消息队列中写入了数据之后,另一个进程并没有取出数据,即使向消息队列中写数据的进程已经结束,保存在消息队列中的数据并没有消失,也就是说下次再从这个消息队列读数据的时候,就是上次的数据!

  共享内存: 只要首先创建一个共享内存区,其它进程按照附加到共享区的内存当中,就能访问到这个共享内存区中的数据,当然可读可写;

  套接字: 套接字是当今使用最频繁的进程间通信方式,就是网络通信。

  综上所述:

  管道:速度慢,容量有限。

  消息队列:容量受到系统限制,且要注意第一次读的时候,要考虑上一次没有读完数据的问题。

  共享内存:能够很容易控制容量,速度快。

  套接字:需要跨网络,虽然可以持续的传递,个但是在速度上还是没有共享内存快捷。

  

(7)进程调度

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

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

  答案:A

  解题分析进程读磁区结束之后,说明当前进程的状态不是就绪或者运行状态,只能是阻塞状态也符合阻塞状态的进程在等待资源的情况,所以当一个进程等待资源到位之后,就会修改进程的状态为就绪状态,等待被操作系统调度获取CPU,进行计算。

  

(8)LRU算法

  系统为某进程分配了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

  缺页中断: 缺页中断就是要访问的页不在主存,需要操作系统将其调入主存后再进行访问。

  LRU算法 (最近最久未使用和最少使用):当要调入一页而必须淘汰旧页时,将最近最少使用的置换出去。

  缺页数: 即缺页中断次数,就等于进程的物理块数+页面置换次数。

【C/C++笔试练习】单处理器系统、磁盘缓冲区、进程调度、管道、文件控制块、进程间通信、LRU算法、系统缓冲区、操作系统功能、变态跳台阶、快到碗里来_第4张图片

  依据 LRU 算法,应淘汰页的页号是2。

  

(9)系统缓冲区

  设系统缓冲区和用户工作区均采用单缓冲,从外设读入1 个数据块到系统缓冲区的时间为 100,从系统缓冲区读入 1 个数据块到用户工作区的时间为 5, 对用户工作区中的1 个数据块进行分析的时间为 90(如下图所示)。进程从外设读入并分析 2 个数据块的最短时间是( )。
【C/C++笔试练习】单处理器系统、磁盘缓冲区、进程调度、管道、文件控制块、进程间通信、LRU算法、系统缓冲区、操作系统功能、变态跳台阶、快到碗里来_第5张图片
  A. 200
  B. 295
  C. 300
  D. 390

  答案:C

  该题最主要的理解:第1次分析与第二次读外设并行执行:

  1.数据块1 从外设到用户工作区的总时间为 105,在这段时间中,数据块2 没有进行操作。

  2.在数据块1进行分析处理时,数据块2 从外设到用户工作区的总时间为105,这段时 间是并行的。3.再加上数据块2 进行处理的时间90,总共是300。

  综上:100+5+MAX(90,100)+5+90==100+5+100+5+90=300。

  

(10)操作系统功能

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

  A. 处理机管理
  B. 存储器管理
  C. 设备管理和文件管理
  D. 可移植

  答案:D

  操作系统的主要功能是计算机资源管理,程序控制和人机交互等。

  计算机系统的资源可分为设备资源和信息资源两大类:

  设备资源指的是组成计算机的硬件设备,如处理器(对应A),主存储器,磁盘存储器(对应B),打印机,磁带存储器,显示器,键盘输入设备和鼠标等。

  信息资源指的是存放于计算机内的各种数据, 如文件,程序库,知识库,系统软件和应用软件等。

            

编程题 day26

变态跳台阶

变态跳台阶

  解题思路:假定第一次跳的是一阶,那么剩下的是n-1个台阶,跳法是f(n-1); 假定第一次跳的是2阶,那么剩下的是n-2个台阶,跳法是f(n-2); 假定第一次跳的是3阶,那么剩下的是n-3个台阶,跳法是f(n-3)… 假定第一次跳的是n-1阶,那么剩下的是1个台阶,跳法是f(1); 假定第一次跳的是n阶,那么剩下的是0个台阶,跳法是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)。

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

  

快到碗里来

快到碗里来

  解题思路:只要我们输入的猫的身长小于碗的周长即可,通过输入碗半径计算得到周长,与输入的猫的身长相比较。

#include 
using namespace std;

int main()
{
    double n,r;
    while(cin >> n >> r)
    {
        //周长:2*r*3.1415
        //身长:n
        if(n > (2*r*3.1415))
            cout<<"No"<<endl;
        else
            cout<<"Yes"<<endl;
    }
    return 0;
}

你可能感兴趣的:(C/C++笔试练习,c语言,c++)