Hardware. HPET Hardware Information. AMAZING Processor Info. File Systems. Filesystems are the machine's way of ordering your data on readable and/or writable media.
They provide a logical way to access the stuff that you have down on disk so that you can read or modify it. Which file system you use depends upon what you want to do with it. For example, Windows uses the Fat32 or NTFS filesystem. If your disk is really huge, then there's no point using Fat32 because the FAT system was designed in the days when nobody had disks as big as we do now. At the same time, there's no point using a NTFS filesystem on a tiny disk, because it was designed to work with large volumes of data - the overhead would be pointless for, say, reading a 1.44m floppy disk.
For details on specific filesystems, browse this list of filesystems. File System Theory A filesystem provides a generalized structure over persistent storage, allowing the low-level structure of the devices (e.g., disk, tape, flash memory storage) to be abstracted away. Indexing Methods. FAT. The File Allocation Table (FAT) file system was introduced with DOS v1.0 (and possibly CP/M).
Supposedly written by Bill Gates, FAT is a very simple file system -- nothing more than a singly-linked list of clusters in a gigantic table. Ext2. The Second Extended Filesystem (ext2fs) is a rewrite of the original Extended Filesystem and as such, is also based around the concept of "inodes.
" Ext2 served as the de facto filesystem of Linux for nearly a decade from the early 1990s to the early 2000s when it was superseded by the journaling file systems ext3 and ReiserFS. It has native support for UNIX ownership / access rights, symbolic- and hard-links, and other properties that are common among UNIX-like operating systems. Organizationally, it divides disk space up into groups called "block groups. " Having these groups results in distribution of data across the disk which helps to minimize head movement as well as the impact of fragmentation.
John's ext2 spec. This information has been compiled from resources published on the internet, the Linux kernel source and information gained from experimentation.
The primary focus of the document is to provide enough information to allow someone to read the file system. Introduction When Linus was first creating Linux, he used the Minix filesystem. This served initial development well but soon there was a need for something bigger and better. In April 1992, the Extended File System was created. Structure. Microkernel. Design Basic overview of a microkernel A Microkernel tries to run most services - like networking, filesystem, etc. - as daemons / servers in user space.
All that's left to do for the kernel are basic services, like memory allocation (however, the actual memory manager is implemented in userspace), scheduling, and messaging (Inter Process Communication). In theory, this concept makes the kernel more responsive (since much functionality resides in preemptible user-space threads and processes, removing the need for context-switching into the kernel proper), and improves the stability of the kernel by reducing the amount of code running in kernel space.
There are also additional benefits for OS' that support multi-CPU computers (much simpler re-entrancy protection and better suitability for asynchronious functionality) and distributed OS' (code can use services without knowing if the service provider is running on the same computer or not). In practice things can be quite different. Examples. ELF64 Format. Sleep and Wake Task - Multiprocessor. Process Sleep and Wakeup on a Shared-memory Multiprocessor Rob Pike Dave Presotto Ken Thompson Gerard Holzmann rob,presotto,ken,gerard@plan9.bell-labs.com.
L4 Kernel. Rohrbold L4 Kernel Report. Tutorials. There are several OS development related tutorials on this wiki.
This page gives you a nice overview of tutorials that are around, based on subject area and difficulty. - Tutorials that are either very basic or easy to follow. Try these first. - Tutorials on somewhat harder subjects, but still good to do. It may be a good idea to do some easier stuff first. Intel Optimization Refrence. Multitasking Systems. Multitasking Systems are operating systems (or even system extensions) which divide available processor time between several tasks automatically, creating the illusion that the tasks are running simultaneously.
Types of Multitasking Systems There are many ways multitasking can be achieved. Cooperative Multitasking This concept runs an application until it exits or yields control back to the OS. Examples for cooperative multitasking systems are pre-X MacOS, or Windows 3.x. In some single language cooperative multitasking systems, such as Oberon and ruby, the compiler/interpreter automatically ensures that the code will periodically yield control; it allows such program to run in multi-threading on non-preemptive OS such as DOS. Scheduling Algorithms. A scheduling algorithm is the algorithm which dictates how much CPU time is allocated to Processes and Threads.
The goal of any scheduling algorithm is to fulfill a number of criteria: no task must be starved of resources - all tasks must get their chance at CPU time; if using priorities, a low-priority task must not hold up a high-priority task; the scheduler must scale well with a growing number of tasks, ideally being O(1). This has been done, for example, in the Linux kernel. Interactive Scheduling Algorithms Round Robin. Completely Fair Scheduler - LinuxJournal. Basic Multitasking with a TCB. James Malloy. This set of tutorials aims to take you through programming a simple UNIX-clone operating system for the x86 architecture.
The tutorial uses C as the language of choice, with liberally mixed in bits of assembler. The aim is to talk you through the design and implementation decisions in making an operating system. GitHub. Qore. RhombusOS.