What should I do with my OS?

Discussions on more advanced topics such as monolithic vs micro-kernels, transactional memory models, and paging vs segmentation should go here. Use this forum to expand and improve the wiki!
chrissacchi
Posts: 15
Joined: Sat Sep 15, 2012 5:02 pm
Libera.chat IRC: csacchi

What should I do with my OS?

Post by chrissacchi »

I have a lot of things working now. I have a kernel that has Protected Mode enabled, PAE paging enabled, the fast A20 Gate enabled, and the SYSENTER/SYSEXIT instruction pair is setup. I implemented this by myself, except for the A20 gate which I got off OSDev. What should I do, and what resource would help me the most? I plan to have a simple OS with a shell, a few development tools to write simple programs, (maybe even be able to write higher-level programming languages inside), and be able to play very simple text-based games. I know this will take a long while before I even get a shell ported, but I need a good idea of what to do and a little info on how to apply what I need to do to my OS. Could you guys help?
https://github.com/christophersacchi/RazorOS
"... you notice that this scanner will... woah!"
"Moving right along!"
"That must be, uh. That must be why we're not shipping Windows 98 yet..."
"Absolutely. Absolutely."
User avatar
Combuster
Member
Member
Posts: 9301
Joined: Wed Oct 18, 2006 3:45 am
Libera.chat IRC: [com]buster
Location: On the balcony, where I can actually keep 1½m distance
Contact:

Re: What should I do with my OS?

Post by Combuster »

"Certainly avoid yourself. He is a newbie and might not realize it. You'll hate his code deeply a few years down the road." - Sortie
[ My OS ] [ VDisk/SFS ]
User avatar
gravaera
Member
Member
Posts: 737
Joined: Tue Jun 02, 2009 4:35 pm
Location: Supporting the cause: Use \tabs to indent code. NOT \x20 spaces.

Re: What should I do with my OS?

Post by gravaera »

Yo:
What should I do with my OS?
ヽ༼ຈل͜ຈ༽ノ Raise ur OS ヽ༼ຈل͜ຈ༽ノ

The general order of implementation is something like Memory Management -> Threading -> Scheduling -> IRQ Management -> CPU Management, then probably a unified VFS. From there you'd build the device tree using your VFS primitives and move into loading drivers, before getting a userspace running.

Of course all of this is pretty different for each kernel, and mostly depends on design and nothing more. There is no strict "order", just a common pattern that emerges because of the most common designs.

--Peace out,
gravaera.
17:56 < sortie> Paging is called paging because you need to draw it on pages in your notebook to succeed at it.
User avatar
sortie
Member
Member
Posts: 931
Joined: Wed Mar 21, 2012 3:01 pm
Libera.chat IRC: sortie

Re: What should I do with my OS?

Post by sortie »

Have fun! (Unless, your goal is something specific, in which case there's your answer)

Pick some task that seems doable and fun or necessary and complete that.
Casm
Member
Member
Posts: 221
Joined: Sun Oct 17, 2010 2:21 pm
Location: United Kingdom

Re: What should I do with my OS?

Post by Casm »

Once you have got screen out put, maybe keyboard input, some memory management going, my personal suggestion would be a crude file system. When I say crude, I mean really crude. For instance, there would only be one directory, and all the files would be contiguous. But it would allow you to revisit the virtual memory manager, because it would have something to page out to, and later the scheduler/program loader would have something to read files in from.

Of course the temporary file system would be thrown once you had implemented a full one, so you wouldn't want to spend too much time coding it.
Mikemk
Member
Member
Posts: 409
Joined: Sat Oct 22, 2011 12:27 pm

Re: What should I do with my OS?

Post by Mikemk »

I worked on gdt, idt, hardware interrupts, memory management, and am working on acpi (trying to figure out aml). My future plans are PCI, USB, disk, filesystem, network, video, a graphical interface, and keyboard/mouse input (in that order).
Programming is 80% Math, 20% Grammar, and 10% Creativity <--- Do not make fun of my joke!
If you're new, check this out.
User avatar
SpyderTL
Member
Member
Posts: 1074
Joined: Sun Sep 19, 2010 10:05 pm

Re: What should I do with my OS?

Post by SpyderTL »

If you want to be a rebel, like me, you might want to consider rethinking the entire concept of an Operating System. There are thousands of OS'es that all follow the same basic pattern (Kernel, User, Rings, Files, Handles, Threads, Semaphores, Network Stacks, etc.). But since you are just getting started, you have the opportunity to completely re-think or re-imagine what a computer is, or could be. Try thinking of your ideal computer experience, and work backwards. Maybe a speech-only UI, like Jarvis from Iron Man? Just think of something crazy, or impossible. And then go do it. And just ignore all of the OSDev experts that tell you that you're crazy, and that it will never work. :)
Project: OZone
Source: GitHub
Current Task: LIB/OBJ file support
"The more they overthink the plumbing, the easier it is to stop up the drain." - Montgomery Scott
User avatar
gravaera
Member
Member
Posts: 737
Joined: Tue Jun 02, 2009 4:35 pm
Location: Supporting the cause: Use \tabs to indent code. NOT \x20 spaces.

