Skip to content

CreeperLin/System2019

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 

Repository files navigation

System2019

Project resources for System(II) 2019 Spring

Stay tuned

Syncing with this repo

on top of your own repository, run

git pull https://github.com/CreeperLin/System2019
git submodule update

Assignments

PintOS

A small and simple operating system that runs on x86 machines and simulators.

Prerequisites

  • GCC with 80x86 cross-compiler
  • Perl
  • GNU make
  • GDB
  • QEMU: fast x86 simulation with binary translation, but only supports real-time mode
  • Bochs: slower simulation but supports real-time and reproducible mode

To install Bochs, make sure the following library is installed:

  • libncurses5-dev
  • libx11-dev
  • libxrandr-dev

Then under src/misc, run

sudo ./bochs-2.6.2-build.sh /usr/

Usage

First build the pintos utility tools. Under src/utils/,

make
export PATH=$PATH:`pwd`

make sure it is in your PATH environment variable before continuing

The following tools are available:

  • pintos: utility for running Pintos in a simulator
  • pintos-gdb: launch gdb to debug the kernel
  • backtrace: converting raw addresses into symbolic backtraces

In each project directory (threads, userprog, vm, filesys),

to build the project, run

make

the following files can be found in folder 'build/'

  • kernel.o: compiled kernel, used for debugging
  • kernel.bin: compiled kernel, stripped
  • kernel.asm: decompilation of kernel
  • kernel.img: image of boot partition
  • loader.bin: compiled bootloader
  • loader.asm: decompilation of bootloader
  • pintos.sh: wrapper script for running pintos

to run pintos in simulation (here using Bochs and no VGA), run

pintos -v --bochs

to run all the tests and see your grade, run

make check

to run a single test, make the '.result' file from 'build/', e.g.

make tests/threads/alarm-multiple.result

or use the wrapper script provided

./pintos.sh run alarm-multiple

to debug a single test,

make tests/threads/alarm-multiple.result PINTOSOPTS='--gdb' VERBOSE=1

or use the wrapper script provided

./pintos.sh debug alarm-multiple

in a new terminal still under 'build/', run

pintos-gdb kernel.o

and in the gdb prompt, run

debugpintos

the gdb is now connected to the kernel

Projects

Threads

See JHU CS 318 Project 1 for details.

  • alarm clock
  • priority scheduling
  • advanced scheduler

User Programs

See JHU CS 318 Project 2 for details.

Virtual Memory

See JHU CS 318 Project 3 for details.

File Systems

(bonus)

See JHU CS 318 Project 4 for details.

Additional features

(bonus)

Documents

You need to write documents on your project.

Either documents on each part or documents on the project as a whole are acceptable.

Your documents must include:

  • name of contributors and their contributions
  • length of time spent on each labs

Your documents may include:

  • design for each part of the project.
  • advantage & disadvantages of your design.
  • difficulties & solutions

Submission

For each project group:

  • Fork or pull this repository to your private github repository.
  • Add creeperlin as collabrator and grant read permission.
  • Fill up the group infromation in this form.
  • make sure your repo has a pintos source folder named 'src', and put your documents in top-level directory or 'docs' folder.

References

JHU CS 318 Pintos Project

Original JHU repository

Stanford CS 140 Pintos Project

Notes

  • Get github student pack to create unlimited private repositories.

About

Project resources for System(II) 2019 Spring

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages