diff options
| author | Amlal El Mahrouss <amlal@nekernel.org> | 2025-12-07 16:12:00 -0500 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal@nekernel.org> | 2025-12-07 16:19:09 -0500 |
| commit | 2834e23727a693e289202f7f86af6c84923af71a (patch) | |
| tree | 9fd954b67d32580e1b3db925a04218a062fff7b5 /source | |
| parent | 64875ef4c38131cb8b728f96bad3eb255b99a655 (diff) | |
chore: wg01 and wg02 improvements.
Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
Diffstat (limited to 'source')
| -rw-r--r-- | source/INDEX.md | 1 | ||||
| -rw-r--r-- | source/wg01/wg01.tex | 25 | ||||
| -rw-r--r-- | source/wg02/wg02.tex | 12 | ||||
| -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 |
