// in process/mod.rspubfnexcute(name :&str) {println!("excutint program: {}", name);let data = ROOT_INODE.lookup(name).unwrap().read_as_vec().unwrap();let thread =unsafe{ Thread::new_user(data.as_slice()) }; CPU.add_thread(thread);}pubfninit() {println!("+------ now to initialize process ------+");let scheduler =Scheduler::new(1);let thread_pool =ThreadPool::new(100, scheduler);println!("+------ now to initialize processor ------+"); CPU.init(Thread::new_idle(), Box::new(thread_pool));excute("rust/shell");}
这一章没有用到任何新知识呢,是不是学起来很快乐呢(反正我写起来挺快乐。。。(什))
一些 bug
发现了一些以前写的 bug :
在 alloc tid 的时候,通过 threads[id].is_none() 判断 id 是否被分配,但是程序 exit 的时候并没有将其还原为 None 。所以需要进行一些修改: