User:MessiahAndrw
From OSDev Wiki
I am a computer science student from Adelaide, Australia.
Contents |
Perception
Perception is the name of my OS project.
Goals
To provide a fast, safe, and multitasking (though primary single tasking) runtime environment.
Design
The following design decisions were made to meet the goals set out for the operating system.
Fast
Most operating systems (especially those microkernels based) imply a heavy IPC overhead. A typical IPC call will involve switching into ring 0, swapping page directories, and perhaps allocating memory, all which are extremely heavy in cycle counts. Since in a micro-kernel, a single operating (for example opening a file) may result in over a dozen cross-process messages, so by eliminating the costs associated with IPC my hope is to provide an extremely fast execution environment and is therefore a priority to my above goal. All processes will run in ring 0 and in a single address space, and my hope is to lower the overhead of communicating so that calling a function within another process will be nearly (if not) as fast as if calling a local function.
Safe
Hardware isolation of processes is thrown out of the window by removing ring protection and paging. The only remaining option is to use software isolation to verify the code being executed is safe. To fit in with the goal of making the operating system fast, a Just-In-Time compiler will be integrated into the kernel. The JIT compiler will accept bytecode when a program is loaded, verify that each instruction is safe (that it does not tamper with other programs), and output native machine code. There will be an overhead of loading a program, but not while executing, and in fact execution performance could actually benefit as processor-specific functions (SSE, 3D Now!) can be automatically utilized if needed. There is also an added bonus that bytecode is platform independent, so by porting the JIT'er to a different architecture all applications will run natively. .NET Common Immediate Language was chosen as the bytecode representation to use for several reasons; the specification is open, there is a very wide range of libraries and languages targeting CIL, and there are a range of great development suites available (including Visual Studio and Mono).
Multitasking
The user-interface will primary focus on a single task at a time. That is, one application taking up the entire screen with direct access to the frame buffer as well input focus. However in a modern system (including game consoles) it's not uncommon to have multiple applications running such as a video downloading in the background along side an IM client, while playing a game which is running in full screen or using a word processor. Multi-tasking is taken for granted and is essential for most users even when performing what is seemingly a single-tasking job, such as typing up a document in a word processor with a web browser opened next to it for research.
The perception GUI will be broken into the concept of 'pages'. They are boxes and differ from 'windows' in many ways. First off, each running process in memory (driver, server, or user application) will have one and only one page. A page may be stretched full-screen (without a border or title) or multiple freely placed around the screen side by side. An application can draw whatever it likes within the confinements of its page but not outside (no menus that leave the page are allowed). The last main difference is that when multiple pages are being used concurrently, no single page is 'focused'. You'll have to manually attach input (be it a keyboard, webcam, microphone) to the page/application you wish to communicate with (mouse and tablet does not apply since the cursor position designates which application it's interacting with) - see the Surface PC example below. On a desktop with only one keyboard then switching keyboard focus could be done by simply clicking inside a page.
Potential Applications
Here are some areas I could imagine my operating system being applied:
Surface PCs
For example, if you are using a surface PC and you have 3 application's page's open (each a word processor), then you will be able to attach one keyboard to one instance of the word processor, another keyboard to another instance of the word processor, and an on-screen-keyboard to the third instance of the word processor, allowing 3 people to work simultaneously on the one system.
Game Consoles
Dedicate Game/Media Computers
Handheld devices
Fill in: - Handheld devices (phones, media players, handle held game consoles) are small. - JIT'ing. - Page's multitasking
