Day-20 Process

Process

tags: IT铁人

Process

Process就是前面提到的Job跟Task,Process是执行中的程序。

当Process被建立时,主要组成包括下列:

Section 内容
Code Section(Text Section) 就是Program code部分。
Data Section Containing the global variables。
Stack 包含temporary data(例如Function Parameters、Local variables、return address)。
Heap 包含Memory dynamically allocated during run time(例如pointer变数的需求空间)。
Programming counter & other registers 会有下一条指令的所在位置。

Process的内容在Memory中如下:

Memory会分配一块区间给Process,而最低的放Code Section跟Data Section,之後heap往上长而Stack由上往下长。

PCB

PCB的全名是Process Control Block,就是在Process被建立时,kernel会建立一个表格,纪录有关该Process的资讯,以便之後切换不同process时还可以正常运作。

PCB主要纪录的资讯有:

项目 内容
Process NO. unique Process ID.
Process State ready, new, running, wait state,etc.
CPU Register accumulator, Stack Top pointer, Index register,etc.
CPU Scheduling Info process优先权值, PCB pointer,etc.
Memory Management Info Base limit register值 or page Table or Segment Table, base on OS memory management.
Program Counter Next instruction address.
Accounting Info Process使用CPU Time的最大值, 目前使用了多少CPU Time, 多少资源, etc.
I/O-Status Info 目前配给process之I/O-Device为何,已发出哪些I/O-request,完成多少I/O-request,etc.

State Transition

前面说纪录PCB的目的就是为了能够切换不同的process,所以每个Process都会需要在不同的state中切换,就有了以下的State Transition Diagram:

建立好Process後,分配完Memory後进入ready state,拿到CPU後进入running state,中间会来回切换执行别的process,执行完成之後就terminated,如果执行中间需要进行I/O或是意外状况,则进入waiting state等待完成。

这种类型的State Transition Diagram是考虑了Memory不够的状况,这时候有些process会swap进入disk,等到Memory够用或是该轮到他的时候再从disk移出来。

Scheduler

提到了process会轮流执行,那麽就要介绍有甚麽挑选process的方式,以下会介绍三种Scheduler:

种类 内容
Long-Term Scheduler 又称为Job Scheduler,目的在於从Job Queue中抓Job进入Memory中以便执行。因为执行的频率最低,所以称为Long-Term。
Short-Term Scheduler 又叫做CPU Scheduler或Process Scheduler。目的在於从Ready Queue中抓Process给CPU执行。因为执行频率最高,所以称为Short-Term。
Medium-Term Scheduler 当Memory空间不够时,要把Process swap out到disk中,直到空间足够时再将Process swap in到Memory。因为执行频率在中间,所以称为Medium-Term。

What's Next?

这边介绍了PCB以及会有不同的State,後面会介绍在切换不同的process时会发生甚麽事情,以及一些酷东西XDD

上一篇 下一篇
System Call & OS架构 Child Process


<<:  改善R^2 (1) | ML#Day24

>>:  Day.24 提升大数据资料管理 - 资料表分区 ( MYSQL Partition)

分散式链路追踪 - Jaeger

在 OpenTelemetry 中有提到 trace 的概念。而 Trace 由多个 Span 组成...

Day30 结语

不知不觉已经到了这个挑战的终点,现在回头看,应该有比刚开始的自己更进步了吧! 想当初参加这比赛时,因...

[重构倒数第19天] - i18n什麽的交给前端来处理吧(二) Vue3 载入Vue-i18n

前言 该系列是为了让看过Vue官方文件或学过Vue但是却不知道怎麽下手去重构现在有的网站而去规画的系...

[Cmoney 菁英软件工程师战斗营] IOS APP 菜鸟开发笔记(2)

前言 从上周末开始到周三,除了学习老师教的观察者模式(Observer Pattern)和几种排序方...

日历功能更新 Day29

新增日历的功能 点选日期,可以让区间内的Cell的颜色变成灰色 让操作可以更直觉 在didselec...