User Tools

Site Tools


anecdotes:not_expected_to_understand_this

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
anecdotes:not_expected_to_understand_this [2016/01/12 10:32] wktanecdotes:not_expected_to_understand_this [2016/01/23 10:38] wkt
Line 29: Line 29:
      */      */
     if(rp->p_flag&SSWAP) {     if(rp->p_flag&SSWAP) {
-   rp->p_flag =& ~SSWAP;+        rp->p_flag =& ~SSWAP;
         aretu(u.u_ssav);         aretu(u.u_ssav);
     }     }
Line 39: Line 39:
 </code> </code>
  
-  So we tried to explain what was going on. "You are not expected to understand this" was intended as a remark in the spirit of "This won't be on the exam," rather than as an impudent challenge.+So we tried to explain what was going on. "You are not expected to understand this" was intended as a remark in the spirit of "This won't be on the exam," rather than as an impudent challenge.
  
 The real problem is that we didn't understand what was going on either. The savu/retu mechanism for doing process exchange was fundamentally broken because it depended on switching to a previous stack frame and executing function return code in a different procedure from the one that saved the earlier state. This worked on the PDP-11 because its compiler always used the same context-save mechanism; with the Interdata compiler, the procedure return code differed depending on which registers were saved. The real problem is that we didn't understand what was going on either. The savu/retu mechanism for doing process exchange was fundamentally broken because it depended on switching to a previous stack frame and executing function return code in a different procedure from the one that saved the earlier state. This worked on the PDP-11 because its compiler always used the same context-save mechanism; with the Interdata compiler, the procedure return code differed depending on which registers were saved.
  
 So, for Steve Johnson and me, trying to move the kernel for the first time to a new machine, this code was indeed on the exam. It took about a week of agonizing before we finally convinced each other that the mechanism was wrong and no fiddling with the compiler was useful. We redid the coroutine control-passing primitives altogether, and this code section, and the comment, passed into history. So, for Steve Johnson and me, trying to move the kernel for the first time to a new machine, this code was indeed on the exam. It took about a week of agonizing before we finally convinced each other that the mechanism was wrong and no fiddling with the compiler was useful. We redid the coroutine control-passing primitives altogether, and this code section, and the comment, passed into history.
 +
 +Also see [[https://www.youtube.com/watch?v=uxtKwJZbYr0|Brian Kernighan's tribute to Dennis Ritchie]] around the 4:20 mark.
  
anecdotes/not_expected_to_understand_this.txt · Last modified: 2022/07/08 09:22 by 192.99.0.24