Operating Systems Research

Question about which tools to use, bugs, the best way to implement a function, etc should go here. Don't forget to see if your question is answered in the wiki first! When in doubt post here.
Post Reply
jnana

Operating Systems Research

Post by jnana »

Hi,

I'm doing some research into Operating Systems development and creation. My questions are:

1. Describe the components of an operating system, besides the central component, the kernel.
2. What do programmers usually develop first, the compiler or the kernel?
3. Does this sequence impact the OS at all?
4. What's more complicated, the kernel or the compiler?
5. Why does operating system development take as long as it does? What are the three key things in operating system development that take the longest to perfect?
6. Do you need operating systems familiarity to write a kernel? Yes / no? Elaborate please.
7. In your opinion, why aren't there more operating systems on the market?

Thanks for your time. Best,
Justin Orndorff
ASHLEY4

RE:Operating Systems Research

Post by ASHLEY4 »

I can not answer all the ?, Because i,m in a rush, But the answer to ? 7 is:
There is you just do not see them or know there names,eg: The most wide spread Os is call "TRON" not xp/win98 etc.
If you mean desk-top Os it's down to this, If people can not run program's they like or have they will not use it,This give's MS the market, Also new pc come (most) with it (XP) so they have payed for it, Y should they pay for another  Os ?.

The secret is to make good programs that people like and can be run independent of the os.
Like run's interpretor or abootable cd/dvd so they can use the program what ever Os they have,
Then when you have got lots of program people like then bring out the Os.
GOOD PROGRAM'S FIRST THEN OS ;-).

ASHLEY4.
hartyl

RE:Operating Systems Research

Post by hartyl »

1. the components are just the kernel. there is not much around, just interfaces to the world around (say, applications, drivers, ...).

2. who the hell developes a compiler?! you have a compiler for the target system, which you use to develop the kernel. or do you mean a compiler, which runs on the operating system?

3. & 4. well...

5. it's a damn big project. there are no easy ways to debug the kernel - just by trying or printing some brilliant information on the screen...
and acutally, a kernel is never complete; there are always things to improve, to add.

6. actually no. you should be able to understand a processor. furthermore you must be able to programm well, maybe to have your own visions and the most important... *nerver* give up. there are sooo many projects which come not beyond the bootloader. so many projects which just die.

7. you're just blind. blinded (does the word exist?) by the x86-technology. there are embedded systems, which have an os, there are mobile phones, PDAs,... they all require an operating system - and have one. OSes are spread everywhere, as you need them everywhere - for a specific task or for a specific situation. there is even a "ROS" (regelungstechnik operating system) for the SBC (single board computer) which has an 80C552 as processor.
so, you might no just a few, but there are too many...

greets, hartyl
ezanahka

RE:Operating Systems Research

Post by ezanahka »

> 1. Describe the components of an operating system, besides the central
> component, the kernel.

IF there even is a kernel in the system. In an OS there are only system programs and application programs. Other definitions are just vague...

> 2. What do programmers usually develop first, the compiler or the kernel?

Usually they use an existing compiler...

> 3. Does this sequence impact the OS at all?

Sometimes it does.

> 4. What's more complicated, the kernel or the compiler?

IMHO the compiler.

> 5. Why does operating system development take as long as it does?

Because making software is complex and time consuming.

> What are the three key things in operating system development that take the
> longest to perfect?

Yep, an OS is never perfect.

> 6. Do you need operating systems familiarity to write a kernel? Yes / no?
> Elaborate please.

It is good to know many different solutions in order to be able to choose the best one for you.

> 7. In your opinion, why aren't there more operating systems on the market?

x86 OSes? Because people have not asked for more OSes. They are quite happy with M$...
Gnome

RE:Operating Systems Research

Post by Gnome »

1) Besides the kernel, there are all the surrounding tools and applications that run the kernel. If you liken an operating system to a car, the kernel is the engine. It makes the whole thing go, but you still need stuff around it to make it a car -- the transmission, wheels, carbeurator, etc.

In an operating system, these components are things like Explorer or the Control Panel (in Windows) or the GNU tools like ls and ifconfig (in Unix-style OSes). Without them, the system would be useless.

