一、基础
1.批处理操作系统的缺点:缺少交互性(批阅奏折,不用上朝交互).
对于运行批处理作业的大型计算中心,其调度算法的设计目标是(ABC)。
A)较大的吞吐量
B)较短的周转时间
C)较高的 CPU 利用率
D)较快的响应时间
E)较均衡的性能
对于实时系统,其调度算法的设计目标是()。
A)较大的吞吐量
B)较短的周转时间
C)较高的 CPU 利用率
D)满足截止时间要求
E)满足可靠性要求
对于交互式系统,其调度算法的设计目标是()。
A)较大的吞吐量
B)较短的周转时间
C)较高的 CPU 利用率
D)较快的响应时间
E)较均衡的性能
操作系统名称:Ubuntu、Windows、UNIX、Linux、BSD、DOS
2.现代操作系统最基本的特征:并发性,共享,虚拟,异步
3.从计算机应用角度来看,操作系统的主要作用:人机交互接口(接口包含图标和菜单( 图形界面接口)、命令行、系统调用( 程序接口))
从软件设计和开发角度来看,操作系统的主要作用:软件开发基础平台
从计算机安全保护角度来看,操作系统的主要作用:第一道安全防线 皮肤
从计算机系统发展角度来看,操作系统的主要作用:虚拟机和扩展机
4.构造操作系统的方法:模块化,分层式,微内核(客户机/服务器结构 c/s),整体结构
5.组成操作系统的主要部分通常是进程线程管理、内存管理、设备管理和文件管理
6.并发性和单 CPU 系统交替挂钩
7.共享性:不可以同时共享:内存分配模块
可以同时共享:可重入代码、SPOOLing 系统、log()函数子程序、硬盘
可以共享且可以被抢占使用:中央处理单元
可以共享但是不能被抢占使用(互斥共享):存储器和打印机
8.在用户态下使用特权指令而引起的中断:访管中断
用户进程从用户态转变为内核态时,使用的指令:访管指令
只能在操作系统内核态下运行:中断的一些指令
用户态下执行:程序相关指令
既可以在内核态下运行又可以在用户态下运行的指令:置移位方向标志
9.用户编程需要打印输出,他可使用下列操作系统提供的哪一种系统调用write(),不是printf()
10.线程拥有的必不可少的资源:线程相关的各种栈 计数器+寄存器+栈
11.异常:0除,程序,指令,算术,内存,虚存系统的缺页,存储异常
中断:设备相关
12.程序相关操作一般不属于系统调用(提供给用户用于应用程序编程的唯一接口),文件操作、进程控制、通信和内存管理,设备I/O需要系统调用
13.过程调用 调用被调 都是 用户态,
系统调用,调用用户,被调核心态
系统调用与一般过程调用是不同的,下列对它们的调用程序和被调用程序的描述中,哪
一个是正确的(D)。
过程调用 被调 都是 用户态,
系统调用,调用用户,被调核心。
A)过程调用和系统调用的调用程序和被调用程序均位于核心态
B)过程调用和系统调用的调用程序和被调用程序均位于用户态
C)过程调用时调用程序位于用户态,被调用程序位于核心态
D)系统调用时调用程序位于用户态,被调用程序位于核心态
系统调用时需要通过陷入机制,从用户态的调用程序转到核心态的被调用程序
过程调用和系统调用均可以嵌套使用
过程调用直接返回到调用程序,系统调用在返回到调用程序前先运行调度程序
14.相比单道程序运行,并发运行的多道程序不再具有下列哪个特性:可再现性
15.在 UNIX 系统中,若文件 File4 的权限是 736,则表示
每个权限用一个数字表示:读(r)=4,写(w)=2,执行(x)=1。因此,一个八进制数可以用来表示文件的权限。
根据,我们可以看到736这个权限表示的含义:
- 第一位是7,表示文件所有者有读、写和执行权限,即7=4+2+1。
- 第二位是3,表示用户组有读和执行权限,即3=2+1。
- 第三位是6,表示其他用户有读和写权限,即6=4+2。
16.操作系统的特点
批处理操作系统的特点是()。
A)成批处理用户提交的作业
B)用户无法干预作业的运行
C)系统资源利用率较高
分时操作系统的特点是()。
A)多个用户在线同时使用计算机
B)便于调试程序
C)能够对用户输入的信息及时响应
分布式操作系统的特点是()。
A)系统内所有主机使用同一个操作系统
B)系统内资源深度共享
C)用户无需了解系统内本地主机或异地主机的差异,具有透明性
D)系统内各主机处于同等地位,不分主次
E)系统具有较高的可靠性
实时操作系统的特点是()
A)具有较高的可靠性
B)在严格的时间范围内,实时响应用户的请求
C)具有较好的过载防护能力
速度和 成本 都不选,
系统资源利用率较高 是批处理操作系统的特点,
系统具有较高的可靠性是分布式操作系统的特点 ,同时也是 实时操作系统的特点。
17.出现进程、锁等关键词的一般属于处理器管理。出现地址、内存等关键词的一般属于存储管理; 检查进程地址空间是否出现地址越界问题属于存储管理 ; 将磁盘上的代码调入内存属于存储管理。出现文件、磁盘等关键词的一般属于文件管理; 管理磁盘空间属于文件管理。总结:存储管理是和地址内存相关,文件管理是和磁盘文件相关
二、进程、线程
1.下列进程控制块PCB的组织方式:线性方法、索引方法、链接方法
进程控制块(PCB)的内容一般可以分成调度信息和现场信息两大部分,属于现场信息3种:程序状态字,时钟信息,界地址寄存器。程十界 背
进程的“动态性”:进程动态产生、动态变化、动态消亡
并发性:宏观上,不同的进程可以一起向前推进
独立性:一个进程是一个相对完整的资源分配单位
异步性:每个进程按照各自独立的、不可预知的速度向前推进
静态的角度看,进程是由程序、数据和进程控制块(PCB)三部分组成。
保存在进程控制块结构:进程标识符、进程当前状态、代码段指针
2.Linux 进程支持的状态:睡眠+中断+僵尸+运行
3.就绪状态的进程最多是总进程数-1
阻塞状态的进程最多就是总进程数
某4 核处理器的计算机系统中共有50个进程,那么,处于就绪状态的进程最多有几个(C)。
A)4 B)46 C)49 D)0
某单核处理机的计算机系统中共有20个进程,那么,处于就绪状态的进程最少是几个(D)。
A)1 B)20 C)19 D)0
4.创建一个进程,改变进程状态都需要调用进程控制原语实现
5.进程的状态变化必然引起另一个进程的状态发生变化的cpu运行位变化
系统中有多个进程分别处于就绪状态、运行状态和阻塞状态,下列哪一个进程的状态变化必然引起另一个进程的状态发生变化(A)。
A)运行状态→阻塞状态 cpu运行位变化
B)阻塞状态→就绪状态
C)阻塞状态→挂起状态
D)就绪状态→运行状态
6.使用进程创建原语创建进程:申请 PCB,填写 PCB,放入就绪队列
使用进程撤销原语撤销进程:找到对应进程的 PCB,撤销其下的子孙进程,释放该进程资源,撤销该 PCB
使用进程唤醒原语唤醒进程:在等待队列中找到该进程 PCB,修改 PCB 中进程状态为就绪,将其插入到就绪队列
使用进程阻塞原语阻塞进程:中断 CPU 执行,保存现场信息,修改 PCB 中进程状态为阻塞,将其插入到阻塞队列
7.进程控制原语:进程优先级改变、进程挂起、进程唤醒 、激活,阻塞
8.pthread_join:等待一个特定的线程退出
pthread_exit()结束,或者叫主动退出
pthread_yield:线程让出 CPU,或叫主动释放
pthread_create()创建线程,如果在main下面有pthread_create,就最多存在2个线程
pthread_mutex_init()创建一个互斥量
9.请分析以下程序。
int main()
{
pid_t pid;
pid = fork();#生成两个进程
if(pid==0)
printf("I am the child process, my process ID is%d\n",getpid());
else
printf("I am the parent process, my process ID is%d\n",getpid());}
那么,该程序正确运行后的结果是(A)。儿子必须在父亲前面
A)I am the child process, my process ID is 3744
I am the parent process, my process ID is 3987
B)I am the child process, my process ID is 3744
C)I am the parent process, my process ID is 3987
D)不输出任何信息
10.不能引起新进程调度的事件或操作:选就绪态有关
11.下列进程关系中,不能用 P、V 操作来实现的是(A)。
A)进程共享
B)进程同步
C)进程互斥
D)进程的前趋关系
12.在采用 P、V 操作对共享资源的使用进行保护时,对该共享资源读写的代码段称为临界区
进程访问临界区时要遵循相关准则:空闲则进、忙则等待、让权等待、有限等待(不是无限等待)
民航网络订票系统中,作为临界资源的对象是飞机票 目标
临界资源的访问步骤:进入(P原语)--临界----退出(V原语,离开) ---剩余
int booking(id)//订票例程
{
int c;
{
int c;
while TS(&lock); //Test-and-Set 指令 进入
c=fetch(ticket); //从服务器取剩余票额
show(c); //显示
if (read(input)=1)//是否订票?
{
c=c-1; //票额减 1
send(c); //送回新数据
} 临界区
lock = FALSE; //置标志为 F 退出区
output(list); //打印机票 剩余区
用 P、V 操作管理临界区时,把信号量 mutex 的初值设定为 1。当有 k(k>1)个进程在mutex 的等待队列中时,信号量的值为-k,表示有k个值在等待,信号量的值表示了有多少进程正在等待这个资源
P减1,V加1 P相关语句顺序不能动
在有 N 个缓冲区的生产者消费者的问题中,下列叙述中哪些是错误的()。
producer()
{ int item;
while(TRUE){
item = produce_item();
P(empty);
P(mutex);
insert_item(item);
V(mutex)
V(full);
}
}
consumer()
{ int item;
while(TRUE){
P(full);
P(mutex);
item = remove_item();
V(empty);
V(mutex);
consume_item(item);
}
}
A)信号量 empty 的初值为 N
B)信号量 full 的初值为 0
C)信号量 mutex 的初值为 0 为1
D)P(full)和 P(mutex)两条语句可以颠倒顺序 不能
E)V(empty)和 V(mutex)两条语句可以颠倒顺序
关于读者写者问题,下列叙述中哪些是错误的()。
reader()
{
while (TRUE){
P(mutex);
rc = rc + 1;
if (rc = = 1)P (w);
V(mutex); ①
读操作;
P(mutex); ②
rc = rc - 1;
if (rc = = 0)V(w);
V(mutex);
其他操作;
}
}
writer()
{
while (TRUE){
……
P(w);
写操作;
V(w);
}
}
A)信号量 w 的初值是 0 是1
B)信号量 mutex 的初值是 1
C)计