rCore-Tutorial-Book-v3
rCore-Tutorial-Book-v3 copied to clipboard
rCore-Tutorial-Book-v3/chapter5/1process
进程概念及重要系统调用 — rCore-Tutorial-Book-v3 0.1 文档
https://rcore-os.github.io/rCore-Tutorial-Book-v3/chapter5/1process.html
一处文字错误:sys_waitpid
的注释中,“否则如果要等待的子进程均为结束则返回 -2”,这里应该是“未结束”?
@huang-jl 已修改。
那是 wait 和 waitpid 两个 API 的实现便会更加简单。
那使?
@lindyang 是的,多谢指出。
进程 (Process) 的含义是 在操作系统管理下的程序的一次执行过程。这里的程序成了形容词
这个程序还是名词……最多说“程序的”构成了形容词性的表示所有权关系的短语。
「也即直到得到一个确切的结果位置都停在内核内」:或许应该为「也即直到得到一个确切的结果之前都停在内核内」。
当一个进程通过 exit 系统调用退出之后,它所占用的资源并不能够立即全部回收。比如该进程的内核栈目前就正用来进行系统调用处理,如果将放置它的物理页帧回收的话,可能会导致系统调用不能正常处理.
这里有一点小小的疑惑,如果一个进程在exit之前进行了系统调用syscall,那exit不是应该在syscall结束之后才执行么?这个时候为什么会存在仍然进行系统调用的情况?可以举一个更具体的例子吗?
请问有提供sleep系统调用吗?应该如何实现让一个进程休眠一段时间后准时回来
@sunyiwei24601 exit自己就是系统调用啊。 借用原文的例子,例如其中一种资源的过早回收会导致的问题是:exit系统调用执行过程中,可能会调用一些内核态的其他函数F,会用到该进程的内核栈,在下一节将看到,若是把该进程的所有资源都回收(含TCB),因该进程TCB中的pid_handler被回收(下一节内容),会触发drop函数释放内核栈空间(下一节内容),就不能利用栈帧中的ra信息回到系统调用函数exit调用F的中断处(第一章内容——为内核支持函数调用),继续往后执行exit的剩余代码了。