2) I believe you're confused about the role of the OS developer. Writing a compiler is a project of equal calibre to writing a kernel, and it's already been done to great effect by existing projects, both commercial and free (most notable are GCC, a free compiler for many languages, and Visual C++, a commercial compiler for C and C++). Every OS developer will use a compiler and/or assembler of some sort, but no one will write their own compiler.

3) N/A (see above)

4) Both are large projects. It is difficult to say which is more complicated, but I would probably say the kernel, because it has more components that must work together. It is also easier to debug a compiler than a kernel. As mentioned in other replies, debugging a kernel is often an awkward procedure involving lots of debugging information printed to the screen. A tool like Bochs (bochs.sf.net) is quite useful, but even it has limitations. Nonetheless, both are large projects, and one can never really finish either.

5) As I mentioned in the last question, there are lots of components to an operating system that must all work together. In addition to this, hardware is sometimes poorly documented, or the specifications are not available to the public (this is especially the case in hobby projects) for "sensitive" equipment where companies believe there is information in the hardware specifications that  could let competitors figure out how their hardware works and take away their advantage. Video cards are bad for this.

Drivers are probably the hardest to get working right, especially the esoteric ones. They have to be stable (i.e, they don't go crashing on you everytime you touch them) and efficient (since they are the link between the kernel and the hardware, their performance is closely linked to the performance of the system as a whole). Also, there are so many types of hardware, and so many makes of each, that it is a large amount of work to support the hardware in any significant subset of computers out there.

Next would be the GUI, which may or may not be a part of an operating system. GUIs tend to be very prone to bugs that show up as minor glitches. Also, it must be snappy, because it is what the user will be interacting with, and it must look and act nice. This last one is probably the hardest. Apple spends a significant amount of money to UI testing. That is why their GUI is shiny enough to see yourself in it: it's been polished to perfection.

Third, is all the support tools. Once a system has reached a critical mass, users will begin developing applications independant of the main OS developers. However, that won't happen unless there is already a base from which to build on.

6) It certainly helps to have a good understanding of existing operating systems before starting your own. This lets you say, "I like this about XYZ, but I don't like this about ABC", so you work that into your design. However, I now understand both Windows and Linux far better now than I did before starting on OS development.

More importantly than this, is knowing how the hardware works. Writing a kernel requires a deep understanding of the inner workings of a computer. In fact, it is probably one of the best ways to learn the nitty-gritties of the hardware. Of course, most computer users and developers could care less what memory window the VGA text buffer is mapped to, or how to reprogram a PIC, and who else has ever heard of a Northbridge?

7) The simple answer is, because it's already been done. Linux is an excellent operating system for almost any purpose, and it can be adapted to do anything else. Most people you'll find on here are hobbyists -- their OSes may never reach maturity; I doubt mine will. It's a learning experience.

Now, by OS, I believe you mean general-pupose OS, like Linux or Windows. There are always special-purpose OSes for embedded devices and such that are simpler to do, and there are quite a few out there. General-purpose ones, however, are different beasts. It is simply too big a project now for most people or companies to write from the ground up like Microsoft has. Linux is a different story, but even still it requires a large amount of management (which Linus does superbly).

I hope that answers your questions, and that I haven't been too long-winded... it did turn out far longer than I thought it would.

Gnome.
1

RE:Operating Systems Research

Post by 1 »

Hi


1) Components of an Os include a boot loader, CPU handler, Interrupt Handler,
    Other device handlers  and an User Interface with utility and application
    programs.

2) Usually, even with me, It was a bootable software, and call it as a mini
    or micro-kernel. Then I extended it to make a boot loader , then made
    real kernel for cpu, interrupt and device hanadling, then a command
    interpreter with some useful commands. After wards I worked to make FS
    such as FAT12, FAT16, FAT32. Then one may need to extend device drivers
    for more compatibility and ..........

3) Structured development make easir to implement and later change if need.
     Also it helps for better integration.

4) Anything can be complicated if not develop in desciplined way.In my opinion
    it is the kernel with consider technical section of hardwares and CPU. At
    the same time compiler coild be complicated if one has huge aim to be
    fulfilled with.

5) Os developement can take a long time.Because one does not know the way
    correctly.Destiantion could be there clearly in mind.

     . Technical documentation mastering and its implementation for most of the
       devices.
     . Removing bugs.
     . Integration of various parts.

6) Yes if wish to get optimum results.
    N0  if go with error and trail.

7) It cannot be guranteed that an Operating system will be successful because
    of a number of reasons.

       . May stop the development process because of unavailability of
         technical documentation.
       . People may hesitate to use new OS from a new compnay than traditional
         one.
       . The work result will be only after a number of months where it may
         or may not be a success ==> financial problems.


Any way it was nice,
Best wishes for your research
contact if need more inforamtion
[email protected]

Jagadheesh Kamalesh
gangsta187

RE:Operating Systems Research

Post by gangsta187 »

<i>1. Describe the components of an operating system, besides the central component, the kernel.</i>

Kernel, system libs, system applications, user interface (CLI/Window Manager/Menus)

The Kernel itself can be split up into several components like scheduler, drivers, filesystem, memory manager. etc.  System libs basically provide reusable code for application programmers to use so they don't have to reinvent the wheel.  System Application are the basic utils that an OS comes with like Dir, Format, Etc.

<i>2. What do programmers usually develop first, the compiler or the kernel?</i>

That depends.  Early compilers <b>and</b> OSes were created using ASM and not a compiler.  These days, I would say that the inital versions of an OS are made in a diffrent operating system using a compiler and then later on a compiler is ported to the new operating system and development of that OS can continue there.

<i>3. Does this sequence impact the OS at all?</i>

Doesn't have to.  Depends on the situation I would have to guess.

<i> 4. What's more complicated, the kernel or the compiler?</i>

That all would have to depend on how many features the kernel or the compiler you are making has.  There is no way to answer that question without describing what kind of compiler or OS you want to make.  Neither has to be complicated at all.  In fact you could write a simple OS in a few months.  An OS does not have to be complicated.  You could make a simple one using round robin scheduling that doesn't have many features.  The same thing is true for compilers.  For example a BASIC compiler is probably going to be easier to write a C compiler.  In fact, A non ISO C++ compiler is going to be alot easier to write than a fully ISO C++ compiler that supports everything.  It has taken many C++ compilers years to come close to ISO compliance especially supporting all the template features.

However how things usually go in the software world is through evolution.  Most ISO C++ compilers didn't become such compilers over night.  At one point of time they probably started out as a simple C compiler and it probably took time before it supported ANSI C too.  Then C++ support was probably added years later.  Linux is another great example.  It initially started out as a simple kernel and has evolved throughout the years.  That is Linux as in the kernel and not as in the OSs known as Linux.  Diffrent thing.

<i>5. Why does operating system development take as long as it does? What are the three key things in operating system development that take the longest to perfect?</i>

Operating System Development is only ever done when the Operating System isn't being developed anymore.  That's why :)  That's not to say you can't develop a operating system say like in 3 Months (which CS students often have to do in an Operating Systems class)  First you start out with a simple kernel that can run and I assume Multitask programs (doesn't have to).  That task isn't too hard to do.  However if you thinking of an Operating System like Linux, well what happens is you add features and make it better.  Linux didn't become what it is today overnight.  It is the joint effort of many programmers through many years.  The same thing is true for almost any programming project.  You start out simple and then you keep adding features.  As for key thing that all depends on what feature you adding.  The thing longest to perfect could be a feature added 10 years later from the starting point of the project.

<i>6. Do you need operating systems familiarity to write a kernel? Yes / no? Elaborate please.</i>

No.  many programmers are able to correctly guess what is needed to write a kernel before they start and then they can write it by trial and error.  This is science afterall and somewhat the same reason that the scientists who help invent the atomic bomb knew that how to do that couldn't remain a secret since other scientist can come up with the same things.  I guess the best way to answer you question would be to ask another question.  Did the first person who wrote a kernel have familiarity in writing a kernel?  :) but familiarity helps. ;) don't reinvent the wheel if you don't have to.

<i>7. In your opinion, why aren't there more operating systems on the market?</i>

There are tons of operating systems out there just as there are tons of computer langs out there.  Don't assume  because you don't know them that they aren't out there.  People write OSes all the time and most have probably been forgoten and lost because only a few are used commonly
Post Reply