【C/C++笔试练习】read函数、虚拟存储、用户态、线程特点、缺页处理、调度算法、进程优先级、锁的使用、创建进程、不用加减乘除做加法、三角形

文章目录

  • C/C++笔试练习
  • 选择部分
    • (1)read函数
    • (2)虚拟存储
    • (3)用户态
    • (4)线程特点
    • (5)缺页处理
    • (6)调度算法
    • (7)进程优先级
    • (8)锁的使用
    • (9)创建进程
    • (10)进程和线程
  • 编程题 day27
    • 不用加减乘除做加法
    • 三角形

C/C++笔试练习

选择部分

(1)read函数

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

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

  A.仅Ⅰ、 Ⅱ
   B.仅Ⅰ、 Ⅲ
  C.仅Ⅱ、 Ⅲ
   D.Ⅰ、 Ⅱ和Ⅲ

  答案:A

在这里插入图片描述
  

  (1)从上图可以看出来,当我们调用“read”系统调用之后, 我们的进程本质上是需要从磁盘请求数据的,此时进程会进入到阻塞状态,由于并不需要CPU的参与,需要磁盘10的操作,所以,该进程就会进入可中断睡眠状态,等待磁盘I0的完毕。

  (2)rend是系统调用,会执行内核的代码,所以,程序会从用户态切换到内核态

  read函数模型:
  ssize t read(int fd, void *buf, size t count);

  通过函数的模型, 我们发现并不需要包含文件的名称,而是需要文件描述符。

  

(2)虚拟存储

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

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

  答案:B

  虚拟存储本质上就是进程的虚拟地址空间。

  装入程序时,只将程序的一部分装入内存,而将其余部分留在外存,就可以启动程序执行。

  采用连续分配方录,会使相当一部分内存空间都处于暂时或“永久”的空闲状态,造成内存资源的严重浪费,也无法从逻辑上扩大内存容量,因此虚拟内容的实现只能建立在离散分配的内存管理的基础上。

  虚拟存储器容量既不受外存容量限制,又不受内存容量限制,而是由CPU的寻址范围决定的。

  

(3)用户态

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

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

  答案:C

  A 系统调用:例如调用pipe系统调用函数。

  B 外部中断:例如程序在运行的时候,ctrl+c,中断程序。

  C 进程切换:进程的切换是由操作系统内核来调度产生的,所以在用户态是不会发生的。

  D 缺页: 访问某一块内存的时候,有可能导致缺页现象。

  

(4)线程特点

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

  A.stack
  B.data section
  C.register set
  D.thread ID

  答案:B

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

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

  

(5)缺页处理

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

  Ⅰ.修改页表 Ⅱ.磁盘 I/O Ⅲ.分配页框

  A.仅Ⅰ、 Ⅱ
   B.仅Ⅱ
  C.仅Ⅲ
   D.Ⅰ、 Ⅱ和Ⅲ

  答案:D

  (1)缺页中断产生后,需要在内存中找到空页框并分配给需要访问的页(可能涉及到页面置换)。

  (2)之后缺页中断处理程序调用设备驱动程序做磁盘I/0,将位于外存上的页面调入内存。

  (3)调入后需要修改页表,将页表中代表该页是否在内存的标志位(或有效位)置为1,并将物理页框号填入相应位置。

  

(6)调度算法

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

  A.先来先服务
  B.高响应比优先
  C.时间片轮转
  D.非抢占式短任务优先

  答案:B

  先来先服务算法特点:

  (1)是一种最简单的调度算法,即可用于作业调度,也可用于进程调度。

  (2)有利于长作业(进程),而不利于短作业(进程)。

  (3)有利于CPU繁忙型作业,而不利于/0繁忙型作业。

  高响应比优先算法特点:

  (1)当等待时间相同时,短进程的优先权高。

  (2)当需要运行时间相同时,作业的优先权又取决于等待时间,相当于先到先服务

  (3)长作业的优先级可以随着等待时间的增加而提高,因此长作业等待一段时间后仍能得到调度。

  时间片轮转算法特点:

  时间片轮转调度算法是一种最古老,最简单,最公平的且使用最广的算法。每个进程被分配一个时间段,称作它的时间片,即该进程允许进行的时间。 如果在时间片结束时进程还在运行,则cpu将被剥夺并分配给另一个进程。如果进程在时间片结束前阳塞或结束,则cpu当即进行切换。调度程序所要做的就是维护一张就绪进程列表,当进程用完他的时间片后,就被移动到队列的末尾。

  非抢占式短任务优先:

  因为是非抢占式且短任务优先,则长作业的优先级就比较低,在短作业非常多的情况下,对长作业非常的不友好。

  

