C 语言基础
对布尔表达式“a or ((b < c) and d)”求值时,当 ( ) 时可进行短路计算。
A. a 为 true B. b 为 true C. c 为 true D. d 为 true
设有正规式 s = (0 | 10)*,则其所描述正规集中字符体的特点是 ( ) 。
A. 长度必须是偶数 B. 长度必须是奇数 C. 0 不能连续出现 D. 1 不能连续出现
设函数 foo 和 hoo 的定义如下图所示,在函数 foo 中调用函数 hoo,hoo 的第一个参数采用传引用方式(call by reerence),第二个参数传值方式(call by value),那么函数 foo 中的 print(a, b) 将输出 ( ) 。
A. 8, 5 B. 39, 5 C. 8, 40 D. 39, 40
文件管理系统
某文件管理系统采用位示图(bitmap)来记录磁盘的使用情况,若计算机系统的字长为 64 位,磁盘容量为 512GB,物理块的大小为 4MB,那么位示图的大小为 ( ) 个字。
A. 1024 B. 2048 C. 4096 D. 9600
磁盘调度算法
磁盘调度分为移臂调度和旋转调度两类,在移臂调度的算法中, ( ) 算法可能会随时改 变移动臂的运行方向。
A. 单向扫描和先来先服务
B. 电梯调度和最短寻道时间优先
C. 电梯调度和最短寻道时间优先
D. 先来先服务和最短寻道时间优先
多线程
多线程环境下,每个线程都有自己的独立的栈空间,因此栈指针不会直接共享。每个线程都拥有自己的栈指针以及其他相关的寄存器,在执行函数调用和返回时会相应地操作自己的栈。
然而,线程之间可以访问共享的内存区域,例如堆区或全局变量。通过这些共享的数据结构,线程可以在适当的时候传递信息和共享数据。但是,需要非常小心地处理共享数据,以避免并发访问导致的竞态条件和数据一致性问题。
在某些多线程编程模型中,可以使用特殊的同步机制(如互斥锁、信号量等)来确保对共享数据的访问是原子的和有序的。这样一来,可以保证在一个线程修改共享数据时,其他线程不会同时访问该数据,从而防止数据损坏或不一致的情况发生。
综上所述,虽然栈指针本身不会被共享,但在多线程编程中仍然需要小心处理共享数据来确保线程之间的正确交互。
在支持多线程的操作系统中,假设进程 P 创建了 T1、T2、T3 线程,那么 ( ) 。
A. 该进程的代码段不能被 T1、T2、T3 共享
B. 该进程的全局变量只能被 T1 共享
C. 该进程中 T1、T2、T3 的栈指针不能被共享
D. 该进程中 T1 的栈指针可以被 T2、T3 共享
*PV 操作
进程 P1、P2、P3、P4、P5 和 P6 的前趋图如下所示。