GeneralThis forum is for non-technical general discussion which can include both Linux and non-Linux topics. Have fun!
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
Originally posted by moeminhtun For example if the kernel is written in OOP, it would be possible that you can add new features, protocols, drivers, new support module for certain hardware without modifying and even re-compiling the kernel, just write the libraries and install it. That would not be the case like right now, if we want some new features or support for some hardware we have to wait for the new kernel release. This is very much necessary today.
Linux does have that ability in the form of modules. Modules are Linux's attempt to move away from the monolithic kernel, which as you mentioned, requires kernel recompiles and new versions for added support. It's not perfect, but since Linux has to run on anything from a Palm to a Cray it was the best choice, IMHO.
The idea of the micro-kernel, which I think is what you're hinting about, was thought of but was thrown out because it was too slow. The amount of message passing would kill a 386.
I would love to see Linux implemented as a micro-kernel and I think a modern computer would run it very well. One just has to realize that an older machine will have difficulty running it. Then, Linux loses some of its appeal, since only the latest and greatest can run it.
Frameworks, and a new architecture. A more organic architecture. Or else someone like SCO can come along and own Linux because of 0.001 percent of the code is 'stolen'. It would be great to have a more powerful object oriented architecture, that would handle complexity by distributing responsibilities. Linux is a vendor architecture, and people have no idea even what an object oriented architecture would be like. No clue.
I think that Linux might currently have a vendor architecture. If the only thing in the world is an Intel processor than there might only be one way, but I think that Intel is just a company that should meet the architecture needs of platforms.
My comment about assembly was purposely supposed to show an extreme - from the comments posted there appear to be two sides of the argument: OOP has more customization, at the cost of speed, or more structure which has increase in speed, but requires more 'effort' for customization. IMO, the approach that has been taken for now is the better of the two, since as pointed out, linux can run a lot of stuff (which would not be possible with OOP - too much power). At this point in software and hardware engineering, I believe this is mostly a dead argument - both sides have equally good points. So, I think we may have to wait for a introduction of new software or hardware development which will completely change the kernel paradigm (maybe even remove it from the picture).
Well... as of next week I'll have a lot of spare time. Instead of talking about the idea of an object oriented kernel, let's brainstorm on how one would break down the kernel into small objects. We can divide and conquer this puppy.
I'm sure we could find some more coders to make something small. I'm proficient enough in C++ to help out, and have a few textbooks on the Linux kernel and OS design lying around.
Sure, I am all for this project. I am proficient in C and C++, although I'm not a master C++er, however much of the work will be in planning the design. Since the objects can be worked on separately and than later integrated, those objects can be continually improved. We don't need to write perfect code, just functional code, that later can be refactored safely because their implementation will be encapsulated in the object.
There are some examples out there to work from for example: < http://choices.cs.uiuc.edu/choices/ > to get the project started. Like you mentioned I also have several books on operating system concepts and specifically on Linux (the orielly book).
Anyone at Linuxquestions can join the project at any time. Personally I would like to use Standard C++ as the implementation language.
I think that we need to figure out how to get some webspace where we can host the project and slowly organize the work.
I would like to build a platform which is like the ultimate virus, lol. Something that is impossible to control, so all architectural decisions should be based on a decentralized architecture.
Even if all the code were stolen code, which it won't be, but even if it was, nobody could do anything about it. It's obvious to me that the laws are unfair anyway and business is corrupt. This architecture will survive under any curcumstance short of turning off all the computers in the world. And later on I want to work on compilers that write code. The compiler should be associated with work on artificial intelligence for this distributed platform.
Just to state the obvious, this is an absolutely enormous task!! I also went looking about and couldn't find anything on an object oriented approach to the Linux kernel. Either it doesn't exist, or I didn't look hard enough.
I checked out sourceforge.net and new projects can get web-space if a good proposal is submitted. I also found some interesting reading on object oriented operating systems so we don't go about reinventing the wheel.
<Just to state the obvious, this is an absolutely enormous task!! I also went looking about and couldn't find anything on an object oriented approach to the Linux kernel. Either it doesn't exist, or I didn't look hard enough.>
That's not such a terrible thing, but there are tons of resources out there for operating system development in general. One way to begin looking at it from the top is downloading one of the kernel sources for a book such as the Oreilly book ( I think it uses 2.4.18 ) and study it along with the book. When you unpack the source, each folder is like a namespace, and the files can be combined into objects. None of this involves code. I think that what might also help is studying something like Java objects, and the Java virtual machine, if this is possible, just to get ideas.
<I checked out sourceforge.net and new projects can get web-space if a good proposal is submitted. I also found some interesting reading on object oriented operating systems so we don't go about reinventing the wheel.
Awesome link. That's perfect. I didn't look at each of the sites though, but I'll do that later on. I was also thinking sourceforge, and for the time being we should use the forum at < http://www.flashdaddee.com/forums/index.php >. I have some webspace hosted by my IP provider, but than let's write up a proposal to sourceforge ASAP. However that might not acutally happen for a couple months because of all the groundwork.
<Where do you suppose we begin? I have an awesome book on Minix that is easy to read to get to know the booting process. >
I can afford to buy any book. I'd like to know all of the titles that you think are good, and I'll list all of my titles. We should decide on a few books and each have a copy.
< Did I mention this is an enormous task?? >
Yes, however the SCO are enormous assholes, and we need to put an enourmous stake through their heart.
<What architecture should we begin with?? I think something we all have lying around and something simple! >
Probably Frameworks...an object hierarchy organized into namespaces. I'm not sure if we are allowed to start a thread for this here, maybe flashdaddee would be better.
Oh, the platform should probably be developed initially as a user-mode platform so that it will not break the hardware. Than later on, it can replace the platform which we are using to develop it on.
Well.. these are my CSC text books that I used for class. They might be of some use since I use them a lot when I have computer science related questions.
OS Related:
"Understanding the Linux Kernel" O' Reilly
"Operating Systems Design and Implementation" Tanenbaum and Woodhull Second Edition I can't find my other OS book
Software Engineering Concepts:
"Software Engineering A Practitioner's Approach" Pressman
I also have a bunch of books on chips if those are necessary. They range from M6800, 8051, x86, to PIC
The Tanenbaum is my favorite since it covers a lot of concepts in an easy to read fashion and uses actual C examples from a read OS . Also, Minix is pretty damn simple when you actually start reading the source.
Originally posted by rmartine < Well.. these are my CSC text books that I used for class. They might be of some use since I use them a lot when I have computer science related questions. >
< OS Related: >
< "Understanding the Linux Kernel" O' Reilly >
I have this one. I think it is a must have. I have both the first and second editions.
< "Operating Systems Design and Implementation" Tanenbaum and Woodhull Second Edition>
I don't have this one, but I can more than likely pick up a copy.
< I also have a bunch of books on chips if those are necessary. They range from M6800, 8051, x86, to PIC >
Well we will probably be using x86 right, but it would be great if the platform were as neutral as possible!
< The Tanenbaum is my favorite since it covers a lot of concepts in an easy to read fashion and uses actual C examples from a read OS . Also, Minix is pretty damn simple when you actually start reading the source. >
I'd like to start with a concepts book. I'll pick up this book from amazon.com or indigo.ca.
Some of my books (excluding the orielly title mentioned above):
1. Linux Device Drivers 2nd edition(Orielly)
2. Operating System Concepts 6th edition by Silberschatz
3. Distributed Systems Principals and Paridigms by Tanenbaum
4. Solaris Internals
5. Itanium Architecture for Software Developers
6. Programming Itanium based systems
Note: I also have a book or two on Networking as well as the Dragon book 'Compilers Principles, Techniques, and Tools'. Yet these are slightly off topic.
Do you think that Operating Systems Design and Implementation would be much different than Operating System Concepts 6th edition by Silberschatz? I can always grab the other book though, not a problem.
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.