Skip to content

Commit bb12d13

Browse files
committed
Initial import
1 parent ec75f57 commit bb12d13

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

67 files changed

+4784
-0
lines changed

reports/final/latex/0Abstract.aux

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
\relax
2+
\@setckpt{0Abstract}{
3+
\setcounter{page}{3}
4+
\setcounter{equation}{0}
5+
\setcounter{enumi}{0}
6+
\setcounter{enumii}{0}
7+
\setcounter{enumiii}{0}
8+
\setcounter{enumiv}{0}
9+
\setcounter{footnote}{0}
10+
\setcounter{mpfootnote}{0}
11+
\setcounter{part}{0}
12+
\setcounter{chapter}{0}
13+
\setcounter{section}{0}
14+
\setcounter{subsection}{0}
15+
\setcounter{subsubsection}{0}
16+
\setcounter{paragraph}{0}
17+
\setcounter{subparagraph}{0}
18+
\setcounter{figure}{0}
19+
\setcounter{table}{0}
20+
\setcounter{parentequation}{0}
21+
\setcounter{LT@tables}{0}
22+
\setcounter{LT@chunks}{0}
23+
\setcounter{OptionTest}{0}
24+
\setcounter{caption@flags}{0}
25+
\setcounter{continuedfloat}{0}
26+
\setcounter{float@type}{4}
27+
\setcounter{subfigure}{0}
28+
\setcounter{lofdepth}{1}
29+
\setcounter{subtable}{0}
30+
\setcounter{lotdepth}{1}
31+
}

