Chinaunix首页 | 论坛 | 博客
  • 博客访问: 579766
  • 博文数量: 104
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1559
  • 用 户 组: 普通用户
  • 注册时间: 2014-08-21 00:58
个人简介

锻炼精神,首先要锻炼肉体

文章分类

全部博文(104)

文章存档

2018年(1)

2016年(1)

2015年(101)

2014年(1)

我的朋友

分类: C/C++

2015-03-31 11:07:36

1. 在一个请求页式存储管理中,一个程序的页面走向为3,4,2,1,4,5,3,4,5,2,1
并采用 LRU 算法。 设分配给改程序的存储块数 S 分别为 3 和 4,在该访问中
发生缺页次数 F 是 ?
A S = 3 , F = 6 ; S = 4 , F = 5
B S = 3 , F = 7 ; S = 4 , F = 6
C S = 3 , F = 8 ; S = 4 , F = 5 
D S = 3 , F = 8 ; S = 4 , F = 7
E S = 3 , F = 10 ; S = 4 , F = 8
F S = 3 , F = 11 ; S = 4 , F = 9


2.数据存储在磁盘上的排列方式会影响 IO服务的性能,一个圆环的磁道有 10 个物理块,
10 个数据记录 R1 -- R10 被顺序存放在这个磁道上,记录的安排顺序如下所示:
物理块       1       2       3       4       5       6       7       8       9       10
逻辑记录   R1     R2     R3      R4    R5     R6     R7     R8     R9      R10

假设磁盘的旋转速度为 20ms/周, 磁盘当前处在 R1 的开头处,若系统顺序扫描后
将数据放入到单缓冲区内,处理数据的时间为 4ms
(数据在被处理完成之后,才能够读取下一个记录,在处理数据的时间内,磁盘保持转动不停顿)
那么请问处理这 10 个记录的最长时间为 ()

A 180ms  B 200ms  C 204ms  D 220ms



3.下面有关文件 block 的说法错误的是?
A. 文件系统中存储的最小单位就是块(block)
B. block越大, inode越少,适合存储文件多而小的文件系统
C. block 块可以使用 mkfd.ext3 -b 来制定块的大小
D. 每个 block 最多存放一个文件,而当一个block 存放不下的情况,就会占用下一个 block


4. 某一磁道请求序列(磁道号):98,183,37,122,14,124,65,61, 
按照先来先服务 FCFS 磁盘调度对磁盘进行请求服务,假设当前磁头在 53 道上,
则磁臂总共移动的道数为多少?
A 169   B. 208  C. 642 D. 236



5. 下面有关 C++ 线程安全,说法错误的是 ?
A. 线程安全问题都是由全局变量及静态变量引起的
B. 若每个线程对全局变量、静态变量只有读操作,而没有写操作,
   一般来说这个全局变量是线程安全的; 若有多个线程同时执行写操作,
    一般都需要考虑到线程同步,否则的话就可能影响线程的安全
C. C++ 标准库里面的 string 保证是线程安全的
D. POSIX 线程标准要求 C 标准库中大多数函数具备线程安全性



6. 若系统中有 5 个同类资源,有多个进程均需要使用2个,规定每个进程一次仅允许申请
1个,则至多允许几个进程参与竞争,而不会发生死锁?
A. 5   B.2  C. 3  D.4



7. 下面有关共享内存,说法不正确的是 ?
A 共享内存的使用和信号量一样,属于进程间通信的一种方式
B  使用 shmget 函数来创建共享内存
C  尽管每个进程都有自己的内存地址,不同的进程可以同时将一个内存页面映射到自己
    地址空间中,从而达到了共享内存的目的
D  共享内存提供了同步机制,在第一个进程结束对共享内存的写操作之前,会有自动机制
    来阻止第二个进程开始对他进行读取



8. 页面走向: 4 3 2 1 4 3 5 4 3 2 1 5 4 ,当分配的内存物理块数为 4 (开始为装入),
    所采用的是  LRU 淘汰算法, 那么会产生多少次的缺页?
A . 8  B.9  C.10 D. 12



