并行:同时运行
并发:交替执行
处理机:在单处理机系统中,处理机通常指的是计算机的中央处理单元(CPU),负责执行程序和处理数据。
设备:计算机的外部设备,如打印机、硬盘驱动器、键盘等。
通道:在计算机术语中,通道通常指的是一种专用硬件,用于数据传输,特别是在I/O操作中。通道可以独立于CPU进行数据传输,从而减轻CPU的负担。
只有一个处理机,一个时刻只能跑一个进程。所以I错。
设备独立于处理机,两者可以并行。II正确。
通道是独立于处理机的控制输入/输出的设备,两者可以并行。III正确。
设备与设备之间相互独立,可以并行。IV正确。
A错误。时间片轮转调度算法(Round Robin Scheduling Algorithm)是一种基于时间片的调度算法,它将 CPU 的执行时间划分为固定长度的时间片,并按照先来先服务的原则进行调度。被挂起的进程会被放入就绪队列或等待队列中,等待下一次时间片的分配。而下一个进程会从就绪队列中取出,并再次分配一个时间片进行执行。这个过程会持续下去,直到所有进程都执行完毕。时间片轮转调度算法的优点是公平性和响应性。
B错误。短进程优先调度算法(Short Process First Scheduling Algorithm)是一种以进程执行时间为基础的调度算法,它优先选择执行时间短的进程进行调度。该算法只考虑了进程的执行时间。
C错误。先来先服务调度算法(First-Come, First-Served Scheduling Algorithm)是一种简单而常见的进程调度算法。它按照进程到达的顺序为它们分配CPU执行时间,即先到达的进程先执行。当一个进程到达系统并准备好执行时,它将被放入就绪队列中,等待CPU的执行。如果CPU当前空闲,调度器会选择就绪队列中的第一个进程进行执行,直到该进程完成或阻塞。该算法只考虑了进程的执行时间。
D正确。高响应比优先调度算法(Highest Response Ratio Next Scheduling Algorithm)是一种基于响应比的进程调度算法。根据每个进程的响应比来选择下一个要执行的进程,。
进程的等待时间是指进程等待执行的时间,要求服务时间是指进程需要执行的时间。该算法综合考虑了进程等待时间和执行时间。
假设每个进程都需要3台打印机,现在每个进程都已被分配2台打印机,只需要一台待分配的打印机,根据银行家算法,就能找到一个安全序列。若 2K+1>8 ,即 K≥4 ,该系统可能会发生死锁。
界地址保护是分区分配内存管理方式的主要保护措施之一。界地址保护的目的是确保每个分配的内存区域不会超出其分配的边界。在分区分配内存管理方式中,内存被划分为不同的区域或分区,每个分区用于分配给不同的进程或任务使用。界地址保护通过在每个分区的边界处设置特定的地址值或标记来实现。当一个进程试图访问其分配的内存区域之外的地址时,界地址保护机制会触发一个异常或错误,阻止进程越界访问。这可以防止进程意外修改或访问其他进程的内存,保护了进程间的数据隔离性和安全性。通过界地址保护,每个进程的内存访问范围被限制在其分配的边界内,防止了内存越界操作和非法访问,从而提高了系统的稳定性和安全性。
后三个选项啥也不是
段号 | 段内地址 |
---|---|
8 | 24 |
每段长度最多2^24
连续结构可以视为数组,因为数组适合随机访问但插入删除慢,所以连续结构适合随机访问但不易于文件扩展。A错误。
B的第一种解释,应该是针对文件系统
索引结构可以视为索引树,例如B树和 B+ 树,因为索引树适合随机访问但插入删除较快,所以索引结构适合随机访问且易于文件扩展。B正确。
B的第二种解释,针对单文件的某块 也是书P287的说法
链式结构可以视为链表,因为链表只能顺序访问但插入删除块,所以链式结构不适合随机访问但易于文件扩展。C和D错误。
对于SCAN调度(电梯调度)算法,磁臂从磁盘的一端开始,向另一端移动;在移过每个柱面时,处理请求。当到达磁盘的另一端时,磁头移动方向反转,并继续处理。磁头连续来回扫描磁盘。磁头的行为就像大楼里面的电梯,先处理所有正在移动的方向的请求,然后再处理相反方向的请求。
假设一个盘面有200道磁道,磁道号最小为0,最大为199,采用SCAN调度(电梯调度)算法对请求序列为35, 45, 12, 68, 110, 180, 170, 195的模拟过程如图©所示。
得到的访问序列为110, 170, 180, 195, 68, 45, 35, 12。A
文件控制块FCB是用于管理文件的数据结构。包含
引用值:当前这个文件上所有硬链接的数量。
符号链接(也称软链接 (Soft Link)是一个指向另一个文件的特殊文件。它类似于Windows系统中的快捷方式。符号链接文件具有自己的索引结点 (inode) 和数据块,并保存指向目标文件的路径或文件名。删除软链接文件不会影响目标文件的引用计数,但如果删除目标文件,则符号链接将成为无效链接。建立符号链接时,引用计数值为1。删除符号链接后,由于符号链接不持有目标文件,因此目标文件不受影响。
硬链接 (Hard Link) 是文件系统中多个文件实体指向同一个索引结点的链接。多个硬链接文件共享相同的索引结点和数据块,它们的引用计数是相同的。建立一个指向某索引结点硬链接时,指向该索引结点的硬链接引用计数值加1;删除一个指向某索引结点硬链接时,指向该索引结点的硬链接引用计数值减1。当没有硬链接指向该索引结点时,该索引结点被释放,同时删除目标文件。
现在根据题目描述的步骤进行分析:
初始时:文件F1的当前引用计数值为1。
第一步:建立F1的软链接文件F2。软链接文件F2与F1是独立的文件,各自有自己的引用计数值,并且F2指向F1。因为F2为软链接,所以其引用计数值为1。
第二步:建立F1的硬链接文件F3,F1所在的索引结点的引用计数加1,硬链接文件F3与F1共享相同的索引结点和数据块,两者引用计数值相同,此时F1和F3的引用计数值均为2。F2的引用计数不受影响,引用计数值为1。
第三步:删除F1。删除F1后,F1不再存在,F1所在的索引结点的引用计数减1,F3的引用计数值减1,变为1。F2的引用计数不受影响,引用计数值为1。
图中左边索引结点 (inode) 为硬链接文件的索引结点,右边索引结点 (inode) 为软链接文件的索引结点,两个索引结点指向目标文件的路径或文件名相同。指向硬链接文件的索引结点 (inode) 的实箭头数目表示该索引结点的硬链接文件的引用计数值。软链接文件的引用计数值均为1。
用户进程发出IO请求,经过设备无关软件转换成对设备的请求。此处用的是A逻辑设备名。书P200
semaphore mutex = 1 //缓冲区互斥信号量
semaphore empty = N //缓冲区空单元数
semaphore odd = 0 //缓冲区奇数个数
semaphore even = 0 //缓冲区偶数个数
P1{
while(1){
P(empty)
P(mutex)
a = produce()
put(a)
if(a % 2 == 1)
V(odd)
else
V(even)
}
V(mutex)
}
P2{
while(1){
P(odd)
P(mutex)
getodd()
V(mutex)
V(empty)
countodd()
}
}
P3{
while(1){
P(even)
P(mutex)
geteven()
V(mutex)
V(empty)
counteven()
}
}
举一反三
设自行车生产线上有一个传送带,其中有 N (N≥3) 个位置,每个位置可存放一个车架或者一个车轮,设有3名工人,进程P1表示工人1每次加工一个车架并放入传送带,进程P2表示工人2每次加工一个车轮并放入传送带,进程P3表示工人3每次从传送带上取出一个车架和两个车轮并组装成一辆自行车。请用信号量机制实现这三个进程的同步与互斥活动,并说明所定义的信号量的含义(要求用伪代码描述)。
semaphore empty = N //传送带有无空位
semaphore mutex = 1 //传送带互斥信号量
semaphore a = 0 //传送带上车轮数
semaphore b = 0 //传送带上车架数
semaphore a_empty = N-1 //剩余车轮名额
semaphore b_empty = N-2 //剩余车架名额
P1{
while(1){
P(b_empty)
P(empty)
加工一个车架
P(mutex)
放上传送带
V(mutex)
V(b)
}
}
P2{
while(1){
P(a_empty)
P(empty)
加工一个车轮
P(mutex)
放上传送带
V(mutex)
V(a)
}
}
//注意a和b只是信号量,所以操作要单写,放在锁里就行,而信号量PV不用。
P3{
while(1){
P(b)
P(mutex)
从传送带拿一个车架
V(mutex)
V(empty)
V(b_empty)
P(a)
P(a)
P(mutex)
从传送带拿两个车轮
V(mutex)
V(empty)
V(empty)
V(a_empty)
V(a_empty)
组装成一辆车
}
}
死锁问题:如果说工人1或者工人2某一方生产速度很快,N个空位全部为车轮,或者≥N-1个空位是车架的话(此时最多只能放入一个车轮),工人3永远得不到组装一个完整的车的资源,就会发生死锁。所以车架最多不能达到N-2个,也就是车架的信号量初值要设置为N-2,车轮要设置为N-1。
驻留集:分配给进程的内存页面大小,此处就是两个页面。
虚页号 | 页内地址 |
---|
页面大小4KB = 2^12,页内地址占12位,剩余4位为虚页号。一次正常的访问,如果要转换一个虚拟地址,需要查页表的时间。先查快表中有没有页表,没有再去内存里找页表。
首先访问2362H,虚页号为2H,页内地址为254H。TLB初始为空,访问TLB不命中,然后去访问页表。此处花费10 + 100 = 110 ns。访问页表,查到有效位为1,命中。拼接页框号,得到物理地址为254 362H,并且转换写入TLB。然后去物理地址处读取数据,再花费100ns,共210ns。TLB更新为:
虚页号 | 页框号 |
---|---|
2H | 254H |
然后访问1565H,虚页号1H,查TLB,内存都不命中,发生缺页中断。共花费10 + 100 + 10^8 ns。因为驻留集大小为2,通过LRU淘汰了页号0,把虚页号为1的位置的内容装进页框号101H。页表更新为:
虚页号 | 页框号 | 有效位 |
---|---|---|
0 | 0 | |
1 | 101H | 1 |
2 | 254H | 1 |
TLB更新为:
虚页号 | 页框号 |
---|---|
2H | 254H |
1H | 101H |
然后重新访问TLB,拼接出物理地址后访问数据。一共用时10 + 100 + 10^8 + 10 + 100 ns。
最后访问25A5H,查TLB命中,拼接后访问数据。用时10 + 100 ns。
(2)1565H的物理地址为101565H。
理由:操作系统会维护存储空间到虚存页的映射关系。访问1565H时页表中找不到,发生缺页中断,操作系统从磁盘上查找这个虚拟页号对应的数据,并将它读取到主存中的一个页面框里。替代掉了原来页号0的位置,也就是101H。