<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Operating-Systems on P01NT</title><link>https://outofsrvc.github.io/en/tags/operating-systems/</link><description>Recent content in Operating-Systems on P01NT</description><generator>Hugo</generator><language>en</language><lastBuildDate>Wed, 26 Aug 2026 01:30:00 +0300</lastBuildDate><atom:link href="https://outofsrvc.github.io/en/tags/operating-systems/index.xml" rel="self" type="application/rss+xml"/><item><title>The Basic Structure of Operating Systems</title><link>https://outofsrvc.github.io/en/os/os-0x0/</link><pubDate>Tue, 25 Aug 2026 22:00:00 +0300</pubDate><guid>https://outofsrvc.github.io/en/os/os-0x0/</guid><description>&lt;p>بسم الله&lt;/p>
&lt;p>Peace be upon you. Today I would like to talk with you about the structural foundation of operating systems in general, attempting to cover the following points:&lt;/p>
&lt;ol>
&lt;li>The Von Neumann architecture.&lt;/li>
&lt;li>The central tasks of an operating system (OS Central Tasks).&lt;/li>
&lt;/ol>
&lt;p>Let us begin.&lt;/p>
&lt;h2 id="what-is-an-operating-system">What Is an Operating System?&lt;/h2>
&lt;p>&lt;img alt="The OS between user and hardware" decoding="async" loading="lazy" src="https://outofsrvc.github.io/assets/img/os/os-0x0/intro-os.png">&lt;/p>
&lt;p>Everyone living in this modern, technology-rich age has dealt with an operating system one way or another, and everyone has heard the term &amp;ldquo;Operating Systems&amp;rdquo; or &amp;ldquo;OS&amp;rdquo;. But!&lt;/p></description></item><item><title>Introduction to Operating Systems</title><link>https://outofsrvc.github.io/en/os/os-0x1/</link><pubDate>Tue, 25 Aug 2026 23:00:00 +0300</pubDate><guid>https://outofsrvc.github.io/en/os/os-0x1/</guid><description>&lt;p>بسم الله&lt;/p>
&lt;p>Peace be upon you.&lt;/p>
&lt;p>This series will cover the following topics:&lt;/p>
&lt;ol>
&lt;li>Processes.&lt;/li>
&lt;li>Memory Management.&lt;/li>
&lt;li>File Systems.&lt;/li>
&lt;li>Scheduling.&lt;/li>
&lt;li>Interrupts.&lt;/li>
&lt;/ol>
&lt;p>As usual, this series will not be dull theory alone; it will include practical examples in C and diagrams to aid understanding. I wanted to lay out what you will take from this series so readers know what awaits them. May God grant success and guidance.&lt;/p>
&lt;p>It is recommended before starting this series to go through the &lt;a href="https://outofsrvc.github.io/en/arch/">Computer Architecture &amp;amp; Organization series&lt;/a> on the blog.&lt;/p></description></item><item><title>Interrupts</title><link>https://outofsrvc.github.io/en/os/os-0x2/</link><pubDate>Tue, 25 Aug 2026 23:30:00 +0300</pubDate><guid>https://outofsrvc.github.io/en/os/os-0x2/</guid><description>&lt;p>بسم الله&lt;/p>
&lt;p>Having learned about the structure of operating systems, this article will — God willing — serve as your reference for understanding interrupts.&lt;/p>
&lt;p>Our method in this series is to tie examples to the terms and concepts we take on, and you will find illustrative images and code to deepen understanding.&lt;/p>
&lt;h2 id="computer-system-organization">Computer-System Organization&lt;/h2>
&lt;p>Before diving into our subject, we must understand how a computer system is organized — main concepts do not stand without foundations to build understanding upon; no one sells fish to someone standing on the seashore.&lt;/p></description></item><item><title>Processes &amp; Threads</title><link>https://outofsrvc.github.io/en/os/os-0x3/</link><pubDate>Wed, 26 Aug 2026 00:00:00 +0300</pubDate><guid>https://outofsrvc.github.io/en/os/os-0x3/</guid><description>&lt;p>بسم الله&lt;/p>
&lt;p>This article is dedicated to Processes &amp;amp; Threads, which exist in every operating system.&lt;/p>
&lt;h2 id="processes">Processes&lt;/h2>
&lt;p>Briefly, a process is a program in execution.&lt;/p>
&lt;p>A process has a structure inside the kernel called KProcess, or the Process Control Block (PCB), which the kernel uses to control this process&amp;rsquo;s operations.&lt;/p>
&lt;p>The PCB contains many fields; the most important:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Process State:&lt;/strong> the state of the process.&lt;/li>
&lt;li>&lt;strong>Process Number:&lt;/strong> the process&amp;rsquo;s number.&lt;/li>
&lt;li>&lt;strong>Program Counter:&lt;/strong> the program counter.&lt;/li>
&lt;li>&lt;strong>Registers:&lt;/strong> the registers belonging to the process.&lt;/li>
&lt;/ol>
&lt;p>&lt;img alt="PCB structure and fields" decoding="async" loading="lazy" src="https://outofsrvc.github.io/assets/img/os/os-0x3/pcb-fields.png">
&lt;em>Figure (1): The process control block&lt;/em>&lt;/p></description></item><item><title>Scheduling</title><link>https://outofsrvc.github.io/en/os/os-0x4/</link><pubDate>Wed, 26 Aug 2026 00:30:00 +0300</pubDate><guid>https://outofsrvc.github.io/en/os/os-0x4/</guid><description>&lt;p>بسم الله&lt;/p>
&lt;p>In this article we will talk about process scheduling in general.&lt;/p>
&lt;h2 id="process-types">Process Types&lt;/h2>
&lt;p>If we have more than one process sitting in memory, how does the operating system execute them?&lt;/p>
&lt;p>First we must know that processes come in types:&lt;/p>
&lt;p>&lt;strong>1. I/O-Bound Processes:&lt;/strong>
Processes that request input/output frequently (like reading files), spending much of their time waiting for I/O to complete.&lt;/p>
&lt;p>&lt;strong>2. CPU-Bound Processes:&lt;/strong>
Processes that consume a large amount of processor time and rarely require input/output (like complex computations).&lt;/p></description></item><item><title>Memory Management</title><link>https://outofsrvc.github.io/en/os/os-0x5/</link><pubDate>Wed, 26 Aug 2026 00:45:00 +0300</pubDate><guid>https://outofsrvc.github.io/en/os/os-0x5/</guid><description>&lt;p>بسم الله&lt;/p>
&lt;p>After talking about scheduling in the &lt;a href="../os-0x4/">previous lesson&lt;/a>, today we move to one of the pillars of operating systems: main memory management. We already touched a practical side of it in the &lt;a href="https://outofsrvc.github.io/en/cworkshop/virtual-memory-stack-vs-heap/">virtual memory lesson&lt;/a> of the C workshop; this lesson is the theoretical foundation it all rests on.&lt;/p>
&lt;h2 id="background">Background&lt;/h2>
&lt;p>A modern OS must allow large numbers of processes to sit in memory simultaneously for concurrent execution — and that is what makes memory management complex. There is quite a range of memory-management algorithms, and most require special forms of hardware support.&lt;/p></description></item><item><title>File-System Interface</title><link>https://outofsrvc.github.io/en/os/os-0x6/</link><pubDate>Wed, 26 Aug 2026 01:30:00 +0300</pubDate><guid>https://outofsrvc.github.io/en/os/os-0x6/</guid><description>&lt;p>بسم الله&lt;/p>
&lt;p>Having finished memory management in the &lt;a href="../os-0x5/">previous lesson&lt;/a>, this lesson concludes the series: the File-System Interface.&lt;/p>
&lt;p>File system implementation is a major aspect of operating system architecture: designers must decide how to map file-system information onto physical storage devices, and what methods to provide for accessing and manipulating it. File systems are often performance bottlenecks — making them adequately efficient is quite a challenge.&lt;/p>
&lt;p>A file system consists of two parts: a collection of files, and a directory structure whose purpose is providing information about, and organization of, those files.&lt;/p></description></item></channel></rss>