Linked by Thom Holwerda on Mon 25th Nov 2013 17:43 UTC
IBM

The Ars Technica article on OS/2 mentions, in passing, Workplace OS, the pie-in-the-sky successor to OS/2 IBM was working on. I found this fantastic journal article written by Brett D. Fleisch and Mark Allan A. Co, which goes into this failed project in great detail.

IBM's Microkernel, named Workplace OS microkernel, was the core components of Workplace OS, a portable successor of OS/2. The basic premise of Workplace OS work was: 1) IBM would adopt and improve the CMU Mach 3.0 microkernel for use on PDAs, the desktop, workstations, and massively parallel machines, and 2) that several operating system personalities would execute on the microkernel platform concurrently. This architecture would allow users to switch between applications written for different operating systems while IBM would also benefit by having one common platform for all product lines. The goals of the microkernel and the technical features of design are described in this paper. We also present lessons that may benefit future projects with similar goals.

Also, I get to use the IBM icon!

Thread beginning with comment 577433
To view parent comment, click here.
To read all comments associated with this story, please click here.
RE[2]: Interesting
by some1 on Tue 26th Nov 2013 00:30 UTC in reply to "RE: Interesting"
some1
Member since:
2010-10-05

The POSIX personality has some special rights, because you need kernel level support for fork().

Fork is built into NT kernel and one doesn't need any special rights to execute it. More specifically, NtCreateProcess is a generalization of fork. Just pass your process handle as InheritFromProcessHandle, don't pass SectionHandle, and you're done. One can quite easily fork a Win32 process (e.g. see example 6.1 in "Windows NT/2000 Native API Reference" book). The main problem with that is that Win32 libraries, including kernel32 and mscvrt, are not fork-safe -- they cache per-process state in global variables. If you don't depend on Win32 libraries or agree to work-around, you can fork all you want.

Reply Parent Score: 4

RE[3]: Interesting
by kwan_e on Tue 26th Nov 2013 07:09 in reply to "RE[2]: Interesting"
kwan_e Member since:
2007-02-18

I may not be understanding those APIs correctly, but it doesn't look like they resume the process at the point execution of the the child process like it does in fork().

Reply Parent Score: 2

RE[4]: Interesting
by some1 on Tue 26th Nov 2013 13:38 in reply to "RE[3]: Interesting"
some1 Member since:
2010-10-05

NtCreateProcess creates a process without any threads in it. You then manually create a thread with NtCreateThread, where you specify the context (values of all registers) you want.

Reply Parent Score: 3

RE[3]: Interesting
by moondevil on Tue 26th Nov 2013 13:56 in reply to "RE[2]: Interesting"
moondevil Member since:
2005-07-08

I was speaking from memory, about I passage I remember reading on the "Inside the Windows Kernel" book series.

Sadly I don't have the books around me to search for it.

Reply Parent Score: 2