reports/final/latex/0Abstract.tex

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
% Thesis - Abstract
2+
\section*{\centering ABSTRACT}
3+
4+
\indent {
5+
Every computer science enthusiast is proficient in their operating system of choice. They may
6+
even know its underlying working from an old operating system course they took in college.
7+
However, it is usually the case that their knowledge and understanding is limited to theory and
8+
writing low-level system code is often considered an insurmountable challenge.
9+
This project hopes to change this attitude by developing a minimal yet functional 32-bit
10+
operating system that can be used in conjunction with theoretical teaching to promote and
11+
introduce systems programming. A minimal kernel guarantees easier to read source code (as
12+
opposed to the 27 million SLOC Linux kernel) and provides a gentler introduction to kernel
13+
development.
14+
The kernel will include a full keyboard and mouse driver and will have support for VGA
15+
text-mode and graphics. It will also contain a limited libc implementation with a streamlined
16+
build process.
17+
Additionally, this project will serve as an illustration for good development practices (code
18+
reuse, clean architecture, unit testing).
19+
The 32-bit kernel will be written in C with a little of assembly for the
20+
truly low-level aspects.
21+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
\relax
2+
\@setckpt{0Acknowledgment}{
3+
\setcounter{page}{2}
4+
\setcounter{equation}{0}
5+
\setcounter{enumi}{0}
6+
\setcounter{enumii}{0}
7+
\setcounter{enumiii}{0}
8+
\setcounter{enumiv}{0}
9+
\setcounter{footnote}{0}
10+
\setcounter{mpfootnote}{0}
11+
\setcounter{part}{0}
12+
\setcounter{chapter}{0}
13+
\setcounter{section}{0}
14+
\setcounter{subsection}{0}
15+
\setcounter{subsubsection}{0}
16+
\setcounter{paragraph}{0}
17+
\setcounter{subparagraph}{0}
18+
\setcounter{figure}{0}
19+
\setcounter{table}{0}
20+
\setcounter{parentequation}{0}
21+
\setcounter{LT@tables}{0}
22+
\setcounter{LT@chunks}{0}
23+
\setcounter{OptionTest}{0}
24+
\setcounter{caption@flags}{0}
25+
\setcounter{continuedfloat}{0}
26+
\setcounter{float@type}{4}
27+
\setcounter{subfigure}{0}
28+
\setcounter{lofdepth}{1}
29+
\setcounter{subtable}{0}
30+
\setcounter{lotdepth}{1}
31+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
% Thesis - Abstract
2+
\chapter*{\centering Acknowledgement}
3+
4+
\begin{flushleft}
5+
We would like to take this opportunity to extend our sincere gratitude to \textbf{Mr. Shibu VS} for guiding us through the process of this project.
6+
We would also like to thank the seminar coordinator, \textbf{Mrs. Gayathri KS}, for providing us with this opportunity which has allowed us to explore a domain which would otherwise be beyond the confines of our academic course.
7+
\end{flushleft}
8+
9+
\vspace{4.0 cm}
10+
11+
\begin{flushright}
12+
\textbf{Nihal Narayan} \\
13+
\textbf{Mathew Koshy} \\
14+
\textbf{Antony S. Chirayil} \\
15+
\textbf{R Midhun Suresh} \\
16+
\end{flushright}
17+
18+
19+
20+
21+
22+
23+
24+
25+
26+
27+
28+
29+
30+

reports/final/latex/0Nomenclature.aux

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
\relax
2+
\@setckpt{0Nomenclature}{
3+
\setcounter{page}{7}
4+
\setcounter{equation}{0}
5+
\setcounter{enumi}{0}
6+
\setcounter{enumii}{0}
7+
\setcounter{enumiii}{0}
8+
\setcounter{enumiv}{0}
9+
\setcounter{footnote}{0}
10+
\setcounter{mpfootnote}{0}
11+
\setcounter{part}{0}
12+
\setcounter{chapter}{0}
13+
\setcounter{section}{0}
14+
\setcounter{subsection}{0}
15+
\setcounter{subsubsection}{0}
16+
\setcounter{paragraph}{0}
17+
\setcounter{subparagraph}{0}
18+
\setcounter{figure}{0}
19+
\setcounter{table}{0}
20+
\setcounter{parentequation}{0}
21+
\setcounter{LT@tables}{0}
22+
\setcounter{LT@chunks}{0}
23+
\setcounter{OptionTest}{0}
24+
\setcounter{caption@flags}{0}
25+
\setcounter{continuedfloat}{0}
26+
\setcounter{float@type}{4}
27+
\setcounter{subfigure}{0}
28+
\setcounter{lofdepth}{1}
29+
\setcounter{subtable}{0}
30+
\setcounter{lotdepth}{1}
31+
}

reports/final/latex/0Nomenclature.tex

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
\section*{\centering Nomenclature}
2+
\vspace{1.5 cm}
3+
4+
\begin{flushleft}
5+
6+
7+
$GDT$ \hspace{1.0 cm} Global Descriptor Table\\
8+
$IDT$ \hspace{1.0 cm} Interrupt Descriptor Table\\
9+
$ISR$ \hspace{1.0 cm} Interrupt Service Routine\\
10+
$VGA$ \hspace{1.0 cm} Video Graphics Array\\
11+
$APM$ \hspace{1.0 cm} Advanced Power Management\\
12+
13+
14+
15+
\end{flushleft}

reports/final/latex/1Introduction.aux

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
\relax
2+
\@writefile{toc}{\contentsline {chapter}{\numberline {1}Introduction}{1}\protected@file@percent }
3+
\@writefile{lof}{\addvspace {10\p@ }}
4+
\@writefile{lot}{\addvspace {10\p@ }}
5+
\newlabel{chapter:Introduction}{{1}{1}}
6+
\@writefile{toc}{\contentsline {section}{\numberline {1.1}Existing Technologies}{2}\protected@file@percent }
7+
\newlabel{section:Existing Technologies}{{1.1}{2}}
8+
\@writefile{toc}{\contentsline {subsection}{\numberline {1.1.1}Linux}{2}\protected@file@percent }
9+
\@writefile{toc}{\contentsline {subsection}{\numberline {1.1.2}Windows Research Kernel}{2}\protected@file@percent }
10+
\@writefile{toc}{\contentsline {subsection}{\numberline {1.1.3}MINIX}{2}\protected@file@percent }
11+
\@writefile{toc}{\contentsline {section}{\numberline {1.2}Proposed System}{2}\protected@file@percent }
12+
\newlabel{section:Proposed System}{{1.2}{2}}
13+
\@writefile{toc}{\contentsline {section}{\numberline {1.3}Technology Stack}{3}\protected@file@percent }
14+
\newlabel{section:Technology Stack}{{1.3}{3}}
15+
\@setckpt{1Introduction}{
16+
\setcounter{page}{4}
17+
\setcounter{equation}{0}
18+
\setcounter{enumi}{5}
19+
\setcounter{enumii}{0}
20+
\setcounter{enumiii}{0}
21+
\setcounter{enumiv}{0}
22+
\setcounter{footnote}{0}
23+
\setcounter{mpfootnote}{0}
24+
\setcounter{part}{0}
25+
\setcounter{chapter}{1}
26+
\setcounter{section}{3}
27+
\setcounter{subsection}{0}
28+
\setcounter{subsubsection}{0}
29+
\setcounter{paragraph}{0}
30+
\setcounter{subparagraph}{0}
31+
\setcounter{figure}{0}
32+
\setcounter{table}{0}
33+
\setcounter{parentequation}{0}
34+
\setcounter{LT@tables}{0}
35+
\setcounter{LT@chunks}{0}
36+
\setcounter{OptionTest}{0}
37+
\setcounter{caption@flags}{0}
38+
\setcounter{continuedfloat}{0}
39+
\setcounter{float@type}{4}
40+
\setcounter{subfigure}{0}
41+
\setcounter{lofdepth}{1}
42+
\setcounter{subtable}{0}
43+
\setcounter{lotdepth}{1}
44+
}

reports/final/latex/1Introduction.tex

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
2+
\chapter{Introduction}\label{chapter:Introduction}
3+
4+
5+
\indent{
6+
The Kernel is the fundamental interconnect between hardware and software of a computer system. Writing a kernel (kernel programming) is considered to be a difficult endeavor because development has to start from a bare metal state. DAX OS is a minimal 32-bit hobbyist operating system that can be used to provide a gentle introduction to students who wish to explore the domain of systems programming. The project is open source and licensed under GNU General Public License v3.0 to ensure unrestricted access and complete transparency. DAX OS comes with a terminal driver, keyboard and mouse driver and basic memory management. The project also uses appropriate development practises such as unit-testing and version control.}
7+
8+
\newpage
9+
\section{Existing Technologies}\label{section:Existing Technologies}
10+
\subsection{Linux}
11+
Linux Kernel, created by Linus Torvals, is extremely large and contains about 27.8 million lines of code. It is free and open- source and compiling takes a long time. Kernel code is written in the C programming language with GCC compiler.
12+
13+
\subsection{Windows Research Kernel}
14+
Windows Research Kernel is not free and open-source. It is difficult to get access as one needs to get registered through the University. It is based on older windows XP / Server 2003 code. It is outdated and is no longer in development.
15+
16+
\subsection{MINIX}
17+
Minix microkernel is the best introductory kernel and is developed by Andrew S. Tanenbaum. However, the kernel has a micro-kernel design instead of the familiar monolithic kernel design. Traditional UNIX based kernels (eg: linux) follow monolithic design. It was created for educational purposes and it is now open-source.
18+
19+
\section{Proposed System}\label{section:Proposed System}
20+
We propose to build a 32-bit kernel that has the following functionality:\\
21+
\begin{enumerate}
22+
23+
\item \textbf{Keyboard Driver} \\
24+
Dax-OS will include a fully functional PS/2 keyboard driver. The PS/2 keyboard driver will convert scan-codes generated when the user presses a key on the keyboard to an integer character code. It must be noted that all keyboards practically used in modern day utilize the USB standard. We stick with the PS/2 protocol because the USB protocol is massive and difficult to implement. However there are practically no disadvantages from such a decision because most motherboards will emulate USB keyboards as PS/2 keyboards.
25+
26+
\item \textbf{Mouse Driver} \\
27+
Similar to the keyboard driver, the operating system will also contain a functional mouse driver. The mouse can be utilized to move the terminal window up and down.
28+
29+
\item \textbf{Terminal Display Driver} \\
30+
DaxOS is a terminal based operating system i.e it does not support windowing.
31+
The display support will be implemented using VGA text-mode and real-mode.
32+
33+
\item \textbf{Basic Memory Management} \\
34+
DaxOS will use a flat memory model. Since it is an 32-bit operating system, it will support at most 4GB of addressable memory. A custom memory allocator will also be implemented.
35+
36+
\item \textbf{Graphics Support} \\
37+
DaxOS will provide basic graphics capability using the above mentioned VGA real-mode to draw primitive shapes with the available 16 colors.
38+
\end{enumerate}
39+
40+
\section{Technology Stack} \label{section:Technology Stack}
41+
The bulk of the operating system is written in the C programming language. Certain functionality such as writing data to ports and loading tables (IDT, GDT) are implemented using either GCC inline assembly or using normal x86 assembly.
42+
43+
The project uses the GCC cross-compiler \& binutils to target the generic i686 platform; which is a generic 32-bit Intel P6 architecture. The GNU Assembler and Linker are also used. The assembly syntax style used is AT\&T.
44+
45+
The entire compilation process is driven using GNU Make which uses Makefiles to build the project. The compilation is initiated using BASH shell scripts. The kernel is tested using the qemu-i386 emulator and is developed on a stable Xubuntu distribution.
46+
47+
DAX OS uses git as its version control system of choice. The git repository is uploaded on Github and every new feature is developed on its own separate branch. Team communication and coordination are actualized using discord with Github integration enabled.
48+
49+
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
\relax
2+
\@writefile{toc}{\contentsline {chapter}{\numberline {2}Design Diagrams}{4}\protected@file@percent }
3+
\@writefile{lof}{\addvspace {10\p@ }}
4+
\@writefile{lot}{\addvspace {10\p@ }}
5+
\newlabel{chapter:Design Diagrams}{{2}{4}}
6+
\@writefile{toc}{\contentsline {section}{\numberline {2.1}Use-case diagram}{4}\protected@file@percent }
7+
\@writefile{lof}{\contentsline {figure}{\numberline {2.1}{\ignorespaces Use Case Diagram\relax }}{5}\protected@file@percent }
8+
\@writefile{toc}{\contentsline {section}{\numberline {2.2}Activity Diagram}{6}\protected@file@percent }
9+
\@writefile{lof}{\contentsline {figure}{\numberline {2.2}{\ignorespaces Activity Diagram\relax }}{8}\protected@file@percent }
10+
\@writefile{toc}{\contentsline {section}{\numberline {2.3}Sequence Diagram}{9}\protected@file@percent }
11+
\@writefile{toc}{\contentsline {subsection}{\numberline {2.3.1}Keyboard Driver}{9}\protected@file@percent }
12+
\@writefile{lof}{\contentsline {figure}{\numberline {2.3}{\ignorespaces Sequence Diagram for keyboard driver\relax }}{10}\protected@file@percent }
13+
\@writefile{toc}{\contentsline {subsection}{\numberline {2.3.2}User Command}{10}\protected@file@percent }
14+
\@writefile{lof}{\contentsline {figure}{\numberline {2.4}{\ignorespaces Sequence Diagram for user command\relax }}{11}\protected@file@percent }
15+
\@writefile{toc}{\contentsline {subsection}{\numberline {2.3.3}Shutdown}{12}\protected@file@percent }
16+
\@writefile{lof}{\contentsline {figure}{\numberline {2.5}{\ignorespaces Sequence Diagram for system shutdown\relax }}{12}\protected@file@percent }
17+
\@setckpt{2DesignDiagrams}{
18+
\setcounter{page}{13}
19+
\setcounter{equation}{0}
20+
\setcounter{enumi}{3}
21+
\setcounter{enumii}{6}
22+
\setcounter{enumiii}{0}
23+
\setcounter{enumiv}{0}
24+
\setcounter{footnote}{0}
25+
\setcounter{mpfootnote}{0}
26+
\setcounter{part}{0}
27+
\setcounter{chapter}{2}
28+
\setcounter{section}{3}
29+
\setcounter{subsection}{3}
30+
\setcounter{subsubsection}{0}
31+
\setcounter{paragraph}{0}
32+
\setcounter{subparagraph}{0}
33+
\setcounter{figure}{5}
34+
\setcounter{table}{0}
35+
\setcounter{parentequation}{0}
36+
\setcounter{LT@tables}{0}
37+
\setcounter{LT@chunks}{0}
38+
\setcounter{OptionTest}{0}
39+
\setcounter{caption@flags}{0}
40+
\setcounter{continuedfloat}{0}
41+
\setcounter{float@type}{4}
42+
\setcounter{subfigure}{0}
43+
\setcounter{lofdepth}{1}
44+
\setcounter{subtable}{0}
45+
\setcounter{lotdepth}{1}
46+
}

0 commit comments

Comments
 (0)