计算机的进程

什么是进程/任务

每个应用程序运行于现代操作系统上时,操作系统会提供一种抽象,好像系统上只有这个程序在运行,所有的硬件资源都被这个程序在使用。这种假象是通过抽象了一个进程的概念来完成的,进程可以说是计算机科学中最重要和最成功的概念之一。

进程是操作系统对一个正在运行的程序的一种抽象,换言之,可以把进程看做程序的一次运行过程。

进程可以视为操作系统进行资源分配的基本单位。

 进程控制块抽象(PCB Process Control Block)

计算机内部要管理任何现实事务,都需要将其抽象成一组有关联的、互为一体的数据。在java语言中,我们可以通过类和对象来进行描述这一特征。

PCB进程控制块描述进程

//以下代码是Java代码的伪码形式,重在说明,无法执行
class PCB{
    //进程的唯一标识 ——pid;
    //进程关联的程序信息,例如哪个程序,加载到内存中的区域。
    //分配给该资源使用的各个资源。
    //进程调度信息
}

这样,每一个PCB对象,就代表着一个实实在在运行着的程序,也就是进程。

操作系统在通过这种数据结构,例如线性表、搜索树等将PCB对象组织起来,方便管理时进行增删改查的操作。

管理进程

先描述:PCB控制块描述进程。

后组织:链表把多个PCB串起来。

1.任务管理器中查看进程列表。

遍历链表中的每个节点,并获取显示对应的信息。

2.创建新的进程

新的进程创建出一个对应的新的PCB,并且添加达到链表中。

3.销毁某个进程

把链表上对应的PCB结点删掉。

PCB的核心属性

1.pid 进程的ID/标识符。

2.内存指针 依赖的指令和数据的位置。

进程运行时,需要消耗一定的硬件资源。一组指针,告诉操作系统该进程要运行的指令在内存的那些房间里。

3.文件描述表  通过一个“顺序表”这样的数据结构,记录这个进程都打开了那些文件。

4.PCB中提供了几个属性,支持进程调度。

(1)状态  等待IO的时候会进入阻塞状态。 “随叫随到”是就绪状态。

(2)优先级  处理的事件不同。

(3)上下文  存档,以备下次继续。

(4)记账信息  延续刚才的优先级。

(5)tgid 同一个进程的tgid是同一个。

CPU分配——进程调度(Proccess Scheduling)

为了便于讨论和理解,我们大部分的场景下假设是单cpu单核的计算机。

操作系统对cpu资源的分配,采用的是时间模式——不同的进程在不同的时间段去使用cpu资源。

内存分配——内存管理(Memory Manage)

操作系统对内存资源的分配,采用的空间模式——不同进程使用内存中的不同区域,互相之间不会干扰。

进程间通信(Inter Process Communication)

如上所述,进程是操作系统进行资源分配的最小单位,这意味着各个进程之间是无法感受到对方存在的,这就是操作系统抽象出进程这一概念的初衷,这样便带来了进程之间互相具备“隔离性”。

但现代的应用,奥完成一个复杂的业务需求,往往无法通过一个进程来独立完成,总是需要进程和线程进行配合的达到应用的目的,如此,进程之间需要进行“信息交换”的需求。进程间通信的需求就应运而生。

目前,主流操作系统提供的进程通信机制有如下:

1.管理

2.共享内存

3.文件

4.网络

5.信号量

6.信号

其中,网络是一种相对特殊的IPC机制,它除了支持同主机两个进程间通信,还支持同一网路内部非同一主机上的进程间进行通信。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值