summaryrefslogtreecommitdiffhomepage
path: root/docs/tex
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@nekernel.org>2025-12-17 07:45:21 +0100
committerAmlal El Mahrouss <amlal@nekernel.org>2025-12-17 07:45:21 +0100
commite2b71e8459a501e441da6fa3b7aee19ca1cfe043 (patch)
tree6d200e374ee32c67869fee52d1659280aa54e29d /docs/tex
parent50acb6f89064aa21e50520b2c4ccf9e19ef2e202 (diff)
chore: replace cps.tex with wg02.tex
Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
Diffstat (limited to 'docs/tex')
-rw-r--r--docs/tex/NOTICE.md6
-rw-r--r--docs/tex/core_process_scheduler.tex128
2 files changed, 5 insertions, 129 deletions
diff --git a/docs/tex/NOTICE.md b/docs/tex/NOTICE.md
index c4015afd..6b5846f6 100644
--- a/docs/tex/NOTICE.md
+++ b/docs/tex/NOTICE.md
@@ -1,6 +1,10 @@
# Notice
+## CoreProcessScheduler has moved!
+
+The CPS is now part of WG02, for more information clone the following repository: (https://github.com/nekernel-org/draft)[https://github.com/nekernel-org/draft].
+
## Recommended:
- `pdflatex` is recommended for this matter.
-- You can use `overleaf` to edit the LaTeX files too. \ No newline at end of file
+- You can use `overleaf` to edit the LaTeX files too.
diff --git a/docs/tex/core_process_scheduler.tex b/docs/tex/core_process_scheduler.tex
deleted file mode 100644
index 71c1db9e..00000000
--- a/docs/tex/core_process_scheduler.tex
+++ /dev/null
@@ -1,128 +0,0 @@
-\documentclass{article}
-\usepackage{graphicx}
-\usepackage{hyperref}
-
-\title{CoreProcessScheduler: Technical Documentation}
-\author{Amlal El Mahrouss}
-\date{\today}
-
-\begin{document}
-
-\maketitle
-
-\section{Abstract}
-
-{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}
-
-{The CoreProcessScheduler (now referred as CPS) serves as the intermediate foundal 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}
-
-{Processes are given CPU time affinity hints using an affinity kind type, these hints help the scheduler run or adjust the current process.}
-
-\subsection{Sample Code \#1}
-
-{The following sample is C++ code.} {The smaller the value, the more critical the process.}
-
-\begin{verbatim}
-enum struct AffinityKind : Int32 {
- kRealTime = 100,
- kVeryHigh = 150,
- kHigh = 200,
- kStandard = 1000,
- kLowUsage = 1500,
- kVeryLowUsage = 2000,
-};
-\end{verbatim}
-
-\section{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.}
-
-\subsection{Sample Code \#2}
-
-{The following sample is used to hold team metadata.} {This is part of the NeKernel source tree.}
-
-\begin{verbatim}
-class UserProcessTeam final {
- public:
- explicit UserProcessTeam();
- ~UserProcessTeam() = default;
-
- NE_COPY_DEFAULT(UserProcessTeam)
-
- Array<UserProcess, kSchedProcessLimitPerTeam>& AsArray();
- Ref<UserProcess>& AsRef();
- ProcessID& Id() noexcept;
-
- public:
- UserProcessArray mProcessList;
- UserProcessRef mCurrentProcess;
- ProcessID mTeamId{0};
- ProcessID mProcessCur{0};
-};
-
-\end{verbatim}
-
-\section{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.}
-
-{This approach helps separate concerns and give modularity to the system, as the image and process structure are not mixed together.}
-
-\subsection{Sample Code \#3}
-
-{The following sample is a C++ container used to hold process data and metadata.} {This is part of the NeKernel source tree.}
-
-\begin{verbatim}
-struct PROCESS_IMAGE final {
- explicit PROCESS_IMAGE() = default;
-
- private:
- friend UserProcess;
- friend KernelTask;
-
- friend class UserProcessScheduler;
-
- ImagePtr fCode;
- ImagePtr fBlob;
-
- public:
- Bool HasCode() const { return this->fCode != nullptr; }
-
- Bool HasImage() const { return this->fBlob != nullptr; }
-
- ErrorOr<ImagePtr> LeakImage() {
- if (this->fCode) {
- return ErrorOr<ImagePtr>{this->fCode};
- }
-
- return ErrorOr<ImagePtr>{kErrorInvalidData};
- }
-
- ErrorOr<ImagePtr> LeakBlob() {
- if (this->fBlob) {
- return ErrorOr<ImagePtr>{this->fBlob};
- }
-
- return ErrorOr<ImagePtr>{kErrorInvalidData};
- }
-};
-
-\end{verbatim}
-
-\section{Conclusion}
-
-{The CoreProcessScheduler is a piece of systems design with robust design and useful cases, although useful in desktop/server cases, It may not be suited for every other tasks.}
-
-{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}
-
-{NeKernel}: \href{https://github.com/nekernel-org/nekernel}{NeKernel}
-
-{CoreProcessScheduler}: \href{https://github.com/nekernel-org/nekernel/blob/dev/src/kernel/KernelKit/CoreProcessScheduler.h}{CoreProcessScheduler}
-
-\end{document} \ No newline at end of file