Thực hành Hệ điều hành - Bài thực hành: Cách thêm một lớp vào Nachos
Vào file machine/machine.h tìm danh sách các exception và viết lại chương trình bắt tất
cả các exception bằng cách sau : Mỗi exception chỉ việc hiện ra thông báo loại
exception và gọi hàm Halt().
Sửa file userprog/exception.cc
switch (which)
cả các exception bằng cách sau : Mỗi exception chỉ việc hiện ra thông báo loại
exception và gọi hàm Halt().
Sửa file userprog/exception.cc
switch (which)
Bạn đang xem tài liệu "Thực hành Hệ điều hành - Bài thực hành: Cách thêm một lớp vào Nachos", để 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:
- thuc_hanh_he_dieu_hanh_bai_thuc_hanh_cach_them_mot_lop_vao_n.pdf
Nội dung text: Thực hành Hệ điều hành - Bài thực hành: Cách thêm một lớp vào Nachos
- Hướng dẫn thực hành môn Hệ Điều Hành – Tuần 3 case SyscallException: switch (type) { case SC_Halt: case SC_Open: } } Với loại exception là SyscallException thì chúng ta vào file userprog/syscall.h tìm tất cả các loại syscall để viết hàm xử ly cho tất cả các syscall này. Nếu phải viết 1 syscall mới từ đầu. Chúng ta sẽ phải vào file userprog/syscall.h define 1 syscall mới (vd #define SC_New 13). Rồi định nghĩa một prototype để xử ly cho syscall này (ví dụ: int New(int, );). Kế tiếp vào tập tin test/start.s viết 1 đoạn assembly để khai báo ánh xạ giữa system call đã định nghĩa và phương thức xử ly nó. Sau đó vào tập tin exception.cc viết hàm xử l y cho prototype int New(int, ) mà mình đã định nghĩa ở trên. Chú y: nếu chúng ta viết hàm xử ly int New(int, ) trong một file là new.cc thì lưu file new.cc trong thư mục /userprog/. Rồi phải vào file nachos-3.4/code/Makefile.common thêm 1 dòng khai báo file new.cc giống như trong ví dụ thêm 1 class mới vào Nachos (lúc chúng ta thêm class synchcons.*) Ví dụ: Viết thêm một syscall Sub để trừ 2 số: Bước 1: Trong file /code/userprog/syscall.h thêm dòng khai báo syscall mới: #define SC_Sub 43 int Sub (int a, int b); Bước 2: Trong file /code/test/starts.c và test/start.s thêm dòng: #include syscall.h .globl Sub .ent Sub Sub: addiu $2,$0,SC_Sub syscall j $31 .end Sub