9. 数据存储在磁盘上的排列方式会影响 I/O 服务的总时间,假设每个磁道划分为
10 个物理块,每块存放有 1 个逻辑记录,逻辑记录 R1...R10 存放在同一个磁道上。
假定磁盘的旋转速度为 20ms/周 ,磁头当前位于 R1 的开始处。
若系统顺序处理这些记录,使用单缓冲区,每个记录处理所用的时间 4ms,
对信息存储进行优化分布之后,处理 10 个记录所需要的最少时间是多少 ?
A. 40ms B.60ms  C. 120ms  D. 160ms


 10. 已知如下的代码,并在两个线程中同时执行 f1 和 f2 , 等到两个函数都返回之后,
a 的所有可能数值有哪些?

int a = 2 , b = 0 , c = 0 
void f1()
{
    b = a*2 ;  (A1)
   a = b ;       (A2)
}

void f2 ()
{
   c = a+11 ;   (B1)
   a =  c ;        (B2)
}

A. 4   B.13  C. 15  D. 26



1.答案 : D
本题所考察的知识点是 LRU 页面置换算法,解题过程如下:
S= 3 的时候
1.     3
2.     4 , 3 
3.    2 , 4, 3
4.    1 ,2, 4
5.    4, 1 ,2 (不缺页 ,将其更新到第一位,说明他是最近访问的) 
6.    5, 4 , 1
7.    3,5,4
8.    4,3,5 (不缺页,调整页面 4 在缓冲区中的位置为首位)
9.    5,4,3 (不缺页,调整页面 5 在缓冲区的位置为首位)
10 . 2,5, 4
11.  1,2,5
一共进行了 11 次读入操作,3 次不缺页, 11-3 = 8 尺缺页;
S= 4 的时候同上述操作 略


2. 答案 C
这道题考查的是读取磁道上记录,
在这里需要知道的有,在将记录从磁盘读取到缓冲区中并对数据进行处理的时候,
磁盘保持转动,带处理数据结束之后,磁盘臂对应的数据已经变化。
若要顺序访问磁道上的记录的话,需要等到磁盘旋转一周之后才可以。

解题过程如下:
10个记录磁臂旋转一周 20ms 可全部访问,访问每个记录所用 2ms 

在开始的时候磁臂指向的是记录 R1开头 ,访问 R1 结束用时:2ms ;
此时磁臂指向 R2 开头,但是此时并不能读取 R2 记录。
因为 1. 缓冲区为单缓冲区,一次只能读取一个记录并处理 
        2. R1 被读入缓冲区中还没有处理
所以接下来处理 R1 记录数据:消耗 4ms 时间,此时 t = 2+4 = 6ms
磁臂在处理 R1 记录数据的 4ms 中走过了 2 个记录 R2, R3 即 (R2头,R3头),(R3头,R4头)
指向 R4记录开头,因为是顺序读取 R1->R10 中的记录,所以等待磁臂走过
(R4,R5),  (R5,R6), (R6,R7), (R7,R8),  (R8,R9), (R9,R10), (R10, R1) ,(R1,R2)
之后,指向 R2 记录的起始处。
期间消耗 2ms*8 = 16ms ;再来读取 R2 记录中的数据,从R2 记录头走向 R3记录头,
即 (R2,R3
)再次消耗 2ms

在经过上面的描述之后,可以总结计算过程如下:
1. 访问R1 : 2ms , 处理 R1 :4ms , 
2. 经过 8*2ms 之后,到达 R2 头,访问 R2 : 2ms , 处理 R2 :4ms
3. 经过 8*2ms 之后,到达 R3 头, 访问 R3: 2ms , 处理 R3 : 4ms

。。。。
10 , 经过 8*2 ms 之后,到达 R10 头, 访问 R10 : 2ms, 处理 R10 :4ms

计算上述时间 :
R1: 6ms , R2->R10 : (4ms +9*2ms) *9 =6+ 198 = 204ms



3 答案: B
这道题考查的知识点是操作系统中的块
块(block)就是我们常说的,页面,页,扇区 息息相关
是计算机中内存与磁盘之间交换数据的最小单位,
也是文件系统中分配空间的时候最小的单位。
就是,文件系统每次为文件分配空间,是以块为基数的,
分配 n*块 大小的空间。

