前置知識—程式和執行緒

白霽發表於2019-02-20

前置知識—程式和執行緒

程式(任務)

what ?

In computing, a process is the instance of a computer program that is being executed. It contains the program code and its activity. Depending on the operating system (OS), a process may be made up of multiple threads of execution that execute instructions concurrently

  • 是被執行的程式
  • 程式中有原始碼和程式的活躍度
  • 根據不同的作業系統,一個程式或許由多個執行緒組成,多執行緒是為了併發的執行命。
    A list of processes as displayed by htop

一個程式由什麼組成?

  • An image (與程式相關聯的可執行機器程式碼)
  • 記憶體
  • Operating system descriptors分配的資源
  • 安全屬性
  • CPU的上下文

因為安全性和可靠性,現代作業系統不允許程式之間直接通訊,採用了一種嚴格的通訊方法叫做 IPC (Inter-process communication)。

多工的作業系統存在多個程式同時執行,單核CPU一次性只能執行一個程式,CPU進行切換任務,不必等待上一個任務執行結束。

通常,程式中的主程式只有單個程式和多個子程式。

執行緒

What ?

In computer science, a thread of execution is the smallest sequence of programmed instructions that can be managed independently by a scheduler, which is typically a part of the operating system.[1] The implementation of threads and processes differs between operating systems, but in most cases a thread is a component of a process. Multiple threads can exist within one process, executing concurrently and sharing resources such as memory, while different processes do not share these resources. In particular, the threads of a process share its executable code and the values of its dynamically allocated variables and non-thread-local global variablesat any given time.

  • 執行緒是最小的一系列程式指令。
  • 執行緒是程式中的一個部分。
  • 多執行緒可以存在一個程式中,併發執行和共享資源。

img

程式 vs 執行緒

  • 程式之間是獨立的,而執行緒是程式的子集
  • 程式中狀態資訊比執行緒多,然而一個程式中的多執行緒共享著和程式一樣的狀態資訊
  • 程式有獨立的地址空間,執行緒只是分享進行的地址空間
  • 程式通訊依據系統提供的IPC方法
  • 上下文切換而言,執行緒切換比程式快

下一篇文章

瀏覽器架構-原理篇

相關文章