Re: What should I do with my OS?

Post by gravaera »

SpyderTL wrote:There are thousands of OS'es that all follow the same basic pattern (Kernel, User, Rings, Files, Handles, Threads, Semaphores, Network Stacks, etc.). Maybe a speech-only UI, like Jarvis from Iron Man?
So many things wrong with these two sentences alone...
17:56 < sortie> Paging is called paging because you need to draw it on pages in your notebook to succeed at it.
Casm
Member
Member
Posts: 221
Joined: Sun Oct 17, 2010 2:21 pm
Location: United Kingdom

Re: What should I do with my OS?

Post by Casm »

SpyderTL wrote: Maybe a speech-only UI, like Jarvis from Iron Man? Just think of something crazy, or impossible. And then go do it. And just ignore all of the OSDev experts that tell you that you're crazy, and that it will never work. :)
There is nothing crazy about speech recognition software. What is crazy is to confuse an application with a operating system. Amongst other things, the latter is there to provide services for the former, and to prevent applications tripping over one another - not to provide flashy front ends, which come later..
User avatar
DavidCooper
Member
Member
Posts: 1150
Joined: Wed Oct 27, 2010 4:53 pm
Location: Scotland

Re: What should I do with my OS?

Post by DavidCooper »

Casm wrote:There is nothing crazy about speech recognition software. What is crazy is to confuse an application with a operating system. Amongst other things, the latter is there to provide services for the former, and to prevent applications tripping over one another - not to provide flashy front ends, which come later..
Are you saying that speech recognition software is an application rather than part of the operating system? I see it as equivalent to taking input from a keyboard to control both the OS and apps, and a keyboard driver is not an app. Clearly a lot of processing needs to be done to convert sounds into phonemes, words and ultimately into meaningful ideas, but the translation involved in this isn't going to turn it into an app any more than it does when you convert one set of keyboard scan codes into another within a keyboard driver.
Help the people of Laos by liking - https://www.facebook.com/TheSBInitiative/?ref=py_c

MSB-OS: http://www.magicschoolbook.com/computing/os-project - direct machine code programming
User avatar
bluemoon
Member
Member
Posts: 1761
Joined: Wed Dec 01, 2010 3:41 am
Location: Hong Kong

Re: What should I do with my OS?

Post by bluemoon »

While it's open question if TTS/speech recognition is part of an OS; Windows and Mac provide API for TTS and speech recognition.
For instant, think it this way, GUI is not part of an OS by text-book definition, but any OS without GUI is less impressive (except for special purpose server nodes).
Casm
Member
Member
Posts: 221
Joined: Sun Oct 17, 2010 2:21 pm
Location: United Kingdom

Re: What should I do with my OS?

Post by Casm »

DavidCooper wrote:
Casm wrote:Are you saying that speech recognition software is an application rather than part of the operating system? I see it as equivalent to taking input from a keyboard to control both the OS and apps....
The operating system's part in speech recognition is in providing a device driver fo the audio input device, and to provide services to applications so that they can gain indirect access to that driver. Something as sophisticated as speech recognition is definitely not part of the operating system. Any more than expecting the operating system to recognise English sentences, courtesy of the keyboard, would be.

SpyderTL didn't seem to know what an operating system was; nor to realise that what he was talking about was something which ran on top of "Kernel, User, Rings, Files, Handles, Threads, Semaphores, Network Stacks, etc.", rather than being something which replaced them.
User avatar
DavidCooper
Member
Member
Posts: 1150
Joined: Wed Oct 27, 2010 4:53 pm
Location: Scotland

