1
0

thesis: Apply proofreading suggestions

This commit is contained in:
2025-08-19 12:35:54 +02:00
parent 30121e4543
commit 8712bdc461
7 changed files with 32 additions and 33 deletions

View File

@@ -11,7 +11,7 @@ This chapter gives a general overview about what the motivation and goal for thi
When teaching students about Operating Systems, their interfaces, and standard libraries, C is still a widely used language.
Especially when using Linux.
Therefore, it is obvious, why many university courses still require students to write their assignments and exams in C\@.
The problem when trying to verify, if students correctly implemented their assignment is that low-level OS constructs (like semaphores, pipes, sockets, memory management) make it hard to run automated tests, because the testing system needs to keep track, set up, and verify the usage of these resources.
The problem when trying to verify whether students have correctly implemented their assignment is that low-level OS constructs (like semaphores, pipes, sockets, memory management) make it hard to run automated tests, because the testing system needs to keep track, set up, and verify the usage of these resources.
The goal of this work was to find a way to easily intercept system or function calls and to verify if students called the right functions with the right arguments at the right time.
This restriction in scope allows focusing on simple binary programs without having to think about complex or I/O heavy programs.
@@ -36,7 +36,7 @@ Functions are used to structure programs, reuse functionality, or expose functio
Other languages than C differentiate between functions, methods, procedures, and so on.
A function written in the source code is almost always compiled to a function in the resulting binary.
Intercepting calls to functions would one allow seeing the name of the function, arguments, return value, and return address.
Intercepting calls to functions allows one to see the function name, arguments, return value, and return address.
\subsection{System Calls}\label{subsec:system-calls}
@@ -46,12 +46,12 @@ Many operations on a modern operating system require special privileges, which a
By invoking a system call, the (user-space) process hands control over to the (privileged) kernel and requests an operation to be performed.
\cite[Chapter~10]{linuxkernel}
How exactly these system calls work is architecture and system specific.
How exactly these system calls work depends on the architecture and operating system.
But generally, the process places the system call number and its arguments in defined registers and then executes a special system call opcode.
Then the kernel executes the requested operation and places the return value inside another register, and lastly hands the execution back to the process.
\cite[Chapter~10]{linuxkernel}
Intercepting calls to system calls would one allow seeing the system call number, arguments, and return value.
Intercepting calls to system calls allows one to see the system call number, arguments, and return value.
One has to keep in mind that many system-related functionalities are not in fact translated to system calls one-to-one.
For example, \texttt{malloc}~\cite{malloc.3} has no dedicated system call, it is managed by the C standard library internally.
Many system calls have corresponding wrapper functions in the C standard library (like \texttt{open}, \texttt{close}, \texttt{sem\_wait}).