Definition

Tiểu trình (thread) là một phân đoạn nhỏ gọn của tiến trình (Process) và tương ứng với một tác vụ cụ thể độc lập nào đó. Một tiến trình có thể có nhiều tiểu trình, cùng được thực thi tại một thời điểm nào đó.

Một tiểu trình cũng bao gồm:

  • Định danh tiểu trình
  • Program counter
  • Tập các thanh ghi
  • Stack

Các thông tin này sẽ được lưu trong khối quản lý tiểu trình (thread control block - TCB).

Một tiểu trình cũng có thể có các trạng thái giống như tiến trình (xem thêm Process States).

Properties

Tính chất của tiểu trình:

  • Mỗi tiến trình sẽ bao gồm một tiểu trình chính (còn được gọi là main thread).
  • Các tiểu trình trong cùng một tiến trình có thể chia sẻ vùng mã nguồn, vùng dữ liệu và những tài nguyên dùng chung với các tiểu trình khác.
  • Do chia sẻ tài nguyên với các tiểu trình khác, nếu một tiểu trình bị lỗi thì nó sẽ khiến các tiểu trình khác trong cùng một tiến trình cũng bị lỗi theo.

Types of Thread

Tiểu trình gồm ba loại:

  • User: là các tiểu trình được quản lý ở bên ngoài kernel bởi một thư viện tiểu trình nào đó (chẳng hạn như thư viện Pthreads của C/C++).
    • Vấn đề: kernel chỉ cấp phát cho mỗi tiến trình một PCB tương ứng với một main thread. Nếu tiến trình đó có trạng thái là blocked thì tất cả các tiểu trình bên trong nó cũng sẽ bị blocked theo do hệ điều hành không biết được trạng thái của các tiểu trình người dùng để mà có thể thực hiện điều phối.
  • Kernel: là các tiểu trình được quản lý bởi kernel.
    • Giải quyết được vấn đề của user thread.
    • Việc tạo và quản lý kernel thread có tốc độ chậm hơn so với user thread.
  • Hybrid: là sự kết hợp của cả hai loại trên.

Resources