os实训课程模拟考试(1~7)
操作系统的基本功能和设计目标
1、
操作系统是一组 ____(单选)
A、文件管理程序
B、资源管理程序
C、中断处理程序
D、设备管理程序
2、
以下哪项不是操作系统关心的主要问题?(单选)
A、管理计算机裸机
B、设计、提供用户程序与计算机硬件系统的界面
C、管理计算机系统资源
D、高级程序设计语言的编译器
3、
下列关于操作系统的叙述正确的是?(单选)
A、操作系统是硬件和软件之间的接口
B、操作系统是主机与外设之间的接口
C、操作系统是用户与计算机之间的接口
D、操作系统是源程序与目标程序之间的接口
4、
内存管理的主要任务有?(多选)
A、物理内存的分配和回收
B、虚拟地址到物理地址的映射
C、地址转换的加速
D、突破物理内存限制
5、
除了易用性、高效性、可靠性和可扩展性这四个设计目标,现代操作系统还应考虑能效性。以下哪项不属于操作系统改善计算机能耗的途径?(单选)
A、根据工作负载调整CPU频率
B、采用模块化的结构设计
C、采用动态电压和频率缩放技术
D、休眠或关闭部分空闲设备(如磁盘)
系统函数调用基础
1、
以下不是用来分配内存的函数的是?(单选)
A、realloc()
B、malloc()
C、free()
D、calloc()
2、
lseek()中第三个参数的值为0表示?(单选)
A、文件读写指针当前位置
B、文件开始位置
C、文件结束位置
D、都不是
3、
下面更改文件命令只能更改符号连接的目标文件的权限的命令是?(单选)
A、chgrp
B、chown
C、chmod
D、以上都不对
4、
下面关于ftell()函数成功调用说法不正确的是?(单选)
A、返回读写指针当前相对文件起始位置的位移量
B、返回读写指针当前相对文件结束位置的位移量
C、会清除流结束标志
D、会撤销已调用ungetc()对流的影响
5、
以下函数中表示从某流中读取一个字符但该函数不带参数,表示从标准输入流中读字符的函数是?(单选)
A、getc
B、gets
C、fgec
D、getchar
6、
在函数fopen()中文件打开模式中不是可读写的方式打开文件模式是?(单选)
A、r
B、r+
C、a+
D、w+
7、
格式化输出可把格式化数据输出到标准输出、指定文件及字符缓冲区。其中( )函数是将格式化数据输出到指定大小的字符缓冲区?(单选)
A、sprintf
B、snprintf
C、fprintf
D、printf
文件系统基础
1、
比较文件的差异要用到的命令是以下哪一种?(单选)
A、diff
B、cat
C、wc
D、head
2、
存放设备文件的相关文件目录是?(单选)
A、/dev
B、/etc
C、/lib
D、/bin
3、
rm命令表示什么?(单选)
A、文件复制命令
B、移动文件命令
C、文件内容统计命令
D、文件删除命令
4、
在openEuler系统中,用户文件描述符0表示?(单选)
A、标准输出设备文件描述符
B、标准输入设备文件描述符
C、管道文件描述符
D、标准错误输出设备文件描述符
5、
在使用 mkdir命令创建新的目录时,在其父目录不存在时先创建父目录的选项是?(单选)
A、-d
B、-m
C、-p
D、-f
6、
执行命令“chmod o+rw myfile”后,myfile文件的权限变化为?(单选)
A、所有用户都可读写myfile文件
B、其他用户可读写myfile文件
C、同组用户可读写myfile文件
D、文件所有者读写myfile文件
进程基础知识
1、
临界区是指并发进程中涉及共享变量的()。
A、程序段
B、管理信息区
C、公共数据区
D、信息存储区
2、
下列有关fork()函数返回值说法错误的是()
A、函数成功返回时,一次返回两个值,错误返回时为-1
B、返回值等于0表示子进程
C、返回值大于0表示父进程
D、大于0返回值为父进程的PID号
3、
下面程序的输出是什么()
A、
#include <stdio.h>
#include <unistd.h>
int main(int argc, char** argv){
if(fork() == 0){
printf("hello");
}else{
printf("world");
}
return 0;
}
helloworld
B、wordhello
C、hello
D、不确定
4、
下面说法不正确的是( )
A、管道和命名管道是最早进程间通信机制之一
B、消息队列是将消息按队列的方式组织成的链表,每个消息都是其中的一个节点
C、进程创建一般由create函数完成
D、共享内存和消息都是由Linux内核来管理和分配资源
5、
关于SIGCHLD信号说法错误的是()
A、在子进程退出时,会向父进程发送该信号
B、需要及时处理SIGCHLD防止僵尸进程
C、SIGCHLD信号的默认处理方式是忽略
D、由于SIGCHLD信号默认方式是忽略,所以在代码中不需要手动设置SIGCHLD信息的处理方式,也不会产生僵尸进程
6、
下列哪种通信方式只能用于具有亲缘关系进程之间的通信()
A、匿名管道
B、消息队列
C、共享内存
D、命名管道
Linux操作系统
第1关:Linux初体验
编程要求
根据右侧窗口命令行内的提示,在
Begin - End
区域内进行命令行语句补充,具体任务如下:
切换当前目录到根目录;
列出根目录下所有文件和文件夹(包括隐藏文件/文件夹)。
#!/bin/bash
#在以下部分写出完成任务的命令
#*********begin*********#
cd
cd ..
ls -a
#********* end *********#
第2关:Linux常用命令
编程要求
根据右侧窗口命令行内的提示,在
Begin - End
区域内进行代码补充,具体任务如下:
- 在当前目录下新建一个新的文件(名称为
newfile
);- 在当前目录下新建一个新的文件夹(名称为
newdir
);- 将
newfile
文件复制一份到newdir
目录下并命名为newfileCpy
。
#!/bin/bash
#在以下部分写出完成任务的命令
#*********begin*********#
touch newfile
mkdir newdir
cp newfile newdir/newfileCpy
#********* end *********#
第3关:Linux 查询命令帮助语句
编程要求
根据右侧窗口命令行内的提示,在
Begin - End
区域内进行代码补充,具体任务如下:
- 使用man查询
C
库中的fopen
函数使用方法。
#!/bin/bash
#在以下部分写出完成任务的命令
#*********begin*********#
man 3 fopen
#********* end *********#
Linux之进程管理一
第1关:获取进程常见属性
编程要求
本关的编程任务是补全右侧代码片段中
Begin
至End
中间的代码,具体要求如下:
- 补全
getProcInfo
函数,用于获取当前进程ID
和其父进程ID
(提示:将结果存放在procIDInfo结构体中)。
#include <unistd.h>
#include <sys/types.h>
#include <stdio.h>/*********************** pid: 当前进程ID* ppid: 父进程ID
***********************/
struct procIDInfo
{pid_t pid;pid_t ppid;
};/************************* 返回值: 需要被打开的目录路径
*************************/
struct procIDInfo getProcInfo()
{struct procIDInfo ret; //存放进程ID信息,并返回/********** BEGIN **********/ret.pid = getpid();ret.ppid = getppid();/********** END **********/return ret;
}
第2关:进程创建操作-fork
编程要求
本关的编程任务是补全右侧代码片段中
Begin
至End
中间的代码,具体要求如下:
- 补全
createProcess
函数,使用fork
函数创建进程,并在子进程中输出"Children"
字符串,在父进程中输出"Parent"
字符串。(注意:不要在createProcess
函数中使用exit
函数或者return
来退出程序)。
#include <unistd.h>
#include <sys/types.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>/************************* 提示: 不要在子进程或父进程中使用exit函数或者return来退出程序
*************************/
void createProcess()
{/********** BEGIN **********/pid_t pid;pid = fork();if (pid==0)printf("Children");else if(pid>0)printf("Parent");/********** END **********/
}
第3关:进程创建操作-vfork
编程要求
本关的编程任务是补全右侧代码片段中
Begin
至End
中间的代码,具体要求如下:
- 补全
createProcess
函数,使用vfork
函数创建进程,并在子进程中输出"Children"字符串(提示:需要换行),在父进程中输出"Parent"字符串(提示:需要换行)。
#include <unistd.h>
#include <sys/types.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <stdlib.h>/************************* 提示: 不要在子进程中使用return来退出程序
*************************/
void createProcess()
{/********** BEGIN **********/pid_t pid;pid = vfork();if(pid==0){printf("Children\n");}else if(pid > 0){printf("Parent\n");}/********** END **********/exit(0);
}
第4关:进程终止
编程要求
本关的编程任务是补全右侧代码片段中
Begin
至End
中间的代码,具体要求如下:
- 补全
exitProcess
函数,使用atexit
函数注册一个函数,在注册函数中打印出当前进程的ID
号。
#include <unistd.h>
#include <sys/types.h>
#include <stdlib.h>
#include <stdio.h>/************************* 提示: 用户需要在exitProcess函数中使用atexit函数注册一个自定义函数,并在自定义函数中打印出当前进程ID号
*************************/
void exitProcess()
{/********** BEGIN **********/void exit(){printf("%d\n",getpid());}if(atexit(exit)!=0)printf("调用atexit函数错误\n");/********** END **********/
}
生产者消费者问题实践
第1关:生产者消费者问题实践
编程要求
请参考生产者线程的函数代码实现消费者线程的函数代码,将Consumer()函数补充完整。
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <pthread.h>
#include <semaphore.h>#define SIZE 10int in = 0;
int out = 0;
int buffer[SIZE];
sem_t empty;
sem_t full;
pthread_mutex_t mutex;void *Producer()
{int nextp = 0;int i = 0;for(; i < 10; ++i){ int time = rand() % 10 + 1;usleep(time*100000); sem_wait(&empty); pthread_mutex_lock(&mutex);nextp = nextp + 1;buffer[in] = nextp;printf("Produce one message:%d\n", nextp);fflush(stdout);//printf后请一定调用这句刷新输出缓存in = (in + 1) % SIZE;pthread_mutex_unlock(&mutex); //互斥锁解锁sem_post(&full);}
}void *Consumer()
{//请补充消费者线程函数代码int nextc=0;int i=0;for (;i<10;++i){sem_wait(&full); //等待缓冲区非空pthread_mutex_lock(&mutex); //加锁nextc = buffer[out];printf("Consume one message:%d\n",nextc);fflush(stdout);out=(out+1)%SIZE;pthread_mutex_unlock(&mutex); //解锁sem_post(&empty); //增加一个空缓冲区}
}int main()
{ sem_init(&empty, 0, 10); //信号量初始化(最多容纳10条消息,容纳了10条生产者将不会生产消息)sem_init(&full, 0, 0); pthread_mutex_init(&mutex, NULL); //互斥锁初始化 pthread_t producid; pthread_t consumid; pthread_create(&producid, NULL, Producer, NULL); //创建生产者线程 pthread_create(&consumid, NULL, Consumer, NULL); //创建消费者线程 pthread_join(producid, NULL); pthread_join(consumid, NULL); sem_destroy(&empty); //信号量的销毁sem_destroy(&full); pthread_mutex_destroy(&mutex); //互斥锁的销毁return 0;
}
第2关:进程互斥和同步
编程要求
请参考爸爸线程的函数代码实现儿子和女儿线程的函数代码,将Son()函数和Daughter()函数补充完整。
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <semaphore.h>
#include <pthread.h>
sem_t apple;
sem_t orange;
sem_t empty;
pthread_mutex_t mutex;void *Dad()
{int nextp = 0;int i = 0;for(i = 0; i < 10; ++i){int time = rand() % 10 + 1; //随机使程序睡眠0点几秒usleep(time*100000); sem_wait(&empty); pthread_mutex_lock(&mutex);if(nextp == 0){printf("爸爸放入了一个苹果\n");}else{printf("爸爸放入了一个桔子\n");}fflush(stdout);pthread_mutex_unlock(&mutex); //互斥锁解锁if(nextp == 0){sem_post(&apple);}else{sem_post(&orange);} nextp = 1 - nextp; }
}void *Daughter()
{while(1){int time = rand() % 10 + 1; //随机使程序睡眠0点几秒usleep(time * 100000); sem_wait(&apple); pthread_mutex_lock(&mutex);printf("女儿取了一个苹果\n") ;fflush(stdout);pthread_mutex_unlock(&mutex); //互斥锁解锁sem_post(&empty);}
}
void *Son()
{//请添加儿子线程的函数代码while (1) {int time=rand()%10+1; //随机使程序睡眠0点几秒usleep(time*100000);sem_wait(&orange);pthread_mutex_lock(&mutex);printf("儿子取了一个桔子\n");fflush(stdout);pthread_mutex_unlock(&mutex); //互斥锁解锁sem_post(&empty);}
}
int main()
{ sem_init(&empty, 0, 5); //信号量初始化sem_init(&orange, 0, 0);sem_init(&apple, 0, 0); pthread_mutex_init(&mutex, NULL); //互斥锁初始化 pthread_t dadid; pthread_t daughterid;pthread_t sonid; pthread_create(&dadid, NULL, Dad, NULL); //创建爸爸线程 pthread_create(&daughterid, NULL, Daughter, NULL); //创建女儿线程pthread_create(&sonid, NULL, Son, NULL); //创建儿子线程 pthread_join(daughterid, NULL);pthread_join(sonid, NULL); sem_destroy(&empty); //信号量的销毁sem_destroy(&apple);sem_destroy(&orange); pthread_mutex_destroy(&mutex); //互斥锁的销毁return 0;
}
相关文章:
os实训课程模拟考试(1~7)
操作系统的基本功能和设计目标 1、 操作系统是一组 ____(单选) A、 文件管理程序 B、 资源管理程序 C、 中断处理程序 D、 设备管理程序 2、 以下哪项不是操作系统关心的主要问题?(单选) A、 管理计算机裸机 B、 设计…...
yolov10 学习笔记
目录 推理代码,source可以是文件名,路径, 预测可视化: 预测可视化加nms 训练自己的数据集, 训练一段时间报错:dill库 解决方法: 推理代码,source可以是文件名,路径…...
NAT概述
NAT概念 NAT(Network Address Translation,网络地址转换)是一种用于修改网络地址信息的技术,主要用于在路由器或防火墙上进行地址转换,以解决 IPv4 地址短缺问题、提高网络安全性以及实现私有网络与公有网络之间的通信…...

Ansys Mechanical|学习方法
Ansys Mechanical是Ansys的旗舰产品之一,涉及的学科体系全面丰富,包括的力学分支主要有理论力学,振动理论,连续介质力学,固态力学,物理力学,爆炸力学及应用力学等。 在自媒体及数字经济飞速发展…...

热门开源项目ChatTTS: 国内语音技术突破,实现弯道超车
✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…...

环形链表2证明
解法 快慢指针相遇后,其中一个指回头部,然后同步前进 代码 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode(int x) : val(x), next(NULL) {}* };*/ class Solution { public:ListNod…...

fetch_lfw_people()报错urllib.error.HTTPError: HTTP Error 403: Forbidden的解决方案
零、实验报告地址 计算机视觉实验二:基于支持向量机和随机森林的分类(Part one: 编程实现基于支持向量机的人脸识别分类 )-CSDN博客 一、代码报错 fetch_lfw_people()报错urllib.error.HTTPError: HTTP Error 403: Forbidden 二、报错原因 通常是由于访问权限不足导致的…...
Verilog-Behavior Level 和 RTL Level 和 GATE Level的区别
硬件设计中对硬件的描述可以具有不同的抽象级别,以Verilog为例: Behavior Level。描述的是硬件的行为,当我们在看到如下关键字时就是行为级别的代码:#,wait,while,force,release等&…...
华为OD机考题HJ1 字符串最后一个单词的长度
前言 描述 计算字符串最后一个单词的长度,单词以空格隔开,字符串长度小于5000。(注:字符串末尾不以空格为结尾) 输入描述: 输入一行,代表要计算的字符串,非空,长度小…...

C语言---------深入理解指针
目录 一、字符指针 二、指针数组: 三、数组指针: 1、定义: 2、&数组名和数组名区别: 3、数组指针的使用: 四、数组参数,指针参数: 1、一维数组传参: 2、二维数组传参&am…...

C++ 算法教程
归并排序 #include<iostream> using namespace std; template <class T> void Merge(T data[],int start,int mid,int end) {int len1 mid - start 1, len2 end - mid;int i, j, k;T* left new int[len1];T* right new int[len2];for (i 0; i < len1; i)…...

【支持向量机】问题梳理
学完支持向量机后我有些地方不太清楚,故做如下梳理: 1.为什么支持向量机模型认为一个点划分正确的标志是y(wxb)>1呢,为什么不是y(wxb)>0,比如y为1,wxb为0.5,大于0,则预测正确。 2.所以意思…...

车载网络安全指南 网络安全框架(二)
返回总目录->返回总目录<- 目录 一、概述 二、网络安全组织管理 三、网络安全活动 四、支撑保障 一、概述 汽车电子系统网络安全活动框架包含汽车电子系统网络安全活动、组织管理以及支持保障。其中,网络安全管理活动是框架的核心,主要指汽车电子系统生命周期各阶段…...

元数据、数据元、数据字典、数据模型及元模型的区别详解
在数据管理和分析领域,有许多相似的概念,如元数据、数据元、数据字典、数据模型和元模型。这些概念的定义和应用往往容易混淆。 数据元 数据元是通过一系列属性描述的数据单元,包括定义、标识、表示以及允许值等。这些属性帮助我们理解和使用…...

【百度智能体】零代码创建职场高情商话术助手智能体
一、前言 作为一个程序猿,工科男思维,走上职场后,总会觉得自己不会处理人际关系,容易背锅说错话,这时候如果有个助手能够时时刻刻提醒自己该如何说话如何做事情就好了。 而我们现在可以通过百度文心智能体平台构建各…...

实战项目: 负载均衡
0. 前言 这个项目使用了前后端,实现一个丐版的LeetCode刷题网站,并根据每台主机的实际情况,选择对应的主机,负载均衡的调度 0.1 所用技术与开发环境 所用技术: C STL 标准库 Boost 准标准库 ( 字符串切割 ) cpp- httplib 第三方开源网络库 ctemplate 第三方开源前端网…...
运维监控系统
做监控系统集成,持续更新ing 1.Prometheus k8s安装prometheusdocker部署prometheusthanos实现prometheus高可用部署 2.Grafana docker安装grafanagrafana的admin密码忘记了grafana使用mysql远程存储 3.Alertmanager 4.Consul 5.夜莺系统 6.时序数据库 6.1 …...

第3章 Unity 3D着色器系统
3.1 从一个外观着色器程序谈起 新建名为basic_diffuse.shader的文件,被一个名为basic_diffuse.mat的材质文件所引用,而basic_diffuse.mat文件则被场景中名为Sphere的game object的MeshRenderer组件所使用。 basic_diffuse.shader代码文件的内容如下所示…...

Qt项目天气预报(1) - ui界面搭建
ui中部 效果演示 ui效果 显示效果 控件列表 配合右图查看 居中对齐-label 设置label居中对齐(别傻傻的空格对齐了) 间距配置 widget03 外围的widget对象: 包含label 和 widget0301,如下图 widget0301 内围的widget对象,如下图 样式表 widget03 …...
一、从C语言到C++(一)
一、从C语言到C(一) C介绍C语言和C的联系C介绍 头文件命名空间定义命名空间使用命名空间中的名称使用using声明或指令命名空间与C语言的对比给命名空间起别名注意事项std 标准输入输出std::endl使用std::cout进行输出使用std::cin进行输入格式化输出 C介…...
Java 语言特性(面试系列2)
一、SQL 基础 1. 复杂查询 (1)连接查询(JOIN) 内连接(INNER JOIN):返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...
ES6从入门到精通:前言
ES6简介 ES6(ECMAScript 2015)是JavaScript语言的重大更新,引入了许多新特性,包括语法糖、新数据类型、模块化支持等,显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var…...

简易版抽奖活动的设计技术方案
1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...
java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别
UnsatisfiedLinkError 在对接硬件设备中,我们会遇到使用 java 调用 dll文件 的情况,此时大概率出现UnsatisfiedLinkError链接错误,原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用,结果 dll 未实现 JNI 协…...
质量体系的重要
质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络…...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!
5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...

多种风格导航菜单 HTML 实现(附源码)
下面我将为您展示 6 种不同风格的导航菜单实现,每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...

回溯算法学习
一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...
站群服务器的应用场景都有哪些?
站群服务器主要是为了多个网站的托管和管理所设计的,可以通过集中管理和高效资源的分配,来支持多个独立的网站同时运行,让每一个网站都可以分配到独立的IP地址,避免出现IP关联的风险,用户还可以通过控制面板进行管理功…...
怎么让Comfyui导出的图像不包含工作流信息,
为了数据安全,让Comfyui导出的图像不包含工作流信息,导出的图像就不会拖到comfyui中加载出来工作流。 ComfyUI的目录下node.py 直接移除 pnginfo(推荐) 在 save_images 方法中,删除或注释掉所有与 metadata …...