【计算机科学】操作系统——进程管理 (2)

程序和进程是多对多关系,例如同时执行两个一样的程序和操作系统的GUI绘图渲染与各个可视化程序的关系。你可以在任务管理器中发现这些关系

进程的特征

并发性:与OS的并发一致

异步性:与OS异步一致

动态性:进程在运行过程中是会发生状态转变,通常认为是动态的。

结构性:使用了PCB组成

独立性:在资源分配过程中,各个进程是独立分配。例如各个进程在内存中的位置都是独立的。

进程的组成

通常我们只考虑为PCB+程序或PCB+指令段+数据段。这里涉及到的指令段和数据段是什么呢?

指令段就是具体的操作逻辑,而数据段就是存储的具体数据值,他们通常都存储在栈上。例如有一段代码:

public int Add() { return 3+4; }

这段代码在进程中会存储函数指针,也就是程序的具体内存位置;3和4将会作为数据段存储在独立的堆栈中,而 ‘+’会存储在指令段中。

PCB的组成

PID:进程的唯一标识

状态:进程五个状态中的一种

优先级:用于控制进程的执行顺序

指令段的组成

运行地址:指程序代码在内存中的位置

外存地址:程序在存储设备上中的位置

代码段指针:程序指令段在内存中的具体位置

进入内存时间:进入时间

数据段组成

堆栈指针:用于存储数据的地址

数据段指针:数据段代码的地址

进程的组成

avatar

进程运行分析

对于一个进程或程序需要运行,以下三个东西是必不可少的:

PCB

内存

CPU

进程的状态:

avatar

对于新建-->就绪过程,进程会向操作系统申请内存和PCB,同时将进程排入队列使得这个非常的简单。

就绪-->运行过程,操作系统需要向进程分配CPU资源使得程序运转。反过来则是因为某些原因使得进程不再占用CPU,通常是时间片用完。

运行-->阻塞过程,通常是有了一个I/O请求导致了进程的阻塞中断。

阻塞-->就绪过程是I/O完成后重新唤起进程,使进程重新进入就绪队列

运行-->完成则是归还内存并删除PCB。

在状态转变的时候,通常就是要实施以下三步:

分配(申请)内存或CPU

回收

修改PCB

如果我的文章帮助了你,请给我一个三连和star。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwzfdy.html