好的,我们从序号 1 开
1. 下列选项中,导致创建新进程的操作是()。
I. 用户登录成功 II. 设备分配 III. 启动程序执行
A. 仅I和II
B. 仅II和III
C. 仅I和III
D. I、II、III
答案:C
解析:
-
I. 用户登录成功: 在分时操作系统中,当用户成功登录后,系统会为其创建一个新的进程,通常是一个命令行解释器(Shell),用于接收和执行该用户的命令。因此,这是创建新进程的一个原因。
-
II. 设备分配: 设备分配是操作系统为 已存在的进程 分配其所申请的物理设备,这个操作本身不会创建新进程。
-
III. 启动程序执行: 当用户在操作系统中请求执行一个程序时(例如,在Shell中输入命令或在图形界面上双击图标),操作系统会创建一个新的进程来装载和运行该程序。这是创建进程最常见的场景之一。
因此,导致创建新进程的操作是 I 和 III。
2. 在支持多线程的系统中,进程P创建的若干线程不能共享的是()。
A. 进程P的代码段
B. 进程P中打开的文件
C. 进程P的全局变量
D. 进程P中某线程的栈指针
答案:D
解析:
同一进程内的所有线程共享该进程的大部分资源,但为了能独立执行,每个线程也必须拥有自己私有的资源。
-
共享的资源: 进程的代码段、数据段(包括全局变量)、堆空间、打开的文件、信号处理器等。
-
不共享的资源: 每个线程都有自己独立的 栈(Stack)、程序计数器(PC) 和 一组寄存器。栈用于存放局部变量和函数调用信息,栈指针(Stack Pointer)就是指向该线程私有栈的指针。
因此,线程之间不能共享的是各自的栈和栈指针。
3. 下列关于进程和线程的叙述中,正确的是()。
A. 不管系统是否支持线程,进程都是资源分配的基本单位
B. 线程是资源分配的基本单位,进程是调度的基本单位
C. 系统级线程和用户级线程的切换都需要内核的支持
D. 同一进程中的各个线程拥有各自不同的地址空间
答案:A
解析:
-
A. 正确。 在引入线程的操作系统中,进程是拥有资源(如内存地址空间、文件句柄)的实体,而线程是共享这些资源并被CPU调度的实体。因此,进程是资源分配的基本单位。在不支持线程的传统系统中,进程既是资源分配单位也是调度单位。所以该叙述正确。
-
B. 错误。 正好说反了。进程是资源分配的基本单位,线程是CPU调度的基本单位。
-
C. 错误。 用户级线程的创建、销毁和切换由用户空间的线程库管理,内核完全不知情,因此其切换不需要内核支持,速度很快。系统级线程的切换则需要通过系统调用陷入内核才能完成。
-
D. 错误。 同一进程中的所有线程 共享 同一个地址空间,这是线程相比进程的主要优势之一,它使得线程间通信变得简单高效。
4. 一个进程的读磁盘操作完成后,操作系统针对该进程必做的是()。
A. 修改进程状态为就绪态
B. 降低进程优先级
C. 给进程分配用户内存空间
D. 增加进程时间片大小
答案:A
解析:
当一个进程发起读磁盘这类I/O操作时,它会从执行态进入 阻塞态(等待态),并让出CPU。当I/O操作完成后,磁盘控制器会向CPU发送一个中断信号。操作系统响应中断,识别出是哪个进程的I/O操作完成了,然后 必须 将该进程的状态从阻塞态修改为 就绪态,并将其放入就绪队列,等待调度程序后续分配CPU。其他选项都不是I/O完成后的必然操作。
5. 下列关于管道(Pipe)通信的叙述中,正确的是()。
A. 一个管道可实现双向数据传输
B. 管道的容量仅受磁盘容量大小限制
C. 进程对管道进行读操作和写操作都可能被阻塞
D. 一个管道只能有一个读进程或一个写进程对其操作
答案:C
解析:
-
A. 错误。 匿名管道是半双工的,即数据只能单向流动。要实现双向通信需要建立两个管道。
-
B. 错误。 管道是内核中的一块固定大小的 内存 缓冲区,其容量与磁盘无关,通常较小(如4KB或64KB)。
-
C. 正确。 这是管道的同步机制:当进程试图从一个空管道中读取数据时,它会被阻塞,直到有数据被写入;当进程试图向一个已满的管道写入数据时,它会被阻塞,直到管道中有空间被读出。
-
D. 错误。 管道可以由多个进程共享,允许多个进程向同一个管道写入,或多个进程从同一个管道读取。
6. 下列选项中,会导致进程从执行态变为就绪态的事件是()。
A. 执行P(wait)操作
B. 申请内存失败
C. 启动I/O设备
D. 被高优先级进程抢占
答案:D
解析:
进程从 执行态 变为 就绪态,意味着该进程的运行时间到了(时间片用完)或被更高优先级的进程打断,但它本身仍然具备继续执行的条件。
-
A. 执行P(wait)操作: 如果所需资源不可用,进程会进入 阻塞态。
-
B. 申请内存失败: 进程会因等待资源而进入 阻塞态。
-
C. 启动I/O设备: 进程需要等待I/O操作完成,会进入 阻塞态。
-
D. 被高优先级进程抢占: 在采用抢占式调度的系统中,当一个更高优先级的进程进入就绪队列时,调度程序会立即中断当前正在执行的进程,将其状态从 执行态 变为 就绪态,然后让高优先级进程执行。这是“执行态 -> 就绪态”转换的典型原因。