Concurrency 单处理器系统上的并行性

Concurrency 单处理器系统上的并行性,concurrency,parallel-processing,operating-system,computer-architecture,Concurrency,Parallel Processing,Operating System,Computer Architecture,我们可以在单处理器系统上应用并行性的概念吗。比如说,如果我们有两个流程A和流程B,并且它们彼此独立,那么它们可以同时处理(执行)吗?你能解释一下接下来的执行周期吗 如果只有一个处理器,它们就不能同时运行。如果您有一个多线程或多进程环境,它将对每个进程和/或线程进行时间切片。在任何给定的时间只有一个将运行,并且每个都有开销 “上下文切换”的确切含义在用法上差别很大,通常指“线程切换或进程切换”或“仅进程切换”,两者都可以称为“任务切换”。更精细地说,可以区分线程切换(在给定进程内的两个线程之间切换

我们可以在单处理器系统上应用并行性的概念吗。比如说,如果我们有两个流程A和流程B,并且它们彼此独立,那么它们可以同时处理(执行)吗?你能解释一下接下来的执行周期吗

如果只有一个处理器,它们就不能同时运行。如果您有一个多线程或多进程环境,它将对每个进程和/或线程进行时间切片。在任何给定的时间只有一个将运行,并且每个都有开销

“上下文切换”的确切含义在用法上差别很大,通常指“线程切换或进程切换”或“仅进程切换”,两者都可以称为“任务切换”。更精细地说,可以区分线程切换(在给定进程内的两个线程之间切换)、进程切换(在两个进程之间切换)、模式切换(域交叉:在给定线程内的用户模式和内核模式之间切换)、寄存器切换、堆栈帧切换和地址空间切换(内存映射开关:将虚拟内存更改为物理内存映射)。上下文切换的计算成本因其具体要求的不同而有很大差异,从轻量用户进程的子程序调用略多到非常昂贵,尽管通常远低于保存或恢复进程映像的成本


有趣的是,在Windows普及之前,MS-DOS甚至有多线程库。同一时代的许多大型机和小型计算机也采用了这种技术。

类似并行的概念被称为单处理器多任务。我们必须理解,当我们有一个核心,这意味着无论系统中有多少进程(任务),一次只能执行一个


但是如果一个进程有线程,那么所有的线程都会一个接一个地分配给cpu,用户会感觉到进程的所有线程都在运行。

cpu将在进程之间切换。这在操作系统中称为上下文切换。 有不同的上下文切换方法,如: 循环优先队列 上述方法将决定哪个进程将使用cpu。 但cpu不能同时由两个进程使用。
操作系统任务调度器事先负责将进程分配给cpu。

是的,通过分时和上下文切换。是的,不是。它们不能同时执行。它们是串行执行的。可能只是语义。我从这个问题中得到的是,他误解了B将在A完成后启动。我想OP正在考虑这是对的。即使在多核CPU上,如果独立线程都需要同时访问主内存或其他公共资源(如数据总线),那么它们也可以串行化。在一个架构上,我使用的高精度时钟硬件位于缓慢的I2C总线的末端。访问它花费了很长时间,两个线程都在重新创建任务显然是由这一点串联起来的!值得补充的是,时间片实际上可能相当长——可能是60毫秒,这取决于操作系统。这足够短,可以让执行看起来与人同步,但在现代计算机上这是一段很长的时间。因此,当我们有一个分叉的进程时,它会产生它的子进程,理论上从理论上讲,它是子进程(派生进程)都是同时执行的,那么这在单处理器环境中是如何工作的呢?假设S1和S2是从进程S中派生出来的,那么理论上S1和S2同时执行,并说它们联合起来启动一个进程S3。那么这里S1和S2是如何并发执行的呢?我希望现在已经清楚了。请参考链接作为示例了解更多clarity[link]()。谢谢如果有一个CPU,每个进程都会被时间分割到一个物理CPU上。这些进程会轮流进行。
但是如果一个进程有线程,所有线程都会一个接一个地分配给CPU。
对于一个有多个进程但只有一个CPU,或者有N个进程和M个CPU,其中N>M的系统也是如此(可能是现在你的电脑上的情况)。@Eric我的确切意思是,当我们有一个内核时,在一个时间单位内只能执行一个任务,但如果内核数>1,那么在一个时间单位内可以执行的任务数将等于内核数。我不是不同意你的观点,只是添加了更多的信息。