Steve,
答复如下。
From: quntmec@hotmail.com
To: qf.hao@hotmail.com
Subject: 关于《UNIX技术内幕》的勘误及遇到的问题_12
Date: Fri, 28 Oct 2011 21:46:12 +0800
郝先生,
1、第158页,第2段第3、4行里提到的wakeup(&runin)可以改为 setrun(&proc[0]),我觉得直接替换不可以吧?如果真要替换,那也只能是设置一个循环遍历所有进程,符合唤醒条件的才 setrun(&proc[0])。你觉得呢?
郝:是这样,只有sched进程(proc[0])会挂起在runin上,所以调用wakeup其实就是唤醒proc[0],因此循环就没有必要了,直接调用setrun()显得更高效。
2、第158页,第7段第1句,u.u_ar0 = (10)sp。这里的 10 是十进制数吗?
郝:是的,比如sp=100,那么u.u_ar0=110。不过这里使用(10)sp有点不够清楚,它是汇编里的语法,应该是&sp[5]更好点。
此外,勘误如下:
郝:是的,谢谢
Steve
答复如下。
From: quntmec@hotmail.com
To: qf.hao@hotmail.com
Subject: 关于《UNIX技术内幕》的勘误及遇到的问题_12
Date: Fri, 28 Oct 2011 21:46:12 +0800
郝先生,
1、第158页,第2段第3、4行里提到的wakeup(&runin)可以改为 setrun(&proc[0]),我觉得直接替换不可以吧?如果真要替换,那也只能是设置一个循环遍历所有进程,符合唤醒条件的才 setrun(&proc[0])。你觉得呢?
郝:是这样,只有sched进程(proc[0])会挂起在runin上,所以调用wakeup其实就是唤醒proc[0],因此循环就没有必要了,直接调用setrun()显得更高效。
2、第158页,第7段第1句,u.u_ar0 = (10)sp。这里的 10 是十进制数吗?
郝:是的,比如sp=100,那么u.u_ar0=110。不过这里使用(10)sp有点不够清楚,它是汇编里的语法,应该是&sp[5]更好点。
此外,勘误如下:
161 | 3 | 1 | call函数第17行…(应该是第18行) |
Steve