You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
155 lines
4.3 KiB
155 lines
4.3 KiB
4 years ago
|
<!DOCTYPE html>
|
||
|
<html lang="en">
|
||
|
<head>
|
||
|
<meta charset="UTF-8">
|
||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
|
<meta name="generator" content="Asciidoctor 2.0.12">
|
||
|
<meta name="description" content="Linux process management">
|
||
|
<meta name="keywords" content="ps aux">
|
||
|
<meta name="author" content="Apostolos rootApostolos@swarmlab.io">
|
||
|
<title>Linux process management !</title>
|
||
|
<link rel="stylesheet" href="http://cdnjs.cloudflare.com/ajax/libs/asciidoctor.js/1.5.9/css/asciidoctor.min.css">
|
||
|
<link rel="stylesheet" href="http://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.14.0/css/all.min.css">
|
||
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.18.3/styles/github.min.css">
|
||
|
</head>
|
||
|
<body class="article toc2 toc-right">
|
||
|
<div id="header">
|
||
|
<h1>Linux process management !</h1>
|
||
|
<div class="details">
|
||
|
<span id="author" class="author">Apostolos rootApostolos@swarmlab.io</span><br>
|
||
|
</div>
|
||
|
<div id="toc" class="toc2">
|
||
|
<div id="toctitle">Table of contents</div>
|
||
|
<ul class="sectlevel1">
|
||
|
<li><a href="#_process">1. process</a></li>
|
||
|
<li><a href="#_linux_process_management">2. Linux process management</a>
|
||
|
<ul class="sectlevel2">
|
||
|
<li><a href="#_life_cycle_of_a_process">2.1. Life cycle of a process</a></li>
|
||
|
<li><a href="#_process_state">2.2. process state</a></li>
|
||
|
</ul>
|
||
|
</li>
|
||
|
</ul>
|
||
|
</div>
|
||
|
</div>
|
||
|
<div id="content">
|
||
|
<div class="sect1">
|
||
|
<h2 id="_process">1. process</h2>
|
||
|
<div class="sectionbody">
|
||
|
<div class="paragraph">
|
||
|
<p>An instance of a running program is called a process.
|
||
|
Every time you run a shell command, a program is run and a process is created for it.</p>
|
||
|
</div>
|
||
|
<div class="paragraph">
|
||
|
<p>In any modern operating system there can be more than one instance of a program loaded in memory at the same time.</p>
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
<div class="sect1">
|
||
|
<h2 id="_linux_process_management">2. Linux process management</h2>
|
||
|
<div class="sectionbody">
|
||
|
<div class="paragraph">
|
||
|
<p>Operating systems need some ways to create processes.</p>
|
||
|
</div>
|
||
|
<div class="ulist">
|
||
|
<ul>
|
||
|
<li>
|
||
|
<p>In a very simple system designed for running only a single application (e.g., the controller in a microwave oven), it may be possible to have all the processes that will ever be needed be present when the system comes up.</p>
|
||
|
</li>
|
||
|
<li>
|
||
|
<p>In general-purpose systems, however, some way is needed to create and terminate processes as needed during operation.</p>
|
||
|
</li>
|
||
|
</ul>
|
||
|
</div>
|
||
|
<div class="admonitionblock note">
|
||
|
<table>
|
||
|
<tr>
|
||
|
<td class="icon">
|
||
|
<i class="fa icon-note" title="Note"></i>
|
||
|
</td>
|
||
|
<td class="content">
|
||
|
<div class="paragraph">
|
||
|
<p><strong>There are four principal events that cause a process to be created:</strong></p>
|
||
|
</div>
|
||
|
<div class="ulist">
|
||
|
<ul>
|
||
|
<li>
|
||
|
<p>System initialization.</p>
|
||
|
</li>
|
||
|
<li>
|
||
|
<p>Execution of process creation system call by a running process.</p>
|
||
|
</li>
|
||
|
<li>
|
||
|
<p>A user request to create a new process.</p>
|
||
|
</li>
|
||
|
<li>
|
||
|
<p>Initiation of a batch job.</p>
|
||
|
</li>
|
||
|
</ul>
|
||
|
</div>
|
||
|
</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="paragraph">
|
||
|
<p>Process creation in UNIX and Linux are done through <strong>fork()</strong> or <strong>clone()</strong> system calls.</p>
|
||
|
</div>
|
||
|
<div class="paragraph">
|
||
|
<p>There are several steps involved in process creation.</p>
|
||
|
</div>
|
||
|
<div class="ulist">
|
||
|
<ul>
|
||
|
<li>
|
||
|
<p>process scheduling,</p>
|
||
|
</li>
|
||
|
<li>
|
||
|
<p>interrupt handling,</p>
|
||
|
</li>
|
||
|
<li>
|
||
|
<p>signaling,</p>
|
||
|
</li>
|
||
|
<li>
|
||
|
<p>process prioritization,</p>
|
||
|
</li>
|
||
|
<li>
|
||
|
<p>process switching,</p>
|
||
|
</li>
|
||
|
<li>
|
||
|
<p>process state,</p>
|
||
|
</li>
|
||
|
<li>
|
||
|
<p>process memory</p>
|
||
|
</li>
|
||
|
</ul>
|
||
|
</div>
|
||
|
<div class="sect2">
|
||
|
<h3 id="_life_cycle_of_a_process">2.1. Life cycle of a process</h3>
|
||
|
<div class="admonitionblock note">
|
||
|
<table>
|
||
|
<tr>
|
||
|
<td class="icon">
|
||
|
<i class="fa icon-note" title="Note"></i>
|
||
|
</td>
|
||
|
<td class="content">
|
||
|
<strong>1→</strong> creation <strong>2→</strong> execution <strong>3→</strong> termination <strong>4→</strong> removal
|
||
|
</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
</div>
|
||
|
<div class="sect2">
|
||
|
<h3 id="_process_state">2.2. process state</h3>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.18.3/highlight.min.js"></script>
|
||
|
<script>
|
||
|
if (!hljs.initHighlighting.called) {
|
||
|
hljs.initHighlighting.called = true
|
||
|
;[].slice.call(document.querySelectorAll('pre.highlight > code')).forEach(function (el) { hljs.highlightBlock(el) })
|
||
|
}
|
||
|
</script>
|
||
|
</body>
|
||
|
</html>
|