-
Notifications
You must be signed in to change notification settings - Fork 0
jakeleichtling/THEYNIX
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Hello, and welcome to THEYNIX! This is a brief guide to our implementation of the Yalnix operating system. ------------------------------ FILES ------------------------------ CVar.c Implementation of helper methods for condition variable initiation and reclamation. CVar.h Struct and function prototypes for condition variables. Kernel.c Kernel startup function implementations (i.e. SetKernelData() and KernelStart()). Also contains code for kernel heap management (SetKernelBrk()) and context switching. Some helper function implementations found here are used both at kernel startup, in creating the init and idle processes, and forking. Kernel.h Global variables for the kernel and prototypes for helper methods used throughout kernel. List.c Linked list implementation of a list API used throughout the operating system for purposes such as process queues and synchronization data structure book keeping. List.h Structs and function prototypes for the list API. LoadProgram.c Adapted from template.c. Implementation of a function for initializing a process's user address space with the program text and arguments. LoadProgram.h Function prototype for LoadProgram(). Lock.c Implemenation of helper methods for lock initiation and reclamation. Lock.h Struct and function prototypes for locks. Log.h Compiler definitions for kill signals, return values (i.e. SUCCESS), and logging levels. Makefile Compilation scripts for the operating system. PCB.c Function implementations for creating new PCBs with their internal data structures initialized and, optionally, the kernel stack frames allocated. PCB.h PCB struct and function prototypes. PMem.c Function implementation for managing physical memory, i.e. initializing the data structure for keeping track of frames and allocating/freeing these frames. PMem.h Typedef and function prototypes for physical memory management. Pipe.c Implementations of helper functions for initializing, destroying, writing to, and reading from pipes. Pipe.h Struct and function prototypes for pipes. README Did you mean "README"? SystemCalls.c Implementation for all of the system call functions. SystemCalls.h Prototypes for all of the system call functions. Traps.c Function implementations for the different trap vector calls. Additionally, implementation of TrapTableInit() to initialize the trap table vector with pointers to these functions. Traps.h Function prototype for TrapTableInit(). Tty.c Implementation for TTY init function. Tty.h Structs and function prototype for TTYs. VMem.c Implementations of helper functions for managing virtual memory, such as creating page tables, mapping new pages to allocated frames, unmapping pages and freeing the corresponding frames, and changing page protections. VMem.h Function prototypes for managing virtual memory. cs58_tests/ Programs written by Team THEYNIX for testing our OS. idle.c The idle program consisting of a Pause() loop. In Kernel.c, the compiled idle program is loaded into an idle process that is run when the ready queue is empty. include/ Header files provided in the Yalnix framework. theynix_tests/ Programs written by the CS58 staff to test our OS. ------------------------------ TESTING ------------------------------ Our implementation of the Yalnix operating system is tested thoroughly for functionality and durability under stress by the programs implemented in the cs58_tests and theynix_tests directories. In theynix_tests there is a README file describing the different functionalities that we have tested and which programs test each case. When running our tests, the output is designed to be most useful/distilled with user trace level 0 and kernel trace level 1. When running the OS not for testing purposes, one should specify kernel trace level 0 so that only problems resulting in OS termination are printed. Note: You may encounter assert statements throughout our codebase. We used these as part of the development process to validate invariants that should always be true throughout the execution of the operating system. Provided the OS implementation is correct, the assert statements should have no effect on the OS regardless of what user code is executed. The OS functionality should be unchanged by compiling without them. Best, Team THEYNIX Jake Leichtling '14 Derek Salama '14
About
CS 58
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published