操作系统---基础题目汇总七

来源:互联网 发布:2016最新癌症数据统计 编辑:程序博客网 时间:2024/06/10 17:48

1、多道程序的执行一定不具备再现性。
正确答案: A

A、错
B、对
单道程序的再现性是本身固有的,多道程序的执行失去了再现性,多道程序执行的再现性不是自然获得的,是通过程序员的编程控制添加上去。

2、在采用动态优先权的优先权调度算法中,如果所有进程都具有相同优先权初值,则此时的优先权调度算法实际上和()相同。
正确答案: A

A、先来先服务调度算法
B、短作业优先调度算法
C、时间片轮转调度算法
D、长作业优先调度算法

动态优先权是指在创建进程时所赋予的优先权,是可以随进程的推进或随其等待时间的增加而改变的,以便获得更好的调度性能。例如,我们可以规定,在就绪队列中的进程,随其等待时间的增长,其优先权以速率a提高。若所有的进程都具有相同的优先权初值,则显然是最先进入就绪队列的进程将因其动态优先权变得最高而优先获得处理机,此即FCFS算法。

3、Windows内存管理和大多数现代操作系统一样,Windows实现按需调页的虚拟内存机制。在32位的Windows计算机上,进程具有4GB的虚拟内存地址空间。
正确答案: A

A、对
B、错
和大多数现代操作系统一样,Windows实现按需调页的虚拟内存机制。由于操作系统使用了虚拟内存,这就给应用程序造成了一个假象,以为计算机安装的内存远远超过自己所需要的数量。
在32位的Windows计算机上,进程具有4GB的虚拟内存地址空间,操作系统通常会把这4GB的地址空间划分为进程和系统两个部分。因此,每个进程可以获得2GB的虚拟内存,根据可用的容量。分配给所有进程的虚拟内存总数不能超过页面文件和大多数物理内存的总和(操作系统本身也要占据一小部分物理内存)。

4、下面有关内核线程和用户线程说法错误的是?
正确答案: C

A、用户线程因 I/O 而处于等待状态时,整个进程就会被调度程序切换为等待状态,其他线程得不到运行的机会
B、内核线程只运行在内核态,不受用户态上下文的影响。
C、用户线程和内核线程的调度都需要进过内核态。
D、内核线程有利于发挥多处理器的并发优势,但却占用了更多的系统开支。

线程通常被定义为一个进程中代码的不同执行路线。从实现方式上划分,线程有两种类型:“用户级线程”和“内核级线程”。
用户线程指不需要内核支持而在用户程序中实现的线程,其不依赖于操作系统核心,应用进程利用线程库提供创建、同步、调度和管理线程的函数来控制用户线程。这种线程甚至在象 DOS 这样的操作系统中也可实现,但线程的调度需要用户程序完成,这有些类似 Windows 3.x 的协作式多任务。
内核线程则需要内核的参与,由内核完成线程的调度。其依赖于操作系统核心,由内核的内部需求进行创建和撤销。
这两种模型各有其好处和缺点。用户线程不需要额外的内核开支,并且用户态线程的实现方式可以被定制或修改以适应特殊应用的要求,但是当一个线程因 I/O 而处于等待状态时,整个进程就会被调度程序切换为等待状态敏感词线程得不到运行的机会;而内核线程则没有各个限制,有利于发挥多处理器的并发优势,但却占用了更多的系统开支。 Windows NT和OS/2支持内核线程。Linux 支持内核级的多线程。

5、实现虚存最主要的技术是()。
正确答案: C

A、整体覆盖
B、整体对换
C、部分对换
D、多道程序设计
虚存的特征主要是交换性,但不是整体对换。

6、假设如下代码中,若t1线程在t2线程启动之前已经完成启动。代码的输出是()

public static void main(String[]args)throws Exception {    final Object obj = new Object();    Thread t1 = new Thread() {        public void run() {            synchronized (obj) {                try {                    obj.wait();                    System.out.println("Thread 1 wake up.");                } catch (interruptedException e) {                }            }        }    };    t1.start();    Thread.sleep(1000);//We assume thread 1 must start up within 1 sec.    Thread t2 = new Thread() {        public void run() {            synchronized (obj) {                obj.notifyAll();                System.out.println("Thread 2 sent notify.");            }        }    };    t2.start();}

正确答案: B

A、Thread 1 wake up   Thread 2 sent notify.B、Thread 2 sent notify.   Thread 1 wake upC、A、B皆有可能D、程序无输出卡死

wait()执行后进入线程等待,知道其他线程使用notify()方法将其唤醒。

执行obj.wait();时已释放了锁,所以t2可以再次获得锁,然后发消息通知t1执行,但这时t2还没有释放锁,所以肯定是执行t2,然后释放锁,之后t1才有机会执行。

7、下列选项中,()可能是强占方式进程调度中引起调度的原因。
正确答案: C

A、当前的运行进程调用阻塞原语而进入阻塞状态
B、当前的运行进程因提出申请I/O而阻塞
C、有更高优先级的进程到达而从执行状态变为就绪状态
D、正在执行的进程执行了P原语操作,由于资源不足而阻塞

进程的调度方式包括非剥夺方式和剥夺方式。

非剥夺方式: 分派程序一旦把处理机分配给某进程后便让它一直运行下去,直到进程完成或发生某事件而阻塞时,才把处理机分配给另一个进程。 剥夺方式: 当一个进程正在运行时,系统可以基于某种原则,剥夺已分配给它的处理机,将之分配给其它进程。剥夺原则有:优先权原则、短进程优先原则、时间片原则。 

8、()操作不是P操作可完成的。
正确答案: A

A、为进程分配处理机
B、使信号量的值变小
C、可用于进程的同步
D、使进程进入阻塞状态

P操作分配的是我们申请的资源,并不是处理机

9、当一进程因在记录型信号量S上执行V(S)操作而导致唤醒另一进程后,S的值为()。
正确答案: D

A、>0
B、<0
C、≥0
D、≤0

唤醒另一进程,说明有进程可被唤醒,就是说有进程在等待(则s<0)进行临界区,若V操作前只有一个进程在等待(s=-1),则V操作之后S=0,若V操作前有多个进程在等待,是V操作之后S<0,所以,综合来说,S<=0。

PV操作:1)semaphore的取值必须大于或等于0。0表示当前已没有空闲资源,而正数表示当前空闲资源的数量;2) semaphore的取值可正可负,负数的绝对值表示正在等待进入 临界区 的进程个数。

P原语:P是荷兰语Proberen(测试)的首字母。为阻塞原语,负责把当前进程由运行状态转换为阻塞状态,直到另外一个进程唤醒它。操作为:申请一个空闲资源(把信号量减1),若成功,则退出;若失败,则该进程被阻塞;

V原语:V是荷兰语Verhogen(增加)的首字母。为唤醒原语,负责把一个被阻塞的进程唤醒,它有一个参数表,存放着等待被唤醒的进程信息。操作为:释放一个被占用的资源(把信号量加1),如果发现有被阻塞的进程,则选择一个唤醒之。

10、String str = new String(“abc”),“abc”在内存中是怎么分配的?
正确答案: A C

A、堆
B、栈
C、字符串常量区
D、寄存器
应该是AC,即是堆和字符串常量池中,当你new String(“abc”)时,其实会先在字符串常量区生成一个abc的对象,然后new String()时会在堆中分配空间,然后此时会把字符串常量区中abc复制一个给堆中的String,故abc应该在堆中和字符串常量区.

0 0