|
@ -6,7 +6,7 @@ Apostolos rootApostolos@swarmlab.io |
|
|
ifndef::env-browser[] |
|
|
ifndef::env-browser[] |
|
|
:data-uri: |
|
|
:data-uri: |
|
|
endif::[] |
|
|
endif::[] |
|
|
:images-cdn: http://localhost:3080/asciidoc |
|
|
:images-cdn: http://localhost:3080/images |
|
|
:toc: right |
|
|
:toc: right |
|
|
:toc-title: Table of contents |
|
|
:toc-title: Table of contents |
|
|
:toclevels: 4 |
|
|
:toclevels: 4 |
|
@ -24,7 +24,7 @@ endif::[] |
|
|
[.float-group] |
|
|
[.float-group] |
|
|
-- |
|
|
-- |
|
|
.fork-exec footnote:[http://www.it.uu.se/education/course/homepage/os/vt18/images/module-2/fork-exec-exit-wait.png[^]] |
|
|
.fork-exec footnote:[http://www.it.uu.se/education/course/homepage/os/vt18/images/module-2/fork-exec-exit-wait.png[^]] |
|
|
image::{images-cdn}/images/fork-exec-exit-wait.png[350,350,role="related thumb right"] |
|
|
image::{images-cdn}/fork-exec-exit-wait.png[350,350,role="related thumb right"] |
|
|
|
|
|
|
|
|
*fork()* is the the system call that the parent process uses to "divide" itself ("fork") into two identical processes. |
|
|
*fork()* is the the system call that the parent process uses to "divide" itself ("fork") into two identical processes. |
|
|
|
|
|
|
|
@ -185,7 +185,7 @@ The threads of a process share its executable code and the values of its dynamic |
|
|
[.float-group] |
|
|
[.float-group] |
|
|
-- |
|
|
-- |
|
|
.A process with two threads footnote:[https://commons.wikimedia.org/w/index.php?curid=2233446[^]] |
|
|
.A process with two threads footnote:[https://commons.wikimedia.org/w/index.php?curid=2233446[^]] |
|
|
image::{images-cdn}/images/Multithreaded_process.png[350,350,role="related thumb right"] |
|
|
image::{images-cdn}/Multithreaded_process.png[350,350,role="related thumb right"] |
|
|
|
|
|
|
|
|
Threads in the same process share: |
|
|
Threads in the same process share: |
|
|
|
|
|
|
|
@ -245,7 +245,7 @@ it's computationally rather expensive to duplicate a process and a lot of subthr |
|
|
[.float-group] |
|
|
[.float-group] |
|
|
-- |
|
|
-- |
|
|
.Process Memory footnote:[https://gabrieletolomei.files.wordpress.com/2013/10/program_in_memory2.png?w=960[^]] |
|
|
.Process Memory footnote:[https://gabrieletolomei.files.wordpress.com/2013/10/program_in_memory2.png?w=960[^]] |
|
|
image::{images-cdn}/images/program_in_memory2.png[350,350,role="related thumb right"] |
|
|
image::{images-cdn}/program_in_memory2.png[350,350,role="related thumb right"] |
|
|
|
|
|
|
|
|
* Text Segment. |
|
|
* Text Segment. |
|
|
** The Text segment (a.k.a the Instruction segment) contains the executable program code and constant data. |
|
|
** The Text segment (a.k.a the Instruction segment) contains the executable program code and constant data. |
|
@ -302,7 +302,7 @@ chrt allows to set your scheduling policy as well as priority. |
|
|
[.float-group] |
|
|
[.float-group] |
|
|
-- |
|
|
-- |
|
|
.Structure of the Linux kernel footnote:[By ScotXW - Own work, CC BY-SA 4.0, https://commons.wikimedia.org/w/index.php?curid=47075153[^]] |
|
|
.Structure of the Linux kernel footnote:[By ScotXW - Own work, CC BY-SA 4.0, https://commons.wikimedia.org/w/index.php?curid=47075153[^]] |
|
|
image::{images-cdn}/images/Simplified_Structure_of_the_Linux_Kernel.png[350,350,role="related thumb right"] |
|
|
image::{images-cdn}/Simplified_Structure_of_the_Linux_Kernel.png[350,350,role="related thumb right"] |
|
|
|
|
|
|
|
|
The scheduler is the Linux kernel part that decides which runnable process will be executed by the CPU next. |
|
|
The scheduler is the Linux kernel part that decides which runnable process will be executed by the CPU next. |
|
|
|
|
|
|
|
|