Process vs Thread vs Coroutine

Để dễ phân biệt những khái niệm này, ta đi từ khái niệm chương trình (Program).

Program

Là một file thực thi (file .exe hay .com trong windows) chứa những instructions và được lưu trong ổ đĩa.

Một program có nhiều process. Ví dụ điển hình, Chrome browser là một program, và nó tạo ra nhiều process cho một tab.

Process

Là một Program đang được thực thi. Khi Program được load vô bộ nhớ, nó sẽ trở thành Process.

Process đòi hỏi những nguồn tài nguyên thiết yếu: register, program counter, và stack.

Thread

Là một đơn vị thực thi bên trong một Process.

Sự khác biệt lớn nhất của process & thread:

  • Process độc lập, thread tồn tại dưới dạng tập con của Process
  • Mỗi process sẽ có một vùng nhớ riêng. Các Thread cùng chung một Process sẽ dùng chung một vùng nhớ.
  • Process là một phép tính “tốn kém”: tốn thời gian để start và terminate.
  • Việc thay đổi context (context switching) sẽ rất tốn kém ở cấp độ Process.
  • Việc giao tiếp giữa các thread sẽ nhanh hơn nhiều.

Coroutine

Coroutine là một Program, nó là một loại process xử lý tuần tự.

Chỉ một process được thực thi tại một thời điểm.

Coroutine bắt đầu, suspend việc thực thi trong một thread A, và resume lại trong một thread B.

Leave a Reply

Related Post