Project NachOS [HĐH]

PJ1 folders /code/threads: - system.h quản lý thư viện hệ thống nằm trong /code/threads/ có cả lớp synconsole cần được thêm để dùng (Có thể tìm hiểu về hệ thống trong này: synconsole, machine, interupt...) (System related) (Project 2 related) /code/userprog: - syscall.h nơi khai báo system call cho người dùng nằm trong /code/userprog/ (Khai báo syscall mới vào tùy thích) (Syscall related) - exception.cc là nơi cài đặt để xứ lý các syscall nằm trong /code/userprog/ (Nghiên cứu cách viết các hàm của nhóm) (Syscall related) (Project 2 related) /code: - Makefile chứa lệnh build Nachos để tạo ra các file thực thi cho người dùng nằm trong /code/ (Sửa gmake thành make) (Linux related) - Makefile.common thêm class (sẽ tạo ra file thực thi của lớp trong /code/userprog/) nằm trong /code/ (Bỏ class.h và class.cc vào /code/threads/ và build lại) (Class related) (Project 2 related) /code/test: - start.s, start.o thì lại trong /code/test/ (Khai báo syscall mới vào tùy thích) (Syscall related) - Các file kiểm tra đã cài đặt được syscall cho người dùng nằm trong /code/test/ (Test) - Makefile (Thêm sau dòng all để build lại) (Syscall related)
Câu trả lời cho đồ án 1 nằm ở đây: http://dangkhoahome.blogspot.com/2013_03_01_archive.html (^_^)
PJ2 - Viết SC_Exec: Dùng để thực thi thêm một tiến trình. Có sử dụng hàm ExecUpdate của lớp Ptable, trong ExecUpdate có sử dụng thêm một đống hàm, trong đó có hàm to bự là hàm Exec của lớp Pcb. Trong hàm Exec, ExecUpdate thì viết như hướng dẫn. - Viết SC_Join: Dùng để join vào tiến trình cha, nó phải báo cho tiến trình cha đợi. Có sử dụng hàm JoinUpdate của lớp Ptable. Sử dụng cái JoinWait của Pcb, ExitRealease của Pcb luôn. - Viết SC_Exit: Dùng để thoát một tiến trình. Có sử dụng hàm ExitUpdate của lớp Ptable. Sử dụng hàm JoinRealease của Pcb, ExitWait của Pcb. - Viết hàm trong lớp addrspace: Hàm tìm 1 trang trống và đánh dấu đã sử dụng, hàm tính số trang còn trống. - Trong quá trình viết mấy cái hàm này, thì phải viết thêm nhiều hàm nữa trong lớp Pcb với Ptable. Problem: - 256 physic page bitmap bitmap.cc - Lock addrLock->acquire() empty - pcb và ptable đặt trong threads - thêm int processID; trong thread.h để chạy pcb.cc - trong addrspace.cc sau khi thêm xong những thứ cần thêm nhớ khai báo hàm khởi tạo mới (AddrSpace::AddrSpace(char* filename)) trong addrspace.h - trong bitmap.h và bitmap.cc cài đặt phương thước int FindFreeSlot() để chạy trong ptable.cc - chú thích dòng để bỏ đoạn code //DEBUG(dbgFile, ...) trong phương thức của thầy ở file addrspace.cc - Khi bỏ các syscall thẳng vào exception nhớ xóa hết các giá trị trả về return của Exit Exec Join - Cài các phương thức cho lớp Lock còn thiếu và bỏ kernel->currentThread chỉ dùng currentThread thôi - Lý do vì sao trong hàm Addrspace::Addrspace(OpenFile* executable) vẫn để nguyên pageTable[i].physicalPage = i; còn lại phải chỉnh hết gBitMap