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.
Đa tiểu trình CuuDuongThanCong.com https://fb.com/tailieudientucntt Nội dung chương Một số khái niệm Xây dựng ứng dụng đa tiểu trình Đồng hóa tiểu trình CuuDuongThanCong.com https://fb.com/tailieudientucntt Một số khái niệm 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 tiến trình (Process priority class) Độ ưu tiên tiểu trình (Thread priority) Chuyển đổi ngữ cảnh (Context Switch) CuuDuongThanCong.com https://fb.com/tailieudientucntt 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 lúc Các tiến trình hoạt động độc lập hay kết hợp với để thực nhiều tác vụ CuuDuongThanCong.com https://fb.com/tailieudientucntt Lợi ích xử lý đồng hành Cho phép nhiều ứng dụng hoạt độ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ý CPU thành nhiều “lát thời gian” (time slice) để tiến trình/tiểu trình thực luân phiên Tiến trình/tiểu trình thực thi tạm dừng time slice hết tiến trình/tiểu trình khác chạy Khi hệ thống chuyển đổi từ thread sang thread khác, lưu lại ngữ cảnh thread bị quyền phục hồi ngữ cảnh thread chạy CuuDuongThanCong.com https://fb.com/tailieudientucntt Đa nhiệm Độ dài time slice phụ thuộc hệ điều hành vi xử lý Bởi time slice nhỏ (khoảng 20ms) nên ta có cảm giác thực đồng thời Hệ điều hành Windows hỗ trợ pre-emptive MultiTasking (đa nhiệm có độ ưu tiên) Những vấn đề khó khăn xử lý đa nhiệm: Không gian nhớ để lưu trữ thông tin ngữ cảnh tiến trình tiểu trình Thời gian để theo vết, quản lý tiểu trình Sự tranh chấp tài nguyên dùng chung CuuDuongThanCong.com https://fb.com/tailieudientucntt Tiến trình Là chương trình thực thi Có trỏ lệnh, vùng khơng gian địa ảo riêng, mã lệnh, liệu, object handles, biến mơi trường, độ ưu tiên… Các thuộc tính tác động lên tiểu trình trực thuộc tiến trình Một tiến trình có nhiều tiểu trình CuuDuongThanCong.com https://fb.com/tailieudientucntt Tiến trình CuuDuongThanCong.com https://fb.com/tailieudientucntt Tiểu trình Là đơn vị nhỏ thực thi 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 stack, trạng thái ghi CPU,…và entry danh sách tiểu trình hệ thống điều phối Các tiểu trình tiến trình chia sẻ nguồn tài nguyên chung tồn tiến trình CuuDuongThanCong.com https://fb.com/tailieudientucntt Xây dựng ứng dụng đa tiểu trình Truyền liệu - đóng gói vào lớp CuuDuongThanCong.com https://fb.com/tailieudientucntt Xây dựng ứng dụng đa tiểu trình Truyền liệu - đóng gói vào lớp (tt) CuuDuongThanCong.com https://fb.com/tailieudientucntt Xây dựng ứng dụng đa tiểu trình Trả liệu – dùng hàm gọi ngược Xây dựng lớp chứa tiểu trình: Nhận liệu vào delegate tới hàm gọi ngược Trong phần code tiểu trình gọi hàm ngược CuuDuongThanCong.com https://fb.com/tailieudientucntt Xây dựng ứng dụng đa tiểu trình Trả liệu – dùng hàm gọi ngược Xây dựng lớp chứa tiểu trình: CuuDuongThanCong.com https://fb.com/tailieudientucntt Xây dựng ứng dụng đa tiểu trình Trả liệu – dùng hàm gọi ngược Triển khai hàm gọi ngược ứng với delegate: /* Delegate that defines the signature for the callback method */ public delegate void ExampleCallback(int lineCount); CuuDuongThanCong.com https://fb.com/tailieudientucntt Xây dựng ứng dụng đa tiểu trình Trả liệu – dùng hàm gọi ngược Tạo tiểu trình, truyền liệu thực thi: CuuDuongThanCong.com https://fb.com/tailieudientucntt Xây dựng ứng dụng đa tiểu trình Tạm dừng/tiếp tục tiểu trình Ta tạm ngưng thực thi tiểu trình cách gọi hàm Suspend khôi phục lại hoạt động hàm Resume th.Suspend(); th.Resume(); Nếu tiểu trình gọi hàm hệ thống, thao tác suspend thất bại Ứng dụng phải gọi SuspendThread nhiều lần suspend thành công Kiểm tra trạng thái tiểu trình thơng qua thuộc tính: th.ThreadState == ThreadState.Suspended CuuDuongThanCong.com https://fb.com/tailieudientucntt Xây dựng ứng dụng đa tiểu trình Kết thúc tiểu trình Ta dùng hàm Abort để gửi thông điệp yêu cầu tiểu trình kết thúc Để hủy thơng điệp Abort, ta dùng lệnh: th.Abort(); Th.ResetAbort(); Vì tiểu trình trực thuộc tiến trình, nên ta kết thúc tất tiểu trình cách kết thúc tiến trình cha CuuDuongThanCong.com https://fb.com/tailieudientucntt Xây dựng ứng dụng đa tiểu trình Đồng hóa tiểu trình Có nhiều chế đồng hóa tiểu trình: Dùng từ khóa lock: CuuDuongThanCong.com https://fb.com/tailieudientucntt Xây dựng ứng dụng đa tiểu trình Đồng hóa tiểu trình Dùng từ khóa lock: Các cấu trúc thường gặp là: lock (this), lock (typeof (MyType)), lock ("myLock") vi phạm nguyên tắc sau: lock(this): gây xung đột lớp public lock (typeof (MyType)): gây xung đột MyType lớp public lock(“myLock”): gây xung đột chuỗi dùng nơi khác Tốt hết khai báo private hay private shared cho object lock CuuDuongThanCong.com https://fb.com/tailieudientucntt Xây dựng ứng dụng đa tiểu trình Đồng hóa tiểu trình Dùng từ khóa lock: public void ThreadProc() { lock("crit"){ Thread.Sleep(value*100); } Console.WriteLine(boilerplate, value); if (callback != null) callback(1); } CuuDuongThanCong.com https://fb.com/tailieudientucntt Xây dựng ứng dụng đa tiểu trình Đồng hóa tiểu trình Dùng monitor: CuuDuongThanCong.com https://fb.com/tailieudientucntt Xây dựng ứng dụng đa tiểu trình Đồng hóa tiểu trình CuuDuongThanCong.com https://fb.com/tailieudientucntt Xây dựng ứng dụng đa tiểu trình Đồng hóa tiểu trình CuuDuongThanCong.com https://fb.com/tailieudientucntt Xây dựng ứng dụng đa tiểu trình Đồng hóa tiểu trình - Monitor CuuDuongThanCong.com https://fb.com/tailieudientucntt ... handles, biến môi trường, độ ưu tiên… Các thuộc tính tác động lên tiểu trình trực thuộc tiến trình Một tiến trình có nhiều tiểu trình CuuDuongThanCong.com https://fb.com/tailieudientucntt Tiến trình. .. tiểu trình Tạo lập tiểu trình Thay đổi trạng thái tiểu trình Kết thúc tiểu trình Đồng hóa tiểu trình CuuDuongThanCong.com https://fb.com/tailieudientucntt Xây dựng ứng dụng đa tiểu trình. .. tiểu trình hệ thống điều phối Các tiểu trình tiến trình chia sẻ nguồn tài ngun chung tồn tiến trình CuuDuongThanCong.com https://fb.com/tailieudientucntt Tiểu trình Các trạng thái tiểu trình: