--
You received this message because you are subscribed to the Google Groups "cap-talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email to cap-talk+u...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/cap-talk/e9aefb6a-8246-462a-b7fb-3987cb68c551n%40googlegroups.com.
So my question for the room: how do people feel about renaming "process" to "processor"? I'm inclined to try it provisionally in the document and see if it makes things better.
Processor makes me think of the CPU.
I'm likely to ask, "What's the instruction set?"
> There are two exceptions to this: processes and endpoints.
I guess I was also wondering about scheduling queues,
> So my question for the room: how do people feel about renaming "process" to "processor"?
I don't know how I feel about it, my first thought was that an actual
hardware processor/cpu has things like
protection rings which to me resembles kernel itself more. It feels
like a strained analogy, but maybe try it.
My favourite didactic approach to explaining the 5 Coyotos kernel objects has been that each one leads to the next.
...and then you need processes to operate within an address space
I don't know that anyone reading a history of these systems would need any additional explanation as to what a thread of control is.
When explaining to people who are coming from UNIX or Windows processes, this can lead to trouble. There seem to be two points of confusion. The first is that UNIX/Windows processes are resource containers. Many of those resources are "owned", in the sense that if the process is torn down then those resources are torn down. The second is that address spaces in Coyotos are first class, where they are not in conventional systems.
Not sure what you mean by "processes are resource containers" or "resources are owned" (by a process). A file descriptor is an index into its file descriptor table, which points to an (open) file table entry, which points to an inode and things are garbage collected if their refcounts drop to zero when a process dies. One can think of a file descriptor as sort of a capability.
In UNIX/Windows, a Process contains threads and pages that make up an address space. The Process "owns" these things, in the sense that when the process goes away, these other things also cease to exist.In Coyotos, a Process has a reference to an object that serves as its address space. Several Processes can share an address space, and you can change the address space that a Process operates in.
As most of you [vaguely] know, I've been working on a book describing Coyotos. At this stage I'm still getting the kernel description organized. I find that I'm tripping over something repeatedly, and I'd like to get the sense of the room.Nearly every Coyotos kernel object has a direct hardware analogue: pages are pages, GPTs are enhanced page tables, and so forth. If we allow for the prospect of capability-aware hardware, I'd add capability pages to the list.
There are two exceptions to this: processes and endpoints. Descriptively, endpoints are more or less noise. But the term "process" has a lot of contextual weight that has been getting in my way as I write. Early processes essentially model processors with minimal baggage. Later processes are resource containers with execution peformed by threads and descriptor tables added in lieu of first class descriptor support in address spaces and registers. And signals. And so forth.One of the long-term descriptive challenges for the Coyotos kernel has been: is it an OS kernel or is it more helpful to think of it as a virtual machine manager for a software-enhanced hardware machine? The current lexicon straddles this line in a fairly awkward way, and (at least to my mind) has done so since 1991.As I've thougt about the CHERI work and applicability to Coyotos, and the possibility of FPGA support, it belatedly occurred to me that "process" may be the wrong name for that Coyotos object, and perhaps the right name for that abstraction is actually "processor".Emotional writing entanglement aside, this feels to me like it fits what's going on. There's a lot of semantics that goes with "process as container" that the Coyotos kernel just doesn't have. If you want that kind of process, God bless, and that's what process fault handlers are for.So my question for the room: how do people feel about renaming "process" to "processor"? I'm inclined to try it provisionally in the document and see if it makes things better.Thoughts?Jonathan
--
BTW, I'd be happy to join a friam to discuss CHERI if that would be helpful. Or a special meeting just for that (slightly earlier than friam would suit me better).I might be able to drag Robert Watson along, too.
Every time I try to write down how "processes" work in Coyotos, I find myself getting hung up on the fact that processes in every other system are resource containers. What we have called "process" in EROS is basically a register set. The notable exception is the scheduling slot. The conundrum didn't arise when I wrote about KeyKOS, because they were called "domains". That removed the baggage of the conventional definition of "process".
That said, it's more like a virtual core/processor than a hardware processor.
Or I suppose it could be called CCPU (Capability CPU) or we could revert back to "domain". I personally don't care for "domain" for two reasons:
- It doesn't appeal to any of the "this thing is a lot like an extended CPU core" intuitions, and
- The actual protection domain includes more things than its execution engine.
BTW, I'd be happy to join a friam to discuss CHERI if that would be helpful. Or a special meeting just for that (slightly earlier than friam would suit me better).
I might be able to drag Robert Watson along, too.
"Domain" seems like a good name to me. "Task" is another possibility, although that has some possibly unintended baggage from languages that use that term.
--
You received this message because you are subscribed to the Google Groups "cap-talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email to cap-talk+u...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/cap-talk/CAPa%3DBYJ_oq2kZgmq-1Y4QDwVvB1MJjNRNENWUoD8m5%3DoEp3EFg%40mail.gmail.com.
On Dec 11, 2025, at 8:25 PM, William ML Leslie <william.l...@gmail.com> wrote:On Fri, 12 Dec 2025 at 13:59, 'Bakul Shah' via cap-talk <cap-...@googlegroups.com> wrote:On Dec 11, 2025, at 6:40 PM, Jonathan S. Shapiro <jonathan....@gmail.com> wrote:When explaining to people who are coming from UNIX or Windows processes, this can lead to trouble. There seem to be two points of confusion. The first is that UNIX/Windows processes are resource containers. Many of those resources are "owned", in the sense that if the process is torn down then those resources are torn down. The second is that address spaces in Coyotos are first class, where they are not in conventional systems.Not sure what you mean by "processes are resource containers" or "resources are owned" (by a process). A file descriptor is an index into its file descriptor table, which points to an (open) file table entry, which points to an inode and things are garbage collected if their refcounts drop to zero when a process dies. One can think of a file descriptor as sort of a capability.In UNIX/Windows, a Process contains threads and pages that make up an address space. The Process "owns" these things, in the sense that when the process goes away, these other things also cease to exist.
In Coyotos, a Process has a reference to an object that serves as its address space. Several Processes can share an address space, and you can change the address space that a Process operates in.
[Oops, forgot to hit the send button...]Thanks, William & Jonathan, for clarifying.On Dec 11, 2025, at 8:25 PM, William ML Leslie <william.l...@gmail.com> wrote:On Fri, 12 Dec 2025 at 13:59, 'Bakul Shah' via cap-talk <cap-...@googlegroups.com> wrote:On Dec 11, 2025, at 6:40 PM, Jonathan S. Shapiro <jonathan....@gmail.com> wrote:When explaining to people who are coming from UNIX or Windows processes, this can lead to trouble. There seem to be two points of confusion. The first is that UNIX/Windows processes are resource containers. Many of those resources are "owned", in the sense that if the process is torn down then those resources are torn down. The second is that address spaces in Coyotos are first class, where they are not in conventional systems.Not sure what you mean by "processes are resource containers" or "resources are owned" (by a process). A file descriptor is an index into its file descriptor table, which points to an (open) file table entry, which points to an inode and things are garbage collected if their refcounts drop to zero when a process dies. One can think of a file descriptor as sort of a capability.In UNIX/Windows, a Process contains threads and pages that make up an address space. The Process "owns" these things, in the sense that when the process goes away, these other things also cease to exist.More like a process owns only *reference* to these things. Given only one reference they naturally have to be GCed once a process disappears!
In Coyotos, a Process has a reference to an object that serves as its address space. Several Processes can share an address space, and you can change the address space that a Process operates in.[As a thought experiment, if Unix was to be made more "granular"]One can imagine associating a "well-known file descriptor" with a process address space.
With a few more enhancements one can implement execve(2) as well as possibly fork(2) in user-space by a "process keeper" process.
And may be we can get rid of ptrace(2) for debuggers.
Similarly a CPU resource is only "owned" only while a process thread is actually running.
[Of course, actually "evolving" a unix OS in this direction is very unlikely...]
On Dec 11, 2025, at 8:25 PM, William ML Leslie <william.l...@gmail.com> wrote:In UNIX/Windows, a Process contains threads and pages that make up an address space. The Process "owns" these things, in the sense that when the process goes away, these other things also cease to exist.More like a process owns only *reference* to these things. Given only one reference they naturally have to be GCed once a process disappears!
In Coyotos, a Process has a reference to an object that serves as its address space. Several Processes can share an address space, and you can change the address space that a Process operates in.[As a thought experiment, if Unix was to be made more "granular"]One can imagine associating a "well-known file descriptor" with a process address space. With a few more enhancements one can implement execve(2) as well as possibly fork(2) in user-space by a "process keeper" process. And may be we can get rid of ptrace(2) for debuggers. And process-ids are then merely indices in a proc-fd table in the process keeper. Separating address spaces from processes would not be all that hard, and in fact would be needed if one were to allow process migrations. Envisioning such a evolution is why I don't think of a process owning threads, address space, page table, fd table etc. Also, in my mental model, devices are resources as well (and stick around independent of processes). Similarly a CPU resource is only "owned" only while a process thread is actually running. [Of course, actually "evolving" a unix OS in this direction is very unlikely...]
No more physical meetings since the pandemic. Only Zoom.