(7)进程优先级

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

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

  答案:A

  A 进程刚运行完,可以降低进程的优先级。

  B 进程刚刚完成I0操作,刚进入就绪状态了,等待被被操作系用调度运行,此时是不合理的。

  C 长久的处于就绪队列,说明一直得不到调度,理应该提高优先级,让操作系用调度,再不调度,就被饿死了。

  D 进程刚运行,就降低优先级,有可能会被其他进程抢断,也是不合理的。

  

(8)锁的使用

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

  A.死锁
  B.饥饿
  C.活锁
  D.以上全部

  答案:D

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

  在使用锁保证现场安全时可能会出现 活跃度 失败的情况主要包括 饥饿、和活锁、死锁 等。(多线程除了死锁之外遇到最多的就是活跃度问题了)。

  饥饿:

  饥饿是指如果线程T1占用了资源R,线程T2又请求封锁R,于是T2等待。T3也请求资源R,当T1释放了R上的封锁后,系统首先批准了T3的请求,T2仍然等待。然后T4又请求封锁R,当T3释放了R上的封锁之后,系统又批准了T4的请求.,T2可能永远等待。

  活锁:

  活锁是指线程1可以使用资源,但它很礼貌,让其他线程先使朋资源,线程2也可以使用资源,但它很绅士,也让其他线程先使用资源。这样你让我,我让你,最后两个线程都无法使用资源。

  活锁不会被阻塞,而是不停检测一个永远不可能为真的条件。除去进程本身持有的资源外,活锁状态的进程会持续耗费宝贵的CPU时间。

  死锁:

  就是互相等着对方释放资源,结果谁也得不到。

  

(9)创建进程

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

  I用户登陆成功 II设备分配 III启动程序执行

  A.仅I和II
  B.仅II和III
   C.仅I和III
   D.I、II和III

  答案:C

  进程在运行期间通过创建进程系统调用来创建多个新进程。每一个进程都有生命期,即从创建到消亡的时间周期。当操作系统为一个程序构造一个进程控制块并分配地址空间之后,就创建了一个进程。进程的创建来源于以下四个事件:

  (1)提交一个批处理作业。

  (2)在终端上一个交互式作业登录。

  (3)操作系统创建一个服务进程。

  (4)存在的进程创建新的进程。

  因此,在本题中,能导致创建新进程的操作有用户登录成功和启动程序执行,

  

(10)进程和线程

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

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

  答案:D

  A 子进程有自己独立的虚拟地址空间,所以A选项错误。

  B 没有个线程都是独立被操作系统调度的,所以有独立的状态信息,B选项错误。

  C 父进程创建子进程时,子进程会复制父进程的内存(包括锁状态),有可能导致子进程陷入死锁状态。

            

编程题 day27

不用加减乘除做加法

不用加减乘除做加法

  解题思路:因为要不使用+运算符进行加法运算,我们可以让数字的相加可以转换为二进制的加法,注意每一位相加与进位即可,两个数异或:相当于每一位相加,而不考虑进位。

  

三角形

三角形

  需要了解三角形的组成条件:任意两边相加大于第三边,对输入的三个数字分别进行两两相加与另一个数进行比较。

#include <iostream>
#include <string>
#define ADD(x, y) ((x) + (y))
#define CMP(x, y) ((x) > (y))int main() 
{double a, b, c;while (std::cin >> a >> b >> c) {//对两边进行求和与第三遍进行比较if (CMP(ADD(a, b), c) && CMP(ADD(b, c), a) && CMP(ADD(a, c), b)) {std::cout << "Yes" << std::endl;} else {std::cout << "No" << std::endl;}}return 0;
}

            

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/311571.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《由浅入深学习SAP财务》:第2章 总账模块 - 2.6 定期处理 - 2.6.6 年初操作:科目余额结转

2.6.6 年初操作&#xff1a;科目余额结转 在使用事务代码 FAGLB03 查询科目余额时&#xff0c;可以看到按期间的发生额清单。其中&#xff0c;第一行称为“余额结转”&#xff0c;该行的累计余额代表上年度遗留下来的余额&#xff0c;也就是年初余额。对于资产负债表科目而言&a…

【教学类-52-05】20240417动物数独(4宫格)黏贴卡片需要至少几张?难度1-9 打印版

作品展示&#xff1a; 背景需求&#xff1a; 实际打印的是以下代码生成的动物数独&#xff08;2*2&#xff09;学具 【教学类-52-03】20240412动物数独&#xff08;4宫格&#xff09;难度1-9 打印版-CSDN博客文章浏览阅读1.1k次&#xff0c;点赞30次&#xff0c;收藏17次。【教…

排序:冒泡排序,直接插入排序,简单选择排序,希尔排序,快速排序,堆排序,二路归并排序

目录 一.冒泡排序 代码如下 冒泡排序时间复杂度分析 二.直接插入排序 直接插入排序时间复杂度分析 直接插入排序优化&#xff1a;折半插入排序 三.简单选择排序 简单选择排序优化&#xff1a;双向选择排序 选择排序时间复杂度 双向选择排序时间复杂度 四.希尔排序 希…

2.2 iHRM人力资源 - 主页权限认证、Vux共享用户资料

iHRM人力资源 - 主页权限认证、主页内容展示 2.IHRM人力资源 - 登录-CSDN博客 文章目录 iHRM人力资源 - 主页权限认证、主页内容展示一、主页权限认证1.1 主页权限认证分析1.2 主页权限认证 - permission.js1.2.1 进度条部分1.2.2 token 认证 二、Vuex共享用户资料2.1 需求分析…

day02|最小花费爬梯子

最小花费爬梯子 比如 有一个数组 【2 5 20】我们直接选择从1号梯子&#xff08;从零编号&#xff09;跳两格就出去了。 算法原理 我们可以得出楼顶其实是数组的最后一个元素的下一个位置。对于最值问题我们可以尝试使用dpdp我们首先应该定义状态方差的含义&#xff0c;一般以…

Linux的重要命令(二)+了解Linux目录结构

目录 一.Linux的目录结构 二.查看文件内容命令 1.cat 命令 2.more 命令 3.less 命令 4.head 命令 5.tail 命令 6.拓展 head 和 tail 的其他用法 ​编辑 三.统计文件内容的命令-wc ​编辑 四.检索和过滤文件内容的命令-grep ​编辑 ​编辑 五.压缩命令 gzip 和 bz…

android studio 网络请求okhttp3、okgo

一、在build.gradle文件里添加 implementation com.squareup.okhttp3:okhttp:4.9.0 implementation com.squareup.okhttp3:okhttp:3.12.0 implementation com.squareup.okio:okio:1.17.4 implementation com.lzy.net:okgo:3.0.4 implementation com.alibaba:fastjson:1.2.57 i…

windows下已经创建好了虚拟环境,但是切换不了的解决方法

用得多Ubuntu&#xff0c;今天用Windows重新更新anaconda出问题&#xff0c;重新安装之后&#xff0c;打开pycharm发现打开终端之后&#xff0c;刚开始是ps的状态&#xff0c;后面试了网上改cmd的方法&#xff0c;终端变成c盘开头了 切换到虚拟环境如下&#xff1a;目前的shell…

实现iOS App代码混淆

简介 在开发iOS应用程序时&#xff0c;保护代码安全是至关重要的。代码混淆是一种常用的技术&#xff0c;可以增加逆向工程的难度&#xff0c;防止他人对代码的篡改和盗用。本文将介绍如何实现iOS App代码混淆的步骤和操作方法。 整体流程 下面是实现iOS App代码混淆的整体流…

大数据平台搭建2024(一)

一&#xff1a;基础配置 创建虚拟机并查出ip地址进行连接 ip a1.配置node01静态ip地址与主机名 vi /etc/sysconfig/network-scripts/ifcfg-ens33修改或添加如下内容&#xff1a; BOOTPROTO"static" ONBOOTyes #根据虚拟机网卡信息配置 IPADDR192.168.200.141 NET…

时隔一年,再次讨论下AutoGPT-安装篇

AutoGPT是23年3月份推出的&#xff0c;距今已经1年多的时间了。刚推出时&#xff0c;我们还只能通过命令行使用AutoGPT的能力&#xff0c;但现在&#xff0c;我们不仅可以基于AutoGPT创建自己的Agent&#xff0c;我们还可以通过Web页面与我们创建的Agent进行聊天。这次的AutoGP…

conda新建环境报错An HTTP error occurred when trying to retrieve this URL.

conda新建环境报错如下 cat .condarc #将 .condarc文件中的内容删除&#xff0c;改成下面的内容 vi .condarc channels:- defaults show_channel_urls: true default_channels:- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main- https://mirrors.tuna.tsinghua.…

2024年认证杯SPSSPRO杯数学建模D题(第一阶段)AI绘画带来的挑战全过程文档及程序

2024年认证杯SPSSPRO杯数学建模 D题 AI绘画带来的挑战 原题再现&#xff1a; 2023 年开年&#xff0c;ChatGPT 作为一款聊天型 AI 工具&#xff0c;成为了超越疫情的热门词条&#xff1b;而在 AI 的另一个分支——绘图领域&#xff0c;一款名为 Midjourney&#xff08;MJ&…

【教程】cocos2dx资源加密混淆方案详解

1,加密,采用blowfish或其他 2,自定是32个字符的混淆code 3,对文件做blowfish加密,入口文件加密前将混淆code按约定格式(自定义的文件头或文件尾部)写入到文件 4,遍历资源目录,对每个文件做md5混淆,混淆原始串“相对路径”“文件名”混淆code, 文件改名并且移动到资源目录根…

【Entity Framework】你必须要了解EF中数据查询之数据加载

【Entity Framework】你必须要了解EF中数据查询之数据加载 文章目录 【Entity Framework】你必须要了解EF中数据查询之数据加载一、概述二、预先加载2.1 包含多个层级2.2 经过筛选的包含 三、显示加载3.1查询关联实体 四、延时加载4.1 不使用代理进行延迟加载 一、概述 Entity…

电脑网络一切正常但无法上网-注意检查代理

当电脑出现无法上网&#xff0c; 但是网络适配器又一切正常的时候&#xff0c; 不妨检查一下网络代理设置&#xff0c; 看是否处于开启状态。如果是开启状态&#xff0c; 关闭后再次尝试。 代理服务器自动设置成开启状态&#xff0c; 并且代理地址服务器地址设置成127.0.0.1:1…

提升测试效率都有哪些具体手段?

&#x1f525; 交流讨论&#xff1a;欢迎加入我们一起学习&#xff01; &#x1f525; 资源分享&#xff1a;耗时200小时精选的「软件测试」资料包 &#x1f525; 教程推荐&#xff1a;火遍全网的《软件测试》教程 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1…

OVITO-2.9版本

关注 M r . m a t e r i a l , \color{Violet} \rm Mr.material\ , Mr.material , 更 \color{red}{更} 更 多 \color{blue}{多} 多 精 \color{orange}{精} 精 彩 \color{green}{彩} 彩&#xff01; 主要专栏内容包括&#xff1a; †《LAMMPS小技巧》&#xff1a; ‾ \textbf…

Matlab|电价型负荷需求响应(考虑电价变化)

程序复现来源于《计及需求响应消纳风电的电-热综合能源系统经济调度 》第四章内容。 一、原理 需求响应的基本原理是需求侧根据电力市场价格和电网要求改变其负荷需求以 获取一定的利益回报。其中 PDR 可通过直观的电价变化信号引导用户调节用电方式&#xff0c; 从而达到优…

JVM结构化体系

目录 目录 1.JVM 简介 1.1. 如何理解 JVM 呢&#xff1f; 1.2. 市场主流 JVM 分析&#xff1f; 1.3. 为什么要学习 JVM&#xff1f; 1.4. 字节码底层是如何执行呢&#xff1f; 如何理解 JIT 呢&#xff1f; 为什么 JVM 中解释执行与编译执行的并存&#xff08;混合模式&…