AlgorithmOS
Các thuật toán về hệ điều hành
Xem tài liệu tại: https://ambrosentk.github.io/AlgorithmOS/
NPM Package: https://www.npmjs.com/package/algorithmos
Giới thiệu
Thư viện hiện thực các thuật toán được dùng trong hệ điều hành
Gồm có các thuật toán sau:
- Điều phối hỗn hợp CPU+IO: FCFS, SJF, SRTF, Round Robin
- *Lập lịch truy cập đĩa
- *Thay thế trang
- *Cấp phát bộ nhớ
Hướng dẫn cài đặt
B1: Cài đặt NodeJS
B2: Trong command line nhập
npm i algorithmos
B3: Bắt đầu import và sử dụng
Code mẫu
Điều phối hỗn hợp CPU+IO 2 tiến trình như sau và sử dụng chiến lược SJF với IO device riêng:Process | Arrival time | CPU | IO | CPU |
---|---|---|---|---|
P1 |
0 | 3 | 4 | 3 |
P2 |
1 | 2 | 2 | 2 |
P2 |
2 | 1 | 1 | 5 |
//Tạo hàng đợi các tiến trình theo yêu cầu ;taskQueue1.enQueuenew al.Taskal.TaskType.CPU, 3;taskQueue1.enQueuenew al.Taskal.TaskType.IO, 4;taskQueue1.enQueuenew al.Taskal.TaskType.CPU, 3; ;taskQueue2.enQueuenew al.Taskal.TaskType.CPU, 2;taskQueue2.enQueuenew al.Taskal.TaskType.IO, 2;taskQueue2.enQueuenew al.Taskal.TaskType.CPU, 2; ;taskQueue3.enQueuenew al.Taskal.TaskType.CPU, 1;taskQueue3.enQueuenew al.Taskal.TaskType.IO, 1;taskQueue3.enQueuenew al.Taskal.TaskType.CPU, 5; //Tạo danh sách các tiến trình;procList.pushnew al.Process"P1", 0, taskQueue1;procList.pushnew al.Process"P2", 1, taskQueue2;procList.pushnew al.Process"P3", 2, taskQueue3; //Chọn thuật toán điều phối; //Chọn chế độ IOscheduler.IOMode = al.IOType.Multi; //Nhận kết quả trả về là một Storyboard; console.logstory.Story.length; story.Story.forEach; //In story ra màn hìnhconsole.log;
Kết quả thực hiện thuật toán:
29
Time: 0; Proc: P1; Task: Arrived
Time: 1; Proc: P1; Task: CPU
Time: 1; Proc: P2; Task: Arrived
Time: 2; Proc: P1; Task: CPU
Time: 2; Proc: P3; Task: Arrived
Time: 3; Proc: P1; Task: CPU
Time: 4; Proc: P1; Task: IO
Time: 4; Proc: P3; Task: CPU
Time: 5; Proc: P1; Task: IO
Time: 5; Proc: P3; Task: IO
Time: 5; Proc: P2; Task: CPU
Time: 6; Proc: P1; Task: IO
Time: 6; Proc: P2; Task: CPU
Time: 7; Proc: P1; Task: IO
Time: 7; Proc: P2; Task: IO
Time: 7; Proc: P3; Task: CPU
Time: 8; Proc: P2; Task: IO
Time: 8; Proc: P3; Task: CPU
Time: 9; Proc: P3; Task: CPU
Time: 10; Proc: P3; Task: CPU
Time: 11; Proc: P3; Task: CPU
Time: 11; Proc: P3; Task: Terminated
Time: 12; Proc: P2; Task: CPU
Time: 13; Proc: P2; Task: CPU
Time: 13; Proc: P2; Task: Terminated
Time: 14; Proc: P1; Task: CPU
Time: 15; Proc: P1; Task: CPU
Time: 16; Proc: P1; Task: CPU
Time: 16; Proc: P1; Task: Terminated
Giải thích ý nghĩa: Mỗi một dòng là một sự kiện trong quá trình điều phối. Mỗi dòng có thời gian xảy ra sự kiện (Time), Tiến trình gây nên sự kiện (Proc), Tác vụ được làm trong sự kiện đó (Task).
Lưu ý: Thuật toán có thể bị sai trong một số trường hợp. Bạn nào có khả năng đóng góp, sửa lỗi thì chúng tôi chân thành cảm ơn.
Video hướng dẫn của giảng viên Phan Đình Thế Huân - ĐH Hoa Sen:
Tham khảo thêm trong tài liệu API
Tại sao có thư viện này
Thư viện này giúp mô phỏng các thuật toán được dùng trong hệ điều hành. Từ đó có cái nhìn chân thực và dễ hiểu về chúng.
Đây cũng là sản phẩm của nhóm 15 môn Lý thuyết Hệ điều hành, HK 17.2A, ĐH Hoa Sen.