OS-并发-同步
条件变量
条件变量是一种同步机制,用于线程间的通信。当某些执行状态不满足时,线程可以将自己加入到等待队列中,直到该条件发生并被唤醒。条件变量有两个主要操作
条件变量是一种同步机制,用于线程间的通信。当某些执行状态不满足时,线程可以将自己加入到等待队列中,直到该条件发生并被唤醒。条件变量有两个主要操作
在《从入门到放弃》之中,写到并发编程需要放弃原子性、顺序性、可见性。
现在,我们需要让代码重新获得原子性和顺序性。为此,我们需要互斥,也就是阻止并发的发生,阻止多个线程同时读写数据。
进入并发领域,我们将要放弃很多默认的条件:
并发 vs 并行:
现代操作系统通过交换空间(swap space)实现虚拟内存的扩展能力。当物理内存容量不足以容纳所有活跃进程的页时,操作系统会将低频访问的页换出(page out)到磁盘的专用交换区域,从而释放物理内存资源。这种机制使得程序能够使用远大于实际物理内存的地址空间。
在《OS-内存管理》中指出,分页机制的一个主要缺点是可能导致额外的内存访问开销。为了加速虚拟地址到物理地址的映射过程,避免频繁查询页表,计算机系统采用了常见的加速技术——缓存。