Process vs Thread: Có gì khác nhau?

Process (Quá trình)

Process có nghĩa là bất kỳ chương trình (program) nào đang được thực thi. Process control block (Khối điều khiển quá trình) điều khiển hoạt động của mọi process. Process control block chứa thông tin về các process, ví dụ process priority, process id, process state, CPU, register, v.v. Một process có thể tạo ra nhiều process khác được gọi là Child Process. Process mất nhiều thời gian hơn để kết thúc (terminate) và nó bị cô lập (isolated) có nghĩa là nó không chia sẻ bộ nhớ với bất kỳ process nào khác.

Process có thể có các trạng thái sau: new (mới), ready (sẵn sàng), running (đang chạy), waiting (đang chờ), terminated (đã chấm dứt), suspended (bị tạm ngừng).

Thread (Luồng)

Thread là phân đoạn của một process có nghĩa là một process có thể có nhiều thread (multiple threads) và nhiều thread này được chứa trong một process. Một thread có 3 trạng thái: running (đang chạy), ready (sẵn sàng), và blocked (bị chặn). Thread tốn ít thời gian hơn để kết thúc (terminate) so với process và KHÔNG giống như process, thread không bị cô lập có nghĩa là thread chia sẻ bộ nhớ với mọi thread khác.

Điểm khác biệt giữa Process và Thread

ProcessThread
Process nghĩa là bất kỳ chương trình nào đang được thực thiThread là phân đoạn của một process
Process tốn nhiều thời gian để kết thúcThread tốn ít thời gian để kết thúc
Process tốn nhiều thời gian để tạoThread tốn ít thời gian để tạo
Process tốn nhiều thời gian để chuyển đổi ngữ cảnh (context switching)Thread tốn ít thời gian để chuyển đổi ngữ cảnh
Process kém hiệu quả về mặt giao tiếp (communication)Thread hiệu quả hơn về mặt giao tiếp
Process là biệt lập (isolated)Thread chia sẻ bộ nhớ (share memory)
Process được xem như process nặngThread được gọi là process nhẹ
Chuyển process sử dụng giao diện hệ điều hành (operating system)Chuyển thread không yêu cầu gọi hệ điều hành và gây ra một ngắt cho kernel
Nếu một process bị block thì nó sẽ không ảnh hưởng đến hoạt động của một process khácThread thứ hai trong cùng một task không thể chạy khi một server thread đang bị chặn
Process có Process Control Block, Stack và Address Space riêng.Thread có Process Control Block của parent, Thread Control Block và Stack của riêng nó và Address Space chung.

Icons made by Freepik from www.flaticon.com