找到 1282 篇文章 关于 MCA

互斥锁死锁

Arnab Chakraborty
更新于 2019-10-11 13:01:45

6K+ 次浏览

使用互斥锁的多线程 Pthread 程序可能会发生死锁。让我们看看它是如何发生的。未锁定的互斥锁由 pthread_mutex_init() 函数初始化。使用 pthread_mutex_lock() 和 pthread_mutex_unlock() 获取和释放互斥锁。如果线程尝试获取已锁定的互斥锁,则对 pthread_mutex_lock() 的调用会阻塞该线程,直到互斥锁的所有者调用 pthread_mutex_unlock()。让我们举个例子,在以下代码中创建了两个互斥锁:/* 创建并初始化互斥锁 */ pthread_mutex_t mutex1; pthread_mutex_t mutex2; pthread_mutex_init(&mutex1, NULL); pthread_mutex_init(&mutex2, NULL);接下来,两个线程 ... 阅读更多

事务内存

Arnab Chakraborty
更新于 2019-10-11 12:58:19

720 次浏览

事务内存起源于数据库理论,为进程同步提供了一种替代策略。内存事务是原子性的,是一系列内存读写操作。如果事务中的所有操作都已完成,则提交内存事务。否则,必须中止并回滚操作。可以通过添加到编程语言的功能获得事务内存的便利性。考虑一个示例。假设我们有一个修改共享数据的函数 update()。传统上,此函数将使用互斥锁(或信号量)编写,如下所示:void update (){    acquire(); /* 修改共享数据 */   ... 阅读更多

Solaris 中的进程同步

Arnab Chakraborty
更新于 2019-10-11 12:56:30

2K+ 次浏览

Solaris 实现各种锁来支持多任务、多线程和多处理。它使用自适应互斥锁、条件变量、信号量、读写锁、转门来控制对关键部分的访问。自适应互斥锁用于保护每个关键数据项,这些数据项仅由短代码段访问。在多处理器系统上,它从标准信号量自旋锁开始。如果锁由在另一个 CPU 上运行的线程持有,则线程会自旋。如果锁由当前处于运行状态的线程持有,则线程会阻塞,进入睡眠状态,直到被信号唤醒 ... 阅读更多

Windows 中的进程同步

Arnab Chakraborty
更新于 2019-10-11 12:53:41

2K+ 次浏览

Windows 操作系统是一个多线程内核,提供对实时应用程序和多处理器的支持。在单处理器系统上,Windows 提供中断掩码来保护对全局资源的访问。它使用自旋锁来保护对全局资源的访问。内核仅使用自旋锁来保护短代码段,例如 Solaris。内核确保在持有自旋锁时,线程永远不会被抢占。Windows 根据几种不同的机制(包括互斥锁、信号量、事件和计时器)提供调度程序对象用于线程同步。系统通过要求线程获取互斥锁的所有权来访问数据来保护共享数据,并 ... 阅读更多

如何使用信号量实现监视器?

Arnab Chakraborty
更新于 2019-10-11 12:51:49

2K+ 次浏览

要使用信号量实现监视器,对于每个监视器,都会提供一个互斥信号量(初始化为 1)。进程在进入监视器之前必须执行 Wait(mutex),并在离开监视器后必须执行 signal(mutex)。由于发出信号的进程必须等待恢复的进程离开或等待,因此引入了另一个初始化为 0 的信号量 next。发出信号的进程可以使用 next 来挂起自身。还提供了一个整数变量 next_count 来计算挂起在 next 上的进程数。因此,每个外部函数 F 都被替换为-wait(mutex); … F 的主体 ... ... 阅读更多

数据并行与任务并行

Arnab Chakraborty
更新于 2019-10-11 12:42:35

18K+ 次浏览

数据并行数据并行意味着在每个多个计算核心上并发执行相同的任务。让我们举个例子,对大小为 N 的数组的内容求和。对于单核系统,一个线程会简单地对元素 [0] ... [N - 1] 求和。但是,对于双核系统,在核心 0 上运行的线程 A 可以对元素 [0] ... [N/2 - 1] 求和,而同时在核心 1 上运行的线程 B 可以对元素 [N/2] ... [N - 1] 求和。因此,这两个线程将在不同的计算核心上并行运行。任务并行任务 ... 阅读更多

处理执行中的并行类型

Arnab Chakraborty
更新于 2019-10-11 12:37:49

15K+ 次浏览

数据并行数据并行意味着在每个多个计算核心上并发执行相同的任务。让我们举个例子,对大小为 N 的数组的内容求和。对于单核系统,一个线程会简单地对元素 [0] ... [N - 1] 求和。但是,对于双核系统,在核心 0 上运行的线程 A 可以对元素 [0] ... [N/2 - 1] 求和,而同时在核心 1 上运行的线程 B 可以对元素 [N/2] ... [N - 1] 求和。因此,这两个线程将在不同的计算核心上并行运行。任务并行任务 ... 阅读更多

什么是 Amdahl 定律?

Arnab Chakraborty
更新于 2020-01-31 10:48:44

7K+ 次浏览

Amdahl 定律假设,Moni 必须参加一个邀请。Moni 的另外两个朋友 Diya 和 Hena 也被邀请了。有一些条件是所有三个朋友都必须单独去那里,并且他们都必须出现在门口才能进入大厅。现在 Moni 开车来,Diya 坐公交车来,Hena 步行来。现在,Moni 和 Diya 多快到达那里并不重要,他们必须等待 Hena。因此,为了加快整个过程,我们需要专注于 Hena 的性能而不是 Moni 或 Diya。这 ... 阅读更多

什么是多核编程?

Arnab Chakraborty
更新于 2019-10-11 12:33:09

6K+ 次浏览

多核编程有助于创建并发系统,以便在多核处理器和多处理器系统上部署。多核处理器系统基本上是一个在单个芯片上具有多个执行核心的单个处理器。它在主板或芯片上有多个处理器。现场可编程门阵列 (FPGA) 可能会包含在多处理器系统中。FPGA 是一种集成电路,包含可编程逻辑块数组和可重构互连的层次结构。输入数据被处理以产生输出。它可以是多核或多处理器系统中的处理器,也可以是 FPGA。多核编程方法具有以下优点 ... 阅读更多

正交频分复用 (OFDM)

Moumita
更新于 2019-10-07 08:02:17

19K+ 次浏览

在数据通信和网络中,正交频分复用(OFDM)是一种数字数据调制方法,其中将单个数据流分成多个独立的子流,通过多个信道进行传输。OFDM 利用频分复用(FDM)的原理,将可用带宽划分为一组具有独立频带的子流。OFDM 由 Chang 于 1966 年在贝尔实验室提出,并于 1971 年由 Weinstein 和 Ebert 改进。OFDM 的工作原理OFDM 是一种特殊的 FDM,其约束条件是主信号被划分的子流彼此正交。 ... 阅读更多

广告