SimpleOS

LXR

Navigation



Site hébergé par : enix

The LXR Cross Referencer for SOS

source navigation ]
diff markup ]
identifier search ]
general search ]
 
 
Article:1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 6.5 ] [ 7 ] [ 7.5 ] [ 8 ] [ 9 ] [ 9.5 ]

Diff markup

Differences between /README (Article 2) and /README (Article 7.5)


001                                                   001 
002                     SOS: A Simple Operating Sy    002                     SOS: A Simple Operating System
003                                                   003 
004                                                   004 
005 This   is   SOS,   a   Simple   Operating   Sy !! 005 This   is   SOS,   a   Simple   Operating   System   for   i386-family
006 processors. This is  as simple as possible to     006 processors. This is  as simple as possible to show a  way to program a
007 basic Operating System on real  common hardwar    007 basic Operating System on real  common hardware (PC).  The code should
008 be easily readable and understandable thanks t    008 be easily readable and understandable thanks to frequent comments, and
009 references to external documentation.  We chos    009 references to external documentation.  We chose to implement the basic
010 features  of an OS,  thus making  design decis    010 features  of an OS,  thus making  design decisions  targetting towards
011 simplicity  of  understanding,  covering  most    011 simplicity  of  understanding,  covering  most  of  the  OS  classical
012 concepts,  but  not  aiming  at  proposing  ye    012 concepts,  but  not  aiming  at  proposing  yet  another  full-fledged
013 competitive OS  (Linux is  quite good at  it).    013 competitive OS  (Linux is  quite good at  it). However, for  those who
014 would  like to  propose some  enhancements, we    014 would  like to  propose some  enhancements, we  are open  to  any code
015 suggestions (patches only,  please).  And yes,    015 suggestions (patches only,  please).  And yes, there might  be bugs in
016 the code, so please send us any bug report, an    016 the code, so please send us any bug report, and/or patches !
017                                                   017 
018 The OS comes as  a set of articles (in french)    018 The OS comes as  a set of articles (in french) to  be published in the
019 journal  "Linux Magazine  France". Each  month    019 journal  "Linux Magazine  France". Each  month, the  part of  the code
020 related to the current article's theme is rele    020 related to the current article's theme is released (see VERSION file),
021 and the resulting OS can  be successfully comp    021 and the resulting OS can  be successfully compiled and run, by booting
022 it from a floppy on a real  machine (tested AM    022 it from a floppy on a real  machine (tested AMD k7, Cyrix and Intel P4
023 pentiums), or through an x86  emulator (bochs     023 pentiums), or through an x86  emulator (bochs or qemu).  The resulting
024 OS is available as a multiboot compliant ELF k    024 OS is available as a multiboot compliant ELF kernel (sos.elf) and as a
025 floppy image (fd.img).  It provides  a very ve    025 floppy image (fd.img).  It provides  a very very very basic demo whose
026 aim is to  understand how everything works, no    026 aim is to  understand how everything works, not  to animate sprites on
027 the screen with 5:1 dolby sound.                  027 the screen with 5:1 dolby sound.
028                                                   028 
029 The initial technical features and lack-of-fea    029 The initial technical features and lack-of-features of the OS are:
030  - monolithic kernel, fully interruptible, non    030  - monolithic kernel, fully interruptible, non-preemptible (big kernel
031    lock)                                       !! 031    lock), target machines = i386 PC or better
032  - compiles on any host where the gcc/binutils    032  - compiles on any host where the gcc/binutils toolchain (target
033    i586-gnu) is available. Can be tested on re    033    i586-gnu) is available. Can be tested on real i486/pentium
034    hardware, or on any host that can run an i4    034    hardware, or on any host that can run an i486/pentium PC emulator
035    (bochs or qemu)                                035    (bochs or qemu)
036  - kernel loaded by grub, or by a sample boots    036  - kernel loaded by grub, or by a sample bootsector (up to article 2
037    ONLY)                                          037    ONLY)
038  - clear separation of physical memory and vir    038  - clear separation of physical memory and virtual memory concepts,
039    even inside the kernel: no identity-mapping    039    even inside the kernel: no identity-mapping of the physical memory
040    inside the kernel (allows to move virtual m    040    inside the kernel (allows to move virtual mappings of kernel pages
041    at run-time, eg to free ISA DMA pages, and     041    at run-time, eg to free ISA DMA pages, and to avercome the 4G RAM
042    barrier)                                       042    barrier)
043  - slab-type kernel memory allocation             043  - slab-type kernel memory allocation
044  - no swap, no reverse mapping                    044  - no swap, no reverse mapping
045  - VERY simple drivers: keyboard, x86 video me    045  - VERY simple drivers: keyboard, x86 video memory, IDE disks
046  - logical devices: partitions, FAT filesystem    046  - logical devices: partitions, FAT filesystem, "hard-coded"
047    mountpoints only (~ MSDOS)                     047    mountpoints only (~ MSDOS)
048  - no network stack                               048  - no network stack
049  - user-level features: ELF loader (no shared     049  - user-level features: ELF loader (no shared libraries), processes,
050    user threads (kernel-level scheduling only)    050    user threads (kernel-level scheduling only), mmap API, basic VFS
051                                                   051 
052 To understand where to look at for what, here     052 To understand where to look at for what, here is a brief description:
053  - Makefile: the (ONLY) makefile of the OS. Ta    053  - Makefile: the (ONLY) makefile of the OS. Targets are basically
054    'all' and 'clean'                              054    'all' and 'clean'
055  - bootstrap/ directory: code to load the kern    055  - bootstrap/ directory: code to load the kernel. Both the stuff
056    needed for a multiboot-compliant loader (eg    056    needed for a multiboot-compliant loader (eg grub) AND a bootsector
057    are provided. The bootsector may only be us    057    are provided. The bootsector may only be used up to article 2.
058  - sos/ directory: the entry routine for the k    058  - sos/ directory: the entry routine for the kernel (main.c), various
059    systemwide header files, a set of common us    059    systemwide header files, a set of common useful C routines
060    ("nano-klibc"), and kernel subsystems (kern    060    ("nano-klibc"), and kernel subsystems (kernel memory management,
061    etc...)                                        061    etc...)
062  - hwcore/ directory: Low-level CPU- and kerne    062  - hwcore/ directory: Low-level CPU- and kernel-related routines
063    (interrupt/exception management, translatio    063    (interrupt/exception management, translation tables and segment
064    registers, ...)                                064    registers, ...)
065  - drivers/ directory: basic kernel drivers fo    065  - drivers/ directory: basic kernel drivers for various (non CPU)
066    devices (keyboard, x86 video memory, bochs     066    devices (keyboard, x86 video memory, bochs 0xe9 port, ...). Used
067    mainly for debugging                           067    mainly for debugging
068  - support/ directory: scripts and configurati    068  - support/ directory: scripts and configuration files to build the
069    floppy images                                  069    floppy images
070  - extra/ directory: a set of configuration fi    070  - extra/ directory: a set of configuration files to be customized for
071    non-x86 host installations (yes, we primari    071    non-x86 host installations (yes, we primarily develop SOS on a ppc, for
072    the x86 target of course), or for grub-less    072    the x86 target of course), or for grub-less installations. See
073    README file in this directory.                 073    README file in this directory.
074                                                   074 
075 The code is licensed under the terms of the GN    075 The code is licensed under the terms of the GNU GPL version 2 (see
076 LICENSE file).                                    076 LICENSE file).
077                                                   077 
078 Enjoy !                                           078 Enjoy !
079                                                   079 
080                         David Decotigny, Thoma    080                         David Decotigny, Thomas Petazzoni, the Kos team
081                                                   081                                                    http://sos.enix.org/
082                                         http:/    082                                         http://david.decotigny.free.fr/
083                                            htt    083                                            http://kos.enix.org/~thomas/
084                                                   084                                                    http://kos.enix.org/
085                                                   085 
086                                                   086 
087 --                                                087 --
088 David Decotigny                                   088 David Decotigny
089                                                   089 
090 PS: Made with a Mac.                              090 PS: Made with a Mac.
                                                      

source navigation ] diff markup ] identifier search ] general search ]