小陈谈Java-进程到底是个啥???

本文介绍了计算机中的进程概念,包括进程的唯一标识PCB及其组成部分,如内存指针、文件描述符表等。讨论了进程的虚拟地址空间如何实现进程隔离,并阐述了进程间通过共享内存等机制进行通信的方式。此外,还简单提及了进程调度中的并发与并行概念。
摘要由CSDN通过智能技术生成

一.什么是进程

 

在计算机运行的过程中并不是一个一个软件的运行,是有很多软件一起进行运行,那么我们暂时可以把一个软件的运行叫一个进程。

二.进程的组成 

进程 = 描述(PCB)+ 组织

1.描述(PCB)

pcb可以理解为一个c语言的结构体或者是Java的一个类

class PCB {
// 进程的唯一标识 —— pid;
// 进程关联的程序信息,例如哪个程序,加载到内存中的区域等
// 分配给该资源使用的各个资源
// 进度调度信息
}

其中,pid是进程的唯一的身份标识,它由以下几个属性组成

内存指针:描述了这个进程使用的内存空间是哪个范围

文件描述符表:描述了进程打开了哪些文件

进程的状态:

进程的优先级:安排时间表的时候先安排谁,后按安排谁

进程的记账信息:安排同时考虑历史记录

进程的上下文:进程可能执行了某个操作,执行了一半就被调度走了,过一段时间回来吗需要从上次的地方继续往下

 2.组织

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

三.进程的虚拟地址空间

计算机的能存空间是有限的,那么当给进程分布内存空间的时候难免会有重复,但是我们却并没有发现进程之间的互相干扰,那么这个就得益于进程的虚拟地址。

从图中我们可以看到,通过mmu(保证访问地址的正确性),操作系统将一个地址转换为一段虚拟地址, 进程就在这一段虚拟地址上操作,确保了进程之间的互不影响。那进程就是通过我们前面所说的内存指针来找到这一段地址。

这样就体现了进程的隔离性

四.进程间的通信

上面我们可以看到了,进程都是在自己的虚拟空间中运行,那么进程之间的合作又是怎么完成的呢。我们可以想想,工厂的流水线之间都是相互独立的,相互不干涉的,那么我们就有一个公共区域,将自己做好的东西放在公共区域上,然后,另外一条流水线上的就会来拿,(外卖柜也是同理)。那么进程之间的通信也是如此,通过一个公共区域,两个进程来同时访问,就可以做到进程之间的相互合作和通信。

五.进程的调度

说到进程的调度,就不得不提到两个概念“并发”,“并行”

并发:宏观上同时,微观上不同时,轮流占用cpu

并行:两个或多个进程在cpu上同时进行

那么真正的在操作系统中,并发和并行是都存在的。进程的调度就是既有并发又有并行,操作系统会尽量让每个进程都能做上事。具体的调度过程还是比较复杂的,这里就不具体展开啦

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值