summaryrefslogtreecommitdiffhomepage
path: root/source
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@nekernel.org>2025-12-07 16:12:00 -0500
committerAmlal El Mahrouss <amlal@nekernel.org>2025-12-07 16:19:09 -0500
commit2834e23727a693e289202f7f86af6c84923af71a (patch)
tree9fd954b67d32580e1b3db925a04218a062fff7b5 /source
parent64875ef4c38131cb8b728f96bad3eb255b99a655 (diff)
chore: wg01 and wg02 improvements.
Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
Diffstat (limited to 'source')
-rw-r--r--source/INDEX.md1
-rw-r--r--source/wg01/wg01.tex25
-rw-r--r--source/wg02/wg02.tex12
-rw-r--r--source/wg03/.gitkeep (renamed from source/wg03/.keep)0
4 files changed, 21 insertions, 17 deletions
diff --git a/source/INDEX.md b/source/INDEX.md
index 5ff9a1e..cbea680 100644
--- a/source/INDEX.md
+++ b/source/INDEX.md
@@ -7,3 +7,4 @@ This file indexes the different working groups and their purpose.
- WG01: `Kernel Architecture Group.`
- WG02: `Multi-Tasking Group.`
- WG03: `Compiler Design Group.`
+- WG04-SPACE-RF: `DSL Group.` \ No newline at end of file
diff --git a/source/wg01/wg01.tex b/source/wg01/wg01.tex
index f116cb8..7e9a661 100644
--- a/source/wg01/wg01.tex
+++ b/source/wg01/wg01.tex
@@ -43,9 +43,9 @@
\maketitle
-\section{Abstract}
+\section{Introduction}
{
-Many and most kernels have been shipped using the C programming language.\\
+Many Operating Systems Kernels have been shipped using the C programming language.\\
And some of them like EKA2 uses the C++ programming language. Although notoriously difficult, one may still adapt to those constraints in order to deliver one such operating system kernel. \\
That is the reason that most production-grade kernels (Linux, XNU, and NT) are mostly written in C. With a higher-level subset in C++. \\
However, when correctly applying C++ principles to kernel development, one makes the development much more easier to pull off.
@@ -60,9 +60,9 @@ A C++ Kernel may instead make use of compile-time features of C++ alongside a ti
\subsection{Part Two: Constexpr and Friends}
{
-\textit{One may avoid V-tables or runtime dependent features when possible.}
-While focusing instead on meta-programming and compile-time features offered by C++. For example one may use templates to implement a scheduling policy algorithm. \\
-One example of such implementation may be: \\
+One may avoid V-tables or runtime when possible. While focusing instead on meta-programming and compile-time features offered by C++.
+For example one may use templates to implement a scheduling policy algorithm.
+One example of such implementation may be:
(Keep in mind that the code has not been tested on production systems, use it at your own risk!)
@@ -89,7 +89,7 @@ struct MemoryTree final {
\end{lstlisting}
As you see, two structures leverages the `constexpr' keyword to make sure
-no bugs or panic occur at runtime because of a misuse of a system resource. \\
+no bugs or panic occur at runtime because of a misuse of a system resource.
Which is why the constexpr keyword is very powerful here, we avoid the many pitfalls of writing (and hoping) that the C version will be well-thought enough so that we can catch such bugs later.
@@ -141,7 +141,7 @@ public:
virtual void doImpl()
{
- std::cout << "doImpl\n";
+ kout << "doImpl()\r";
}
};
@@ -168,12 +168,14 @@ Consider the following questions:
\begin{itemize}
\item[A:] Is this a protocol/concept that can be extended to other similar protocols/concepts?
-\item[B:] Can I do this without too much trade-off costs?
-\item[C:] Can I do this without using V-Tables?
+\item[B:] Is this doable without too much trade-off costs?
+\item[C:] Is this doable without V-Tables?
\end{itemize}
}
-When 2/3 of those questions fail, you should consider finding another solution to your problem, as it surely has an equivalent without V-Tables.
+If 2/3 of those questions fail,
+you should consider finding another solution to your problem.
+As it surely has an equivalent without the problematic questions.
\section{Conclusion}
{
@@ -183,10 +185,11 @@ A reference implementation of this paper exists, It's called NeKernel.org, avail
I am looking forward to any questions or inquiries at: amlal@nekernel.org.
}
-\section{References}
+\subsection{References}
{
\begin{itemize}
\item[EKA2:] \href{https://en.wikipedia.org/wiki/EKA2}{Link}
+ \item[XNU:] \href{https://en.wikipedia.org/wiki/XNU}{Link}
\item[NeKernel.org:] \href{https://nekernel.org}{Link}
\item[Virtual Method Tables:] \href{https://en.wikipedia.org/wiki/Virtual_method_table}{Link}
\end{itemize}
diff --git a/source/wg02/wg02.tex b/source/wg02/wg02.tex
index b34f233..715102a 100644
--- a/source/wg02/wg02.tex
+++ b/source/wg02/wg02.tex
@@ -43,15 +43,15 @@
\maketitle
-\section{Abstract}
+\section{Introduction}
{The CoreProcessScheduler governs how the scheduling backend and policy of the kernel works, It is the common gateway for schedulers inside NeKernel based systems.}
-\section{Overview}
+\section{Abstract}
{The CoreProcessScheduler (now referred as CPS) serves as the foundation between the scheduler backend and kernel.} {It takes care of process life-cycle management, team-based process grouping, and affinity-based CPU based allocation to mention the least.}
-\section{The Affinity System}
+\subsection{The Affinity System}
{Processes are given CPU time affinity hints using an affinity kind type, these hints help the scheduler run or adjust the current process.}
@@ -70,7 +70,7 @@ enum class AffinityKind : Int32 {
};
\end{lstlisting}
-\section{The Team System}
+\subsection{The Team System}
{The team system holds process metadata for the backend scheduler to run on. It holds methods and fields for backend specific operations.} {One implementation of such team is the UserProcessTeam object inside NeKernel.}
@@ -98,7 +98,7 @@ class UserProcessTeam final {
};
\end{lstlisting}
-\section{The Process Image System}
+\subsection{The Process Image System}
{The process image container is a design pattern made to contain process data and metadata, its purpose comes from the lack of mainstream operating systems of such ability to hold metadata.}
@@ -152,7 +152,7 @@ struct PROCESS_IMAGE final {
{And while one scheduler backend (such as the UserProcessScheduler) takes care of user process scheduling and fairness, the CoreProcessScheduler takes care of the foundation for those systems.}
-\section{References}
+\subsection{References}
{
\begin{itemize}
diff --git a/source/wg03/.keep b/source/wg03/.gitkeep
index e69de29..e69de29 100644
--- a/source/wg03/.keep
+++ b/source/wg03/.gitkeep