的大小为1 KB,每个盘块号4个字节,那么,一个进程要访部偏移量为263168字节处的数据时,需要经过几次间接?
解:偏移量度263168的逻辑性块号为: 363168/1024=257 块内偏移量为: 263168-1024 *257=0
因为10 <257 <266,所以偏听偏信移地址 263168的块号在一次间接块内,故一个进程要访问偏移量为263168 字节 处的数据时,只需要经过一次间接.
4.在UNIX 系统中运行下面程序,最多可产生多少个进程?画出进程家族树. MAIN() { fork(); fork(); fork(); }
分析:系统调用fork的功能是一个创建新进程,新进程运行 与其创建者一样的程序,新创建的进程称为子进程,调用 fork的进程成为父进程,父子进程都从 fork调用后的那条语句开始执行.
当程序执行时,若 所有进程都能成功地执行系统调用 fork ,则会产生最多数目的进程.为了描述方便 ,将开始执行的进程称为 A 进程,此时程序PC 指向第一个 fork 调用. main() {
fork();
fork(); /* PC, 进程 A*/ fork(); } main() {
fork();
fork(); /* PC, 进程 B*/ fork(); }
当进程A. B 成功地执行完第二个 fork 调用时,它们分别创建了一个子进程,将这些子进程分别成为进程C .D .此时,进程 A . B .C .D 的程
序计数器PC指向第三个fork 调用,进程A 派生了3个子孙进程. main() {
fork();
fork(); /* PC, 进程 A*/ fork(); } main() {
fork();
fork(); /* PC, 进程 B*/ fork(); } main() {
fork();
fork(); /* PC, 进程 C*/ fork(); } main() {
fork();
fork(); /* PC, 进程 D*/ fork(); }
当进程 A . B .C .D 成功地执行完第三个 fork 调用时,它们分别创建了一个子进程,将这些子进程分别称为进程
E.F.G.H .此时,进程A . B .C .D.E.F.G.H 的程序计数器PC 指向程序结束处,进程A 派生了7个子孙进程. main() {
fork();
fork(); /* PC, 进程 A*/ fork(); } main() {
fork();
fork(); /* PC, 进程 B*/ fork(); } main() {
fork();
fork(); /* PC, 进程 C*/ fork(); } main() {
fork();
fork(); /* PC, 进程 D*/ fork(); } main() {
fork();
fork(); /* PC, 进程E*/ fork(); } main() {
fork();
fork(); /* PC, 进程 F*/ fork(); } main()
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库第8章:unix操作系统(4)在线全文阅读。
相关推荐: