【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;
}
相关文章:
【C/C++笔试练习】read函数、虚拟存储、用户态、线程特点、缺页处理、调度算法、进程优先级、锁的使用、创建进程、不用加减乘除做加法、三角形
文章目录 C/C笔试练习选择部分(1)read函数(2)虚拟存储(3)用户态(4)线程特点(5)缺页处理(6)调度算法(7)进程优先…...
设计模式(021)行为型之访问者模式
访问者模式是一种行为型设计模式,它可以在不修改现有代码结构的情况下,为复杂的对象结构添加新的操作。该模式将数据结构和数据操作进行分离,使得数据结构可以独立于操作进行变化,同时也可以在不改变操作的前提下增加新的操作。 在…...
Linux中磁盘的分区,格式化,挂载和文件系统的修复
一.分区工具 1.分区工具介绍 fdisk 2t及以下分区 推荐 (分完区不保存不生效,有反悔的可能) gdisk 全支持 推荐 parted 全支持 不推荐 ( 即时生效,分完立即生效) 2.fdisk 分区,查看磁盘 格式:fdisk -l [磁盘设备] fdisk -l 查看…...
Android retrofit
目录 一.简介 二.基本使用 三.注解 四.转换器 五.适配器 六.文件上传与下载 一.简介 A type-safe HTTP client for Android and Java。封装了OkHttp,也是由Square公司贡献的一个处理网络请求的开源项目。 square/retrofit: A type-safe HTTP client for Andr…...
【C++风云录】五款 C++ 库的探索与应用:物联网、嵌入式与数据处理
提升你的C技能:五个关键库的使用与指南 前言 在今天的数字化世界里,C 作为一种强大且快速的编程语言,在各类复杂系统和应用的开发中扮演着重要角色。然而,单凭语言本身的能力,我们往往无法实现所有的功能需求&#x…...
Qt_30道常见面试题及答案
1. 简述 Qt 是什么? 答:Qt 是一个跨平台的应用程序开发框架,它提供了一系列的工具和库,用于开发图形用户界面(GUI)应用程序。 2. Qt 有哪些主要模块? 答:Qt 的主要模块包括 Qt Co…...
【vue】v-model 双向数据绑定
:value:单向数据绑定v-model:双向数据绑定 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0">…...
C#创建磁性窗体的方法:创建特殊窗体
目录 一、磁性窗体 二、磁性窗体的实现方法 (1)无标题窗体的移动 (2)Left属性 (3)Top属性 二、设计一个磁性窗体的实例 (1)资源管理器Resources.Designer.cs设计 (2)公共类Frm_Play.cs (3)主窗体 …...
Gateway 基本配置指南:构建高效的网络接入网关
简介: Gateway 是一个常用的网络接入网关,它可以帮助组织实现安全、可靠和高性能的网络连接。本文将介绍 Gateway 的基本配置,帮助读者了解如何正确配置和部署一个高效的 Gateway 网关。 1.网络拓扑规划: 在配置 Gateway 前&#…...
自定义类型: 结构体 (详解)
本文索引 一. 结构体类型的声明1. 结构体的声明和初始化2. 结构体的特殊声明3. 结构体的自引用 二. 结构体内存对齐1. 对齐规则2. 为啥存在对齐?3. 修改默认对齐值 三. 结构体传参四. 结构体实现位段1. 什么是位段?2. 位段的内存分配3. 位段的应用4. 位段的注意事项 前言:…...
设计模式(23):访问者模式
定义 表示一个作用于某对象结构中的各元素的操作,它使我们可以在不改变元素的类的前提下定义作用与这些元素的新操作。 模式动机 对于存储在一个集合中的对象,他们可能具有不同的类型(即使有一个公共的接口),对于该集合中的对象࿰…...
【C++】类和对象③(类的默认成员函数:拷贝构造函数 | 赋值运算符重载)
🔥个人主页:Forcible Bug Maker 🔥专栏:C 目录 前言 拷贝构造函数 概念 拷贝构造函数的特性及用法 赋值运算符重载 运算符重载 赋值运算符重载 结语 前言 本篇主要内容:类的6个默认成员函数中的拷贝构造函数…...
掀起区块链开发狂潮!Scaffold-eth带你一键打造震撼DApp
文章目录 前言一、Scaffold-eth是什么?二、安装和配置1.准备工作2.安装3.配置开发环境 三、进阶使用1.放入自己的合约2.部署运行 总结 前言 前面的文章传送🚪:hardhat入门 与 hardhat进阶 在之前的文章中,我们已经探讨了使用Har…...
【Qt 学习笔记】Qt常用控件 | 按钮类控件Check Box的使用及说明
博客主页:Duck Bro 博客主页系列专栏:Qt 专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ Qt常用控件 | 按钮类控件Check Box的使用及说明 文章编号:…...
android gradle 配置远程仓库
build.gradle buildscript { ext.kotlin_version "1.6.0" // 使用适合你项目的Kotlin版本 repositories { maven { url http://maven.aliyun.com/nexus/content/groups/public/ } maven { url http://maven.aliyun.com/nexus/content/repos…...
第十二章 OpenGL ES 基础-色温、色调、亮度、对比度、饱和度、高光
第十二章 OpenGL ES 基础-色温、色调、亮度、对比度、饱和度、高光 第一章 OpenGL ES 基础-屏幕、纹理、顶点坐标 第二章 OpenGL ES 基础-GLSL语法简单总结 第三章 OpenGL ES 基础-GLSL渲染纹理 第四章 OpenGL ES 基础-位移、缩放、旋转原理 第五章 OpenGL ES 基础-透视投影…...
力扣经典150题解析之二十八:盛最多水的容器
目录 力扣经典150题解析之二十八:盛最多水的容器1. 介绍2. 问题描述3. 示例4. 解题思路5. 算法实现6. 复杂度分析7. 测试与验证测试用例设计测试结果分析 8. 总结9. 参考文献感谢阅读 力扣经典150题解析之二十八:盛最多水的容器 1. 介绍 在这篇文章中&…...
Rockchip Android13 Vold(二):Framework层
目录 前言 1、接收VolumeInfo状态 2、通知VolumeInfo状态变化 3、创建StorageVolume...
Oracle数据库故障类别及日常运维规划策略
一、故障类别 1、语句故障 单个数据库操作失败(select、insert、update或delete),如: 在表中输入无效的数据,解决方法:可与用户合作来验证并更正数据;执行操作,但权限不足&#x…...
电商技术揭秘九:搜索引擎中的SEO数据分析与效果评估
相关系列文章 电商技术揭秘一:电商架构设计与核心技术 电商技术揭秘二:电商平台推荐系统的实现与优化 电商技术揭秘三:电商平台的支付与结算系统 电商技术揭秘四:电商平台的物流管理系统 电商技术揭秘五:电商平台的个性…...
Docker 部署 XiuXianGame 文字修仙游戏:极空间 NAS 上随时挂机刷资源
前言 挂机刷资源,躺平修成仙。 这类文字修仙游戏,说白了就是佛系养成为主,不用时刻盯着,挂着就行。但问题是——大多数要么得在本地电脑跑,要么依赖第三方平台,体验受限。把这套东西跑在自己的 NAS 上&am…...
清华系团队造出能“边听边说、边看边想“的AI耳朵MiniCPM-o 4.5
这项由清华大学自然语言处理实验室(THUNLP)主导、OpenBMB开源社区联合推出的研究成果,于2026年4月30日以预印本形式发布在arXiv平台,编号为arXiv:2604.27393。感兴趣的读者可通过这个编号检索到完整论文。**一场关于"耳朵和嘴…...
codebase-digest:自动化代码库分析工具的设计原理与工程实践
1. 项目概述:当代码库变成“黑盒”,我们如何快速理解它?你有没有接手过一个庞大而陌生的代码库?面对成千上万的文件和错综复杂的依赖关系,那种感觉就像被扔进了一个没有地图的迷宫。传统的做法是,你得像考古…...
Taotoken用量看板与成本管理功能的实际使用体验
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Taotoken用量看板与成本管理功能的实际使用体验 对于需要持续调用大模型API的项目而言,成本的可观测与可控性是管理中的…...
阵列天线方向图综合算法与应用【附代码】
✨ 长期致力于方向图综合算法、交替投影迭代、交替方向乘子法、子阵方向图综合、相控阵系统、软件设计研究工作,擅长数据搜集与处理、建模仿真、程序编写、仿真设计。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流,点击《获取方式》 (1)…...
Vit工程化应用(timm 库)
pip install timm import timm import torch from PIL import Image import requests from io import BytesIO# 1. 加载模型 (ViT Base版本,16x16图块,在ImageNet-1k上预训练) # 设置 pretrainedTrue 自动下载权重 model timm.create_model(vit_base_pa…...
靠谱的工程防火门公司推荐工程防火门
在工程行业摸爬滚打十几年,我见过太多因防火门翻车的项目:验收反复返工、产品用了两三年就变形卡死、超大门洞找不到厂家定制…… 这些看似鸡毛蒜皮的小事,一旦卡到消防验收节点上,轻则赔钱延期,重则被责令停工整改。今…...
【2026社工】初级社会工作者历年真题及答案PDF电子版(2010-2025年)
2026年初级社会工作者职业水平考试安排 考试时间: 2026年5月23日 考试科目与形式 科目名称考试形式社会工作实务闭卷笔试社会工作综合能力闭卷笔试 备考资源说明 提供2010-2025年完整历年真题及解析,覆盖全部考试科目,具体功能如下&#…...
Windows 10 PL2303驱动修复终极指南:3种方案解决串口设备兼容性问题
Windows 10 PL2303驱动修复终极指南:3种方案解决串口设备兼容性问题 【免费下载链接】pl2303-win10 Windows 10 driver for end-of-life PL-2303 chipsets. 项目地址: https://gitcode.com/gh_mirrors/pl/pl2303-win10 PL2303驱动修复方案是解决Windows 10系…...
金融机器学习实战:MlFinLab工具包核心模块解析与应用指南
1. 从零到一:为什么我们需要一个金融机器学习的“瑞士军刀”?如果你和我一样,在量化金融和算法交易这条路上摸爬滚打了好几年,那你一定经历过这样的场景:为了复现一篇顶级期刊论文里的某个特征工程方法,你需…...
