intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Lập trình môi trường Window: Chương 8 - Ngô Thanh Hùng

Chia sẻ: _ _ | Ngày: | Loại File: PDF | Số trang:42

27
lượt xem
2
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Chương 8 trình bày các khái niệm cơ bản của đa tiểu trình, dộ ưu tiên của tiến trình, chuyển đổi ngữ cảnh, xây dựng ứng dụng tiểu trình và đồng bộ hóa các tiểu trình. Mời các bạn tham khảo chi tiết bài giảng.

Chủ đề:
Lưu

Nội dung Text: Bài giảng Lập trình môi trường Window: Chương 8 - Ngô Thanh Hùng

  1. Đa tiểu trình CuuDuongThanCong.com https://fb.com/tailieudientucntt
  2. Nội dung chương  Một số khái niệm cơ bản  Xây dựng một ứng dụng đa tiểu trình  Đồng bộ hóa các tiểu trình CuuDuongThanCong.com https://fb.com/tailieudientucntt
  3. Một số khái niệm cơ bản  Xử lý đồng hành (Concurrent Processing)  Đa nhiệm (Multi-Tasking)  Tiến trình (Process)  Tiểu trình (Thread)  Độ ưu tiên của tiến trình (Process priority class)  Độ ưu tiên của tiểu trình (Thread priority)  Chuyển đổi ngữ cảnh (Context Switch) CuuDuongThanCong.com https://fb.com/tailieudientucntt
  4. Xử lý đồng hành  Xử lý đồng hành ?  Bài toán: kq = a*b + c*d  Một hệ thống xử lý đồng hành thường có nhiều tiến trình thực thi cùng lúc  Các tiến trình có thể hoạt động độc lập hay kết hợp với nhau để thực hiện nhiều tác vụ CuuDuongThanCong.com https://fb.com/tailieudientucntt
  5. Lợi ích của xử lý đồng hành  Cho phép nhiều ứng dụng hoạt động cùng lúc  Tăng tốc độ xử lý  Tăng hiệu suất sử dụng CPU  … CuuDuongThanCong.com https://fb.com/tailieudientucntt
  6. Đa nhiệm  Hệ điều hành đa nhiệm phân chia thời gian xử lý của CPU thành nhiều “lát thời gian” (time slice) để các tiến trình/tiểu trình thực hiện luân phiên.  Tiến trình/tiểu trình đang thực thi sẽ tạm dừng khi time slice của nó hết và tiến trình/tiểu trình khác sẽ chạy.  Khi hệ thống chuyển đổi từ thread này sang thread khác, nó sẽ lưu lại ngữ cảnh của thread bị mất quyền và phục hồi ngữ cảnh của thread sắp được chạy. CuuDuongThanCong.com https://fb.com/tailieudientucntt
  7. Đa nhiệm  Độ dài time slice phụ thuộc từng hệ điều hành và bộ vi xử lý. Bởi vì time slice khá nhỏ (khoảng 20ms) nên ta có cảm giác thực hiện đồng thời.  Hệ điều hành Windows hỗ trợ pre-emptive Multi- Tasking (đa nhiệm có độ ưu tiên).  Những vấn đề khó khăn khi xử lý đa nhiệm:  Không gian bộ nhớ để lưu trữ thông tin ngữ cảnh của tiến trình và tiểu trình  Thời gian để theo vết, quản lý các tiểu trình  Sự tranh chấp tài nguyên dùng chung CuuDuongThanCong.com https://fb.com/tailieudientucntt
  8. Tiến trình  Là một chương trình đang thực thi  Có một con trỏ lệnh, vùng không gian địa chỉ ảo riêng, mã lệnh, dữ liệu, object handles, các biến môi trường, độ ưu tiên…  Các thuộc tính này tác động lên mọi tiểu trình trực thuộc tiến trình  Một tiến trình có thể có nhiều tiểu trình CuuDuongThanCong.com https://fb.com/tailieudientucntt
  9. Tiến trình CuuDuongThanCong.com https://fb.com/tailieudientucntt
  10. Tiểu trình  Là đơn vị nhỏ nhất thực thi được trên hệ điều hành Windows 32 bits  Là đơn vị xử lý mà hệ điều hành Windows phân chia time slice.  Mỗi tiểu trình bao gồm các stack, trạng thái các thanh ghi CPU,…và một entry trên danh sách các tiểu trình của hệ thống điều phối  Các tiểu trình của cùng một tiến trình chia sẻ nguồn tài nguyên chung của toàn bộ tiến trình. CuuDuongThanCong.com https://fb.com/tailieudientucntt
  11. Tiểu trình  Các trạng thái của tiểu trình: CuuDuongThanCong.com https://fb.com/tailieudientucntt
  12. Tiểu trình  Khi kết thúc time slice của mình, một tiểu trình sẽ dừng lại và nhường tài nguyên cho các tiểu trình khác. Quá trình này được gọi là chuyển đổi ngữ cảnh (context switch).  Độ ưu tiên là thuộc tính giúp hệ điều hành xác định tiểu trình nào sẽ được thực hiện tiếp theo, đồng thời phân chia thời gian xử lý của CPU.  Khi thời điểm context switch đến, đơn vị điều phối (dispatcher) sẽ khảo sát tập các tiểu trình ở trạng thái sẵn sàng và chọn tiểu trình đầu tiên có độ ưu tiên cao nhất trên hàng đợi để thực hiện. CuuDuongThanCong.com https://fb.com/tailieudientucntt
  13. Độ ưu tiên của tiến trình  IDLE_PRIORITY_CLASS: chỉ được thực hiện khi không còn tiến trình nào sử dụng CPU  NORMAL_PRIORITY_CLASS: được quyền sử dụng CPU theo thời gian phân chia. Đây là độ ưu tiên mặc định cho tiến trình khi mới tạo lập  HIGH_PRIORITY_CLASS: Tiến trình được dành quyền sử dụng CPU từ các tiến trình thuộc lớp Normal ngay khi cần  REALTIME_PRIORITY_CLASS: Có độ ưu tiên cao nhất, được sử dụng CPU bất kỳ lúc nào  ABOVE_NORMAL_PRIORITY_CLASS (chỉ có trong Windows 2000 trở lên): cao hơn NORMAL nhưng thấp hơn HIGH priority  BELOW_NORMAL_PRIORITY_CLASS (chỉ có trong Windows 2000 trở lên): cao hơn IDLE nhưng thấp hơn NORMAL priority CuuDuongThanCong.com https://fb.com/tailieudientucntt
  14. Độ ưu tiên của tiểu trình  Mỗi tiểu trình có 1 độ ưu tiên được xác lập từ 0 (thấp nhất) đến 31 (cao nhất), giá trị này gọi là Base Priority  Base Priority là giá trị độ ưu tiên của tiểu trình tính trên toàn hệ thống  Base Priority được xác định bởi:  Độ ưu tiên của tiến trình chứa nó  Mức độ ưu tiên của tiểu trình bên trong tiến trình CuuDuongThanCong.com https://fb.com/tailieudientucntt
  15. Độ ưu tiên của tiểu trình trong tiến trình  THREAD_PRIORITY_LOWEST (-2): thấp hơn 2 điểm so với độ ưu tiên NORMAL  THREAD_PRIORITY_BELOW_NORMAL (-1): thấp hơn 1 điểm so với độ ưu tiên NORMAL  THREAD_PRIORITY_NORMAL: độ ưu tiên ngang với độ ưu tiên của tiến trình  THREAD_PRIORITY_ABOVE_NORMAL (+1): cao hơn 1 điểm so với độ ưu tiên NORMAL  THREAD_PRIORITY_HIGHEST (+2): cao hơn 2 điểm so với độ ưu tiên NORMAL CuuDuongThanCong.com https://fb.com/tailieudientucntt
  16. Độ ưu tiên của tiểu trình trong tiến trình  Theo mặc định một tiểu trình vừa mới được tạo ra sẽ có độ ưu tiên THREAD_PRIORITY_NORMAL  Ta có thể xác định độ ưu tiên của tiểu trình bằng cách gọi hàm GetThreadPriority  Ứng dụng có thể tăng hay giảm ưu tiên của tiểu trình bằng cách gọi hàm SetThreadPriority CuuDuongThanCong.com https://fb.com/tailieudientucntt
  17. Bảng 32 mức ưu tiên CuuDuongThanCong.com https://fb.com/tailieudientucntt
  18. Bảng 32 mức ưu tiên tt … CuuDuongThanCong.com https://fb.com/tailieudientucntt
  19. Chuyển đổi ngữ cảnh  Để chuyển đổi xử lý từ tiểu trình này sang tiểu trình khác trong hàng đợi, hệ thống phải thực hiện việc chuyển đổi ngữ cảnh:  Sao lưu ngữ cảnh của tiểu trình tạm ngưng xử lý.  Đưa tiểu trình này vào hàng đợi hệ thống có độ ưu tiên tương ứng với độ ưu tiên xử lý của tiểu trình.  Xác định tiểu trình sẵn sàng trong hàng đợi có độ ưu tiên xử lý cao nhất.  Nạp thông tin ngữ cảnh của tiểu trình được chọn vào hệ thống, xoá bỏ tiểu trình này trong hàng đợi hệ thống và thực thi tiểu trình này. CuuDuongThanCong.com https://fb.com/tailieudientucntt
  20. Chuyển đổi ngữ cảnh  Việc chuyển đổi ngữ cảnh chỉ được thực hiện trong ba tình huống:  Khi thời gian xử lý của một tiểu trình đã hết.  Khi tiểu trình đang xử lý phải chuyển sang trạng thái chờ, nó phải từ bỏ thời gian xử lý còn lại.  Một tiểu trình có độ ưu tiên xử lý cao hơn vừa từ trạng thái chờ (block, suspend) chuyển sang trạng thái sẵn sàng. CuuDuongThanCong.com https://fb.com/tailieudientucntt
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2