Giáo trình Real time - Chương 3: Các tác vụ

Vꢀ Duy Thꢁnh  
CHƯƠNG 3  
CꢀC TꢀC Vꢁ – TASKS  
Một giải pháp đưa ra có tên Đa nhiệm. Giải pháp này đã được chứng minh là một mô hình  
chuẩn cho các hệ thống điều khiển sự kiện và hệ thống sử dụng ngắt. Ý tưởng cơ bản của  
giải pháp này là chúng ta có thể phân chia một vấn đề lớn thành các nhánh nhỏ và đơn giản  
hơn để giải quyết. Mỗi một vấn đề con – sub-problem trở thành một tác vụ - task. Mỗi một  
tác vụ chỉ làm một việc đơn giản. Sau đó, chúng ta giả thiết rằng các tác vụ này chạy song  
song với nhau. Trên thực tế, các tác vụ không bao giờ chạy song song nếu chúng ta không  
có một hệ thống đa vi xử lý. Trong trường hợp đang xét, các tác vụ sẽ chia sẻ một bộ vi xử  
lý.  
Cũng giống như các chương trình khác, một tác vụ bao gồm mã lệnh để thực hiện các chức  
năng mà tác vụ phải thực hiện (do người lập trình đã thiết kế). Mã lệnh được chứa trong  
một hàm tương tự như hàm main() trong ngôn ngữ lập trình C. Điều làm nên sự khác biệt  
của tác vụ chính là ngữ cảnh – context chứa trong ngăn xếp – stack của nó.  
Hình 1 – Task là gì ?  
Mỗi một tác vụ bao gồm :  
- Mã nguồn chứa các chức năng của tác vụ  
- Một ngăn xếp – stack để chứa ngữ cảnh của tác vụ  
- Một hôp thư – mail box (tùy chọn) để phục vụ cho việc truyền thông với các tác vụ  
khác.  
Chú ý rằng, đôi khi (nhiều khi khá hữu dụng) ta có thể tạo ra nhiều tác vụ từ một hàm  
chung. Như đã nói, điều làm cho một tác vụ có thể tách biệt và khác biệt với các tác vụ  
khác chính là ngăn xếp của nó. Đây thực tế chính là lập trình hướng đối tượng kiểu cổ điển.  
Ta có thể nghĩ rằng hàm tác vụ chính là việc định nghĩa một class. Và một tác vụ tạo ra từ  
hàm đó chính là một ví dụ về class.  
Mặc dù có thể thấy các tác vụ là khá độc lập, nhưng về cơ bản thì chúng cũng cần phải hợp  
tác với nhau để thực hiện một mục đích chung đã được thiết kế sẵn cho hệ thống. Vì vậy,  
mỗi một tác vụ cần phải có một cơ chế truyền thông mà thông qua đó, chúng có thể kết  
nối, đồng bộ với các tác vụ khác. Trong trường hợp này, ta gọi cơ chế đó là Hộp thư – mail  
box.  
1
Tꢁi liêu  
Nguyên văn tiê  
̣ chi mang tinh tham khao  
́
̉ ̉  
́
ng nươc ngoai cua Doug Abott  
́ ̀  
̉
Vꢀ Duy Thꢁnh  
Bảng 1 miêu tả cấu trúc mã nguồn của một tác vụ. Đối số data dùng để tham số hóa một  
tác vụ. Vai trò của nó cũng giống với các đối số argv và argc trong hàm main() với ngôn  
ngữ C. Đối số này thực sự quan trọng trong trường hợp nhiều tác vụ cùng được tạo ra từ  
một hàm. Sự duy nhất của tác vụ được thể hiện bởi giá trị của đối số này.  
Bảng 1: Cấu trúc thông thường của một tác vụ  
Một tác vụ có thể được khởi động với một vài khởi tạo (có thể bao gồm khởi tạo đối số  
data). Sau đó, thông thường, tác vụ sẽ đi vào một vòng lặp không giới hạn. Tại một vài  
̣
̣
̣
̣
̣
́
́
điểm trong vòng lặp, nó sẽ đợi "môt sư kiên nào đo xảy ra", có thể, sư kiên đo là một bản  
̣
̉
̣
̉
̉
̣
̣
̣
̀
̣
́
̀
̀
tin đươc gưi tơi mail box, hoăc chi đơn gian la tràn bô đinh thơi. Trong khi chơ sư kiên, tác  
̀
̀
̉
̀
̉
̣
̣
̉
̣
vụ sẽ không lam gi ca va không sư dung bô vi xư lý. Môt vài tác vụ khác nếu đã sẵn sàng  
̣
̣
̣
̣
hoạt đông hoăc đang hoat đông sẽ sử dụng bộ vi xử lý.  
́
̣
̣
̣
̣
̀
́
Khi sư kiên ma tác vụ đang chờ xảy ra, tác vụ sẽ "thưc dây" và, ví dụ, nhân lây bản tin, giải  
̀
̣
̣
̣
̣
́
̃
mã bản tin và hoạt động theo cac yêu câu đăt săn dưa trên môt hê thống các yêu cầu được  
̀
̣
̉
̣
̣
̣
̉
phân đinh bơi câu lênh switch(). Sau khi thưc hiên xong yêu câu, tác vụ lại quay trơ lại  
̣
trạng thái chờ sự kiên.  
̀
́
̣
̣
̣
̣
́
́
̀
̀
Có thể thấy răng, tât cả các tac vụ đều giành phần lơn thơi gian cho viêc chơ môt sư kiên  
́
nào đó xảy ra. Đây cung chinh là lý do để đa nhiệm có thể hoạt động.  
̃
2
Tꢁi liêu  
Nguyên văn tiê  
̣ chi mang tinh tham khao  
́
̉ ̉  
́
ng nươc ngoai cua Doug Abott  
́ ̀  
̉
pdf 2 trang Thùy Anh 10200 Free
Bạn đang xem tài liệu "Giáo trình Real time - Chương 3: Các tác vụ", để 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:

  • pdfgiao_trinh_real_time_chuong_3_cac_tac_vu.pdf