For the past few years, the V2_OS project was nearly dead. Things are about to change as the project is getting reorganized. The new website is nearly ready and the source code was moved from Sourceforge, back to the real server. Development of the complete rewrite (version 0.70) is expected to restart in the following days. For those who do not remember V2_OS, this is one of the first operating systems written in pure assembly language.
I guess my first question is why?
http://v2os.v2.nl/cgi-bin/v2wiki.py?show=WhatIsV2OS
Because it’s designed from the grounds up to be fast, adds Object Oriented Programming to assembly, and is a Single Adress Space OS, which is ideal for ‘editing’.
why not?
Why? You mean whi its written in assembly? That’s obvious, the only reason is raw speed.
I thought it is obvious that the speed of software is mainly dependent on the design tradeoffs and algorithms used and practically independent of the language used.
Not entirely true. If you want raw speed ASM is the only way to go. That and the smallest possible footprint are the two main reasons for coding in ASM. Of course the main disadvantage is that you have to understand the hardware you are coding to. Something most programmers these days don’t want to be bothered with.
In fact a lot of the early C stuff was written with ASM routines in critical places to speed up the program. It may still be done for all I know as haven’t looked into that in years. If you want a good example of what can be done with ASM go to http://www.grc.com. He writes all his stuff in ASM, even windows stuff.
You are correct that a human can effectively beat a compiler at doing optimizations–as witnessed by what Michael Abrash did with id in meshing integer and floating point operations for maximum throughput.
The problem is that it is resource intensive. A compiler can only deal with what is there in the code–it can’t adjust algorithms or data structures for optimum register usage or maximum pipeline throughput–but it can apply the few optimizations that it knows about very quickly. This is the foundation of Knuth’s saying that premature optimization is the root of all evil. Adjusting the code for maximum through-put is a waste of time if you’re implementing a slow algorithm. It’s typically better to know what code your compiler emits, pick your algorithms appropriately, profile what you generate, and hand optimize where it counts.
And when they have a working system, they can’t make any valid performance claims against anyone else because every other operating system out there uses memory protection, separates the user from the kernel, and gives processes their own address space which, as the developers know, causes major performance hits.
For those who do not remember V2_OS, this is one of the first operating systems written in pure assembly language.
I’m not so sure about that. There have been many operating systems built in assembler in the past 40 years. But these days very few people develop anything this way, much less full OS’es. So I’d argue that unless there’s a complete 180 in the computer industry with respect to coding in ASM, V2_OS will be one of the last operating systems written in pure assembler.
*Puts clown shoes*
Vaporware2 Operating System
*Takes clown shoes off*
I personally don’t think that would be very portable. And it also makes it harder to get people(contributors) to work on it since, I don’t think there’s that many people who… Know assembly, like working on it.
Well at least that’t the course that every CS major here at campus runs away from as long as possible.
didnt all the v2 devs move off to uuu or some other wierd os project??
Indeed… but I was one of them 😉
menuet os is written in AL.
AL only os’ are kind of stupid. Only one processor targetted.
C is where it’s at.
“AL only os’ are kind of stupid. Only one processor targetted. ”
Not so stupid when you stop to think the vast majority of PC’s out there only have one processor in them. Programming in high level languages is quite comparable to the old saying “Jack of all trades…”. These practices are one of the biggest reasons modern code is so bloated.
I think the parent meant ‘one processor targetted’ as a statement on the portability of the code.
Opensource project of smaller size, to be more precise. Sun has done very many complete reqrites, last time they comletely rewrote the Solaris TCP/IP stack. Yes, large companies can pull it off, monthly paychecks being one of the key enablers.
But small opensource projects most of the time just stop in their tracks when they decide to do a complete rewrite of the code. For some reason, the motivation just evaporates from the developer(s). One example is Chartwars, which I used to be fond of, except I hated the bugs. Well, the author decided to make a complete reqrite.. and that’s when all development on Chartwars stopped. I could cite many more examples, but this one, I cared about.
Is VP still at the lead? If so, this “restarting” is probably no different then any of the other times it was “restarted”. I’m glad we didn’t wait this long before jumping ship. V2_OS was a ton of fun, but except for its drop dead sexy shell (which was mimicked for a Uuu release), it had very little going for it.
First off, “… first operating systems written in pure assembly language?” For shame. Even the “one of” qualification doesn’t save that comment. Can we think back a mere 30 years or so to the plethora of PDP-7, 8, and even 11 OSes that were pure assembly, or do I need to go even farther to provide counterexamples? Even saying “first IBM-PC OS written in pure assembly language” would be fairly wrong. Please tell me that this was a typo of some sort.
Additionally, I’m seeing a disturbing amount of comments to the effect of “what’s the point of assembly” and an equally disturbing quantity of replies to the tune “blazing speed!”
First off, as long as the traditional Von Neumann CPU and ISA as we know them exist there will be a good reason for software developers to know and use assembly language. Granted, in big general purpose computers with layer upon layer of abstraction, writing everything from the ground up in assembly is probably an exercise in frustration. However, you’d be foolish to ignore the millions upon millions of lines of embedded software and firmware that runs on those little microwatt-dissipating MIPS and ARM CPUs that are in just about everything that we don’t think of as containing a computer. Let’s also not take such a narrow and silly view of what an OS is by thinking that it has to be the size of a bloated beast like Linux/WinNT/MacOS/<insert desktop OS> to qualify as an OS. There are several notable modern OSes that are implemented totally in assembly and very well should be.
As for the speed issue, let’s not blow things out of proportion here either. Modern compilers make a point of being pretty dang good at optimization. The “what’s-the-point-of-assembly” camp has a very valid point when it comes to the hulking 100 million transistor 150 W Zuse’s-technicolour-nightmare monstrosities we see these days. Good compilers and deeper and deeper superpipelining certainly make it much more convenient and economic in most circumstances to not bother writing a large amount of software in assembly.
On topic, I’ve never understood what niche V2_OS has tried to fill… I think of it as a hobbiest OS more than anything else.
menuet os if you want to fool around.
The decision for or again a certain programming language (closes assembler languages also in) lies in the relation between the maintenance (thus in the long run an abstraction level desired) and the actually attainable performance. Both criteria depend however only secondarily on the concrete implementation. It is possible to program in a structured or object-oriented fashion with every macro-assembler exactly the same as a general programming language such as C can be used for direct hardware programming. Also nevertheless everyone knows with to some extent programming experience, which the used Algoritmus has into all most cases the far larger influence on the performance than possible detail optimizations. Whether I now thus a Algoritmus in or other way is rather a question of the personal preference. To that extent I do not understand this whole discussion here !