Đa tiểu trình một số khái niệm cơ bản
Đa tiểu trình Nội dung chươngMột số khái niệm cơ bảnXây dựng một ứng dụng đa tiểu trìnhĐồng bộ hóa các tiểu trình Một số khái niệm cơ bảnXử 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) Xử lý đồng hành Xử lý đồng hành ?Bài toán: kq = a*b + c*dMột hệ thống xử lý đồng hành thường có nhiều tiến trình thực thi cùng lúcCá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ụ Lợi ích của xử lý đồng hànhCho phép nhiều ứng dụng hoạt động cùng lúcTăng tốc độ xử lýTăng hiệu suất sử dụng CPU… Đa nhiệmHệ đ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. Đ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ìnhThời gian để theo vết, quản lý các tiểu trìnhSự tranh chấp tài nguyên dùng chung Tiến trìnhLà một chương trình đang thực thiCó 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ìnhMột tiến trình có thể có nhiều tiểu trình Tiến trình Tiểu trìnhLà đơn vị nhỏ nhất thực thi được trên hệ điều hành Windows 32 bitsLà đơ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ốiCá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. [...]... ThreadState.Suspended Xây dựng ứng dụng đa tiểu trình Tạo lập tiểu trình với ThreadStart Xây dựng ứng dụng đa tiểu trình Tạo lập tiểu trình Thay đổi trạng thái của tiểu trình Kết thúc tiểu trình Đồng bộ hóa các tiểu trình 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) Độ... tiên NORMAL Xây dựng ứng dụng đa tiểu trình Đồng bộ hóa các tiểu trình Xây dựng ứng dụng đa tiểu trình Trả dữ liệu – dùng hàm gọi ngược. Tạo tiểu trình, truyền dữ liệu và thực thi: Xây dựng ứng dụng đa tiểu trình Tạo lập tiểu trình Thơng thường, chỉ có 1 tiểu trình duy nhất trong một tiến trình lúc bắt đầu. Từ tiểu trình ban đầu này, ta có thể tạo ra các tiểu trình khác bằng cách gọi hàm khởi... của tiểu trình (Thread priority) Chuyển đổi ngữ cảnh (Context Switch) Xây dựng ứng dụng đa tiểu trình Trả dữ liệu – dùng hàm gọi ngược. Xây dựng lớp chứa tiểu trình: Nhận dữ liệu vào và delegate tới hàm gọi ngược. Trong phần code của tiểu trình sẽ gọi hàm ngược này. Đa tiểu trình Xây dựng ứng dụng đa tiểu trình Kết thúc tiểu trình Ta có thể dùng hàm Abort để gửi thơng điệp u cầu một tiểu. .. dựng ứng dụng đa tiểu trình Đồng bộ hóa các 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); } Xây dựng ứng dụng đa tiểu trình Tạo tiểu trình với ParametrizedThreadStart Tiểu trình Các trạng thái của tiểu trình: Xây dựng ứng dụng đa tiểu trình Trả dữ... ứng dụng đa tiểu trình Tạm dừng/tiếp tục tiểu trình Ta có thể tạm ngưng thực thi một tiểu trình bằng cách gọi hàm Suspend và khôi phục lại hoạt động bằng hàm Resume. th.Suspend(); th.Resume(); Nếu tiểu trình đang gọi các hàm hệ thống, thao tác suspend sẽ thất bại. Ứng dụng có thể phải gọi SuspendThread nhiều lần cho đến khi suspend thành cơng. Kiểm tra trạng thái của một tiểu trình thơng... tiểu trình Đồng bộ hóa các tiểu trình Dùng monitor: 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... 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 ngun chung của tồn bộ tiến trình. Xây dựng ứng dụng đa tiểu. .. Tiến trình 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. Xây dựng ứng dụng đa tiểu trình Đồng... trình Kết thúc tiểu trình Ta có thể dùng hàm Abort để gửi thơng điệp u cầu một tiểu trình kết thúc. th.Abort(); Để hủy thơng điệp Abort, ta dùng lệnh: Th.ResetAbort(); Vì tiểu trình trực thuộc tiến trình, nên ta có thể kết thúc tất cả các tiểu trình bằng cách kết thúc tiến trình cha. Xây dựng ứng dụng đa tiểu trình Trả dữ liệu – dùng hàm gọi ngược. Triển khai hàm gọi ngược ứng với delegate: /*... ngữ cảnh của tiểu trình được chọn vào hệ thống, xố bỏ tiểu trình này trong hàng đợi hệ thống và thực thi tiểu trình này. Độ ư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 . Đa tiểu trình 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 Một số khái niệm cơ bản Xử. 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 Tiến trình Tiểu trình Là đơn vị nhỏ nhất thực