For those who want more backgound on the architecures that Paul is describing, 
I’d recommend reading Henry M. Levy’s _Capability-Based Computer Systems_. The 
Burroughs B5000 shows up in in Ch.2 on early descriptor based architectures. 
https://homes.cs.washington.edu/~levy/capabook/

—Milo

> On Feb 20, 2025, at 5:04 PM, paul.kimpel--- via cctalk 
> <cctalk@classiccmp.org> wrote:
> 
> As I mentioned in my last reply to Paul Koning, that can't occur in the 
> Burroughs/Unisys stack architecture I was discussing earlier. Application 
> code can only access what it has created by pushing words onto the stack, and 
> then only access those stack frames that are in the lexicographical scope of 
> the currently-executing procedure. It can't access memory outside of that 
> current scope, except through references and descriptor words, which are 
> protected by memory tags and managed only by the combination of the hardware 
> and OS.
> 
> Those systems do not have threads in the same way that most other systems do. 
> We call them sub-tasks or dependent asynchronous tasks. They each have their 
> own stack, which is linked back to the specific stack frame that initiated 
> them (the so-called "critical block"). Addressing within the sub-task is 
> subject to the same scope rules as the parent task, although that scope can 
> extend across stacks into the parent's stack. If the parent task exits a 
> critical block for which there are active sub-tasks, the parent and all of 
> its children (and their children -- the whole tree of sub-tasks) is 
> terminated by the OS because the dependency chains have been broken. 
> Applications are just not allowed to mess with the structure of their stacks.

Reply via email to