我正在为 CISSP 考试做准备,我发现了多任务处理的奇怪定义
在计算中,多任务处理意味着同时处理两个或多个任务。过去,大多数系统并没有真正实现多任务处理,因为它们依靠操作系统通过精心构建发送到 CPU 执行的命令序列来模拟多任务处理。... 单核多任务处理系统能够在任何给定时间处理多个任务或进程。
单核无法进行多任务处理,因为它无法同时处理多个任务……它通常执行上下文切换来模拟多任务处理。这或多或少是过去(和现在)操作系统所做的事情。所以我不明白上述说法。我错了吗?
答案1
使用单核 CPU,只能执行任务同时, 而不是同时地。在只有单核 CPU 的时代,同时和同时在操作系统课程和教科书中总是被强调。
实现的技术同时执行,例如上下文切换和调度方法(例如优先级与循环、抢占式与协作式)在多核 CPU 时代仍然非常重要,因为操作系统无法保证每个需要执行的任务都有一个可用的核心。操作系统需要
假设核心(或执行单元)的数量将小于需要执行的任务数量。
因此,所有概念的开发都是为了同时在现代操作系统中,仍然采用执行有限数量的同时任务的执行。
答案2
上下文切换是一项繁重的操作,涉及保存当前任务的所有寄存器并加载另一个任务的寄存器。
多任务是计算机同时运行多个程序或任务的能力。多任务处理与单任务处理不同,单任务处理中一个进程必须完全完成,另一个进程才能开始。上下文切换是用于实现多任务处理的工具。
MS-DOS 是单任务环境的一个示例。Windows
3.1 及更高版本是多任务环境。
答案3
从技术上来说,多任务处理不同于多处理。
我想说的是,多处理很容易在更高程度上依赖于硬件;允许真正并发执行(例如)CPU 代码:即那是您在上面/下面其他地方所讨论的内容。
为了真正从单个软件项目的多个 CPU 核心中获得收益,需要在构建软件时考虑多处理(例如 Hugin-MP,用于多图像全景拼接)。
基于经验的意见;
“Windows 3.1” 使用/曾经使用过协作式多任务处理,每个任务/程序都必须“放开”CPU(即,该任务将阻止所有其他软件进入任何位置,直到它放开为止)。
这在 Windows 3 如何“多任务处理”中非常明显。
Amiga 计算机在其 M68K(预多核,带上下文切换)上使用“抢占式多任务处理”,其体验与 Windows(3!) 大不相同。
格式化一个或几个磁盘等简单任务可以很好地完成,
同时您可以花时间做其他事情;
例如刻录 CD、播放音乐、编辑文件、浏览网页和聊天;所有这些都可以同时完成。
使用 Windows 时这是不可能的;并且这种情况一直持续到“7”左右,只有微小的改进。单独刻录 CD 需要 CPU 完全可用,否则会因“缓冲区不足”而失败(写入缓冲区无法足够快地填充)。
另请注意:“复古” Amiga 世界存在并且正在蓬勃发展 - 尽管进展缓慢,甚至在硬件方面(新 PCBS!)。我不确定 Windows 3 是否也是如此。