Bài giảng Hệ điều hành - Chương 2b: Thread

qKhái niệm tổng quan

qCác mô hình multithread

qPthreads (POSIX thread)

qMultithreading trong Solaris 2

qMultithreading với Java

qXem xét lại khái niệm quá trình

qKhái niệm quá trình truyền thống: quá trình gồm

–Không gian địa chỉ (text section, data section)

–Một luồng thực thi duy nhất (single thread of execution)

§program counter

§các register

§stack

–Các tài nguyên khác (các open file, các quá trình con,…)
ppt 24 trang thiennv 07/11/2022 2660
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Hệ điều hành - Chương 2b: Thread", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.

File đính kèm:

  • pptbai_giang_he_dieu_hanh_chuong_2b_thread.ppt

Nội dung text: Bài giảng Hệ điều hành - Chương 2b: Thread

  1. User thread ❑ Một thư viện thread (thread library, run-time system) được hiện thực trong user space để hổ trợ các tác vụ lên thread – Thư viện thread cung cấp các hàm khởi tạo, định thời và quản lý thread như ▪ thread_create ▪ thread_exit ▪ thread_wait ▪ thread_yield – Thư viện thread dùng Thread Control Block (TCB) để lưu trạng thái của user thread (program counter, các register, stack) Khoa Khoa Học & Kỹ Thuật Máy Tính – Đại Học Bách Khoa TP HCM 2.B.11
  2. User thread (tt) ❑ Kernel không biết sự có mặt của user thread ❑ Ví dụ thư viện user-thread – POSIX Pthreads Khoa Khoa Học & Kỹ Thuật Máy Tính – Đại Học Bách Khoa TP HCM 2.B.12
  3. User thread (tt) ❑ Ví dụ: hệ điều hành truyền thống chỉ cung cấp một “kernel thread” duy nhất (biểu diễn bởi một PCB) cho mỗi process. – Blocking problem: Khi một thread trở nên blocked thì kernel thread cũng trở nên blocked, do đó mọi thread khác của process cũng sẽ trở nên blocked. user thread thread library thread library thread library PCB PCB PCB kernel Khoa Khoa Học & Kỹ Thuật Máy Tính – Đại Học Bách Khoa TP HCM 2.B.13
  4. Kernel thread ❑ Cơ chế multithreading được hệ điều hành trực tiếp hỗ trợ – Kernel quản lý cả process và các thread – Việc định thời CPU được kernel thực hiện trên thread Khoa Khoa Học & Kỹ Thuật Máy Tính – Đại Học Bách Khoa TP HCM 2.B.14
  5. Kernel thread (tt) ❑ Cơ chế multithreading được hỗ trợ bởi kernel – Khởi tạo và quản lý các thread chậm hơn – Tận dụng được lợi thế của kiến trúc multiprocessor – Thread bị blocked không kéo theo các thread khác bị blocked. ❑ Một số hệ thống multithreading (multitasking) – Windows 9x/NT/200x – Solaris – Linux Khoa Khoa Học & Kỹ Thuật Máy Tính – Đại Học Bách Khoa TP HCM 2.B.15
  6. Hiện thực thread ❑ Thread có thể hiện thực theo một trong các mô hình sau – Mô hình many-to-one – Mô hình one-to-one – Mô hình many-to-many Khoa Khoa Học & Kỹ Thuật Máy Tính – Đại Học Bách Khoa TP HCM 2.B.16
  7. Mô hình many-to-one ❑ Nhiều user-level thread “chia sẻ” một kernel thread để thực thi – Việc quản lý thread được thực hiện thông qua các hàm của một thread library được gọi ở user level. – Blocking problem: Khi một thread trở nên blocked thì kernel thread cũng trở nên blocked, do đó mọi thread khác của process cũng sẽ trở nên blocked. ❑ Có thể được hiện thực đối với hầu hết các hệ điều kernel thread hành. Khoa Khoa Học & Kỹ Thuật Máy Tính – Đại Học Bách Khoa TP HCM 2.B.17
  8. Mô hình one-to-one ❑ Mỗi user-level thread thực thi thông qua một kernel thread riêng của nó – Mỗi khi một user thread được tạo ra thì cũng cần tạo một kernel thread tương ứng ❑ Hệ điều hành phải có cơ chế cung cấp được nhiều kernel thread cho một quá trình ❑ Ví dụ: Windows NT/2000 kernel thread Khoa Khoa Học & Kỹ Thuật Máy Tính – Đại Học Bách Khoa TP HCM 2.B.18
  9. Mô hình many-to-many ❑ Nhiều user-level thread được phân chia thực thi (multiplexed) trên một số kernel thread. – Tránh được một số khuyết điểm của hai mô hình many-to-one và one-to-one ❑ Ví dụ – Solaris 2 – Windows NT/2000 với package ThreadFiber kernel thread Khoa Khoa Học & Kỹ Thuật Máy Tính – Đại Học Bách Khoa TP HCM 2.B.19
  10. Pthreads ❑ Chuẩn POSIX (IEEE 1003.1c) cung cấp các API hỗ trợ tạo thread và đồng bộ thread (synchronization) ❑ Phổ biến trong các hệ thống UNIX/Linux ❑ Là một thư viện hỗ trợ user-level thread ❑ Tham khảo thêm ví dụ về lập trình thư viện Pthread với ngôn ngữ C trong hệ thống Unix-like, trang 140, “Operating System Concepts”, Silberschatz et al, 6th Ed, 2003. ❑ Biên dịch và thực thi chương trình multithreaded C trong Linux $ gcc source_file.c -lpthread –o output_file $ ./output_file Khoa Khoa Học & Kỹ Thuật Máy Tính – Đại Học Bách Khoa TP HCM 2.B.20
  11. Thread trong Solaris ❑ User-level threads – Pthread và UI-thread ❑ Lightweight process (LWP) – Mỗi process chứa ít nhất một LWP – Thư viện thread có nhiệm vụ phân định user thread vào các LWP ▪ User-level thread được gắn với LWP thì mới được thực thi. – Thư viện thread chịu trách nhiệm điều chỉnh số lượng LWP ❑ Kernel-level thread – Mỗi LWP tương ứng với một kernel-level thread – Ngoài ra, hệ thống còn có một số kernel threads dành cho một số công việc ở kernel (các thread này không có LWP tương ứng) – Đối tượng được định thời trong hệ thống là các kernel thread Khoa Khoa Học & Kỹ Thuật Máy Tính – Đại Học Bách Khoa TP HCM 2.B.21
  12. Thread trong Solaris (tt) many-to-many Khoa Khoa Học & Kỹ Thuật Máy Tính – Đại Học Bách Khoa TP HCM 2.B.22
  13. Thread trong Solaris (tt) LWP1 LWP2 LWP3 Quá trình trong Solaris Khoa Khoa Học & Kỹ Thuật Máy Tính – Đại Học Bách Khoa TP HCM 2.B.23
  14. Thread trong Java ❑ Hỗ trợ tạo và quản lý thread ở mức ngôn ngữ lập trình (language-level) ❑ Tất cả chương trình Java chứa ít nhất là một thread ❑ Các thread của Java được quản lý bởi JVM ❑ Hai phương pháp tạo Java Threads 1. extend Thread class và override method run() 2. Hiện thực (implementing) Runnable interface Khoa Khoa Học & Kỹ Thuật Máy Tính – Đại Học Bách Khoa TP HCM 2.B.24