计算机四级笔记
操作系统部分:(1~10题)
因篇幅过长,为保证学习质量,遂将其分成四部分(四篇博客)
每10题为一篇,其他题目在我的计算机四级考试网络工程师
专栏可以找到
第1题:
- 在组成计算机系统的各类资源中,主要包含有硬件部件以及软件系统(代码和数据)
- 从 计算机应用角度来看,操作系统的主要作用是提供:人机交互接口
- 从 软件设计和开发角度来看,操作系统的主要作用是提供:软件开发基础平台
- 从 计算机安全保护角度来看,操作系统的主要作用是提供:第一道安全防线
- 从 计算机系统发展角度来看,操作系统的主要作用是提供:虚拟机和扩展机
- 操作系统作为系统软件,位于软件系统的哪一个层面:硬件之上,支撑软件之下 (硬上支下)
- 操作系统的主要功能:资源管理和控制程序执行
- 操作系统的“合理”是指,公平对待不同用户程序,不发生死锁和饥饿
- 操作系统中建立了数据结构,其作用是:了解用户需求和当前资源使用情况,对资源进行有效组织、管理
- 具有随机性的是:操作系统内核进行进程切换
- 具有并发性的是:在 单处理器环境下,两个程序交替在CPU上运行
第2题:
-
构造操作系统的方法有:模块化,分层式,微内核,整体结构
-
组成操作系统的主要部分:进程线程(处理机管理),内存(存储)管理,设备管理,文件管理
-
同时共享:硬盘 外部设备 可重入代码
-
互斥共享(可以共享,但是不能被抢占使用):打印机 中央处理器 存储器 扫描仪
-
可以(同时)共享,且可以被抢占使用:中央处理单元
-
哪种软件资源可以同时共享:可重入代码
-
哪种软件资源不可以同时共享:内存分配模块
-
共享性:是指在一定的策略控制下,按不同资源类型共同占有使用
-
随机性:操作系统不能对所运行程序的行为,以及硬件设备的情况做出任何事先的假定
-
具有“并发性”:单CPU系统交替运行积分计算和磁盘读写的进程
-
程序状态字(PSW)中的状态字:CF,ZF,SF,OF,TF,IF,VIF,VIP,IOPL 不包含 驻留位(A)一个字母的就不是
-
用户可见寄存器:数据(程序)寄存器,地址寄存器,条件码寄存器
第3题:
-
不能作为进程来管理的是:中断服务程序 (是一个固定的代码段 )
-
CPU分为两种状态,一种是用户态,只能执行非特权指令;一种是内核态,非特权指令和特权指令都可以执行
-
操作系统提供:用户接口(命令输入)和 程序接口(系统调用)
-
内核态和用户态,其含义是指:CPU在运行时所处的状态
-
处理器 从内核态转为用户态,采用 修改程序状态字(PSW)
-
处理器 从用户态转为内核态,采用 访管中断(访管指令)
-
既可以在内核态下运行,又可以在用户态下运行的指令是:置移位方向标志
-
哪一个标志位或状态码不包含在程序状态字(PSW)中:条件码(C)
-
中断和异常都是将正常执行的程序打断,完成相应处理后再恢复执行,但是二者是有区别的。
中断是人为的外界干扰打断,异常是系统内部自身打断,故,用户按鼠标左键是属于中断
-
中断是由外部事件引发的,而异常则是由正在执行的指令(内部事件)引发的。
第4题:
- 不属于IO(输入输出)中断的事件:指令错
- 用户编写程序时调动fork()创建进程,其使用的是操作系统提供给用户的什么接口:系统调用
- 用户在编写程序时,若要在屏幕上画出一个红色的圆,需要使用:系统调用
- 凡是**“用户程序想干啥的”**,都是 系统调用
- 中断处理程序的入口地址一般存放在下列哪个数据表格中:中断向量表
- 外部I/O设备向处理器发出的中断信号又称为:中断请求
- 哪个不是中断而是异常:被零除
- 凡是带有**“程序”,“指令”,“0除”,“算术”,“内存”等字眼,都是异常**。
- 当运行中的进程不希望被外部事件打扰时,可以采用:屏蔽中断
- 哪一种中断与当前运行的进程有关(变相的问“异常”):程序性中断
- 中断源:是指 引起中断的那些事件
- 中断请求:是指 中断控制器向处理器发出的信号
- 中断响应:是指 处理器暂停当前程序,转而进入中断处理程序
- 中断断点:是指 正在运行的程序的暂停点
- 不属于系统调用:将一个整型变量转换为浮点数变量
- 系统调用,调用程序和被调用程序位于不同状态,调用程序位于 用户态,被调用程序位于 核心态
- (一般)过程调用,调用程序和被调用程序都位于 用户态
第5题:
-
操作系统提供给用户用于应用程序编程的唯一接口是:系统调用
-
非特权指令:算术运算指令
-
特权指令:设置控制寄存器指令,关中断指令,屏蔽中断,切换栈指针指令,消指针计数
-
微内核结构特点:灵活性和可扩充性,可靠性,可移植性,适合分布式系统
-
应将时间片设为:片 = 时间 ÷ 用户数 eg: 100 ÷ 100 = 1 , 所以是 ≤1ms
-
系统调用不能实现的功能是:调用程序多次嵌套与递归
-
open(读),属于系统调用中文件操作类
-
函数fork(),创建一个进程,属于系统调用中的进程控制类
-
不能使用什么方法传递参数:通过变量传递
-
过程调用和系统调用均可以嵌套使用
-
被调用程序 返回 调用程序的描述:过程调用直接返回到调用程序,系统调用在返回到调用程序前先运行调度程序
-
不属于系统调用:查找数据库中的某个学生信息 (属于数据库)
-
不属于系统调用:查找数组中的最大数 (查找)
-
不属于系统调用:将成绩填入学生成绩数据库 (数据库)
-
线程拥有的资源(线程相关的用户【系统】栈):计数器+寄存器+栈
第6题:
-
进程控制块与进程具有一一对应关系
-
能并行工作的是:CPU 与外部设备
-
多道程序设计的意义是:宏观上有多个进程在计算机中同时运行
-
进程优先级 存放在哪里:进程控制块 (只要是带**“进程”的,问存放在哪里**,就选 进程控制块)
-
位于进程控制块中而不是位于进程中:进程优先级
-
相比于单道程序运行,并发运行的多道程序不再具有 可再现性
-
进程用户栈中的信息 不需要保存在进程控制块中
-
所谓 ”可再入程序“,是指:纯代码程序,运行中不需要修改
-
进程控制块(PCB)的组织方式:线性方法,索引方法,链接方法
-
进程控制块(PCB)的内容一般可以分成调度信息和现场信息两大部分。
-
现场信息:程序状态字,时钟信息,界地址寄存器
-
调度信息:(有7种)排除现场信息即可
-
进程的动态性:是指进程动态产生、动态变化、动态消亡
-
进程的独立性:一个进程是一个相对完整的资源分配单位
-
进程的异步性:每个进程按照各自独立的、不可预知的速度向前推进
-
多道程序设计的含义:允许多个程序同时进入内存并运行
第7题:
-
Linux系统支持的状态:运行状态、僵尸状态、睡眠状态、中断状态
-
进程从运行态转换为阻塞态的原因是:需要的数据没有准备好
-
进程从等待态转换为就绪态称为:唤醒
-
某一单核处理机中共有20个进程,处于运行状态的进程最多为几个:1个,最少为几个:0个(看作写字数)
-
某一单核处理机中共有20个进程,处于就绪状态的进程最多为几个:19个,最少为几个:0个 (看作写篇数)
-
某一单核处理机中共有20个进程,处于阻塞状态的进程最多为几个:20个
-
某4核处理器的计算机系统中共有50个进程,处于运行状态的进程最多有几个:4个,最少为几个:0个(看作写字数)
-
某4核处理器的计算机系统中共有50个进程,处于就绪状态的进程最多有几个:49个,最少为几个:0个(看作写篇数)
-
某八核处理器的计算机系统中共有150个进程,任意时刻处于运行状态的进程最多有几个:8个,最少有几个:0个(看作写字数)
-
某八核处理器的计算机系统中共有150个进程,任意时刻处于就绪状态的进程最多有几个:149个,最少有几个:0个(看作写篇数)
-
某服务器装有四颗处理器,每颗处理器有八个核。共有240个进程,且支持多线程,那处于运行态的进程最多有几个:4 x 8 = 32个
第8题:
-
fork() 调用一次,返回两次,故fork() 函数后面的语句执行两次
-
一般 跟进程有关的东西,都存放在 进程控制块中
-
进程从阻塞态转换为挂起态,使用的原语是:suspend()
-
原语及含义:suspend() 挂起、block() 街区,阻塞、wake up() 唤醒、active() 激活
-
操作系统改变进程状态主要通过 调用进程控制原语 实现的
-
若一个进程由于申请的内存资源 长期得不到满足,那么该进程将会被挂起
-
哪一个进程的状态变化必然引起另一个进程的状态发生变化:运行状态 ——》 阻塞状态 (坏的变化过程)
-
使用进程创建原语 创建进程时的顺序:申请PCB进程控制块——》填写PCB——》放入就绪队列
-
使用进程撤销原语 撤销进程时的顺序:找到对应进程的PCB,撤销其下的子孙进程,释放该进程资源,撤销该PCB
-
使用进程唤醒原语 唤醒进程时的顺序:在等待队列中找到该进程 PCB,修改PCB中进程状态为就绪,将其插入到就绪队列
-
使用进程阻塞原语 阻塞进程时的顺序:中断CPU执行,保存现场信息,修改PCB中进程状态为阻塞,将其插入到阻塞队列
-
进程控制块的组织方式:线性表方式、索引表方式、链表方式 (巧记:铁索连环)
-
进程的组成部分:进程控制块、程序代码、数据
-
进程创建后 其进程控制块形成了多个队列,哪一个队列不在这些队列中:调度队列
-
进程控制原语:优先级,挂起,激活,阻塞,唤醒
-
为了便于系统控制和描述进程的活动过程,在操作系统内核中为进程定义了一个专门的数据结构,称为:进程控制块(PCB)
第9题:
-
线程操作 pthread**_join** 的含意是:等待一个特定的线程退出
-
线程操作pthread _yield表示的是:线程让出CPU
-
分析程序题:第一种:纯英文的儿子父亲(child[son] parent[dad]) 题,都 选A 保证child[son]在parent[dad]前(儿子在父亲前面)
-
程序正常运行时最多会派生出多少个进程:三个连续的 fork() ,第一个fork()产生2个,第二个fork() 产生4(2^2)个,第三个fork() 产生8 (2^3)个,因为fork()是连续的,所以只取最多的,故8个。
-
打印**“HelloWorld”** 共多少个:单独的一行**“HelloWorld”** 算一个;第一个fork()产生2个,第二个fork() 产生4(2^2)个,第三个fork() 产生8 (2^3)个,因为fork() 不是连续的,所以将他们相加即可。
第10题:
- 不会引起进程调度的操作:一个进程从就绪状态变成了运行状态 / 新创建的进程进入就绪队列 (有CPU让出来,就会引起进程调度)
- 常用的线程库函数:pthread_create() 创建、pthread_exit() 结束、pthread_yield() 让出CPU、pthread_join() 退出CPU
- 管程保证不了互斥问题(管程不能解决进程互斥问题)
- pthread_mutex_init()表示的是:创建一个互斥量
- 程序分析题:看“HelloWorld”后面的 语句(eg: pthread_exit(0) ), 若 其后面没有语句,则找 整个程序体末尾的语句 注:此类题注意变通:exit() 表示退出(结束) 可表示成:运行后主动退出; yield() 表示让出 可表示成: 主动释放CPU给其他线程;join() 表示退出 可表示成: 运行后等待一个特定的线程退出
- 创建线程,线程名为:pthread_create(&tid, NULL , th_f , NULL);
- 当pthread_create 运行成功后,进程有多少个线程:(巧记:运行成功:2个,运行失败:1个)