Tác vụ và truyền thông giữa các tác vụ

7 306 0
Tác vụ và truyền thông giữa các tác vụ

Đang tải... (xem toàn văn)

Thông tin tài liệu

Tác vụ truyền thông tác vụ Tác vụ truyền thông tác vụ Bởi: Khoa CNTT ĐHSP KT Hưng Yên Các tác vụ (Task) Một hệ thống thời gian thực gọi “điều khiển kiện” có nghĩa hệ thống phải có chức phản ứng lại kiện xảy môi trường hệ thống Vậy hệ thống phản ứng lại kiện nào? Một giải pháp đưa có tên Đa nhiệm Giải pháp chứng minh mô hình chuẩn cho hệ thống điều khiển kiện hệ thống sử dụng ngắt Ý tưởng giải pháp phân chia vấn đề lớn thành nhánh nhỏ đơn giản để giải Mỗi vấn đề (sub-problem) trở thành tác vụ - task Mỗi tác vụ làm việc đơn giản Sau đó, giả thiết tác vụ chạy song song với Trên thực tế, tác vụ không chạy song song hệ thống đa vi xử lý Trong trường hợp xét, tác vụ chia sẻ vi xử lý Cũng giống chương trình khác, tác vụ bao gồm mã lệnh để thực chức tác vụ phải thực (do người lập trình thiết kế) Mã lệnh chứa hàm tương tự hàm main() ngôn ngữ lập trình C Điều làm nên khác biệt tác vụ ngữ cảnh (context) chứa ngăn xếp (stack) Task gì? Mỗi tác vụ bao gồm : 1/7 Tác vụ truyền thông tác vụ • Mã nguồn chứa chức tác vụ • Một ngăn xếp để chứa ngữ cảnh 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 tác vụ khác Chú ý rằng, (nhiều hữu dụng) ta tạo nhiều tác vụ từ hàm chung Như nói, điều làm cho tác vụ tách biệt khác biệt với tác vụ khác ngăn xếp Thực tế lập trình hướng đối tượng kiểu cổ điển Ta nghĩ hàm tác vụ việc định nghĩa class Và tác vụ tạo từ hàm ví dụ class Mặc dù thấy tác vụ độc lập, chúng cần phải hợp tác với để thực mục đích chung thiết kế sẵn cho hệ thống Vì vậy, tác vụ cần phải có chế truyền thông mà thông qua đó, chúng kết nối, đồng với tác vụ khác Trong trường hợp này, ta gọi chế Hộp thư – mail box Hình 7.2 miêu tả cấu trúc mã nguồn tác vụ Đối số data dùng để tham số hóa tác vụ Vai trò giống với đối số argv argc hàm main() với ngôn ngữ C Đối số thực quan trọng trường hợp nhiều tác vụ tạo từ hàm Sự tác vụ thể giá trị đối số Cấu trúc thông thường tác vụ Một tác vụ khởi động với 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ụ vào vòng lặp không giới hạn Tại vài điểm vòng lặp, đợi "Một kiện xảy ra", có thể, kiện tin gửi tới mail box, đơn giản tràn định thời Trong chờ kiện, tác vụ không làm không sử dụng vi xử lý Một vài tác vụ khác sẵn sàng hoạt động hoạt động xử dụng vi xử lý Khi kiện mà tác vụ chờ xảy ra, tác vụ "thức dậy" và: nhận lấy tin, giải mã tin hoạt động theo yêu cầu đặt sẵn dựa hệ thống yêu cầu 2/7 Tác vụ truyền thông tác vụ phân định câu lệnh switch() Sau thực xong yêu cầu, tác vụ lại quay trở lại trạng thái chờ kiện Có thể thấy rằng, tất tá vụ giành phần lớn thời gian cho việc chờ kiện xảy Đây cũng lí để đa nhiệm hoạt động Truyền thông đồng tác vụ Mặc dù các tác vu ̣ được xem độc lập với nhiệm vu ̣ tổng quát của hệ thống yêu cầu các tác vu ̣phải có sự liên ̣ với nhau, hợp tác với Do đó, thành phần cốt yếu của bất cứ hệ điều hành thời gian thực tập hợp dịch vụ truyền thông đồng bộ Có một vài chế đồng bộ truyền thông hay được sử dụng, bao gồm: • Semaphore: Sử dụng cho việc đồng hóa tín hiệu khả tận dụng tài nguyên • Monitor: Điều khiển việc truy cập vào vùng liệu chia sẻ hoạt động hệ thống Semaphore Hãy xét tác vụ, mỗi tác vu ̣ có nhiệm vụ in một bản tin có nội dung “I am task n” (n là số thứ tự của tác vụ) bằng máy in chia sẻ hình dưới Nếu chúng ta không sử dụng bấ t cứ chế đồng nào, kết quả có từ máy in sẽ có thể là “II a amm tatasskk 12” chia sẻ tài nguyên Điều cần thiết ở là phải có một chế nào đó để với chế này, máy in chỉ có thể được sử dụng bởi tác vụ tại một thời điểm xác định 3/7 Tác vụ truyền thông tác vụ Semaphore hoạt động giống chiếc chìa khóa cho việc truy cập tới tài nguyên Chỉ có tác vụ có chìa khóa này mới có quyền sử dụng tài nguyên Để có thể sử dụng tài nguyên (là chiếc máy in trường hợp này), tác vu ̣ cần yêu cầu (acquire) chìa khóa (semaphore) bằng cách gọi tới một dịch vụ thích hợp hình 7.4 Nếu chìa khóa ở trạng thái sẵn sàng, tức̀ là tài nguyên (máy in) hiện tại không được sử dụng bất kỳ một tác vụ nào, tác vụ đó có thể được cho phép sử dụng tài nguyên Sau sử dụng xong, tác vụ đó phải trả lại (release) semaphore cho các tác vụ khác có thể sử dụng Chia sẻ tài nguyên với Semaphone Tuy nhiên, nếu máy in được sử dụng, tác vụ đó bị khóa cho tới tác vụ sử dụng máy in trả lại semaphore Cùng một lúc có thể có nhiều tác vụ yêu cầu semaphore máy in hoạt động Tất cả các tác vụ đó đều bị khóa Các tác vụ bị khóa được xếp hàng theo kiểu hàng đợi theo thứ tự về mặt ưu tiên hoặc theo thứ tự thời gian mà chúng yêu cầu semaphore theo lệnh acquireSem Cách thức xếp thứ tự hàng đợi cho các tác vụ có thể được xây dựng kernel hoặc có thể được cấu hình mà semaphore được tạo Lệnh acquireSem hoạt động sau: • Giảm giá trị của semaphore • Nếu kết giá trị lớn hay 0, tức tài nguyên sẵn sàng, tác vụ sử dụng tài nguyên Ngược lai kết nhỏ 0, tác vị bị khóa chờ đến tác vị sử dụng tài nguyên sử dụng lệnh releaseSem Lệnh releaseSem tăng giá trị semaphore, Nếu kết trả bé 0, điều có nghĩa có tác vụ đợi semaphore, tác vụ chuyển vào trạng thái sẵn sàng Trong trường hợp máy in này, semaphore gán mặc định ban đầu trường hợp hệ thống có máy in quản lý Trường hợp thông thường gọi semaphore nhị phân (binary semaphore) để phân biệt với trường hợp 4/7 Tác vụ truyền thông tác vụ tổng quát (counting semaphore), semaphore mặc định số nguyên không âm Xét định địa nhớ động để quản lý nhớ đệm cố định hình 7.5 Ở khởi tạo cho semaphore số lượng nhớ đệm trống thời điểm ban đầu Khi câu lệnh bufReq gọi đến, trước tiên dành lấy semaphore, sau định địa cho nhớ đệm Trong 10 lần gọi lệnh bufReq đầu tiên, semaphore không âm, điều làm cho tác vụ yêu cầu semaphore hoạt động Đến lần thực thi lệnh bufReq lần thứ 11, tác vụ yêu cầu bị khóa chờ đến có tác vụ khác gọi lệnh bufReq để giải phóng semaphore Chia sẻ hệ thống đa tài nguyên Một số kenel sử dụng hai loại binary semaphore couting semaphore trường hợp, binary semaphore có hiệu Binary semaphone gọi mutex có nghĩa loại trừ lẫn (mutual exclusion) Một semaphore sử dụng để tạo tín hiệu cho xuất kiện hình 7.6 Lấy vụ dụ làm mà hệ thống nhận biết xuất ngắt? tác vụ cần thông tin xuất ngắt treo (pend) semaphore lên Chương trình dịch vụ ngắt (Internet sevice Routine) phục vụ ngắt sau gửi (post) semaphore lại (chú ý rằng: thuật ngữ “pend” “post” sử dụng thường xuyên thuật ngữ “acquire” “release” 5/7 Tác vụ truyền thông tác vụ Tạo tín hiệu cho kiện thông qua semaphore Ở ví dụ trên, semaphore khởi tạo giá trị khác tài nguyên sẵn sàng để sử dụng Ở đây, semaphore khởi tạo Vì tác vụ treo (pend) semaphore, bị khóa lại - kiện chưa sảy Khi ISR gửi (post) lại semaphore, tác vụ tiếp tục đánh thức tiếp tục thực Khi semaphore sử dụng khóa tài nguyên, nhiều tác vụ post pend Tuy nhiên trường hợp tạo tín hiệu đồng hóa, semaphore thường sử dụng ISR tác vụ Cơ chế tương tự sử dụng tác vụ muốn tạo tín hiệu kiện tới tác vụ khác Monitor Monitor ngôn ngữ lập trình xây dựng để điều khiển việc truy nhập vào vùng liệu chia sẻ hoạt động hệ thống Mã chương trình đồng bổ sung vào biên dịch thực thi chạy chương trình • • • • • • • • Monitor modul đóng gói Các cấu trúc liệu chia sẻ Các thủ tục hoạt động thao tác cấu trúc liệu chia sẻ Đồng luồng thực thi đồng thời mà kích hoạt thủ tục hoạt động hệ thống Monitor bảo vệ liệu khỏi truy nhập cấu trúc Nó đảm bảo luồng truy nhập vào liệu thông qua thủ tục tương tác theo cách hợp pháp có kiểm soát Monitor đảm bảo loại trừ xung đột Chỉ có luồng thực thi thủ tục thời điểm (luồng monitor) Nếu có luồng thực thi bên monitor khoá luồng khác muốn vào, monitor phải có hàng đợi 6/7 Tác vụ truyền thông tác vụ Minh họa Monitor 7/7 .. .Tác vụ truyền thông tác vụ • Mã nguồn chứa chức tác vụ • Một ngăn xếp để chứa ngữ cảnh 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 tác vụ khác Chú... nhiều tác vụ từ hàm chung Như nói, điều làm cho tác vụ tách biệt khác biệt với tác vụ khác ngăn xếp Thực tế lập trình hướng đối tượng kiểu cổ điển Ta nghĩ hàm tác vụ việc định nghĩa class Và tác vụ. .. trị đối số Cấu trúc thông thường tác vụ Một tác vụ khởi động với 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ụ vào vòng lặp không giới hạn Tại vài điểm vòng lặp,

Ngày đăng: 31/12/2015, 10:55

Từ khóa liên quan

Mục lục

  • Tác vụ và truyền thông giữa các tác vụ

  • Các tác vụ (Task)

  • Truyền thông và đồng bộ giữa các tác vụ

    • Semaphore

    • Monitor

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan