Shared variable: int total : = 0 ;
p0,p1:
{
int count;
for (count=1; count <=50; count++)
total = total + 1 ;
} total可能的结果? 最大值?最小值? 注意total是两个进程都可以访问的共享存储单元,不同于一般 程序中的全局变量
Monolithic:内核中所有的子系统运行在相同的特 权级(privileged mode),拥有相同的地址空间,通 信采用常规C函数调用的形式。
5
四、操作系统的硬件支持
▪ 特权级(区分OS与应用程序的权限) ▪ MMU ▪ Cache ▪ 中断
6
五、系统调用
▪ 操作系统提供给应用程序的一个接口,使得应用程序能够获得 操作系统的服务
✓ 一次只能由一个进程访问的资源 临界区(critical section)
✓ 访问临界资源的代码段称为临界区(CS)
13
互斥(mutual exclusion) ✓在一个时刻最多只有一个进程在临界区
同步(synchronization) ✓协调需要访问临界资源的进程,否则会导致race condition (竞争条件) 如:两进程 p0,p1,都通过下面的代码访问一个共享的存储单 元:
进程中的线程共享进程资源,但拥有私有堆栈及线程控制 块(TCB,存储寄存器值、优先级及其他线程状态信息) 核心级线程(KLT:kernel-level thread) ✓ 应用程序通过API调用核心线程管理例程(kernel thread
facility)来管理: 需要进行模式切换
✓ 是OS调度的基本单位 ✓ 线程阻塞不会导致整个进程的阻塞 ✓ 在多处理器环境下,内核可使线程在不同的处理器上