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.

150 lines
4.1 KiB

<!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>
</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&#8594;</strong> creation <strong>2&#8594;</strong> execution <strong>3&#8594;</strong> termination <strong>4&#8594;</strong> removal
</td>
</tr>
</table>
</div>
</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>