@weekend_editor @screwtape @remilia @notptr The microcode could be equated with a kernel, but it could not be replaced while running (you could replace some microcoded functions .. but nothing significant), and was tightly coupled with the band it used. And while "runs in the same address space" is "sorta" true, most things would allocate things in separate areas and such...
Conversation
Notices
-
Embed this notice
Alfred M. Szmidt (amszmidt@mastodon.social)'s status on Tuesday, 18-Mar-2025 00:30:07 JST Alfred M. Szmidt
-
Embed this notice
Weekend Editor (weekend_editor@mathstodon.xyz)'s status on Tuesday, 18-Mar-2025 00:30:08 JST Weekend Editor
@symbolics @screwtape @remilia @notptr
RIght, there's no kernel. Everything runs in the same address space. It relies on hardware type-checking to make this *somewhat* safe; mostly you'd enter the debugger instead of crashing. (Or entering the cold load stream, which is more serious but still recoverable.)
Any function could be altered and recompiled directly to memory, not touching the file system. The next call to that function uses the new version. (This applies to recursion as well: if you're many stack frames deep into recursive calls, the active call will "return" into the new function!)
This is *very* useful for debugging user programs.
On the other hand, altering running system code is sometimes... highly inadvisable.
There were no guard rails telling you not to do that. There was no security model worth the mention, by today's standards (just the barest of user id and password at login).
Switching to another world load ("band" in CADR terminology because there used to be some effort to lay them out on a disk in a contiguous band) is rebooting.
-
Embed this notice
screwlisp (screwtape@mastodon.sdf.org)'s status on Tuesday, 18-Mar-2025 00:30:09 JST screwlisp
So I'm not the expert but for one example there are multiple memory bands, and when you patch your system, you copy/create the new patched system in a different band, then switch the active band to that one. @amszmidt @symbolics @weekend_editor @remilia @notptr
-
Embed this notice
lispm (symbolics@mastodon.social)'s status on Tuesday, 18-Mar-2025 00:30:09 JST lispm
@screwtape @weekend_editor @remilia @notptr on something of a Symbolics there wasn't a "kernel". Everything runs in one memory space. Underneath there is a CPU running microcode, which implements a Lisp-friendly instruction set and some additional stuff. The main memory is saved as a memory image (called a World). Saving worlds (!) could be done without restarting and also incremental. Full worlds tend to be large, because they include a lot of software and data -> the full OS.
-
Embed this notice
Mistress Remilia (remilia@xn--nanako--c83f6n.mooo.com)'s status on Tuesday, 18-Mar-2025 00:30:10 JST Mistress Remilia
@notptr@mastodon.sdf.org @screwtape@mastodon.sdf.org I read this in a StackExchange response about doing something similar on Linux... and brought it up on my Matrix space. That's how this came up XD
-
Embed this notice
notptr (notptr@mastodon.sdf.org)'s status on Tuesday, 18-Mar-2025 00:30:11 JST notptr
@screwtape I was wondering if you would know if a lisp machine was able to replace the running kernel without rebooting system or taking it down?
cc @remilia
-
Embed this notice