Adopt a Lost Technology Today For R.O.S. 56
submitted by Simon Strandgaard writes "When new operating systems gets designed today, great systems such as Amiga, Atari and VMS, seems to get overlooked in regard to their original features not found on other OSes. It might be time to collect and categorize those special unique features under the great/lost ideas wiki, so new OSes don't have to re-invent the wheel and re-innovate." This is all for R.O.S., a "ruby-centric operating system."
Couldn't they add a U to that? (Score:2, Funny)
nice ideas but.. (Score:1)
I mean with regards to putting it into action.
Re:nice ideas but.. (Score:2)
I mean with regards to putting it into action.
Erm...isn't the point of the list that someone did 'put it into action'?
Plan9 (Score:2, Interesting)
In theory it fixes all the problems with Unix, while still keeping to the original design philosophy.
Re:Plan9 (Score:3, Informative)
Old/new idea (Score:3, Interesting)
Performance should improve a lot too. A P4 pays a couple of hundred clock-cycles penalty for each system call. Context switches are close to 1000 clocks. With a single address-space OS, you can get all the advantages of a microkernel providing services via OS servers, without any performance hit.
Re:Old/new idea (Score:3, Informative)
Re:Old/new idea (Score:2)
Re:Old/new idea (Score:3, Interesting)
1) You couldn't access the byte representation of pointers directly, nor do arithmatic on them. This meant that the only way to access an object was to be handed a pointer to it.
2) Array bounds were checked.
Since the Amiga used C/ASM (IIRC) neither of these conditions held true, which is the reason for the iffy stability.
Note,
Re:Old/new idea (Score:2)
No LispM had more than 8 tag bits. That isn't enough to even completely encode every object type. Only very important types like integers, cons cells, etc, used a tagged representation. Everything
Re:Old/new idea (Score:2)
Re: kernel/userspace separation (Score:4, Funny)
And you would have to have a "safe"-language-only policy on such a system, or you would have a security nightmare similar to that of MS-Windows.
(I certainly wouldn't want to use such a system; I like C, even though I usually use Python (a "safe" language).)
Performance could be enhanced by doing more things in libraries (e.g., a ramdisk used exclusively by one application (or a limited set of mutually-trusted/ing applications) could be supported entirely in userspace, with no context-switching necessary).
Or several mutually-trusting/ed intercommunicating apps could share the same address space, so no VM remapping would be necessary when switching from one to another, nor would a system call be necessary.
(This would be kind of like a lightweight thread mechanism, but different threads could be loaded from different binaries.)
I don't know if any of this would actually be feasible, though, since I haven't really worked on the guts of an OS for about 20 years.
Re: kernel/userspace separation (Score:3, Interesting)
--------
Yeah, but with a safe language
With safe languages, there is no need for it.
The problem with "safe" languages is that the underlying system can be used for such odious purposes as D"R"M, and there is no way to get around it.
----------
Not at all. Systems-level safe languages (Lisp, for example) usually have a dialect used for kernel-level development. In this scheme, binaries would have to be signed, to ensure that the native code was compiled by the safe compiler. However
Re:Old/new idea (Score:5, Informative)
Re:Old/new idea (Score:2)
Re:Old/new idea (Score:2)
Since these languages don't allow you to do pointer arithmatic, the only runtime checks they need to insert in the generated native code is for array bounds and type checks. Modern optimizers for these languages can eliminate most of these runtime checks.
Bounds checked C/C++? (Score:2)
Since we are on the subject of tags, putting a tag on every scalar datum seems like a waste of memory and address space, but putting a few tags on an array doesn't seem like a big deal. I
Re:Bounds checked C/C++? (Score:2)
You can do this safer and faster using displaced arrays*. They first appeared in FORTRAN, but were most heavily exploited in the MIT Lisp Machines. They allow you to create "virtual" arra
Re:Old/new idea (Score:2)
Re:Old/new idea (Score:2)
Re:Old/new idea (Score:2)
FreeVMS (Score:3, Interesting)
FreeVMS [freevms.free.fr] (Mailing list archive) [nvg.org]
It's based on Linux for the moment, but it'll split eventually. Despite the homepage being a bit out of date, the project is alive; in fact I'm working on cleaning up the code a bit.
Features? Just so long as it has drivers... (Score:2, Funny)
Great Idea, Except ... (Score:3, Interesting)
Seriously, what features from the Atari systems are so great, yet have been overlooked in modern systems?
Bad ideas and good ideas (Score:3, Insightful)
Good ideas
- unified name space (like Unix's single root / hierarchy)- filesystem as database (why do we have to put stuffs in two different things anyway?); the filesystem should support hierarchiecal as well as relational paradigm. one can put a SQL interface on top of it
- using a safe, higher level, garbage-collected, OO language (about time to kill C, damnit!), also as another poster noted, this can eliminate kernelspace/userspace separation
- everything is a file
- everything is a component
- Unicode
Bad ideas
- registry (at least the windows do it currently): it's like the 777 version of- XML for configuration (YAML is a better choice)
- package managers or installers (the OS should be modular and component-friendly enough to render this unnecessary; think a PC with pluggable PCI cards or USB devices; adding/removing software components should be as easy as plugging/unplugging hardware devices)
- resource fork/multiple stream or something like that (if i want two different content, i'll make two different record/file, thank you)
Not sure
- GUI at the lowest level?Re:Bad ideas and good ideas (Score:4, Insightful)
So... your security model breaks utterly as soon as someone finds a bug in the *compiler*?
(Incidentally, what is your compiler or interpreter written in, and why would I use an OS that only supports one language?)
- filesystem as database (why do we have to put stuffs in two different things anyway?); the filesystem should support hierarchiecal as well as relational paradigm. one can put a SQL interface on top of it
With an efficient enough filesystem (ReiserFS?) you could do something like this:
(extra linebreaks for clarity)
# What is the name of customer #001?
$ cat
Joe Bloggs
# Who ordered order#003?
$ cat
001
# What is the name of the customer who ordered order#003?
$cat
I'm sure parts of the Registry (HKEY_LOCAL_MACHINE?) are read-only for ordinary (non-Administrator) users; if you're right, though, the Registry is even worse than I thought.
IMO the main problem with the Registry is that it's in a few opaque binary files with a non-obvious structure; Unix configuration files are usually structured text, so it's easy to see whether a config file has become corrupted, possible to undo the damage, and possible to change everything with a simple text editor rather than having to invoke regedit. Unix config files are also split up sensibly (per-application) so they're easier to manage.
- package managers or installers (the OS should be modular and component-friendly enough to render this unnecessary; think a PC with pluggable PCI cards or USB devices; adding/removing software components should be as easy as plugging/unplugging hardware devices)
Hmm. So, how do you add software? Do you just copy a file-which-is-really-a-directory, MacOS-style?
If so, how do you suggest managing libraries? If every application has its own copies of all its libraries (or is statically linked), when someone finds a bug in, say, zlib, every program that used zlib needs an update. With separate library packages and intelligent dependency checking, you should only need to update zlib itself (and in a package management system, zlib should have been installed automagically the first time you installed an app which needed it).
Aagh... should have used Preview (Score:2)
So... your security model breaks utterly as soon as someone finds a bug in the *compiler*?
(Incidentally, what is your compiler or interpreter written in, and why would I use an OS that only supports one language?)
- filesystem as database (why do we have to put stuffs in two different things anyway?); the filesystem should support
Re:Aagh... should have used Preview (Score:2)
> as someone finds a bug in the *compiler*?
The bugginess (or otherwise) isn't the main issue. You can think of the checks done in the compiler regarding access permissions as equivalent to the checks done by the system call interface at run time (and by the page fault handler, etc). If either is buggy (e.g. the recent mremap() bug in the Linux kernel) you get privilege escalation (of course, such checks are particularly difficult at compile time for s
Re:Bad ideas and good ideas (Score:4, Informative)
On versions of Windows based on a real OS (NT and above) all the registry objects have security permissions associated with them. For a long time you needed two different registry editors because only regedt32.exe handled security, but XP has finally merged the functionality into one program. Most of the OS-related keys have security permissions such that ordinary users cannot break them.
There is a quantity of broken software (Kodak KPCMS, I'm talking to YOU) out there that just can't cope with storing user settings in the correct hive and thus needs to have its global settings made writable by anyone, but this is slowly improving. Now if only Adobe could fix the bug that requires oridinary users to have file create permissions in the root directory. It's not as if per-user temporary directories haven't been implemented since NT4.
Jon.
Re:Bad ideas and good ideas (Score:2)
Exactly where those registry settings should be kept: An ini file in the users home directory ;)
Re:Bad ideas and good ideas (Score:2)
Jon.
Re:Bad ideas and good ideas (Score:2)
Technically, yes, you are correct. Unfortunately it's not a per-application thing. Unless you put a lot of, IMHO, worthless work into it you get everything.
You also have to setup every pc to sync all of that up (upgrade to NT). It'
Already too many OS... (Score:4, Insightful)
If you want to be truely revolutionary, you should take the top-down approach and start with a solid object-model (with a clearly defined semantics), and only then start thinking about how to implement the rest.
Re:Already too many OS... (Score:2)
VMS logicals versus Unix environment variables (Score:1)
BTW: anyone which dare to write a comparison between VMS's logicals and Unix's environment-variables? Are VMS logicals more secure? Wikipage Of VMS [rubyforge.org].
--
Simon Strandgaard
Re:VMS logicals versus Unix environment variables (Score:2)
Re:VMS logicals versus Unix environment variables (Score:1)
What am I missing?
--
Simon Strandgaard
Re:VMS logicals versus Unix environment variables (Score:1)
According to the HTML document, logicals are discussed in chapter 11. You should also look at the related idea of symbols, covered in the following chapter (12).
(Also note that, in addition to SYSTEM and PROCESS, there are logical name tables for GROUP and JOB. As well, you can create your own LNM$TABLEs)
Another great idea in VMS is the ability to INSTALL a n
Re:VMS logicals versus Unix environment variables (Score:1)
Submit text to the OpenVMS wikipage if you wish.
--
Simon Strandgaard
Re:VMS logicals versus Unix environment variables (Score:1)
This discusses command tables. See section 1.3.2 for specific examples of using them with SET COMMAND and INSTALL to make new executables available as built-in commands.
Submit text to the OpenVMS wikipage if you wish. :^)
Thanks, I probably will soon (once I figure out how to use it - I have never editted yet), but my only current access is from work, so I'll have to find a period when I have more than a few moments
Re:VMS logicals versus Unix environment variables (Score:2)
What is really cute is the interplay between the file system, RMS and logicals. This means that I can define
Re:VMS logicals versus Unix environment variables (Score:1)
Is this what it is?
Please feel free to extend the VMS chapter with more examples of logicals, and how the differ from unix/amiga.
VMS & OpenVMS [rubyforge.org]
I don't feel comfordable writing about VMS, because I have absolutely no experience with it. I know of Amiga and Unix.. and thats about it. If you have handson VMS experience, then submit text. Thanks in advance :-)
--
Simon Strandgaard
Re:VMS logicals versus Unix environment variables (Score:2)
DISK01$:[USERS.SMITH]filename.ext
The logical could be defined for DISK01$: (which happens to be a logical assigned at mount time) DISK01$:[USERS], DISK01$:[USERS.SMITH] and so on. Very flexible although the filesystem should loose the device re
One Word (Score:2)
How can you have a great OS without such a tool?
Shouldn't this be on Sourceforge? (Score:3, Funny)
"Wouldn't it be cool if we could write an OS that's better than everything else out there. I want it to be radically different. Please join me & be brilliant & provide all the inspiration and drive to make me famous for heading this project".
Give me the VMS distributed lock manager (Score:2)
Resources are represented in a tree form and you may only lock something if you have a compatible lock higher up the tree. The lock-modes are something like: NULL, Shared Read, Shared Write, Protected Read, Protected Write and Exclusive. Certain modes are defined as being compatible with other modes, i.e., protected write with shared read. The resource tree means
Re:Give me the VMS distributed lock manager (Score:1)
Which alternatives does there exists?
How is this better than the other alternatives?
--
Simon Strandgaard
Re:Give me the VMS distributed lock manager (Score:2)
To give an example of a use for the DLM, is that I mentioned the value block. With this it is simple to implement a cluster wide transaction counter. I create a lock in exclusive mode and set the value block up with my transaction number. Each time I want to increment it, I grab the lock and increment the transaction number and then release it. The code becomes simple.