|
|
386BSD R1.0 Reference CD-ROM: Essays by William Jolitz on Kernel Design
(with Lynne G. Jolitz). November 1994. Dr. Dobbs Journal CD-ROM Series.
11/94 Dr. Dobbs Journal, USA: The 386BSD Release 1.0 CDROM Liner Notes(With Lynne Greer Jolitz ).(15 pages). We are pleased to present the release of our first official 386BSD Reference CD-ROM. This single CD-ROM
contains the most up-to-date work in our continuing operating systems and networking research project including
articles appearing in Dr. Dobb's Journal, select annotations, system and kernel source code, and executable
binaries for select configurations. This CD-ROM is intended as a research and educational reference used to
explore state-of the-art paradigms, choices, and trade-offs, as well as examine testbed implementations of these
design choices. In addition, the collection of resources, articles, and other reference materials on this CD
creates an informational programming resource that can be referred to again and again.. See also "The Fun with 386BSD".
The 386BSD Release 1.0 CDROM Liner Notes
by (With Lynne Greer Jolitz )
Copyright (C) 1994 (With Lynne Greer Jolitz )
Welcome to 386BSD: A Note from the Authors
We are pleased to present the release of our first official 386BSD Reference CD-ROM. This single CD-ROM
contains the most up-to-date work in our continuing operating systems and networking research project including
articles appearing in Dr. Dobb's Journal, select annotations, system and kernel source code, and executable
binaries for select configurations. This CD-ROM is intended as a research and educational reference used to
explore state-of the-art paradigms, choices, and trade-offs, as well as examine testbed implementations of these
design choices. In addition, the collection of resources, articles, and other reference materials on this CD
creates an informational programming resource that can be referred to again and again.
386BSD is a "living example" of a complete modem high-performance operating system for 386/486/Pentium
PCs. Organized in the style of an anthology, 386BSD releases are a compendium of our own years of effort, coupled
with work done by other programmers which has been released to the public or submitted directly to us for
possible inclusion into 386BSD releases. This disparate set of works is then shaped and edited by us into the final
operational and high-performance system known as 386BSD.
To meet the stringent demands of its research and educational audience, a fully multiprogramming, multitasking
kernel containing full interprocess communications and networking protocols (TCP/IP, NFS), an advanced virtual
memory subsystem, fast filesystems and drivers powers the entire system. A complete 386BSD user environment
allows the programmer to work on 386BSD while running the system. Tnis is how we do our new work on the
386BSD kernel and system--we actually use 3868SD as our development platform for future versions of 386BSD.
Thinking up new concepts in operating system design, implementing them in an operational release, and then
explaining the reasoning behind each choice is a very tough job. Not only must you justify to a critical professional
audience the exact reasoning behind design choices, levels of abstraction, specific machine-dependent and
machine-independent arrangements, future technology versus backwards compatibility, and other issues, but you
also have to prove that it works!
386BSD is an operational synthesis of some of these new paradigms and ideas. In doing 386BSD releases over
the last six years (and prior BSD releases over the previous ten years), we've traveled down many unexplored
paths of new ideas--some exciting, some dead-ends, but never dull.
In a larger sense, by challenging technical assumptions at a fundamental level, we have also begun to wrestle
with how to achieve goals greater in scope, from that of true multimedia to a real information superhighway.
We hope you find this as exciting to use as it was for us to create, and perhaps will even walk along with us
on this road less traveled in future releases.--Bill and Lynne Jolitz
System Requirements
Windows/DOS System Requirements to View the Annotations, Articles and Other Informational Files:
· A PC with an 80386 or higher processor (80386DX at 20 MHz or higher recommended) with 4 MB RAM
· A hard diskwith at least 5 MBytes of free space in your Windows or DOS partition
· A CD-ROM drive compatible with the MPC specifications
· A mouse or equivalent pointing device compatible with MS Windows
· Any printer compatible with MS Windows (optional)
· MS Windows version 3.1 or later
· MS-DOS version 3.1 or later (version 5.0 recommended)
· MS compact disc extensions (MSCDEX) version 2.2 or later and compatible CD-ROM driver.
Additional 386BSD system requirements to run the executable binaries off the CD-ROM directly or install 386BSD
in a MS-DOS partition from the CD-ROM:
· A free DOS partition on your hard disk with at least 40 MBytes of free space (80 MBytes minimum
recommended for X Windows)
· An Adaptec SCSI 154x-series controller card jumpered at the manufacturer's default interrupt and port
requirements and a compatible SCSI CD-ROM drive, or a Mitsumi non-SCSI CD-ROM drive with controller
card jumpered at the manufacturer's default interrupt and port requirements
· An ISA or EISA or VLB bus
· An IDE controller with compatible hard disk or an Adaptec 154x- series controller card jumpered at the
manufacturer's default interrupt and port requirements and a compatible SCSI hard disk
· A VGA monitor with keyboard and mouse
Setting Up the 386RSD Reference CD
Before you set up the 386BSD Reference CD, you must have your CD-ROM drive, MSCDEX, and Microsoft Windows
installed. For further information on these items, consult the documentation provided with these products.
RUNNING SETUP
1. Turn on your PC and CD-ROM drive
2. Start Microsoft Windows and display the Program Manager window
3. Insert the 386BSD Reference CD into the CD-ROM drive
4. In Program Manager, choose Run from the File menu
5. In the Command Line box, type: D:\setup where D is the letter representing your CD-ROM drive
6. Press Enter
In Program Manager, the Setup program will create many new program groups. The master directory and
introduction is contained in the 386BSD Reference CD program group. Other main informational program
groups are also installed, including the 386BSD Source Annotations, 386BSD Article Series, and 386BSD Book
Excerpts program groups.
Elements of the 386BSD Reference CD
The 386BSD Reference CD-ROM is composed of three basic elements:
1. 386BSD articles, annotations, and excerpts from the unpublished book 386BSD From the Inside-0ut
by Bill and Lynne Jolitz
2. 386BSD system source files and manuals
3. 386BSD executable binaries for select configurations
The 386BSD Reference CD contains considerable 386BSD-specific technical information done by the developers
over the course of the 386BSD project. This text, placed in help file format, contains embedded hyperlinks which
form a web of contextual information on the design, evolution and future directions of 386BSD.
The complete 17-part "Porting UNIX to the 386" feature series which appeared in Dr. Dobb's Journal
explored the genesis, methodology, and implementation of the port of an early version of BSD to a "blank" PC.
This series, which provides detailed coverage of the difficulties inherent in porting such a complicated entity as
an operating system to a new architecture, is essential for an understanding of how the past affects the future
directions and technical design of 386BSD.
Select kernel files, chosen for their critical impact on the 386BSD operating system, are annotated in a
detailed discussion of the current status of this implementation by the developer. From historical perspectives to
current choices, trade-offs, and methodologies, to future possibilities, each source file annotation is a thorough
discussion of the state-of-the-art.
In addition, to provide additional depth beyond that of the annotations and articles, selections from the
unpublished 386BSD From the Inside-Out on the design and structure of the 386BSD kernel have been included.
These topics were chosen to help explain some of the underlying structural elements of the system ranging from
level of abstraction to actual kernel architecture.
To read any of these articles, annotations, and other topics from Windows Program Manager, simply double
click on the 386BSD Reference CD icon and choose which Windows Group to view: Articles, Annotations, or
Excerpts. To print out a 386BSD help topic, use the print command from the File menu.
In each of these Windows Groups is a special icon for index and glossary, as well as an Introduction icon. The
Introduction icon helps you navigate the body of information in that Window Group. The index and glossary help
you search and follow hyperlinks and specific terms important to 386BSD.
The complete 386BSD system source code is contained in a set of clear-text files for ease of viewing and editing.
These files are the actual files compiled to run 386BSD Release 1.0, ranging from the 386BSD kernel itself, to
system tools and utilities, development tools, and applications. To view and/or edit the system source files from
DOS, simply use your favorite text editor, such as edit, and examine a specific file, such as a kernel source file:
edit _source\kernel\kern\vfs_look.c
In addition, system manuals and related documents discussing many system commands, tools, and utilities are
useful to reference while using the 386BSD system itself To print out any of these Postscript-formatted system
manuals from DOS, use a print command for your Postscript printer, such as print, and choose the manual you
would like to print out:print _manuals\smmlg.ps.
Finally, a set of compiled and operational 386BSD system binaries are contained on this CD-ROM. These binaries
have been compiled for use on select system configurations and can be either run (sample executed) off the CD
itself or installed in a partition on your hard disk. For further information, see "System Requirements" and the
"Running 386BSD on the CD" and "Installing 386BSD on Your Hard Disk" sections of this document.
Using the 386BSD Bootable CD Feature
The 386BSD binaries are configured for select system configurations for either running 386BSD off the CD directly
or installing and running 386BSD in a partition on your hard disk. If you do not have the required hardware, or if
you have the required hardware but it is not set up properly for 386BSD, the system will not operate. You cannot
boot and run the 386BSD software from a CD drive located on a remote (server) site--only from a CD drive
installed on your local PC.
If you have problems using the bootable CD-ROM feature, check thatyour system configuration complies with the
requirements in the "386BSD System Requirements" section (see below). If it appears to meet the requirements,
read the '"Troubleshooting and Diagnosing Problems in PC Configuration." If you have a networking card in your
PC, read the "Networldng with 386BSD" section for a list of supported cards and configurations.
386BSD SAMPLER RUNNING 386BSD OFF THE CD
The 386BSD Reference CD contains facilities for read-only sample execution of the 386BSD binaries. Make sure
you have the correct configuration required for sample execution off the CD before you begin.
I. Go directly to DOS (you cannot run this program from Windows or the DOS shell from Windows).
2. If you have a Mitsumi CD-ROM, type boot 386bsd mcd0d where O is the drive unit number of your CD-ROM
drive and d is the letter corresponding to the raw partition of your CD-ROM drive (in this case, the entire CD).
If you have a SCSI CD-ROM connected to an Adaptec I54x-series controller, type boot 386bsd asNd where N
is the number ranging from 0-6 representing your SCSI CD-ROM drive ID and d is the letter corresponding to
the raw partition of your CD-ROM drive (in this case, the entire CD).
If you do not know your CD-ROM SCSI ID, you can find it this way:
When the ASPI CD-ROM driver for DOS is loaded, it prints out the SCSI ID of the CD-ROM at the time you
reboot the system; the Adaptec 154x-series controllers come with a program called Showscsi which shows
all SCSI IDs of all devices connected to the controller.
3 Boot will now load the system, overloading DOS, and attempt to directly execute off the CD-ROM. It will probe
for the existence of other supported disks and controllers, then show the 386BSD # prompt.
You are now running 386BSD off the 386BSD Reference CD. You can begin to execute common 386BSD
commands, such as "man" (for the online manual), is (to list files; ls -R lets you look at everything on the
CD), cd (to change directories) and so forth. Feel free to explore the system as much as possible.
To leave the system, at the # prompt type reboot or press Ctrl-Alt-Del.
Due to the slower seek and rotation times of a CD-ROM, execution off a CD is considerably slower than running
386BSD directly off a hard-disk drive.
MAKING SPACE ON YOUR HARD DISK FOR 386BSD: REPARTITIONING
The basic 386BSD system binaries (excluding X Windows) require at least 40 MBytes of free disk space in a free
DOS partition. If you wish to load X Windows as well, you need at least 80 MBytes. If you have more space on the
disk in a disk partition, 386BSD will automatically install more of itself into that space, such as the system source
code and additional packages such as WAIS. To load the complete system source and binaries contained on the
CD, you'll need at least 500 Mbytes available.
If you do not already haGe a free D)S partition on your hard disk, or if you have only a single primary DOS
partition covering your entire disk, you must first repartition your disk to make room for 386BSD. (For information
on repaaitioning your hard disk, consult the chapter on "Managing Disks" in the DOS Users Guide.) Correct repartioning
of your hard disk is critical for proper operation of the system.
1. First, backup any files you wish to save. Since MS-DOS stores information randomly all over the partition,
repartitioning will destroy the information on the disk.
2. Boot your MS-DOS system floppy
3. Using the MS-DOS fdisk command, delete the old partition, create a new smaller partition (saving at least 40
MBytes for 386BSD), and make it active.
4. High-level format the disk, using the MS-DOS format c:/s command.
5. Copy MSDOS back into this partition from the floppy, restoring any backup files.
You are now ready to install 386BSD. If you are already using a partitioning program such as Disk Manager,
you should setup the 386BSD partition as type Oxa5 (decimal 165), with a minimum partition size of 40 MBytes
to load and run the 3868SD binaries.
If you wish to deinstall 386BSD after installation, go back to MS-DOS and run the fdisk utility again to delete
the partition. Some versions of MS-MS require the master boot record to be rewritten as well, using the MS-DOS
fdisk /mbr command.
Other versions of MS-DOS require that the boot record lose its validity before being rewritten by fdisk. This is
accomplished by "cat-ing" a file to the "raw" partition d of the drive, cat /386bsd >/dev/rwdOd, then reformatting
under MS-DOS. If you are using an old version of MS-DOS, you can use this technique to delete the 386BSD parti-
tion as well. This technique usually works (not always, however). You should use the most up-to-date version of
MS-DOS (5.0 or greater).
USING A SECOND DISK
You may find it inconvenient to repartition your single DOS partition drive system. Alternatively, you can acquire a
second disk on which to install 386BSD, and partition it instead. If you use a drive different from the one on
which DOS resides, you will always have to boot 386BSD from DOS directly, since most PC ROM BIOS do not support
booting directly from secondary disks.
INSTALLING 386BSD ON YOUR HARD DISK
Once you have the 386BSD Sampler successfully running off the CD itself, you can install the 386BSD system in
your free DOS partition on your hard disk. In 386BSD, after the# prompt, type install and follow the interactive
installation instructions. To leave the system once it is installed, after the # prompt type reboot or press Ctrl-Alt-Del.
SWITCHING FROM DOS TO 386BSD
After installation, 386BSD can be booted up either automatically or manually with a large variety of options. We
suggest that you boot 386BSD from DOS (you cannot run this program from Windows or the DOS shell from
Windows). You may type in manually or add the following line to your DOS AUTOEXEC.BAT file:boot 386bsd
<386bsd root device>, where <386bsd root device> is the 3868SD device name on which you installed the system.
Valid examples include wd0a or wdla which correspond to the 386BSD partition on the C: and D: drives of a typi-
cal non-SCSI system, respectively, or as0a or as1a, which correspond to an Adaptec 154x-series controller SCSI
drive C: or D:, respectively. (Unlike most MS implementations, 386BSD is not restricted to the first two disk dri-
ves, but can make use of any of the seven units on a SCSI bus; for example, as0a to as6a).
If you are using DOS 6.x, you can add 386BSD to a menu of options used to configure CONFIG.SYS and
AUTOEXEC.BAT to select whether you wish to run 386BSD or DOS upon bootup. In this way, you can make use of
many systems on many different disk drives. Consult the "Using Multiple Configurations" section in the
"Configuring your System" chapter of the "DOS 6 User Guide" for further information on this procedure.
Networking with 386BSD
386BSD has an extensive set of networking facilities for use with the Internet. To use them, your PC must have a
network communications device, operational communications link to a network, valid Internet network name,
address number and address mask number, the Internet network name and address number of the router that
connects this computer's network to the Internet, an advertised route to the computer's network address from a
router on the Internet, the Internet network name and address number of the nameserver that connects this com-
puter's network domain name to the Intemet, and a router Internet network name and address number.
386BSD supports Ethernet cards with network device edO using the following parameters:
· Western Digital/SMC 8000/Elite series: port 0x280 irq 2 iomem Oxd0000
· Novell NE1000/NE2000: port0x300 irq 2
· 3Com 3C503: port 0x250 irq 2 iomem Oxd8000
Ethernet cards often experience interrupt conflicts with SCSI controllers and CD-ROMs. Usually, this problem
manifests itself when the system can find the Ethernet, but not use it (or when the device "times out"). You should
take care that all your controllers, Ethernet cards, and CD-ROMs have separate supported ports and interrupts
before installing 386BSD.
This is occasionally more difficult to determine than first appears, in that some "knock-off" or clone boards
decode a range of ports larger than specified by the original card. For example, some NE2000 clones decode 64
ports instead of the specified 32 ports. If another device, such as a SCSI controller, decodes the immediate port
after 32 (and inadvertently conflicts), than the SCSI controller and/or the ethernet controller will fail. Worse yet,
some cards (such as the NE2000) have special ports that will freeze the PC if accessed inadvertently (in the case
of a configuration conflict) causing the system to hang (usually at system bootup).
Troubleshooting and Diagnosing Problems in PC Configurations
The general approach to deciphering configuration problems is to minimize the system's conhguration (usually by
removing boards) and effectively isolate a configuration that does work. Next, you should permute the configuration
of the removed parts that don't work until the reassembled system does work. While this sounds complex, in practice
it usually is a single board or two at the root of the problem. In fact, the problem hardware can usually be pinpointed
because it is frequently the source of configuration problems with other software packages.
Sometimes the problem is rooted in hardware signal conflicts or undocumented characteristics of operation
which cannot be resolved by reconfiguration. In this instance, replacement with standard controller boards and
standard configurations are a way of coping with this problem. Often, the most popular configurations are the
ones that have historically the fewest hardware conflicts.
Questions you should ask if you suspect that you are experiencing a configuration problem include:
"Do I have a supported hardware configuration (It might be the case that your computer does not have the supported
hardware configuration at all. For example, your computer may have a different model controller, such as an Adaptec
1522 SCSI controller instead of the supported bus-mastering Adaptec 154x series. Or, the non- SCSI CD-ROM drive
may not be a supported model, but an entirely different brand.)
"Are the controller cards set at the factory- supplied configuration?" (If you have the supported configuration,
you may need to check if it is set to the factory- supplied configuration that the system expects. If this is not the
case, you must specify to the system just where the hardware is located. While the system could guess and guess
correctly 90 percent of the time, guessing itself might provoke configuration errors.) Sometimes systems are set
up with nonstandard controller port and interrupt assignments for arbitrary or outdated reasons (such as to handle
a conflicting fax board or other item)-- sometimes they are just assembled that way.
"Are there any other unsupported cards present as well?" (Sometimes a conflict may be present and not encountered.
some DOS hardware drivers silently ignore DMA (DRQ) and interrupt (IRQ) conflicts by time-out or polling techniques
that mask the problem. Non-standard boards may have such a conflict. Only by removing them might the problems
vanish. Even standard boards can hold surprises. Some VGA boards support IRQ2 (also known as IRQ9) as a
vertical retrace interrupt (as EGA cards do); using an ethernet card at IRQZ would then result in a conflict).
"What is the minimum configuration required for operation?" (By reducing the controllers to an absolute minimum,
a conflict can sometimes be avoided. For 386BSD, the system only requires a disk drive---one of floppy disk,
hard disk, or CD-ROM--and keyboard/display to run.)
"When adding back in cards, at what point does a problem occur?" (If the system becomes operational after
minimizing hardware, incrementally adding back in hardware may allow the problem board to be isolated.
However, the problem may also seem to just "disappear," which may indicate that a board was not seated correctly,
or that a conflict was eliminated by board rearrangement. Sometimes boards behave differently in 8-bit versus 16-bit
slots. Mechanical effects, like jumpers on a board being "shorted" by a metal frame member, can also occur.)
"Is there an alternative configuration that does not have the problem. (Finally, sometimes even the even the standard
configurations just won't work In these cases, a motherboard may have a undocument feature like a port or interrupt conflict, such as a
missing trace, unimplemented pin, or reservation for an OEM option. In this case, you might be forced to specify to
the system an alternate port/interrupt to which that you have changed the controller.)
Other Sources of 386BSD Information
For sales inquiries on the 386BSD Reference CD, please call (415) 655-4190.
INSTALLATION HELP
If you need help with the installation process only, (such as running setup and reading the help files in
Windows), please contact: Stan Barnes, (415) 655-4321 ext. 5710, Compuserve 71154,1113,
Internet: sbarnes@mfi.com.
LEARNING MORE ABOUT 386BSD
If you wish to learn more about the various elements of the 386BSD system beyond that contained on this CD,
there are many books available which detail many elements of UNIX-like systems, ranging from networking and
system administration to text editors such as vi (some reference suggestions are contained in the help files on this
CD). Since 386BSD releases have been available via the Internet to students and researchers for several years,
there is also a large base of users familiar with BSD and other UNIX-like systems throughout the world. Check
out your local PC-UNIX SIG or university computer club, or even start one of your own.
386BSD SYSTEM SOFTWARE SUPPORT
386BSD is an experimental research system intended for exploration and study. The inclusion of source code allows
the creative and industrious student of opaating systems to modify, correct, augment and otherwise alter the system
in any manner desired and this is made available for informational purposes only. Due to the unique nature of 386BSD
releases, we cannot provide "on-demand' support. If you have critical support needs, we suggest the purchase of a
commercial binary systems product from a major systems vendor, such as Microsoft or Sun Microsystems.
We do encourage feedback, however, on bug fixes, problems and solutions which arise during configuration, and
improvements to 386BSD. These changes may be incorporated back into the system, and made available once again
to the 386BSD audience, to further encourage use of this system. Please see the SOFTWARE.SUB file in 386BSD for
further information on software submissions. We do not accept proprietary or licensed code submissions for review.
If you are a qualified research or educational group using 386BSD in a research or educational project, we
may be able to provide limited technical assistance. Please contact Lynne Jolitz via written correspondence at the
address listed below.
386BSD INFORMATION HOTLINE
Information on upcoming 386BSD-related items, such as updates, releases, articles, and technical talks are available
via the "386BSD hotline" at 510420-0174. The hotline is updated as new information is available.
386BSD CORRESPONDENCE
If you have questions or comments regarding the articles, annotations and book excerpts on this CD, we'd like to
hear from you. Please send written correspondence to Lynne and Bill Jolitz c/o Dr. Dobb's Journal, Miller
Freeman, Inc., 411 Borel Avenue, Suite 100, San Mateo, CA 94402 USA.
Modular Kernel Design(With Lynne Greer Jolitz ). Starting with Release 1.0, the 386BSD kernel was radically changed. Utilizing the lessons learned in modular design, the kernel is transformed into independent modules that may be included into the kernel program simply by adding a line into a parameterized makefile describing a system (ex: odysseus.mk). This is novel work done for 386BSD Release 1.0.
So You Want to Write a UNIX Paper(With Lynne Greer Jolitz ). Essay on the trials and tribulations of submitting novel research papers.
CPU Kernel Facilities (i386/cpu.c)(With Lynne Greer Jolitz ). Detailed discussion of the design, trade-offs, and implementation of the 386BSD machine-independent code specific to the central processor unit (CPU) which implements at the bottom level of abstraction a variety of kernel facilities.
Process Creation (kern/fork.c)(With Lynne Greer Jolitz ). Detailed discussion of the design, trade-offs, and implementation of the 386BSD machine-independent code which implements the mechanism for replicating a process or thread, the basic concurrent objects in a POSIX-based system created explicitly by other user processes.
Process Termination (kern/exit.c)(With Lynne Greer Jolitz ). Detailed discussion of the design, trade-offs, and implementation of the 386BSD machine-independent code which implements the mechanism for terminating a process or thread. POSIX processes may be terminated explicitly by a function call from the process being terminated itself, or implicitly, either as a result of a processor exception or of a signal sent by another process.
Process Exceptions via Signals (kern/sig.c)(With Lynne Greer Jolitz ). Detailed discussion of the design, trade-offs, and implementation of the 386BSD machine-independent code which implements the POSIX signal mechanism for passing software interrupts to processes.
Process Protection (kern/cred.c)(With Lynne Greer Jolitz ). Detailed discussion of the design, trade-offs, and implementation of the 386BSD machine-independent code responsible for implementing the process protection mechanism.
Process Privileges (kern/priv.c)(With Lynne Greer Jolitz ). Detailed discussion of the design, trade-offs, and implementation of the 386BSD machine-independent code which provides the fine-grain definition for the use of privileges by other portions of the kernel code. It is in essence the gateway through which a privileged operation is permitted to be performed. This is novel work done for 386BSD Release 1.0.
Executable File Format Emulator (kern/execve.c)(With Lynne Greer Jolitz ). Detailed discussion of the design, trade-offs, and implementation of the 386BSD machine-independent code which implements the execution of program machine instruction binary files. It corresponds to the top layer of abstraction of a POSIX 1003.1-based system, by implementing the entire execve() functionality of that standard as a single system call. This is novel work done for 386BSD Release 1.0.
File Descriptors (kern/descrip.c)(With Lynne Greer Jolitz ). Detailed discussion of the design, trade-offs, and implementation of the 386BSD machine-independent code which implements the file and file descriptor mechanisms. It is through this mechanism that low level file-like objects are attached to the Posix program interface in the system calls which in turn implement all of the Posix functions used with files.
Kernel Memory Allocator (kern/malloc.c)(With Lynne Greer Jolitz ). Detailed discussion of the design, trade-offs, and implementation of the 386BSD machine-independent code which implements the primary dynamic memory allocator of the kernel. It is composed of three functions: malloc(), free(), and kmeminit().
Configuration in Kernel Design (kern/config.c)(With Lynne Greer Jolitz ). Detailed discussion of the design, trade-offs, and implementation of the 386BSD machine-independent code which configures the software modules of the kernel and reconciles a shared configuration file with the configuration scripts in every module. The configuration scripts themselves allow for symbolic reconfiguration of the kernel without altering its contents. This file also contains the device-independent device interfaces used by the kernel exclusively to access devices. This is novel work done for 386BSD Release 1.0.
Process Scheduling (kern/synch.c)(With Lynne Greer Jolitz ). Detailed discussion of the design, trade-offs, and implementation of the 386BSD machine-independent code which implements the blocking, unblocking, and scheduling mechanisms used in a multiprogramming system.
Memory Maps (vm/map.c)(With Lynne Greer Jolitz ). Detailed discussion of the design, trade-offs, and implementation of the 386BSD machine-independent code which implements a series of routines for managing map entries and performing map operations on the map entries as needed for the rest of the virtual memory system, and is analogous to a virtual address database of sorts.
Memory Objects (vm/object.c)(With Lynne Greer Jolitz ). Detailed discussion of the design, trade-offs, and implementation of the 386BSD machine-independent code which implements management of memory objects for the virtual memory system.
Paging Mechanism (vm/page.c)(With Lynne Greer Jolitz ). Detailed discussion of the design, trade-offs, and implementation of the 386BSD machine-independent code used to maintain the logical page abstraction vm_page.
Page Reclamation (vm/pageout.c)(With Lynne Greer Jolitz ). Detailed discussion of the design, trade-offs, and implementation of the 386BSD machine-independent code which implements the page reclamation daemon (the paging replacement function).
Fault Handling ( vm/fault.c)(With Lynne Greer Jolitz ). Detailed discussion of the design, trade-offs, and implementation of the 386BSD machine-independent code which implements the virtual memory system's address space fault handler mechanism, interpreting both hardware and software faults on a portion of the address space.
Filesystem Cache Management (fs/bio.c)(With Lynne Greer Jolitz ). Detailed discussion of the design, trade-offs, and implementation of the 386BSD machine-independent code used to implement the cache management of independent filesystems. It corresponds to the middle layer of abstraction of a filesystem which maintains the exchange of file data and metadata contents read or written to the external storage comprising the physical file.
Filesystem Lookup (fs/lookup.c)(With Lynne Greer Jolitz ). Detailed discussion of the design, trade-offs, and implementation of the 386BSD machine-independent code which is the initial point for transactions involving the filesystem. This file is responsible for turning file path names into the vnodes referenced by the rest of the virtual filesystem.
Assembly Entry and Primitives (i386/locore.c)(With Lynne Greer Jolitz ). Detailed discussion of the design, trade-offs, and implementation of the 386BSD file containing the initial assembly language that expands the core machine dependencies of the architecture of 386/486/Pentium processors. This is novel work done for 386BSD Release 1.0.
|