|
@ -23,7 +23,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::./fork-exec-exit-wait.png[350,350,role="related thumb right"] |
|
|
image::images/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. |
|
|
|
|
|
|
|
@ -184,7 +184,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::./Multithreaded_process.png[350,350,role="related thumb right"] |
|
|
image::images/Multithreaded_process.png[350,350,role="related thumb right"] |
|
|
|
|
|
|
|
|
Threads in the same process share: |
|
|
Threads in the same process share: |
|
|
|
|
|
|
|
@ -244,7 +244,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::./program_in_memory2.png[350,350,role="related thumb right"] |
|
|
image::images/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. |
|
@ -301,7 +301,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::./Simplified_Structure_of_the_Linux_Kernel.png[350,350,role="related thumb right"] |
|
|
image::images/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. |
|
|
|
|
|
|
|
|