Kernel: Most operating systems have a monolithic kernel whereby all the kernel code is in a single binary. Microkernel architecture on the other hand follows a modular approach, separating the core kernel code from the rest of the system. With a microkernel the hardware layer can be separate from the kernel allowing easy porting to different platforms. NGOS should use the microkernel architecture to make it easier to port the operating system to multiple platforms.
Even though Linux has a monolithic kernel it has still been successfully ported to more platforms than any other operating systems. It uses modules for device drivers and gives user an option to compile the code into the kernel or user modules. Code in the kernel executes significantly faster than modules.
64-bit computing: Most operating systems today were written for 32-bit processors and are now being ported to 64-bit processors. Some older operating systems were originally written for 16-bit processors and ported to 32-bit processors.
Linux is a pure 32-bit operating system written from scratch for 32-bit processors. It doesn't suffer from any 16-bit baggage code. Now Linux is being ported to various 64-bit processors. It will be a while before all the code is compiled and optimised to take advantage of 64-bit platforms.
The NGOS would be written for 64-bit processors because by the time the operating system would ready for production use 64-bit processors will be the mainstream environment. There should also be some low-level layer which would allow the operating system to be executed on older 32-bit architectures, but the goal for NGSO should be that it is the fastest operating system on 64-bit processors.
Memory and filesystem: Older Linux kernels such as 2.2.x were limited to 2GB of memory. The 2.4.x kernel is limited only by the hardware architecture; the Intel x86 platform supports up to 64GB.
The Linux filesystem ext2 is limited to 1TB of space and lacks journaling features. After a system crashes or the computer is abruptly switched off it takes a long time for the file system to recover. Journaling filesystems have automatic rollback, which means they recover instantly from a crash. There are four journaling filesystems under development on Linux. ReiserFS, XFS, and ext3 are already shipping with several Linux distributions. JFS is still a work in progress.
The NGOS should be designed in such a way that it doesn't face memory or filesystem limitations for at least a few hundred years and should offer a 64-bit or if possible 128-bit journaling filesystem.
User interface: Linux today stores files with names and extensions in directories or folders, all of which have associated permissions. It also supports NFS (Network File System) whereby folders can be mounted over the network or the Internet and appear as folders on the local system.
NGOS should dispense with files and folders and look at everything as an object, be it a file, a directory, a link, a Web site, an email, contact details (virtual business cards), an image, or a video. Objects would be stored in containers that users can search and browse. An application would look for all objects with an associated tag (or identifier/filetype) within a container, which could be across a whole hard disk, or multiple disks. For example, I could have a container (similar to folder) called NewsForge within the root container (equivalent to C: or the /). The NewsForge container would have email messages, articles, and other files related to NewsForge. When I open up the email application, it would look up all the files within the root container. I could see all messages, as well as the NewsForge folder and its associated email messages. If I opened the NewsForge container in the file manager then I would all the data related to NewsForge with the file associations.
This approach allows for virtual folders, which could have files from the user's computer, from the Internet, or from other computers across the globe. To make access faster, containers would be automatically indexed in real time.
Files storage sorting: All operating systems today allow you to sort file data by date, size, name, and extension. NGOS would allow data in addition to be sorted according to access date and number of accesses, and would have the capability to move unused data automatically into compressed containers. Compressed objects would be uncompressed on the fly when they are finally accessed. Objects would optionally be backed up to nearline media while they would still appear in the index of the file system.
For example, suppose a user has a file called "My Resume" which was created on January 1, 2000, and not accessed again. The system looks at files that have not been accessed for more than six months and automatically compresses them. After say one year (a user-defined parameter) the system prompts the user, saying "You have 326 files that haven't been accessed in the last year. If you migrate these to a removable medium you would save 500MB of disk space. Your system is currently equipped with a CD writer. If you choose to backup on CD-R media (recommended) it would require 1 disk." Once the user backs up to CD-R media, the system reports, "Your data has been backed up on the CD-R. Please label it as backup taken on January 1, 2001, and backup number: 001."
At a later date, if a user searches for "resume," the system will show him "You have a file with that name on backup number 001 dated January 1, 2001." If the user chooses to retrieve from the CD-R, the system prompts the user to insert the disk labeled backup number 001, uncompresses the data, and puts the file back in the same directory from which it was backed up.
GUI: Today's operating systems have different GUIs. Most of them have a single GUI integrated with the core operating system. Linux has the X Window System sitting on top of the kernel. Above X sits a user interface such as Gnome or KDE. This modular design gives a lot of flexibility but also creates performance issues. Users often find the performance of Linux plus X plus KDE or Gnome is slower than many other operating system. Linux has frame buffer support for a limited number of graphic cards but there are very few applications that can work on frame buffers.
NGOS would also follow a modular design but would do away with the shell prompt altogether. Its GUI would talk directly to the operating system. At the same time it would offer the flexibility to load different GUIs so that users can choose what interface they would like to see. This will also give the opportunity to develop the next generation user interface in the future and just plug it in without disturbing anything else. Users who still like a command prompt could execute a command shell such as bash and DOS on top of the GUI.
Security: Most of today's operation systems were not designed with security as a paramount goal. Linux is far more secure than operating systems such as Windows, but OpenBSD is more secure than Linux or any other operating system today. It's very difficult to have a completely secure operating system, but NGOS would be designed from scratch to be more secure than OpenBSD. It will also maintain secure identity for the users similar to Microsoft Passport but distributed. An organisation could have its own identity management tool which it could use internally as well as share with other organisations that it trusts. Linux today has LDAP, which can do authentication but is limited to certain applications, hence users have to log in multiple times. NGOS will have single signon similar to Novell's edirectory.
Those are just some ideas for operating system designers to consider. It may not be practical to re-write Linux completely from scratch, but anyone considering writing their own operating system may want to bear these ideas in mind.
What else should our NGOS offer? Please add your ideas below.
Prakash Advani, senior vice president of Netcore Solutions Pvt. Ltd., has been working with Linux since 1996. He is the the founder of FreeOS.com and the co-founder of the IndLinux Project.
Note: Comments are owned by the poster. We are not responsible for their content.
I don't know of any unix system that doesn't support atime.
Journaling filesystems have automatic rollback, which means they recover instantly from a crash.
Yeah, that'd be nice, wouldn't it? And much of the time it works; you can forget about 'init 0' and just hit the power switch. Well, that is my experience using ReiserFS, which is atomic so it may as well be an auditing FileSystem (and it has the performance hits associated therewith). My experience with ext3, which is just a metadata hack tacked onto the ext2 filesystem, is completely different. Turn the computer off, turn it back on, the thing tries to replay the journal, apparently succeeds, then if you're lucky will eventually get to a prompt, at which point a full fsck is required. However, if your / is ext3, this will be a single-user prompt. If you're unlucky, there will be unrecoverable data, and the system won't boot if it's something critical on<nobr> <wbr></nobr>/. I've had four power-cycles of a running system with the ext3 filesystem on some partition somewhere (and three of those were unplanned, one was a test); it managed to recover flawlessly on one, and recover after a fsck on one.
Your article suggests that a journalling filesystem is somehow a bullet-proof escape from dirty shutdowns. This just ain't so.
FOOTNOTE: BTW if you're thinking that maybe the disk with the ext3 partition on was broken in some way, that's not the case. I've done it on three different disks, two of which are still in use on my system with no problems and one of which is currently in someone else's firewall, again working just peachy.
Hmmmm....looks like I've been luckier than some with Reiser, and unluckier than some with ext3. Probably just got to do with what the system is up to when it goes down, which is largely a disk format-agnostic quantity.
OK, so we can extend my point: on neither ext3 nor Reiser is the filesystem suitably stable through an unexpected power-cycle, though it can offer some degree of protection. Therefore the article should not offer such a blase' description of how great journalling is, and anyone with a little BOFH experience wouldn't have written it thus.
FOOTNOTE: FWIW I originally read your nick as talk_talk and thought you might be a New Romantic fan<nobr> <wbr></nobr>:-)
Think of it as science fictionThe parts about Linux are certainly fiction, but none of it is science.
And then what happens if the network connection fails (ISP gateway slows to a crawl, etc) while using this nicely indexed virtual filesystem? Wait for each time the system tries to connect to a file to time out then delete it from the index. Your computer would probably freeze. Ever have a system with an autofs mounted nfs directory mounted and have the nfs server die? The results are not pretty. If every item is an object with properties other than just file attributes, and those properties have to be read or held in memory how to do you compensate for all the extra cpu cycles and memory to deal with these objects? Sometings look realy great on paper but when you actually sit down and try to implement them, reality sets in and you end up going with what works best.
"Alright everyone, do not press any keys on your computer and it will not freeze. Once I get the server up and going your screens will unlock again. Whatever you do, do not reboot."
senior vice president of Netcore SolutionsAnother execudroid who thinks that if he can mouth the proper buzzwords, then people will think he knows what he's talking about...
... NOT!!
I'm sure he has his reasons for being clueless...I'm sure you don't know what they are, Mister MIT.
You want a Microkernel? Please run Debian HURD. Also please invest in making microkernels easier to debug, there are issues regarding having a lot of asynchronous components that make them difficult to debug, and that's why it has taken a long time to make the HURD work, and IMO points out a flaw in the concept of the distributed kernel - if it takes 5 times longer to make it work, it's not more elegant at all.
I think before you build a wish-list like this, you should get deeper into the kernel. Had you done so, you would never have spouted that 64-bit nonsense.
And you seem to be confused about how GUIs, shells, and operating systems communicate. The GUI does talk directly to the operating system, as does any user-mode program. They all link into libc and issue system calls. The kernel doesn't really make a distinction between a GUI program and any other program. But I think you might be referring to the various components that could be used for a character-mode console. These include the ANSI terminal emulation that runs on VGA, the serial ports, the capability to do character-mode I/O from the kernel console, and the standardized use of file descriptors 0, 1, and 2. The shell's really just an application, you could make it work in the window system without these facilities. You didn't, however, come close to explaining how you'd replace them.
Bruce
But the fact that some geniuses were laughed at does not imply that all who are laughed at are geniuses. They laughed at Columbus, they laughed at Fulton, they laughed at the Wright Brothers. But they also laughed at Bozo the Clown.
It doesn't matter if technically he is wrongYes, it does.
You want windows
Posted by: Scorp1us on October 24, 2003 09:27 PMI like the idea of dropping X and going with frame buffers, BUT you lose a LOT there. X is more than rendering to screen, it's a very useful network protocol, and with graphical thin clients taking off, it is more important than ever.
Rather than wasting time on a new OS, I'd just get all hardware vendors to ship linux drivers, and that'd take care of most of the problems.
Linux is also in a growing phase - new apps are always coming out. Once it settles down, you'll see linux become what you want.
#