Page 1 of 1

features of os

Posted: Sun Mar 16, 2008 1:10 am
by parag
i want to develop flowchart of an operating system.so i want to know what features should be made available in an operating system.

Posted: Sun Mar 16, 2008 1:12 am
by JackScott

Posted: Sun Mar 16, 2008 7:56 am
by lukem95
hey, although the link posted by yayyak should be very useful to you, im not sure if it will answer your question or not.

It really depends on what you are designing the OS for, for example you could be making an operating system to play games on, to use as a media centre, as a desktop/work pc...or any number of other things.

From there you need to deduce what drivers it will need, what programs it should be compatable with, how the multitasking (if any) works, if you need a GUI or not...

hopefully that will give you something to think about

Posted: Sun Mar 16, 2008 10:08 am
by Ready4Dis
Going with what Lukem_95 said, it also depends on how in-depth you want your flow-chart. Are you looking for things like

Code: Select all

            /----- User Process
Kernel ---- Drivers ------ Disk
                            \----- Graphics
                             \---- Input (keyboard/mouse,joystick)
Or are you looking for something like...

Code: Select all

Kernel :
a.) memory manager
   1.) virtual memory manager
       a.) virtual -> physical mapper
       b.) kernel allocator
         1.) page allocator
         2.) memory allocator (ala, malloc)
         3.) process cleanup
       c.) Demand page loading/page exception handling
       d.) swap file/disk
   2.) physical
     a.) physical page allocation
b.) process manager
   1.) thread manager
     a.) thread list manager
     b.) thread memory manager
       1.) allocator
       2.) cleanup
     c.) thread scheduler
   2.)  process manager
     a.) process list manager
     b.) process memory manager
        1.) process/kerel memory unifying (make sure the kernel mapping per thread is updated when the kernel map changes)
        2.) process cleanup
     c.) process scheduler (possibly same/similar to threads)
c.) function calls/interface
d.) interrupts
e.) timer
f.) drivers
g.) inter process comms
Now, my point was, do you want to get really in depth, or just an overall view of how things interact. Also, depending on your design goals (monolithic, micro kernel, etc), there are many different directions to travel, and you are free to modify change the way things are done, and were they are done. Nothing says the GUI has to be part of the kernel, nothing says it must be a user process. Heck, you can run it in Ring 1 and make it a special case for all we care :). If you are a micro kernel, you need a VERY robust process communication layout, because of all the context switching that is required, it is not efficient to go from process->kernel->process, imlpementing a way for one process to directly talk to another is very useful. With a monolithic kernel, the drivers run in kernel space, and thus can memory map userland space and use memory mappings to easily transfer data, so the amount of IPC can be much less/simpler (although, once you start running a GUI as a userland process, you definetely don' want your IPC being a POS either). So, give us a bit more information, and maybe we can give you a little more information that you're actually looking for.

for now

Posted: Mon Mar 17, 2008 8:26 am
by parag
Ready4Dis i like the systematic manner in which you have shown several ways of how a flowchart is made. but i am stressing on two points
1.using minimum resources
2.security
priorities being in that order

Re: for now

Posted: Mon Mar 17, 2008 3:16 pm
by Ready4Dis
parag wrote:Ready4Dis i like the systematic manner in which you have shown several ways of how a flowchart is made. but i am stressing on two points
1.using minimum resources
2.security
priorities being in that order
I was just kind of curious of how indepth you wanted the chart to get. I mean, do you want to list... Multiprocessing... or do you want to list: thread scheduler, process scheduler, process memory manager, etc, etc. I wasn't sure if you wanted to get down to the functions, or just the overall view of what the section is doing, etc. Security and minimum resources don't normally go together to nicely I'm affraid, typically all the bounds and checks, and seperation of processes means a lot of extra memory and cpu cycles. For example:

OS 1 -> All processes ring 0, so we don't need a TSS, each task only requires a stack of it's own, and there are minimal context switches since the kernel is visible from all tasks.

OS 2 -> Very secure, drivers are ring 3 so they can't corrupt things, however, each driver needs it's own memory table, stack, kernel stack, a tss entry in the kernel GDT, then on each call to the kernel there must be a context switch, etc.

You can see how a 'secure' OS and a minimal resource OS are very different indeed. There are always tradeoffs, for example, drivers can run in ring 0 since they are 'trusted' applications, while user app's run in ring 3, so they can't mess with hardware and screw things up. This gives you some of the resources back (drivers typically call the kernel more often than user apps, so less context switches, and a bit of saved memory). While each process still needs it's own memory map, and a few extra context switches that aren't needed in OS example 1. We can call this OS 3, which is semi-secure, and semi-resource friendly. There are tons of tradeoffs, but the 2 don't really go together... now fast and minimal resources go together, or secure and reliable tend to go together... fast and secure or minimal resources and secure don't tend to go very well, it's more of sacrafices you are willing to make on one to save the other. Don't get me wrong, you can write an OS that is secure and try using as little resources as possible, but if resources are the priority, then adding security will never happen since it will add overhead, so sacrafices need to be made (in this case, sacrafice some resources for some security, how much you sacrafice is dependant on your goals).

for now

Posted: Tue Mar 18, 2008 8:10 am
by parag
i want to build an operating system for programmers doing system programming. i want my o s to be robust.high on speed. if i am not mistaken super computers use lot of parallel processing. i just want to build an os for a stand alone computer.

Posted: Thu Mar 20, 2008 5:40 am
by 01000101
lol I think you both are having a bit of miscommunication issues.

Ready4Dis is asking what kind of chart you are looking to create and how indepth you would like it to be.

You are stating extremely high-level outlines about multi-processing in a 'stand-alone' computer... Multi-processing is most likely going to be a deffinate necessity in a systems-crucial OS. your scheduler will also need to be tuned up dyno style, might want to go the RTOS route if you want to ensure things get done when they are supposed to; no later and no sooner.