2020/07/27
完成lab6实验题:
答案:对线程是阻塞的,对操作系统是非阻塞的。
答案:(1)必须实现用户态下内存申请的系统调用;(2)需要通过系统调用来向操作系统内核申请更大的空间。
用户态下,需要加入:
pub fn sys_gettid() -> isize {
syscall(SYSCALL_GETTID, 0, 0, 0, 0, 0, 0)
}
内核态下,需要加入:
SYS_GETTID => sys_gettid(),
最后,要实现sys_gettid():
pub(super) fn sys_gettid() -> SyscallResult {
SyscallResult::Proceed(PROCESSOR.lock().current_thread().id)
}
线程跟进程比,难度上涨了一大截,尽管努力尝试,但是还是没法处理好进程所有的线程的问题,所以最后只好作罢了。