[LTM] Chương 6.1 :Multitasking vs MultiThreading (Đa nhiệm vs đa luồng)

Người đăng: share-nhungdieuhay on Thứ Tư, 26 tháng 3, 2014

Một số khái niệm :

Multitasking:

  • là khả năng của một OS cho phép chạy nhiều chương trình đồng thời trên một CPU (đơn nhân)
  • Thực hiện bằng cách phân bổ thời gian chuyển hoạt động từ một chương này sang chương trình khác (ms).

Process

  • Khi chạy 1 ứng dụng (program) OS sẽ cấp phát riêng cho nó bộ nhớ và các tài nguyên  khác -> 1 process.
  • Các bộ nhớ và các tài nguyên của 1 process chỉ nó mới được phép truy nhập

Thread:

  •  Một process có thể có một hoặc nhiều tác vụ khác nhau và có thể chạy đồng thời.
  • 1 tác vụ là 1 Thread: 1 dòng điều khiển trong phạm vi một tiến trình


Khái niệm Thread
 Thread là đơn vị nhỏ nhất trong mã chương trình có thể thực thi một công việc riêng biệt.
Thread hình thành gồm: 
  • một định danh luồng (thread ID), 
  • một bộ đếm chương trình, 
  • tập thanh ghi và ngăn xếp. 
Nó chia sẻ với các Thread khác thuộc cùng một tiến trình:
  •  phần mã, 
  • phần dữ liệu, và 
  • tài nguyên hệ điều hành như các tập tin đang mở và các tín hiệu. 

Thread & MultiThread

Truyền thống: Một tiến trình có một thread điều khiển đơn. Hoạt động của Single Thread:
Chỉ có một tuyến đoạn đang chạy tại một thời điểm cho trước. Các tuyến đoạn khác phải chờ:
  • Hệ điều hành duy trì một hàng đợi các tuyến đoạn và phân bổ thời gian CPU cho chúng
  • Gây lãng phí CPU và bộ nhớ
Hiện đại: Một tiến trình có nhiều luồng điều khiển, nó có thể thực hiện nhiều hơn một tác vụ tại một thời điểm. (//)
Khi đó, các tuyến đoạn có thể truy xuất tới tài nguyên dùng chung để cùng làm việc hợp tác với nhau => MultiThreads

Single vs. Multi-Threaded 


{ 0 nhận xét... read them below or add one }

Đăng nhận xét