块根据操作系统版本的不同对应磁盘中的一个扇区的大小,
通常是 512(byte)
根据上面的描述, A 选项是对的
B 选项的前半部分是对的,对于这里的 inode 是操作系统
用来组织文件的链表。
链表中的元素 便是一个 inode 对应着一个文件,记录了该文件
的首地址和需要的block个数、
系统中的存储空间是一定的,
inode * 每个文件需要的block 个数*block大小 = 文件系统空间
很显然二者是成反比的

但是,这种将 block 十分大的文件系统存储小文件会造成很大资源的浪费
如果一个小文件只有 一个大block 的一般或是几分之一大小,
每次文件系统最少为其分配一个 block(装不满,还无法存放其他文件)
所以并不适合小文件系统

同时,inode 与文件一一对应,block 增大, inode 减少,
与inode 对应的文件也会变少,所以无法应付文件多的情形

B 选项错

C 选项: 固定命令,记住就行

D选项: block 是文件系统存放文件的最少单位,
也就是说,文件与block之间的关系是 一对多,当然如果一个block 足够
一个文件所用,这个 "多" 就会变成一对一。


4 答案 : C
这道题考查的是磁头的移动总路长
和  FCFS(先到先服务)向并列的便是最短需找时间优先算法(SSTF)
和(扫描)电梯算法(SCAN)
计算过程如下
(53->98), (98->183) ,(183->37) .....(65->61)
将括号中的数值相减之后去绝对值,再将绝对值加和便是磁臂移动的全部道数


5. 答案 C
记住答案就好


6. 答案 D
这道题可以按照下面的思路来解答
设至多有 X 个进程参与竞争,不会发生死锁
那么至少应该保证有 X 个进程中每个进程都占有一个资源之后,
系统中应该至少还保留有 1 个资源才能避免死锁发生。
那么  X +1 <= 5  X <= 4 至多有4 个进程

-----------------------
稍微修改一下题意, 如果有 17 个同类资源,每个进程正常运行需要 3 个,
每次仅允许申请 1 个,最多允许几个进程
同样设 X 进程
X*2 +1 <= 17;  X <= 8
就是为 X 个进程分配 2 个进程 之后,系统中满足至少还有 1 个进程可以被 X 个进程中的
其中一个获得,带到 X 中的某个进程获得这个仅剩的1 个资源之后,便会运行-> 结束->释放
自己占有的 3 个资源供其他进程申请。
-------------------------------
若是将 17 -> 16 也是如此
X*2 +1 <= 16 ; X <= 7
最多只能有  7  个进程运行才能够避免死锁
不然 若 X = 8 , 为每个线程分配 2 个资源的时候, 系统中再也没有额外的资源分配
给这 8 个进程中的任意进程了, 没有进程可以运行,各自占有其 2 份资源,等待对方的资源
---> 死锁  


7. 答案 D
这道题考查的是操作系统中的共享内存
A 选项, 所谓的进程间通信,是这样的:
在系统中申请的进程是会为进程的计算分配一定的空间的,
就是我们所说的进程控制块(PCB)其中记录了进程运行的上下文信息,以及
系统为进程执行某些计算所分配的存放变量的空间。
这个空间是进程的私有资源,对于进程而言各自的空间是不可访问的。
无法直接访问,就需要通过通信的方式来传递。
所谓的通信便是交换数据, 交换数据又可以分为 2 种
一种是在收发数据的通信两端分别开辟缓冲区
A-> B发送数据,将会把数据写入到 B 端的缓冲区中
B-> A 发送数据,将会把数据从进程 A 的缓冲空间中发送到 B 的缓冲空间中
当然这里的进程可以是在网络中运行在不同主机上的进程,这个便是 socket 通信
如果换做是在同一个主机上面就不用这么麻烦了,
这便是我们要说的第二种:
就是为进程  A 和 B 在本地主机上申请一个缓冲空间,作为 A 、B 进程的公共缓冲空间,
A-> B 发送数据,直接将数据从进程 A 内存中发送到公共缓冲区中,B进程将其读入到自己的进程空间中
B->A 发送数据,同上


B linux 命令,记住就好


