Bài giảng Lập trình môi trường Window: Chương 8 - Ngô Thanh Hùng
Số trang: 42
Loại file: pdf
Dung lượng: 700.24 KB
Lượt xem: 6
Lượt tải: 0
Xem trước 5 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
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.
Nội dung trích xuất từ tài liệu:
Bài giảng Lập trình môi trường Window: Chương 8 - Ngô Thanh Hùng Đa tiểu trìnhCuuDuongThanCong.com https://fb.com/tailieudientucnttNộ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/tailieudientucnttMộ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/tailieudientucnttXử 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/tailieudientucnttLợ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Đ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Đ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/tailieudientucnttTiế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/tailieudientucnttTiến trình CuuDuongThanCong.com https://fb.com/tailieudientucnttTiể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/tailieudientucnttTiểu trình Các trạng thái của tiểu trình: CuuDuongThanCong.com https://fb.com/tailieudientucnttTiể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Độ ư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Độ ư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Độ ưu tiên của tiểu trình trongtiế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Độ ưu tiên của tiểu trình trongtiế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 độ ...
Nội dung trích xuất từ tài liệu:
Bài giảng Lập trình môi trường Window: Chương 8 - Ngô Thanh Hùng Đa tiểu trìnhCuuDuongThanCong.com https://fb.com/tailieudientucnttNộ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/tailieudientucnttMộ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/tailieudientucnttXử 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/tailieudientucnttLợ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Đ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Đ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/tailieudientucnttTiế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/tailieudientucnttTiến trình CuuDuongThanCong.com https://fb.com/tailieudientucnttTiể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/tailieudientucnttTiểu trình Các trạng thái của tiểu trình: CuuDuongThanCong.com https://fb.com/tailieudientucnttTiể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Độ ư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Độ ư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Độ ưu tiên của tiểu trình trongtiế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Độ ưu tiên của tiểu trình trongtiế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 độ ...
Tìm kiếm theo từ khóa liên quan:
Công nghệ phần mềm Bài giảng kỹ thuật lập trình Ứng dụng đa tiểu trình Tiến trình trong Window Tiểu trình trong Window Đồng bộ hóa tiểu trìnhTài liệu liên quan:
-
62 trang 403 3 0
-
Giáo trình Công nghệ phần mềm nâng cao: Phần 2
202 trang 230 0 0 -
Giáo trình Công nghệ phần mềm nâng cao: Phần 1
151 trang 198 0 0 -
Báo cáo chuyên đề Công nghệ phần mềm: Pattern searching
68 trang 190 0 0 -
Lecture Introduction to software engineering - Week 3: Project management
68 trang 189 0 0 -
Xây dựng mô hình và công cụ hỗ trợ sinh tác tử giao diện
13 trang 183 0 0 -
6 trang 176 0 0
-
Bài giảng Công nghệ phần mềm - Chương 2: Quy trình xây dựng phần mềm
36 trang 158 0 0 -
Tìm hiểu về ngôn ngữ lập trình C: Phần 1 - Quách Tuấn Ngọc
211 trang 150 0 0 -
Cuộc chiến Phân kỳ - Tích hợp nhiều tranh cãi bậc nhất trong giới marketing
3 trang 149 0 0