Re: What should I do with my OS?

Post by DavidCooper »

Casm wrote:The operating system's part in speech recognition is in providing a device driver for the audio input device, and to provide services to applications so that they can gain indirect access to that driver. Something as sophisticated as speech recognition is definitely not part of the operating system. Any more than expecting the operating system to recognise English sentences, courtesy of the keyboard, would be.
I can see your point of view, but in many operating systems you can type in words at a command line followed by Return or Enter to tell it what to do - this is a simple form of linguistic communication, but it is also being done within the OS. There is nothing definite about it not being part of the operating system unless you define the operating system in such a way as to exclude communication with the user, so ultimately our disagreement is really caused by using different definitions. I see it as being an essential part of the system that controls the machine whenever an external user has significant role in controlling it.
SpyderTL didn't seem to know what an operating system was; nor to realise that what he was talking about was something which ran on top of "Kernel, User, Rings, Files, Handles, Threads, Semaphores, Network Stacks, etc.", rather than being something which replaced them.
It could be entirely contained within the kernel rather than running on top of it, and if your design is based around an intelligence in the machine which then accesses the hardware to carry out instructions given to it by a user, it is arguably that intelligence which becomes the main part of the operating system while everything else becomes peripheral to it. The intelligence would be able to take complete control over the multitasking mechanism, for example, deciding when or whether to let other threads run, and even deciding whether interrupts should be active or not. It could look at the code of drivers, apps, interrupt routines, etc. and rewrite them on the fly. Ultimately it could even eliminate the whole idea of the application and just provide all the required functionality of apps directly itself, just in the way a person could if you were interacting with a human slave instead of a computer. SpyderTL appears to be thinking in a much wider landscape rather than limiting him/herself by the way things are done today.
Help the people of Laos by liking - https://www.facebook.com/TheSBInitiative/?ref=py_c

MSB-OS: http://www.magicschoolbook.com/computing/os-project - direct machine code programming
User avatar
bluemoon
Member
Member
Posts: 1761
Joined: Wed Dec 01, 2010 3:41 am
Location: Hong Kong

Re: What should I do with my OS?

Post by bluemoon »

I see people mixed up kernel and operating system.
I agree TTS & speech recognition should not be part of a kernel; but it's debatable if its as a feature of an OS, no matter in form of system service , bundled add-on(eg. DirectX component) or bundled applications.
User avatar
DavidCooper
Member
Member
Posts: 1150
Joined: Wed Oct 27, 2010 4:53 pm
Location: Scotland

Re: What should I do with my OS?

Post by DavidCooper »

bluemoon wrote:I see people mixed up kernel and operating system.
I agree TTS & speech recognition should not be part of a kernel; but it's debatable if its as a feature of an OS, no matter in form of system service , bundled add-on(eg. DirectX component) or bundled applications.
With a megalithic kernel, it appears to cover practically the entire OS, so as far as I can see there are no fixed boundaries as to what counts as in or out of either the OS or kernel. My OS should probably be considered as a megalithic kernel which includes everything that isn't an app as part of itself, and the ultimate aim is to eliminate the app too.

I was about to edit the following into my previous post, but I'll now put it here instead. If you have an intelligence as the core part of your OS and you then port that OS to another platform, that core part could be the same on both (including it's way of communicating with the external user), while all other parts of the OS may need to be radically different because of hardware differences, but it's that intelligence that dictates all the large scale structure of how work is done in the machine while all the other parts are merely needed to enable it to function usefully, so I would regard it as being the core part of the OS on that basis and everything else as exchangeable components.

Of course, if the system is then expanded to work with other languages, it may be sensible to extract some of the original language translation capability out of the intelligence part of the OS to turn it into a translation module of some kind which can be replaced with others for other languages, at which point you could start to think of that as not being part of the operating system any more, but ultimately such distinctions are artificial. A system is a collection of interacting parts, and it may be possible with many systems to replace a component with one of a different kind and then declare that the exchangeable part is no longer part of the system because it is interchangeable, but it is really still part of the system whenever it's included in it: if no part of that kind is in place, the system is incomplete and broken.
Help the people of Laos by liking - https://www.facebook.com/TheSBInitiative/?ref=py_c

MSB-OS: http://www.magicschoolbook.com/computing/os-project - direct machine code programming
Post Reply