Strategic Decisions Making LoseThos Simple The trivial solution in math is the simple, obvious answer. LoseThos has many examples of using trivial solutions. * Everything runs in kernel, ring 0, mode. * One memory map for all tasks on all cores with virtual addresses set equal to physical. See LoseThos Memory. * One platform, 64-bit or better x86_64 PC's, such as Core i7's, Core 2 Duo's, Pentium D's, etc. Nothing worse than a Pentium 4 Extreme Edition. No 32-bit code. * No security. * No networking. * Least (greatest) common denominator hardware support. Mostly, one driver for each device class. I can't be in the business of different drivers. Compatibility is the greatest challenge for PC operating systems. Disk code does not use interrupts, avoiding compatibility risks. See LoseThos Interrupts. PS/2 keyboard/mouse is used instead of USB, also more compatible. * 640x480 16 colors. Updates whole screen at 60 Hz, optimized for full screen games where "invalid rectangles" are counter-productive. See LoseThos Graphics. * One font, 8x8. Text and graphic layers done in software with text normally on an 8x8 grid. It can run in Text mode if graphic initialization fails. * Compiler extends all values to 64-bit when fetched and does only 64-bit computations intermediately. Assembler has minimal 16-bit support, good enough for compiling boot loaders. * No object files. Linking can be done at Load() time for static modules, if you insist on not using JIT. Modules have imports and exports. * Whole files are processed almost exclusively, allowing compression. * One language and compiler for command-line, scripts, and code. * One editor/word processor/browser for the command-line window, source code, documentation browser, dialog forms. * No child windows. One window per task. Buttons are widgets, not child windows. There are child tasks, however. * No distinction between "thread", "process" or "task". * The Scheduler is mostly for home systems, not servers or mainframes. The focus task is all important. Disk requests are not broken-up, so sharing is bad, however. * MultiCore is done master/slave, instead of SMP. Core zero explicitly assigns jobs. Locks are present allowing multicore file, heap, and hardware access, though. * Music is done with an elegant one-voice notation. * All tasks have a heap and a symbol table. Scope is that of environment variables in other operating systems. As text is typed at the command line or you run programs by #includeing them, the symbols go in the table. If a symbol is not found, the parent task's table is checked. The father of all tasks has the API symbols you'll need waiting in it's table. No need to #include headers. * No need for namespaces -- scoping occurs automatically. * LoseThos SSE/MMX. * "Core i7", "Core 2 Duo", "Pentium D" and "Pentium 4 Extreme Edition" are trademarks of Intel Corp.