2K+ 次浏览
Solaris 实现各种锁来支持多任务、多线程和多进程。它使用自适应互斥锁、条件变量、信号量、读写锁、旋转门来控制对临界区的访问。自适应互斥锁用于保护仅由短代码段访问的每个关键数据项。在多处理器系统上,它从标准信号量自旋锁开始。如果锁被在另一个 CPU 上运行的线程持有,则线程自旋。如果锁被当前处于运行状态的线程持有,则线程阻塞,进入睡眠状态,直到被…的信号唤醒 阅读更多
Windows 操作系统是一个多线程内核,它支持实时应用程序和多处理器。在单处理器系统上,Windows 提供中断屏蔽来保护对全局资源的访问。它使用自旋锁来保护对全局资源的访问。内核仅使用自旋锁来保护短代码段,例如 Solaris。内核确保在持有自旋锁时,线程永远不会被抢占。Windows 根据几种不同的机制(包括互斥锁、信号量、事件和计时器)提供调度程序对象进行线程同步。系统通过要求线程获得互斥锁的所有权来访问数据来保护共享数据,并且… 阅读更多
要使用信号量实现监视器,对于每个监视器,都提供一个信号量互斥锁(初始化为 1)。进程在进入监视器之前必须执行 wait(mutex),并且必须在离开监视器后执行 signal(mutex)。由于信号进程必须等到恢复的进程离开或等待,因此引入了另一个初始化为 0 的信号量 next。信号进程可以使用 next 来挂起自身。还提供了一个整数变量 next_count 来计算挂起在 next 上的进程数。因此,每个外部函数 F 都被替换为 - wait(mutex); … F 的主体 … 阅读更多
18K+ 次浏览
数据并行数据并行意味着在每个多个计算核心上并发执行相同的任务。让我们举一个例子,对大小为 N 的数组的内容求和。对于单核系统,一个线程将简单地对元素 [0] … [N − 1] 求和。但是,对于双核系统,在核心 0 上运行的线程 A 可以对元素 [0] … [N/2 − 1] 求和,而同时在核心 1 上运行的线程 B 可以对元素 [N/2] … [N − 1] 求和。因此,这两个线程将在单独的计算核心上并行运行。任务并行任务… 阅读更多
15K+ 次浏览
1K+ 次浏览
Windows 中的消息传递机制称为本地过程调用 (LPC) 机制。LPC 用于同一台机器上的两个进程之间的通信。它类似于广泛使用的标准远程过程调用 (RPC) 机制,但它针对 Windows 进行了优化并且特定于 Windows。Windows 使用端口对象来建立和维护两个进程之间的连接,就像 Mach 一样。Windows 使用两种类型的端口:连接端口和通信端口。通信工作方式如下:服务器进程发布对所有进程可见的连接端口对象。当客户端需要子系统的服务时,… 阅读更多
465 次浏览
Windows窗口操作系统是磁盘操作系统的扩展。Windows 是最流行和最简单的操作系统,任何能够阅读和理解基本英语的人都可以使用,因为它不需要任何特殊培训。它最初需要 DOS 来运行各种应用程序。因此,应将 DOS 安装到内存中,然后才能执行窗口。LinuxLinux 是流行的 UNIX 操作系统版本之一,它是开源的,因为它的源代码是免费提供的。它是免费使用的,并且在考虑 UNIX 兼容性的前提下设计的。Linux 的功能列表非常… 阅读更多