behappy00 / Hack-Linux-0.11

Ancient OS labs.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Hack-Linux-0.11

This repository records the code I wrote while reading the book Operating System Principles, Implementation and Practice (ISBN: 978-7-04-049245-3).

The textbook designs eight small labs, which are code assignments in the operating system course for undergraduates at HIT. Topics include booting process; interrupts; peripherals and drivers; file system; system calls; context switches; process scheduling; virtual memory and memory management; inter-process communication, etc.

Linux 0.11, a free minix-like kernel for 386-AT written by Linus Torvalds, is used to illustrate these topics.

Directory Structure

oslab.zip (oslab/): Linux 0.11 code and tools we needed to set up the development environment, such as Bochs 2.3.7 and GCC 3.4.

tmp/: Temporary files (mostly files about threads) which are not relevant to the labs.

Lab 6.Ext. Print paging status/: An interesting lab I designed.

The other eight directories correspond to the labs, each containing changed files and a markdown document which illustrates the lab.

You can use tools like rsync and cp to modify the original oslab . For example, on my computer, I start the hacked Linux 0.11 of Lab6.Ext on Bochs with following bash commands:

qiuhaoli@VM:~/tmp/oslab$ rsync -a ../Hack-Linux-0.11/Lab\ 6.Ext.\ Print\ paging\ status/linux-0.11/ ./linux-0.11/

qiuhaoli@VM:~/tmp/oslab$ sudo ./mount-hdc 

qiuhaoli@VM:~/tmp/oslab$ cd ./hdc/usr/include/

qiuhaoli@VM:~/tmp/oslab/hdc/usr/include$ sudo cp ../../../../Hack-Linux-0.11/Lab\ 6.Ext.\ Print\ paging\ status/hdc/usr/include/* .

qiuhaoli@VM:~/tmp/oslab/hdc/usr/include$ cd ../../..

qiuhaoli@VM:~/tmp/oslab$ cd linux-0.11/

qiuhaoli@VM:~/tmp/oslab/linux-0.11$ make && ../run

Acknowledgements

Sunner and students at HIT provided most of the resources to set up the development environment, especially the guides to code and debug. You can get them on cnblogs.com and gitbooks.io (written in Chinese).

oldlinux.org has provided many helpful materials related to the ancient Linux.

The Linux 0.11 kernel is supported by system software and libraries, many of which are provided by the GNU Project and the MINIX operating system.

About

Ancient OS labs.

License:GNU General Public License v2.0


Languages

Language:C 76.3%Language:Assembly 12.6%Language:Makefile 8.4%Language:Python 2.5%Language:Shell 0.2%