C 选项可以这么理解, 每个进程都有自己的内存地址: 每个进程在被系统创建之后,
都会为其分配空间(PCB)
若是要为进程 A 和进程 B分配共享空间,那么首先可以在系统中创建一块缓冲区,
然后将缓冲区的地址(指针)分别告知进程 A 和进程 B
那么进程A,B 在需要访问共享空间的时候,便可以通过指针的方式来对公共缓冲区
中进行写入和读出数据了

所谓的同步机制指的是: pthread_cont_t 这样的函数,
举个例子来说, 当A进程向A B进程公共的缓冲区中写入数据之后,
会向 B 进程发送一个缓冲区中有数据可读的信号,然后B进程便可以将缓冲区中的数据读入了
则是同步,有同步的地方,必定会跟随着互斥访问。
但是共享内存仅仅实现了互斥访问,就是将共享内存这块空间设定为互斥的临界变量。
是读写互斥的,每次访问该互斥临界变量的时候,仅仅允许一个进程来访问,
访问之后,不会向其他任何的进程发送“缓冲区中有数据”的信号。
所以这种方式不能叫做同步,仅仅是互斥访问
系统中更不会有自动的机制来阻止,而是进程主动申请互斥锁来实现互斥访问缓冲空间,
但是没有申请成功互斥锁而导致的无法访问共享缓冲区。



8. 答案  B
1.  4 
2,  3,4
3,  2,3,4
4,  1,2,3,4
5,   4,1,2,3 (不缺页)
6,  3,4,1,2 (不缺页)
7,   5,3,4,1 
8,    4,5,3,1 (不缺页)
9,   3,4,5,1 (不缺页
10 , 2,3,4,5
11, 1,2,3,4
12,  5,1,2,3
13 , 4,5,1,2

其中“开始为装入”的含义便是,在一开始将页面装入到内存物理块中的时候,
由于物理块中一开始是空的,所以该操作也算作是缺页
所以,缺页次数 = 13 - 4(不缺页) = 9


9  B
又见到一个类型题,这道题和第2题是姊妹篇
读题的时候应该将重点放在“对信息存储进行优化分布”这里。
所谓的优化分布所指的便是,
想要以顺序的方式来访问存放于物理块中的逻辑记录,
最好是 在处理读入到缓冲中的R1 记录的之后,
磁盘刚刚好转动到下一个待处理的 R2记录头部上面
计算步骤如下
根据磁盘转动 20ms/周,一周 10个物理块,一块对应一个逻辑记录
可知访问一个物理块(逻辑记录)用时  2ms



R1: 扫描:2ms ,处理 4ms ,处理数据期间走过 R8 R5,来到 R2 记录头部
R2:扫描:   2ms , 处理 4ms , 处理数据期间磁臂走过R9 ,R6 ,来到 R3 记录头部
R3: 扫描  :2ms, 处理 4ms ,处理数据期间磁臂走过: R10,R7来到 R4 记录首部
R4 : 扫描:2ms , 处理 4ms , 处理数据期间,磁臂走过: R1, R8 来到 R5 记录首部
R5: 扫描: 2ms , 处理 4ms ,期间,磁臂走过 R2, R9,来到R6 记录首部
R6: 扫描:2ms , 处理 4ms , 期间磁臂走过 R3 R10 ,来到 R7 的记录首部
R7: 扫描: 2ms , 处理 4ms , 期间磁臂走过 R4 R1 ,来到 R8 记录首部
R8:扫描 2ms , 处理 4ms , 期间磁臂走过 R5, R2 来到 R9 记录首部
R9:扫描 2ms , 处理 4ms , 期间磁臂走过 R3 R6 , 来到 R10 记录首部
R10 : 扫描 2ms, 处理 4ms,结束顺序访问 R1-R10

共用时 (2ms+4ms)*10 = 60 ms


10 : 答案 ABCD
这道题目考查的是,多线程并行执行两个方法中的语句时,
方法中的语句执行顺序是严格有序的,但是方法之间语句的执行顺序可变。
也就是说,f1中标号
A1 A2 语句的执行顺序必须是 A1 -> A2 的,同理 f2 中的 B1->B2
如果 f1 , f2 并行有可能造成的语句执行顺序有

A1, A2, B1, B2
A1, B1, B2,A2
A1, B1, A2,B2
B1,B2,A1,A2
B1,A1,A2,B2
B1,A1,B2,A2

分别计算即可


阅读(1838) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~