• Re: what's a process, was The end of software secrecy is almost upon

    From John Levine@3:633/10 to All on Sun Oct 25 18:17:44 2026
    According to <boltar@caprica.universe>:
    Threads share resources such as address space, files, etc. A process
    runs in its own address space. (at least these days, before virtual >>memory, who knows?)

    With copy-on-write process models the actual difference is a bit less
    clear cut.

    Copy-on-write (or on some older systems copy-on-touch) is an implementation detail. Neither process can look inside the other even if they share some unwritten or untouched pages.

    By the way, copy-on-write is quite old. See this blog post I wrote a long
    time ago:

    https://obvious.services.net/2011/01/history-of-copy-on-write-memory.html
    --
    Regards,
    John Levine, johnl@taugh.com, Primary Perpetrator of "The Internet for Dummies",
    Please consider the environment before reading this e-mail. https://jl.ly

    --- PyGate Linux v1.5.19
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From boltar@3:633/10 to All on Mon Oct 26 09:57:37 2026
    Subject: Re: Re: what's a process, was The end of software secrecy is almost upon

    On Sun, 25 Oct 2026 18:17:44 -0000 (UTC)
    John Levine <johnl@taugh.com> gabbled:
    According to <boltar@caprica.universe>:
    Threads share resources such as address space, files, etc. A process >>>runs in its own address space. (at least these days, before virtual >>>memory, who knows?)

    With copy-on-write process models the actual difference is a bit less
    clear cut.

    Copy-on-write (or on some older systems copy-on-touch) is an implementation >detail. Neither process can look inside the other even if they share some >unwritten or untouched pages.

    The point is they are sharing memory. In a reference implementation processes don't share any virtual memory at all - everything is copied to a new location at fork - so you can't use sharing memory as a way to demarcate multithreading and multiprocess.


    --- PyGate Linux v1.5.19
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From Peter Flass@3:633/10 to All on Mon Oct 26 03:53:45 2026
    Subject: Re: Re: what's a process, was The end of software secrecy is almost upon

    On 10/26/26 02:57, boltar@caprica.universe wrote:
    On Sun, 25 Oct 2026 18:17:44 -0000 (UTC)
    John Levine <johnl@taugh.com> gabbled:
    According to <boltar@caprica.universe>:
    Threads share resources such as address space, files, etc. A process
    runs in its own address space. (at least these days, before virtual
    memory, who knows?)

    With copy-on-write process models the actual difference is a bit less
    clear cut.

    Copy-on-write (or on some older systems copy-on-touch) is an implementation >> detail. Neither process can look inside the other even if they share some >> unwritten or untouched pages.

    The point is they are sharing memory. In a reference implementation processes don't share any virtual memory at all - everything is copied to a new location
    at fork - so you can't use sharing memory as a way to demarcate multithreading
    and multiprocess.

    In the old days before IUCV or VMCF I did a multi-process application on
    VM by using a file to pass data among processes. Surprisingly, it worked
    well.

    --- PyGate Linux v1.5.19
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From Scott Lurndal@3:633/10 to All on Mon Oct 26 14:44:59 2026
    Subject: Re: Re: what's a process, was The end of software secrecy is almost upon

    Peter Flass <Peter@Iron-Spring.com> writes:
    On 10/26/26 02:57, boltar@caprica.universe wrote:
    On Sun, 25 Oct 2026 18:17:44 -0000 (UTC)
    John Levine <johnl@taugh.com> gabbled:
    According to <boltar@caprica.universe>:
    Threads share resources such as address space, files, etc. A process >>>>> runs in its own address space. (at least these days, before virtual
    memory, who knows?)

    With copy-on-write process models the actual difference is a bit less
    clear cut.

    Copy-on-write (or on some older systems copy-on-touch) is an implementation >>> detail. Neither process can look inside the other even if they share some >>> unwritten or untouched pages.

    The point is they are sharing memory. In a reference implementation processes
    don't share any virtual memory at all - everything is copied to a new location
    at fork - so you can't use sharing memory as a way to demarcate multithreading
    and multiprocess.

    In the old days before IUCV or VMCF I did a multi-process application on
    VM by using a file to pass data among processes. Surprisingly, it worked >well.

    Burroughs had both a synchronous 'core2core' interface between processes
    as well as asynchronous storage queues. In the days of small address spaces, those were invaluable interfaces.

    --- PyGate Linux v1.5.19
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From Peter Flass@3:633/10 to All on Mon Oct 26 08:56:19 2026
    On 10/26/26 07:44, Scott Lurndal wrote:
    Peter Flass <Peter@Iron-Spring.com> writes:
    On 10/26/26 02:57, boltar@caprica.universe wrote:
    On Sun, 25 Oct 2026 18:17:44 -0000 (UTC)
    John Levine <johnl@taugh.com> gabbled:
    According to <boltar@caprica.universe>:
    Threads share resources such as address space, files, etc. A process >>>>>> runs in its own address space. (at least these days, before virtual >>>>>> memory, who knows?)

    With copy-on-write process models the actual difference is a bit less >>>>> clear cut.

    Copy-on-write (or on some older systems copy-on-touch) is an implementation
    detail. Neither process can look inside the other even if they share some >>>> unwritten or untouched pages.

    The point is they are sharing memory. In a reference implementation processes
    don't share any virtual memory at all - everything is copied to a new location
    at fork - so you can't use sharing memory as a way to demarcate multithreading
    and multiprocess.

    In the old days before IUCV or VMCF I did a multi-process application on
    VM by using a file to pass data among processes. Surprisingly, it worked
    well.

    Burroughs had both a synchronous 'core2core' interface between processes
    as well as asynchronous storage queues. In the days of small address spaces, those were invaluable interfaces.

    It took IBM a little longer for this, but eventually they got there.


    --- PyGate Linux v1.5.19
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From boltar@3:633/10 to All on Mon Oct 26 16:19:35 2026
    On Mon, 26 Oct 2026 03:53:45 -0700
    Peter Flass <Peter@Iron-Spring.com> gabbled:
    On 10/26/26 02:57, boltar@caprica.universe wrote:
    On Sun, 25 Oct 2026 18:17:44 -0000 (UTC)
    John Levine <johnl@taugh.com> gabbled:
    According to <boltar@caprica.universe>:
    Threads share resources such as address space, files, etc. A process >>>>> runs in its own address space. (at least these days, before virtual
    memory, who knows?)

    With copy-on-write process models the actual difference is a bit less
    clear cut.

    Copy-on-write (or on some older systems copy-on-touch) is an implementation >>> detail. Neither process can look inside the other even if they share some >>> unwritten or untouched pages.

    The point is they are sharing memory. In a reference implementation processes

    don't share any virtual memory at all - everything is copied to a new >location
    at fork - so you can't use sharing memory as a way to demarcate >multithreading
    and multiprocess.

    In the old days before IUCV or VMCF I did a multi-process application on
    VM by using a file to pass data among processes. Surprisingly, it worked >well.

    I'd be interested how you'd implement fork() using that method given you
    need to copy the state of all file descriptors, heap, stack and global
    memory, current working directory, enviroment variables and a ton of other things I can't remember without googling.


    --- PyGate Linux v1.5.19
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From Peter Flass@3:633/10 to All on Mon Oct 26 11:46:38 2026
    On 10/26/26 09:19, boltar@caprica.universe wrote:
    On Mon, 26 Oct 2026 03:53:45 -0700
    Peter Flass <Peter@Iron-Spring.com> gabbled:
    On 10/26/26 02:57, boltar@caprica.universe wrote:
    On Sun, 25 Oct 2026 18:17:44 -0000 (UTC)
    John Levine <johnl@taugh.com> gabbled:
    According to˙ <boltar@caprica.universe>:
    Threads share resources such as address space, files, etc. A process >>>>>> runs in its own address space. (at least these days, before virtual >>>>>> memory, who knows?)

    With copy-on-write process models the actual difference is a bit less >>>>> clear cut.

    Copy-on-write (or on some older systems copy-on-touch) is an
    implementation
    detail.˙ Neither process can look inside the other even if they
    share some
    unwritten or untouched pages.

    The point is they are sharing memory. In a reference implementation
    processes

    don't share any virtual memory at all - everything is copied to a new
    location
    at fork - so you can't use sharing memory as a way to demarcate
    multithreading
    and multiprocess.

    In the old days before IUCV or VMCF I did a multi-process application
    on VM by using a file to pass data among processes. Surprisingly, it
    worked well.

    I'd be interested how you'd implement fork() using that method given you
    need to copy the state of all file descriptors, heap, stack and global memory, current working directory, enviroment variables and a ton of other things I can't remember without googling.

    No fork. Each VM had a single thread of execution. I was happy to get
    multiple processes to cooperate. It was a master process (virtual
    machine) that distributed work to worker machines.

    --- PyGate Linux v1.5.19
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From Chris M. Thomasson@3:633/10 to All on Mon Oct 26 13:19:14 2026
    On 10/26/2026 9:19 AM, boltar@caprica.universe wrote:
    On Mon, 26 Oct 2026 03:53:45 -0700
    Peter Flass <Peter@Iron-Spring.com> gabbled:
    On 10/26/26 02:57, boltar@caprica.universe wrote:
    On Sun, 25 Oct 2026 18:17:44 -0000 (UTC)
    John Levine <johnl@taugh.com> gabbled:
    According to˙ <boltar@caprica.universe>:
    Threads share resources such as address space, files, etc. A process >>>>>> runs in its own address space. (at least these days, before virtual >>>>>> memory, who knows?)

    With copy-on-write process models the actual difference is a bit less >>>>> clear cut.

    Copy-on-write (or on some older systems copy-on-touch) is an
    implementation
    detail.˙ Neither process can look inside the other even if they
    share some
    unwritten or untouched pages.

    The point is they are sharing memory. In a reference implementation
    processes

    don't share any virtual memory at all - everything is copied to a new
    location
    at fork - so you can't use sharing memory as a way to demarcate
    multithreading
    and multiprocess.

    In the old days before IUCV or VMCF I did a multi-process application
    on VM by using a file to pass data among processes. Surprisingly, it
    worked well.

    I'd be interested how you'd implement fork() using that method given you
    need to copy the state of all file descriptors, heap, stack and global memory, current working directory, enviroment variables and a ton of other things I can't remember without googling.


    Why even do that? Sigh.

    --- PyGate Linux v1.5.19
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From Chris M. Thomasson@3:633/10 to All on Mon Oct 26 13:19:49 2026
    On 10/26/2026 11:46 AM, Peter Flass wrote:
    On 10/26/26 09:19, boltar@caprica.universe wrote:
    On Mon, 26 Oct 2026 03:53:45 -0700
    Peter Flass <Peter@Iron-Spring.com> gabbled:
    On 10/26/26 02:57, boltar@caprica.universe wrote:
    On Sun, 25 Oct 2026 18:17:44 -0000 (UTC)
    John Levine <johnl@taugh.com> gabbled:
    According to˙ <boltar@caprica.universe>:
    Threads share resources such as address space, files, etc. A process >>>>>>> runs in its own address space. (at least these days, before virtual >>>>>>> memory, who knows?)

    With copy-on-write process models the actual difference is a bit less >>>>>> clear cut.

    Copy-on-write (or on some older systems copy-on-touch) is an
    implementation
    detail.˙ Neither process can look inside the other even if they
    share some
    unwritten or untouched pages.

    The point is they are sharing memory. In a reference implementation
    processes

    don't share any virtual memory at all - everything is copied to a new
    location
    at fork - so you can't use sharing memory as a way to demarcate
    multithreading
    and multiprocess.

    In the old days before IUCV or VMCF I did a multi-process application
    on VM by using a file to pass data among processes. Surprisingly, it
    worked well.

    I'd be interested how you'd implement fork() using that method given you
    need to copy the state of all file descriptors, heap, stack and global
    memory, current working directory, enviroment variables and a ton of
    other
    things I can't remember without googling.

    No fork. Each VM had a single thread of execution. I was happy to get multiple processes to cooperate. It was a master process (virtual
    machine) that distributed work to worker machines.

    That works well.

    --- PyGate Linux v1.5.19
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From Lynn Wheeler@3:633/10 to All on Mon Oct 26 13:36:29 2026
    Peter Flass <Peter@Iron-Spring.com> writes:
    In the old days before IUCV or VMCF I did a multi-process application
    on VM by using a file to pass data among processes. Surprisingly, it
    worked well.

    Some of the MIT CTSS/7094 people went to the 5th flr for Multics (which
    spawns unix). Others went to the 4th flr for IBM Cambridge Scientific
    Center and did virtual machines (originally wanted 360/50 to hardware
    mods adding virtual memory, but all the spare ones were going to FAA ATC effort, so they had to settle for 360/40 and did CP40/CMS, which morphs
    into CP67/CMS when 360/67 standard with virtual memory becomes
    available), science center wide-area network which mophs into the
    internal corporate network RSCS/VNET (larger than arpanet/internet from
    the beginning until sometime mid/late 80s about the time it was force to convert to SNA/VTAM), performance and online apps (including email, ctss
    runoff became "script", invented GML in 1969 and GML tags added to
    script), etc.

    SPM was done by IBM Pisa Scientific Center for CP/67. In the decision to
    add virtual memory to all 370s, some of the CSC people went to 3rd flr
    taking over the IBM Boston Programming Center for the vm370 development
    group, in the morph of CP67->VM370 lots of stuff was simplified and/or
    dropped. When I joined IBM, one of my hobbies was enhanced production
    operating systems for internal datacenters. For VM370R2-base, I started
    adding lots of stuff back in for my CSC/VM (and it included SPM)

    Then for VM370R3-base CSC/VM, I added lot more stuff back in, including multiprocessor support. The development group had introduced VMCF in
    VM370R3. Then the head of POK (high-end 370s) had convinced corporate to
    kill VM370, shutdown the development group and transfer all the people
    to POK for MVS/XA. Endicott (mid-range 370s) was able to acquire the
    VM370 product mission but had to recreate a development group from
    scratch. For VM370, Endicott introduces IUCV and SMSG.

    However, one of the issues was that SPM (from CP67) was a superset of
    VMCF, IUCV, and SMSG.

    trivia: The REXX author did a multi-user, client/server, SPM-based
    spacewar game and since RSCS/VNET had full SPM support, clients weren't
    limited to the same physical machine as the server (anywhere on internal network). note: almost immediately robot clients appeared beating all
    human clients. the server then was tweaked to increase power use
    non-linear as client responses dropped below human threasholds.

    --
    virtualization experience starting Jan1968, online at home since Mar1970

    --- PyGate Linux v1.5.19
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From boltar@3:633/10 to All on Wed Oct 28 09:09:32 2026
    On Mon, 26 Oct 2026 13:19:14 -0700
    "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> gabbled:
    On 10/26/2026 9:19 AM, boltar@caprica.universe wrote:
    I'd be interested how you'd implement fork() using that method given you
    need to copy the state of all file descriptors, heap, stack and global
    memory, current working directory, enviroment variables and a ton of other >> things I can't remember without googling.


    Why even do that? Sigh.

    Why don't you go and find out and educate yourself.


    --- PyGate Linux v1.5.19
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)