Page 1 of 2
What should I do with my OS?
Posted: Thu Jul 04, 2013 7:51 am
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?
Re: What should I do with my OS?
Posted: Thu Jul 04, 2013 8:03 am
by Combuster
Re: What should I do with my OS?
Posted: Thu Jul 04, 2013 9:35 am
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.
Re: What should I do with my OS?
Posted: Thu Jul 04, 2013 10:55 am
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.
Re: What should I do with my OS?
Posted: Sat Jul 06, 2013 6:41 am
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.
Re: What should I do with my OS?
Posted: Sat Jul 06, 2013 3:13 pm
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).
Re: What should I do with my OS?
Posted: Mon Jul 08, 2013 2:34 pm
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.
Re: What should I do with my OS?
Posted: Mon Jul 08, 2013 3:42 pm
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...
Re: What should I do with my OS?
Posted: Mon Jul 08, 2013 3:52 pm
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..
Re: What should I do with my OS?
Posted: Tue Jul 09, 2013 12:29 pm
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.
Re: What should I do with my OS?
Posted: Tue Jul 09, 2013 12:39 pm
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).
Re: What should I do with my OS?
Posted: Tue Jul 09, 2013 2:13 pm
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.
Re: What should I do with my OS?
Posted: Tue Jul 09, 2013 3:30 pm
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.
Re: What should I do with my OS?
Posted: Tue Jul 09, 2013 3:51 pm
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.
Re: What should I do with my OS?
Posted: Tue Jul 09, 2013 4:25 pm
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.