1. Trang chủ
  2. » Giáo Dục - Đào Tạo

VẤN đề PRIORITY SCHEDULING và PRIORITY DONATION TRONG dự án 1 của hệ điều hành pintos

20 39 0

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 20
Dung lượng 860,09 KB

Nội dung

ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN ĐIỆN TỬ - VIỄN THÔNG BÁO CÁO BÀI TẬP LỚN MÔN HỆ ĐIỀU HÀNH ĐỀ TÀI: VẤN ĐỀ “PRIORITY SCHEDULING” VÀ “PRIORITY DONATION” TRONG DỰ ÁN SỐ CỦA HỆ ĐIỀU HÀNH PINTOS Họ tên sinh viên MSSV Mã lớp Phạm Quốc Trung 20172875 119074 Giảng viên hướng dẫn: TS Phạm Văn Tiến HÀ NỘI 12/2020 MỤC LỤC DANH MỤC HÌNH ẢNH DANH MỤC BẢNG BIỂU CHƯƠNG 1: HỆ ĐIỀU HÀNH PINTOS 1.1 Tổng quan Pintos 2.1 Hệ thống thư mụ c hệ điều hành Pintos CHƯƠNG 2: DỰ ÁN LUỒNG – VẤN ĐỀ “PRIORITY SCHEDULING” 2.1 Cấu trúc liệu hàm quan trọng 2.1.1 Cấu trúc semaphore 2.1.2 Cấu trúc lock 2.1.3 Cấu trúc condition variable 2.2 Vấn đề đặt 2.3 Mục tiêu đề tài 2.4 Phương án giải 2.4 Triển khai cụ thể 10 CHƯƠNG 3: DỰ ÁN LUỒNG – VẤN ĐỀ “PRIORITY DONATION” 11 3.1 Các cấu trúc liệu quan trọng 11 3.2 Vấn đề đặt 11 3.3 Mục tiêu đề tài 12 3.4 Phương án giải 12 3.4 Triển khai cụ thể 14 CHƯƠNG 4: KẾT QUẢ 17 4.1 Kết sau chạy “make check” 17 4.2 Kết luận 17 PHẠM QUỐC TRUNG 20172875 DANH MỤC HÌNH ẢNH Hình Cơ chế Round - Robin Hình 2 Cơ chế Priority Scheduling Hình Vấn đề “Priority Inversion” 11 Hình Ý tưởng thực “Priority Donation” 12 Hình 3 Vấn đề Multiple Donation luồng 13 Hình Vấn đề Nested Donation luồng 14 Hình Ý tưởng cho vấn đề Multiple Donation 15 Hình Ý tưởng cho vấn đề Nested Donation 15 Hình Kết chạy make check 17 DANH MỤC BẢNG BIỂU Bảng Bảng tổng kết hàm thêm hàm sửa đổi vấn đề “Priority Scheduling” 10 Bảng Bảng tổng kết hàm thêm hàm sửa đổi vấn đề “Priority Inversion” 16 PHẠM QUỐC TRUNG 20172875 CHƯƠNG 1: HỆ ĐIỀU HÀNH PINTOS 1.1 Tổng quan Pintos Hệ điều hành Pintos hệ điều hành đơn giản chạy kiến trúc 80x86 Hệ điều hành nghiên cứu phát triển đại học Stanford với mục đích để phục vụ cho q trình học tập nghiên cứu sinh viên Nó có hỗ trợ chế hệ điều hành luồng kernel, tải nạp chạy chương trình người dùng, hệ thống filesystem,… Tuy chế triển khai đơn giản nhiều vấn đề cần khắc phục Dựa tình hình thực tế, dự án Pintos đưa để khắc phục phần vấn đề nêu Các dự án chủ yếu xoay quanh số nội dung thread (luồng), user program (chương trình người dùng), virtual memory (bộ nhớ ảo) filesystem (hệ thống file) Sau triển khai nội dung này, hệ điều hành hoạt động hiệu quả, nâng cao hiệu suất hệ thống tiết kiệm tài nguyên có hạn thời gian, lượng, nhớ Các dự án Pintos chạy kiểm tra hệ thống mô Bản chất, chương trình với chức mô lại hệ vi xử lý kiến trúc 80x86 ngoại vi cho vừa đủ để chương trình Pintos chạy Hai chương trình mơ phổ biến Boshs QEMU Trong báo cáo dự án sử dụng trình mơ QEMU 2.1 Hệ thống thư mục hệ điều hành Pintos Bên mã nguồn Pintos, nhận số thư mục, dự án Pintos triển khai thư mục Chúng ta tìm thấy thư mục theo đường dẫn sau “…/pintos/src” Thư mục “luồngs/” Đây nơi chứa mã nguồn kernel gốc Nó nơi mà triển khai dự án “Luồng” Thư mục “userpro/” PHẠM QUỐC TRUNG 20172875 Thư mục chứa mã nguồn cho trình tải nạp ứng dụng người dùng Đây nơi triển khai dự án “User Program” Thư mục “vm/” Đây gần thư mục rỗng Nó nơi triển khai nội dung liên quan đến dự án số “Virtual Memory” Thư mục “filesys/” Thư mục chứa mã nguồn cho hệ thống file Thư mục sử dụng dự án dự án “User Program” dự án “File System” Thư mục “devices/” Đây thư mục chứa mã nguồn cho giao tiếp hệ thống với thiết bị vào như: bàn phím, ổ đĩa, hình,… Chúng ta cần thay đổi mã nguồn cho định thời timer dự án số Thư mục “lib/” Đây thư mục tập hợp thư viện chuẩn C phục vụ cho dự án Gần không cần thay đổi mã nguồn thư mục Khi cần sử dụng thư viện cụ thể ta cần sử dụng kí hiệu #include Mã nguồn thư viện biên dịch dạng “kernel” “user” Thư mục “lib/kernel/” Đây phần thư viện C mà sử dụng nhân hệ điều hành Nó bao gồm số kiểu liệu tự định nghĩa như: bitmaps, linked list hay hash table Thư mục “lib/user/” Phần thư viện C sử dụng chương trình người dùng Pintos, Thư mục “tests/” PHẠM QUỐC TRUNG 20172875 Đây thư mục chứa kết chạy thử dự án Ta thay đổi mã nguồn có ích q trình kiểm tra dự án Thư mục “examples/” Đây ví dụ cho chương trình người dùng sử dụng dự án số PHẠM QUỐC TRUNG 20172875 CHƯƠNG 2: DỰ ÁN LUỒNG – VẤN ĐỀ “PRIORITY SCHEDULING” 2.1 Cấu trúc liệu hàm quan trọng Bên cạnh cấu trúc danh sách (linked list) cấu trúc luồng trình bày báo cáo trước vấn đề này, cần quan tâm đến số cấu trúc khác lock, semaphore, condition variable hàm liên quan 2.1.1 Cấu trúc semaphore Một biến semaphore định nghĩa dạng biến cấu trúc thơng qua từ khóa “struct” Cấu trúc gồm trường sau • unsigned value: Giá trị semaphore • struct list waiters: Danh sách luồng đợi để chiếm semaphore Một số hàm chức quen thuộc ta lập trình với semaphore: • sema_init (): Hàm khởi tạo cho biến semaphore • sema_down(): Đây phép tốn thực semaphore (P), tiến hành giảm giá trị semaphore xuống giá trị lớn • sema_try_down(): Nó thử kiểm tra giá trị semaphore, lớn tiến hành giảm xuống đơn vị trả giá trị TRUE, ngược lại trả FALSE • sema_up(): Cùng với P phép tốn thực semaphore (V), tăng giá trị semaphore lên đơn vị đồng thời đánh thức luồng đợi semaphore 2.1.2 Cấu trúc lock Một biến lock định nghĩa dạng biến cấu trúc thơng qua từ khóa “struct”, gồm trường sau • struct thread*holder: Trỏ đến luồng nắm giữ khóa • struct semaphore semphore: Giá trị nhị phân semaphore phụ vụ q trình kiểm sốt q trình truy nhập khóa PHẠM QUỐC TRUNG 20172875 Một số hàm quen thuộc ta lập trình với khóa: • lock_init (struct lock*lock): hàm dùng để khởi tạo cho khóa • lock_acquire (struct lock*lock): hàm sử dụng luồng muốn chiếm lấy khóa • lock_try_acquire(struct lock*lock): hàm giúp luồng cố chiếm lấy khóa mà mong muốn, trả giá trị TRUE chiếm khóa thành cơng ngược lại trả giá trị FALSE chiếm khóa thất bại • lock_release (struct lock*lock): Khi luồng hồn thành cơng việc khơng cần khóa thực giải phóng khóa để luồng khác chiếm 2.1.3 Cấu trúc condition variable Một biến condition định nghĩa dạng cấu trúc bao gồm trường (struct list waiters) danh sách luồng đợi Đối với loại cấu trúc này, ta cần có vài lưu ý Một biến điều kiện (condition variable) liên kết với khóa, khóa liên kết với nhiều biến điều kiện, quan hệ nhiều Một số hàm cần quan tâm làm việc với biến condition, kể đến sau: • cond_init (struct condition *cond): Hàm thực q trình khởi tạo cho biến condition • cond_wait (struct condition *cond, struct lock *lock): Các luồng đợi biến điều kiện đẩy vào hàng đợi • cond_signal (struct condition *cond, struct lock *lock UNUSED): Nếu luồng đợi biến điều kiện, hàm thực việc đánh thức luồng danh sách đợi luồng đánh thức bắt buộc phải giữ khóa liên kết với biến điều kiện (khóa nhất) • cond_broadcast (struct condition *cond, struct lock *lock): Đánh thức tất luồng danh sách đợi Lưu ý khóa liên kết biến điều kiện bắt buộc phải chiếm luồng trước ta gọi hàm PHẠM QUỐC TRUNG 20172875 2.2 Vấn đề đặt Như biết, hệ điều hành có thành phần đảm nhiệm vai trị lập lịch cho luồng tiến trình Hiểu đơn giản, chọn luồng chiếm giữ CPU từ luồng hàng đợi ready queue Đối với hệ điêu hành Pintos, chế lập lịch mặc định Round – Robin, có nghĩa chế lập lịch Cơ chế hoạt động đơn giản, luồng kết thúc time slice nhường CPU cho luồng khác, trở cuối hàng đơi ready queue, lập lịch chọn luồng chiếm CPU, ln ln chọn luồng đầu hàng đợi Ta thấy, với chế lập lịch gần không quan tâm đến mức ưu tiên luồng cấu trúc luồng bao gồm thuộc tính priority nghĩa độ ưu tiên Hình Cơ chế Round - Robin Trong thực tế, chế lập lịch thường sử dụng Do trình hoạt động, số luồng số tiến trình có vai trị quan trọng, thường ưu tiên ví dụ tiến trình tương tác với người dùng hay tiến trình ảnh hưởng đến hoạt động hệ thống Vì vậy, hệ điều hành thơng thường phải quan tâm đến mức ưu tiên tiến trình để lập lịch cho phù hợp Bên cạnh vấn đề lập lịch, cịn vấn đề khác liên quan đến việc lựa chọn luồng chiếm giữ biến phục vụ cho trình đồng luồng truy cập tới vùng nhớ critical section Giả sử, có danh sách luồng đợi biến lock PHẠM QUỐC TRUNG 20172875 biến điều kiện Khi biến lock giải phóng luồng có mức ưu tiên cao cần đánh thức Mặc dù lập lịch ưu tiên khắc phục nhược điểm lập lịch Round – Robin, có số nhược điểm cố hữu: • Hiện tượng “starvation”: Khi mà luồng có mức ưu tiên cao ln chiếm CPU cịn luồng có ưu tiên thấp gần khơng chiếm CPU • Khi luồng có ưu tiên cao thực việc chờ đợi cổng IO lâu làm công luồng Các nhược điểm khắc phục vấn đề “Advanced Scheduler” dự án 2.3 Mục tiêu đề tài Mục tiêu cần hoàn thiện đề tài thay chế lập lịch hệ điều hành từ Round – Robin sang lập lịch theo mức ưu tiên “Priority Scheduler” với giải vấn đề liên quan đến việc tranh chấp biến khóa biến điều kiện luồng 2.4 Phương án giải Với mã nguồn nguyên Pintos, luồng có trường thơng tin chứa mức ưu tiên (priority), có tổng cộng 64 mức ưu tiên khoảng từ đến 63 Khi luồng tạo ta khơng gán cho mức ưu tiên cụ thể mức ưu tiên mặc định 31 trình luồng chiếm CPU vào hàng đợi ready queue mức ưu tiên Dựa sở này, việc tìm giải pháp cho vấn đề nêu trở nên đơn giản nhiều Trước hết lập lịch ưu tiên, có hai cách để triển khai lập lịch ưu tiên PHẠM QUỐC TRUNG 20172875 • Cách 1: Chúng ta tổ chức hàng đợi ready queue cách có trật tự, luồng xếp theo thứ tự tăng dần (giảm dần) dựa theo mức độ ưu tiên Khi lựa chọn luồng chiếm CPU, lập lịch chọn luồng nằm đầu cuối hàng đợi tùy theo xếp • Cách 2: Không cần tổ chức hàng đợi ready queue cách có trật tự Khi lập lịch lập lịch tìm luồng có mức ưu tiên lớ n hàng đợi đẩy luồng vào chiếm CPU Hình 2 Cơ chế Priority Scheduling Với cách có ưu nhược điểm riêng, xét chất cách nêu thực khơng khác nhau, nhằm mục đích chọn luồng có mức ưu tiên cao để thực lập lịch Trong dự án em chọn cách số để tiến hành triển khai lập lịch ưu tiên cho hệ điêu hành Pintos Bên cạnh đó, luồng có mức ưu tiên cao luồng chiếm CPU thêm vào hàng đợi ready queue luồng chiếm CPU cần phải nhường CPU cho luồng có mức ưu tiên cao PHẠM QUỐC TRUNG 20172875 Đối với vấn đề chọn luồng chiếm khóa hay biến điều kiện ý tưởng triển khai hoàn toàn tương tự 2.4 Triển khai cụ thể Trước hết, lập lịch ưu tiên, ta cần quan tâm đến hàm định luồng chọn để chiếm CPU Khi đọc mã nguồn Pintos, ta dễ dàng phát hàm next_thread_to_run() Như ta tiến hành thay đổi hàm để lựa chọn luồng có mức ưu tiên cao hàng đợi ready queue Để đảm bảo luồng có mức độ ưu tiên cao luồng chiếm CPU thêm vào hàng đợi ready queue luồng chiếm CPU phải nhường CPU lập tức, ta tiến hành thay đổi hàm thread_create() Còn việc đảm bảo luồng có mức ưu tiên cao luồng đánh thức trước để chiếm lấy khóa biến điều kiện Chúng ta tiến hành thay đổi hàm file synch.c hàm sema_up (), sema_down(), cond_wait() cond_signal() Để phục vụ cho q trình thay đổi hàm em có viết thêm hàm khác compare_sema_priority() compare_priority() Cụ thể thay đổi mã nguồn trình bày bảng sau: Bảng Bảng tổng kết hàm thêm m ới hàm sửa đổi vấn đề “Priority Scheduling” Hàm thread.h thread.c synch.h synch.c Khơng có thread_create(), Khơng có sema_up(), bị next_thread_to_run( sema_down() thay ) cond_wait() đổi thread_set_priority() cond_signal() Hàm compare_thread_p compare_thread_pri compare_sema_pr compare_sem riority() ority() iority() a_priority() thêm 10 PHẠM QUỐC TRUNG 20172875 CHƯƠNG 3: DỰ ÁN LUỒNG – VẤN ĐỀ “PRIORITY DONATION” 3.1 Các cấu trúc liệu quan trọng Các cấu trúc cần sử dụng vấn đề nêu chương cấu trúc lock, condition semaphore 3.2 Vấn đề đặt Sau triển khai lập lịch, thấy vấn đề bất cập đơi luồng có mức ưu tiên cao lại không chiếm CPU mà thay vào luồng có mức ưu tiên thấp Hiện tượng gọi “Priority Inversion” Hiện tượng xảy mà luồng có mức ưu tiên cao đợi biến khóa biến điều kiện biến lại luồng có mức ưu tiên nắm giữ chưa giải phóng Để cụ thể cho điều ta xét ví dụ sau Xét luồng sau: luồng H có mức ưu tiên 35, luồng M có mức ưu tiên 33 cuối luồng L có mức ưu tiên 31 Luồng H chờ khóa luồng L chiếm tượng mơ tả hình vẽ sau Hình Vấn đề “Priority Inversion” Ta dễ dàng phát vấn đề đây, luồng M có mức ưu tiên thấp luồng H, lại chiếm CPU luồng H phải đợi khóa từ luồng L Rõ ràng tình trái với thiết kế ban đầu 11 PHẠM QUỐC TRUNG 20172875 3.3 Mục tiêu đề tài Như với vấn đề nêu trên, mục tiêu đề tài khắc phục tượng “Priority Inversion” nêu cách đưa phương án giải triển khai cụ thể việc lập trình sửa đổi mã nguồn 3.4 Phương án giải Để giải vấn đề nêu dựa gợi ý tài liệu thơng đưa phương án giải sau Phương án chủ yếu xoay quanh biến khóa Rõ ràng luồng (luồng H) có mức ưu tiên cao đợi khóa để truy nhập vào “critical section” mà khóa lại nắm giữ luồng khác có mức ưu tiên thấp (luồng L) luồng H nên chuyển mức ưu tiên cho luồng L để luồng L chiếm CPU thực xong công việc sau giải phóng khóa Khi đó, luồng H chiếm khóa luồng L cập nhật lại mức ưu tiên trở lại giá trị ban đầu Phương án mơ tả hình vẽ bên Hình Ý tưởng thực “Priority Donation” Tuy thực trình chuyển giao cập nhật mức ưu tiên cần phải cẩn thận Khi thiết kế phương án, thấy có hai trường hợp cần lưu tâm “Multiple Donations” “Nested Donations” Multiple Donation: Đây tình mà luồng có mức ưu tiên thấp giữ nhiều khóa khóa đợi luồng có mức ưu tiên cao Khi 12 PHẠM QUỐC TRUNG 20172875 luồng có mức ưu tiên cao đồng thời chuyển mức ưu tiên cho luồng nắm giữ khóa Để cụ thể ta xét ví dụ sau Ví dụ: Xét luồng sau • Luồng L (Mức ưu tiên 31): Đang giữ khóa A B • Luồng M (Mức ưu tiên 32): Đang đợi khóa A luồng L giữ, chuyển giao mức ưu tiên cho luồng L để luồng L thực xong công việc giải phóng khóa A ( Mức ưu tiên L cập nhật thành 32) • Luồng H (Mức ưu tiên 33): Đang đợi khóa B luồng L giữ, chuyển giao mức ưu tiên cho luồng L ( Mức ưu tiên L cập nhật thành 33) Hình 3 Vấn đề Multiple Donation luồng Có lưu ý quan trọng thực cập nhật mức ưu tiên luồng L Thay từ 33 trực tiếp 31 phải nhớ trạng thái trung gian 32 (Do luồng M chuyển giao mức ưu tiên 32 cho nó) Nested Donation: Đây tình mà luồng chuyển giao mức ưu tiên cho luồng khác có mức ưu tiên thấp Nhưng sau đó, luồng có mức ưu tiên thấp lại thực chuyển mức ưu tiên cho luồng có mức ưu tiên thấp Q trình dài khơng phải vơ hạn Chúng ta cố tình giới hạn số lần chuyển mức ưu 13 PHẠM QUỐC TRUNG 20172875 tiên trường hợp số cụ thể lập trình Tuy triển khai lập trình, em khơng giới hạn số lần mà tiến hành đến trình dừng lại hẳn kiểm tra trỏ holder biến khóa Hình Vấn đề Nested Donation luồng Như với phương án nêu với việc xem xét hai trường hợp phức tạp chuyển giao mức ưu tiên Về có phương pháp định hướng cụ thể để giải vấn đề Triển khai cụ thể việc lập trình nêu rõ phần 3.4 Triển khai cụ thể Việc lập trình để triển khai cụ thể phương pháp bên tiến hành chủ yếu file thread.h, thread.c, synch.h synch.c Trước hết ta tiến hành sửa đổi chút cấu trúc luồng cụ thể thêm số trường liệu sau: • int original_priority: Lưu mức ưu tiên trước luồng, phụ vụ cho trình cập nhật chuyển giao mức ưu tiên luồng • struct lock*wait_lock: Lưu trỏ trỏ đến khóa mà luồng đợi 14 PHẠM QUỐC TRUNG 20172875 • struct list donations: Lưu danh sách luồng chuyển mức ưu tiên cho luồng tham chiếu • struct list_elem donation_elem: Lưu luồng elem danh sách Sau sửa đổi mã nguồn cho hoạt động với phương pháp mà thiết kế (Đảm bảo trường hợp multiple donation nested donation) Hai hàm chúng cần sửa đổi chắn hàm thể trình chiếm khóa (lock_acquire()) hàm giải phóng khóa (lock_release()) Hai hàm phải thể giải thuật nêu thỏa mãn hai trường hợp multiple donations nested donation Hai trường hợp mơ tả cụ thể hình bên Hình Ý tưởng cho vấn đề Multiple Donation Hình Ý tưởng cho vấn đề Nested Donation 15 PHẠM QUỐC TRUNG 20172875 Để phục vụ việc thay đổi hàm này, viết thêm số hàm khác hai file thread.c synch.c Bên cạnh đó, cịn phải thay đổi hàm thread_set_priority() để phục vụ cho trình thay đổi mức ưu tiên chuyển giao cập nhật Cụ thể, hàm bị sửa đổi hàm thêm (Khai báo nguyên mẫu hàm thêm file header) Bảng Bảng tổng kết hàm thêm m ới hàm sửa đổi vấn đề “Priority Inversion” Sửa thread.h thread.c synch.h synch.c Khơng có thread_set_priori Khơng có lock_release() đổi ty() Thê donate_priority() donate_priority() m remove_lock() refresh_priority() refresh_priority() lock_acquire() Khơng có Khơng có remove_lock() 16 PHẠM QUỐC TRUNG 20172875 CHƯƠNG 4: KẾT QUẢ 4.1 Kết sau chạy “make check” Sau chạy lệnh make check ta thu kết tất test case yêu cầu pass Hình Kết chạy make check 4.2 Kết luận Đối với dự án Pintos đại học Standford nói riêng mơn học hệ điều hành nói chung, theo em nội dung bổ ích sinh viên ngành điện tử - viễn thơng Nó khơng cung cấp cho chúng em kiến thức hệ điều hành mà giúp chúng em cải thiện kĩ khác kĩ lập trình Sau bắt tay vào làm việc với dự án Pintos, kĩ kiến thức lại trau dồi nâng cao Cuối cùng, em xin gửi lời cảm ơn chân thành đến thầy Phạm Văn Tiến bỏ nhiều công sức để hướng dẫn dạy tận tình chúng em mơn học 17 PHẠM QUỐC TRUNG 20172875 Link repository: https://github.com/PhamQuocTrung2875/OS-pintos-project 18 ... CHƯƠNG 1: HỆ ĐIỀU HÀNH PINTOS 1. 1 Tổng quan Pintos 2 .1 Hệ thống thư mụ c hệ điều hành Pintos CHƯƠNG 2: DỰ ÁN LUỒNG – VẤN ĐỀ ? ?PRIORITY SCHEDULING? ?? 2 .1 Cấu trúc... 10 CHƯƠNG 3: DỰ ÁN LUỒNG – VẤN ĐỀ ? ?PRIORITY DONATION? ?? 11 3 .1 Các cấu trúc liệu quan trọng 11 3.2 Vấn đề đặt 11 3.3 Mục tiêu đề tài 12 3.4 Phương án giải... đổi vấn đề ? ?Priority Scheduling? ?? 10 Bảng Bảng tổng kết hàm thêm hàm sửa đổi vấn đề ? ?Priority Inversion” 16 PHẠM QUỐC TRUNG 2 017 2875 CHƯƠNG 1: HỆ ĐIỀU HÀNH PINTOS 1. 1

