代码之家  ›  专栏  ›  技术社区  ›  Jens Kohl

任务和过程,真的有什么区别吗?

  •  14
  • Jens Kohl  · 技术社区  · 15 年前

    我正在学习我的计算机专业期末考试,主题是分布式系统和操作系统。

    我需要对“任务”、“进程”和“线程”等术语有一个良好的定义。到目前为止,我相信一个进程是运行(或暂停,但已启动)程序的表示,它有自己的内存、程序计数器、寄存器、堆栈等(进程控制块)。进程可以运行共享内存的线程,这样就可以通过共享内存进行通信,而不是必须通过IPC进行通信的进程。

    但是任务和过程之间的区别是什么呢?我经常读到它们是可以互换的,任务一词不再使用了。是真的吗?

    6 回复  |  直到 10 年前
        1
  •  5
  •   Chris O    15 年前

    过程和线程是机制,任务更具概念性。您可以在带有.NET的Windows上对要异步运行的工作包进行排队,例如,这将在线程池中的线程上运行。使用OpenMP,任务将是在一个核心上运行的for循环的一部分。

    次要的相关注释:在Windows上,还存在作业、线程池和用于机械的光纤。另外,如果一个进程没有运行至少一个线程,它就什么都不是。

        2
  •  13
  •   Andras Vass    15 年前

    术语 “任务” 主要用于 scheduling *,当它可以引用 线 或者一个*进程,它可以被安排在处理器上运行。
    从调度程序的角度来看,线程和进程之间可能没有什么区别,甚至没有区别——两者都表示 任务 那一定是安排好的。

    最近,这个词 “任务” 由于诸如 Task Parallel Library . 在IT中,任务是可以 已计划 在线程上运行 pool of worker threads .

    * 例如 kernel programming, esp. on Linux
    ** 理论上,你可以组成你的可调度实体

        3
  •  2
  •   RumbaGuy    10 年前

    我是老派。严格地说,“处理”是在内存中执行的不涉及输入/输出操作的工作。“任务”是包括I/O操作的过程。因此,多任务系统可以运行并发的I/O流,而多处理系统必须任务切换其I/O。PC机只有一个鼠标、键盘等,因此它们对我来说不是多任务系统。我认为大型机是一个多任务系统。

    线程是一种切换处理上下文的技术。允许物理处理器驱动多个进程。与任务没有直接关系。

        4
  •  1
  •   Riya    13 年前

    过程 过程是自然发生或设计的操作或事件序列,可能占用时间、空间、专业知识或其他资源,从而产生某种结果。一个过程可以通过它在一个或多个受它影响的对象的属性中所产生的变化来识别。

    螺纹 线程与进程类似,因为两者都表示与其他序列并行执行的单个指令序列,可以通过时间切片或多处理来执行。线程是程序将自身拆分为两个或多个同时运行的任务的一种方法。

    任务 内存中加载了一组程序指令

        5
  •  0
  •   Oddthinking    15 年前

    这取决于你的背景。

    在ADA中,任务是编程语言中用于启用并发性的构造。

    它没有指定应该使用什么操作系统构造来实现它,但是它允许任务之间共享内存,因此线程将是更自然的实现。

        6
  •  0
  •   schaechtele    15 年前

    我认为这取决于使用哪个术语的底层操作系统。

    您还可以将任务视为一段运行代码。然后线程的一部分或进程的一部分可以是任务。