Day-21 Child Process

Child Process

tags: IT铁人

Context Switching

前面提到电脑会轮流执行不同的程序,而在轮流的过程中一定会有转换的步骤,这个步骤就叫做Context Switching。

它的定义是:当CPU要切换到另一个process时,OS要储存旧有的process状态,并且载入新的process状态,就称为Context Switch。

就像是这张图一样,在切换的过程中会由系统管理,并且会花费一定的时间,时间长短大多取决於硬体,例如Context内容多寡、指令速度的快慢、Register是否够用。

降低Context Switch Overhead

Overhead指的是成本,通常在OS中指的是额外的时间成本,改善Context Switch Overhead的主要方法有下面两者:

  • Multiple Registers Set
    如果只有一套Register,那麽新Process要载入的时候要等旧Process存会去PCB才行。
    每个Process都有自己的Registers Set的话,当Context Switch发生时,只要把point切换到另一套Registers Set就好。

  • Multithread
    Thread的部分会在後面的章节说明,他的overhead会比切换process更低。

Dispatcher

Dispatcher的目的就是分配CPU给CPU Scheduler所挑出的user process,他的主要工作包含以下三者:

1.Context Switching
2.Switch mode to user mode
3.Jump to the execution entry of that process

以上三个时间加总称为Dispatch Lantency,当然我们也会希望能减少这样的时间。

Process Control Operations

电脑的Process也有复杂的关系,不是所有的Process都是平等的,有的会有上下关系,有的会有资料共用的关系等等,底下会讲一些Process的观念。

Process Creation

任何一个process均可建立process,通常parent prceoss creates many child processes。

建立child process的目的是要他执行工作。

child所做的工作,分为下面两种类型:

1.与parent相同的工作,ex:vi editor(Linux常用的文字编辑指令)。
2.与parent不同的工作,specific task。

Child Process Resources

Process的资料提供来源有两者:

1.OS
2.parent(全部与child共享、subset of resources)

Parent与Child之互动关系

parent process创立child process之後可能有不同的对待方式,就像是不同的父母对不同的小孩有不同的待遇。

1.parent等待child完成工作。
2.parent和child同时进行工作。

Process之终止

process执行过程可能遭遇各种状况,最常见的是完成工作发出system call(ex:Exit()),告诉kernel终止他,收回resource。

还可能发生异常,由kernel自行终止(ex:divide by Zero)。

也有可能parent动手处决child,例如:child已完成交办工作、child使用过多resource、parent被kernel终止导致其下所有child一并终止(Cascading termination)。

不过也有可能parent终止後,OS允许child继续存活,此时child的parent可能变成OS或是原先的grandparent。

此外child还有可能成为orphan或是zombie,这部分蛮有趣的,也是每年系上工作站被搞垮的原因之一,因为许多修OS的学生在工作站上面执行程序生成太多zombie,导致工作站塞爆无法进入。

上一篇 下一篇
Process 常用Sysem Call

How to kill a child

因为有时child process需要被消除,而消除别的process又会用kill这个字,变成有时候google内容引人遐想。


<<:  # Day 24 Heterogeneous Memory Management (HMM) (四)

>>:  Day18 Web Server 相关扫描

[JMeter]JMeter安装与环境设定

Jmeter是一套由Apache开发的压力测试工具,除了进行压力测试以外, 它还能在测试完成後,产出...

从零开始学3D游戏开发 Roblox Studio 简介 Part.2

今天离开了起点,看到好多人都在赛道周边努力着 大家一起努力往终点进发吧! 这个单元我们继续学习 Ro...

IT铁人DAY 5-MVC 介绍

  认识了物件导向的基本概念以後,就来讲程序设计比较进阶概念,也就是MVC架构,如果要让写程序的能力...

Day 7. 介绍一下VSCode-打code好帮手

Visual Studio Code(简称VS Code)是一个由微软开发的,同时支援Windows...

Ruby on Rails Controller 是干嘛的

Controller 中⽂可翻译成「控制器」,顾名思义,就是⽤来控制流程⽤的。它可能需 要跟 Mod...