X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=doc%2Fthreads.texi;h=c5d6329996766befe04b93f0aafbde860f2a5ff5;hb=8fc9be2744dbe24bf5676a0502b36d5afe3b9ebb;hp=6eec6bb1ea5a44d1620b04faf8108b879d7ad5f1;hpb=4ae5b30e5eb0be98521235060001c2d6d9828345;p=pintos-anon diff --git a/doc/threads.texi b/doc/threads.texi index 6eec6bb..c5d6329 100644 --- a/doc/threads.texi +++ b/doc/threads.texi @@ -113,27 +113,30 @@ code to look at. @item loader.S @itemx loader.h The kernel loader. Assembles to 512 bytes of code and data that the -PC BIOS loads into memory and which in turn loads the kernel into -memory, does basic processor initialization, and jumps to the -beginning of the kernel. @xref{Pintos Loader}, for details. You should -not need to look at this code or modify it. +PC BIOS loads into memory and which in turn finds the kernel on disk, +loads it into memory, and jumps to @func{start} in @file{start.S}. +@xref{Pintos Loader}, for details. You should not need to look at +this code or modify it. + +@item start.S +Does basic setup needed for memory protection and 32-bit +operation on 80@var{x}86 CPUs. Unlike the loader, this code is +actually part of the kernel. @xref{Low-Level Kernel Initialization}, +for details. @item kernel.lds.S The linker script used to link the kernel. Sets the load address of -the kernel and arranges for @file{start.S} to be at the very beginning +the kernel and arranges for @file{start.S} to be near the beginning of the kernel image. @xref{Pintos Loader}, for details. Again, you should not need to look at this code or modify it, but it's here in case you're curious. -@item start.S -Jumps to @func{main}. - @item init.c @itemx init.h Kernel initialization, including @func{main}, the kernel's ``main program.'' You should look over @func{main} at least to see what gets initialized. You might want to add your own initialization code -here. @xref{Kernel Initialization}, for details. +here. @xref{High-Level Kernel Initialization}, for details. @item thread.c @itemx thread.h @@ -220,10 +223,23 @@ Serial port driver. Again, @func{printf} calls this code for you, so you don't need to do so yourself. It handles serial input by passing it to the input layer (see below). -@item disk.c -@itemx disk.h -Supports reading and writing sectors on up to 4 IDE disks. This won't -actually be used until project 2. +@item block.c +@itemx block.h +An abstraction layer for @dfn{block devices}, that is, random-access, +disk-like devices that are organized as arrays of fixed-size blocks. +Out of the box, Pintos supports two types of block devices: IDE disks +and partitions. Block devices, regardless of type, won't actually be +used until project 2. + +@item ide.c +@itemx ide.h +Supports reading and writing sectors on up to 4 IDE disks. + +@item partition.c +@itemx partition.h +Understands the structure of partitions on disks, allowing a single +disk to be carved up into multiple regions (partitions) for +independent use. @item kbd.c @itemx kbd.h @@ -240,6 +256,22 @@ serial drivers. Interrupt queue, for managing a circular queue that both kernel threads and interrupt handlers want to access. Used by the keyboard and serial drivers. + +@item rtc.c +@itemx rtc.h +Real-time clock driver, to enable the kernel to determine the current +date and time. By default, this is only used by @file{thread/init.c} +to choose an initial seed for the random number generator. + +@item speaker.c +@itemx speaker.h +Driver that can produce tones on the PC speaker. + +@item pit.c +@itemx pit.h +Code to configure the 8254 Programmable Interrupt Timer. This code is +used by both @file{devices/timer.c} and @file{devices/speaker.c} +because each devices uses one of the PIT's output channel. @end table @node lib files @@ -277,7 +309,11 @@ more information. @item random.c @itemx random.h -Pseudo-random number generator. +Pseudo-random number generator. The actual sequence of random values +will not vary from one Pintos run to another, unless you do one of +three things: specify a new random seed value on the @option{-rs} +kernel command-line option on each run, or use a simulator other than +Bochs, or specify the @option{-r} option to @command{pintos}. @item round.h Macros for rounding.