Ngày đăng: 24/04/2022, 21:58

HÌNH ẢNH LIÊN QUAN

Hình 2.1 Cơ chế Round - Robin - VẤN đề PRIORITY SCHEDULING  và PRIORITY DONATION TRONG dự án 1 của hệ điều hành pintos
Hình 2.1 Cơ chế Round - Robin (Trang 9)
Hình 2.2 Cơ chế Priority Scheduling - VẤN đề PRIORITY SCHEDULING  và PRIORITY DONATION TRONG dự án 1 của hệ điều hành pintos
Hình 2.2 Cơ chế Priority Scheduling (Trang 11)
Cụ thể ự thay đổ si của mã nguồn được trình bày trong bảng sau: - VẤN đề PRIORITY SCHEDULING  và PRIORITY DONATION TRONG dự án 1 của hệ điều hành pintos
th ể ự thay đổ si của mã nguồn được trình bày trong bảng sau: (Trang 12)
Hình 3.1 Vấn đề “Priority Inversion” - VẤN đề PRIORITY SCHEDULING  và PRIORITY DONATION TRONG dự án 1 của hệ điều hành pintos
Hình 3.1 Vấn đề “Priority Inversion” (Trang 13)
Hình 3.3 Vấn đề Multiple Donation gia các lu ng ồ - VẤN đề PRIORITY SCHEDULING  và PRIORITY DONATION TRONG dự án 1 của hệ điều hành pintos
Hình 3.3 Vấn đề Multiple Donation gia các lu ng ồ (Trang 15)
Hình 3.4 Vấn đề Nested Donation gia các lu ng ồ - VẤN đề PRIORITY SCHEDULING  và PRIORITY DONATION TRONG dự án 1 của hệ điều hành pintos
Hình 3.4 Vấn đề Nested Donation gia các lu ng ồ (Trang 16)
Hình 3. 5Ý tưởng cho vấn đề Multiple Donation - VẤN đề PRIORITY SCHEDULING  và PRIORITY DONATION TRONG dự án 1 của hệ điều hành pintos
Hình 3. 5Ý tưởng cho vấn đề Multiple Donation (Trang 17)
Hình 3. 6Ý tưởng cho vấn đề Nested Donation - VẤN đề PRIORITY SCHEDULING  và PRIORITY DONATION TRONG dự án 1 của hệ điều hành pintos
Hình 3. 6Ý tưởng cho vấn đề Nested Donation (Trang 17)
Bảng 3.1 B ng t ng ảổ ết các hàm được thêm mới và các hàm được sửa đổi trong vấn đề “Priority Inversion” - VẤN đề PRIORITY SCHEDULING  và PRIORITY DONATION TRONG dự án 1 của hệ điều hành pintos
Bảng 3.1 B ng t ng ảổ ết các hàm được thêm mới và các hàm được sửa đổi trong vấn đề “Priority Inversion” (Trang 18)
Hình 4.1 Kết quả khi chạy make check - VẤN đề PRIORITY SCHEDULING  và PRIORITY DONATION TRONG dự án 1 của hệ điều hành pintos
Hình 4.1 Kết quả khi chạy make check (Trang 19)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w