os练习题7

下列内容中哪些不属于进程实体进程映像)()?   D

A 进程的程序段
B 进程的数据段
C 进程控制块
D 进程要使用的设备

先进先出法是一种常用的进程调度算法,这种说法正确吗?       正确


虚存:通过统一管理主辅存,给用户造成内存空间巨大的假象;只把运行程序最近一段时间内活跃的一个部分放进主存,提高了系统的吞吐量,从而充分利用了地址空间


  1. 光驱,是外围设备。光盘属于存储介质。所以你这句话错了;

  2. 有的机子是没有光驱的,或者说,光驱不是主机的必备设备或元件;

  3. 划分主机系统外围设备的标准是硬系统能正常运行时部件是否为必须部件;

  4. 在PC机中,属于主机的设备只有CPU、主板、内存、显卡。硬盘都是外围设备

  5. 小型机和大型机中,主机只有CPU板和内存板,其它都是外围设备;


CPU的运算速度与许多因素有关,下面______是提高速度的有效措施?

扫描二维码关注公众号,回复: 5855702 查看本文章

(1)增加CPU中寄存器的数目(2)提高CPU的主频(3)增加高速缓存(cache)容量(4)优化BIOS的设计

答案:(1)、(2)和(3)

一、影响CPU运行速度的主要参数有:架构(核心代号)核心数/线程数频率、二级/三级缓存。由于架构的不同,不能单纯根据频率高低和缓存大小判定cpu的最终性能。
二、cpu的参数重要性先后顺序和简介:
1、架构或核心代号
首要参数是cpu的核心代号,或者说“架构”,先进的架构可以达成更高的运算效能。某些较新上市的但主频低、核心少的cpu,可能比某些老旧的主频更高的cpu性能强。
不要盲目的以为主频高、核心多的cpu性能就强,这是目前很多新手的误区,讨论cpu性能的基础是架构,其次才是核心数量和主板。
2、核心数量和主频
其次,在架构的先进性差别不大或者完全相同的情况下,才可以直接对比核心数量和频率,这时核心越多、频率越高的cpu,性能越强。而在架构落差过大的情况下,比较核心数和频率高低是毫无意义的。某些架构老旧落后的cpu,核心再多、频率再高,最终性能仍然不堪一击。
3、二级/三级缓存
最后是二级/三级缓存,AMD部分CPU有两级缓存,英特尔CPU目前都是三级缓存,总之以末级缓存大小判定,缓存越大,对CPU最终性能增益越大。需要再次强调,缓存仅是次要因素,主要还是看前几个因素,即“架构”、“核心数/线程数”、“主频”。


用户界面也称用户接口或人机接口,它是实现用户与计算机通信的软、硬件部分的总称。

磁盘高速缓存是在磁盘上开辟的专门用于补充虚拟存储器系统空间的磁盘空间,这样的说法正确吗?     不正确

低速设备一般被设置成共享设备。            错

高速设备一般会设置为共享设备

按资源分配角度分: > a. 独占设备:在一段时间内只能有一个进程使用的设备(一般为低速设备,如打印机,磁带等) 优点:不会产生死锁 > b. 共享设备:在一段时间内可有多个进程共同使用的设备,多个进程以交叉的方式来使用设备(其资源利用率高,如硬盘)。 > c. 虚设备:在一类设备上模拟另一类设备,常用共享设备模拟独占设备,用高速设备模拟低速设备,被模拟的设备称为虚设备。


管道是指用于连接一个读进程和一个写进程以实现进程之间通信的一种共享文件。向管道提供输入的是发送进程,也称为 写进程,负责向管道输入数据,数据的格式是字符流。接受管道 数据的接受进程为读进程。


链接硬链接符号链接
符号链接可以建立对于文件和目录的链接符号链接可以跨文件系统,即可以跨磁盘分区。符号链接的文件类型位是l,链接文件具有新的i节点。
硬链接不可以跨文件系统。它只能建立对文件的链接,硬链接的文件类型位是-,且硬链接文件的i节点同被链接文件的i节点相同。

软件安装的时候被存放在外存中,软件运行的时候会被调入内存中。


采用段式存储管理的系统中,若地址用 24 位表示,其中 8 位表示段号,则允许每段的最大长度是( )。   2^16

解答:在段式存储管理的系统中分为包含两种表,一个是进程段表,一个是系统段表,进程段地址分为两部分 :8位为段号,16位为段地址,根据进程段地址的段号和段地址映射到系统段表,16位段地址包含2^16个地址空间,因此每段的地址空间长度为2^16


固定的分配会产生内部碎片,比如分页式、段页式、固定分区管理


在多线程环境下,每个线程拥有一个栈和一个程序计数器程序计数器用来保存线程的执行历史线程的执行状态,是线程私有的资源。其他的资源(比如堆、地址空间、全局变量)是由同一个进程内的多个线程共享

如果三个进程共享一个互斥段,每次最多可以允许2个进程进入互斥段,则信号量的变化范围是( )

解答:因为最多允许两个进程进入,所以初始值为2,之后每进一个减1,为零之后,减1表示挂起


解答:

X的浮点数格式为00,111;00,11101(分号前为阶码,分号后为尾数),Y的浮点数格式为00,101;00,10100。然后根据浮点数的加法步骤进行运算。

第一步:对阶。X、Y阶码相减,即00, 111-00, 101=00, 111+11, 0111=00, 010,可知X的阶码比Y的价码大2(这一步可直接目测)。根据小阶向大阶看齐的原则,将Y的阶码加2,尾数右移2位,将Y变为00, 111;00, 00101。

第二步:尾数相加。即00, 11101+00, 00101=01, 00010,尾数相加结果符号位为01,故需右规。

第三步:规格化。将尾数右移1位,阶码加1,得X+Y为01, 000;00, 10001。

第四步:判溢出。阶码符号位为01,说明发生溢出。

本题容易误选选项B、C,这是因为选项B、C本身并没有计算错误,只是它们不是最终结果,选项B少了第3第4步,选项C少了第4步。

【偷懒法】本题也可以直接用数学知识对原数进行计算,然后将计算的结果转换成浮点数的格式。X+Y=29/32×27+5/8×25=29/32×27+5/32×27=(29/32+5/32)×27=34/32×27=17/32×28,阶码用补码表示,数值位3位,最大只能表示7,即X+Y的结果的阶码8超出了该浮点数的表示范围,故溢出。


回收站是硬盘中的区域,而剪贴板是内存的区域,剪贴板的东西关机再开就没有了。

操作系统在分配内存时,有时候会产生一些空闲但是无法被正常使用的内存区域,这些就是内存碎片,或者称为内存零头,这些内存零头一共分为两类:内零头和外零头

内零头是指进程在向操作系统请求内存分配时,系统满足了进程所需要的内存需求后,还额外还多分了一些内存给该进程,也就是说额外多出来的这部分内存归该进程所有,其他进程是无法访问的。

外零头是指内存中存在着一些空闲的内存区域,这些内存区域虽然不归任何进程所有,但是因为内存区域太小,无法满足其他进程所申请的内存大小而形成的内存零头。

页式存储管理是以页为单位(页面的大小由系统确定,且大小是固定的)向进程分配内存的,例如:假设内存总共有100K,分为10页,每页大小为10K。现在进程A提出申请56K内存,因为页式存储管理是以页为单位进程内存分配的,所以系统会向进程A提供6个页面,也就是60K的内存空间,那么在最后一页中进程只使用了6K,从而多出了4K的内存碎片,但是这4K的内存碎片系统已经分配给进程A了,其他进程是无法再访问这些内存区域的,这种内存碎片就是内零头。

段式存储管理是段(段的大小是程序逻辑确定,且大小不是固定的)为单位向进程进行内存分配的,进程申请多少内存,系统就给进程分配多少内存,这样就不会产生内零头,但是段式分配会产生外零头。

例如:假设内存总的大小为100K,现在进程A向系统申请60K的内存,系统在满足了进程A的内存申请要求后,还剩下40K的空闲内存区域;这时如果进程B向系统申请50K的内存区域,而系统只剩下了40K的内存区域,虽然这40K的内存区域不归任何进程所有,但是因为大小无法满足进程B的要求,所以也无法分配给进程B,这样就产生了外零头。请求段式存储管理是在段式存储管理的基础上增加了请求调段功能和段置换功能。

所以段式和请求段式存储管理会产生外零头,选BD。




spooling(外部设备联机并行操作)技术实现了虚拟设备功能。多个进程同时使用一独享设备,而对每一个进程而言,都认为自己独占这一设备。 设备并没有分配给任何进程,在输入井或输出井中,分配给进程的是一存储区和建立一张io请求表。



1、ThreadLocal的类声明:

public class ThreadLocal<T>

可以看出ThreadLocal并没有继承自Thread,也没有实现Runnable接口。所以AB都不对。

2、ThreadLocal类为每一个线程都维护了自己独有的变量拷贝。每个线程都拥有了自己独立的一个变量。

所以ThreadLocal重要作用并不在于多线程间的数据共享,而是数据的独立,C选项错。

由于每个线程在访问该变量时,读取和修改的,都是自己独有的那一份变量拷贝,不会被其他线程访问,

变量被彻底封闭在每个访问的线程中。所以E对。

3、ThreadLocal中定义了一个哈希表用于为每个线程都提供一个变量的副本:

 static class ThreadLocalMap {

        static class Entry extends WeakReference<ThreadLocal> {

            /** The value associated with this ThreadLocal. */

            Object value;

            Entry(ThreadLocal k, Object v) {

                super(k);

                value = v;

            }

        }

        /**

         * The table, resized as necessary.

         * table.length MUST always be a power of two.

         */

        private Entry[] table;

}

所以D对。

猜你喜欢

转载自blog.csdn.net/qq_39368007/article/details/89187758