Context switching là gì? Chi phí của nó ảnh hưởng thế nào đến performance?

Context switching là quá trình OS lưu trạng thái CPU (registers, program counter, stack pointer) của process/thread hiện tại vào PCB (Process Control Block), rồi nạp trạng thái của process/thread kế tiếp để chạy.

Chi phí bao gồm:

  1. Thời gian lưu/nạp CPU state (~microseconds)
  2. Cache invalidation — khi switch process, CPU cache (L1/L2) bị flush, process mới phải warm up cache lại từ đầu (cold start)
  3. TLB flush khi switch process (vì địa chỉ ảo khác nhau). Thread switching trong cùng process nhẹ hơn vì không flush TLB. Ảnh hưởng thực tế: hệ thống với quá nhiều thread (C10K problem) tốn nhiều thời gian context switching hơn là làm việc thực. Đó là lý do Node.js single-threaded event loop và Go goroutines thắng trong high-concurrency — ít context switch hơn 1000 OS threads. Lập trình viên nên tránh: vòng lặp tight với sleep(1ms), quá nhiều thread chờ I/O — dùng async/await thay thế

Xem toàn bộ Operating System cùng filter theo level & chủ đề con.

Mở danh sách Operating System