1.进程
#进程定义:
1.进程是资源分配最小单位
2.当一个可执行程序被系统执行(分配内存等资源)就变成了一个进程
进程定义拓展回答内容
1.程序并不能单独运行,只有将程序装载到内存中,系统为它分配资源才能运行,这种执行的程序就称之为进程。
2.程序和进程的区别:程序是指令的集合,他是进程运行的静态描述文本;进程是程序的一次执行活动,属于动态概念。
3.在多道编程中,我们允许多个程序同时加载到内存中,在操作系统的调度下,可以实现并发地执行。
4.进程的出现让每个用户感觉到自己独享CPU,因此,进程就是为了在CPU上实现多道编程而提出的。
5.进程之间有自己独立的内存,各进程之间不能互相访问。
6.创建一个线程很简单,创建新进程需要对父进程进行复制
多道编程概念
多道编程:在计算机内存中同时存放几道相互独立的程序,他们共享系统资源,互相穿插运行
单到编程:计算机内存中值允许一个的程序运行
2.为什么有了进程还要线程?
2.1进程优点:
提供了多道编程,让我们感觉每个人都拥有自己的CPU和其他资源,可以提高计算机的利用率
2.2进程的两个重要缺点:
a. 第一点:进程只能在一个时间干一件事,如果想同时干两件事或多件事,进程就无能为力了。
b. 第二点:进程在执行的过程中,如果发生阻塞,即使进程中有些工作不依赖于输入的数据,也将无法执行(例如等待输入,整个进程就会挂起)。
如果这两个缺点理解比较困难的话,举个现实的例子也许你就清楚了:如果把我们上课的过程看成一个进程的话,那么我们要做的是耳朵听老师讲课,手上还要记笔记,脑子还要思考问题,这样才能高效的完成听课的任务。而如果只提供进程这个机制的话,上面这三件事将不能同时执行,同一时间只能做一件事,听的时候就不能记笔记,也不能用脑子思考,这是其一;如果老师在黑板上写演算过程,我们开始记笔记,而老师突然有一步推不下去了,阻塞住了,他在那边思考着,而 我们呢,也不能干其他事,即使你想趁此时思考一下刚才没听懂的一个问题都不行,这是其二。
现在你应该明白了进程的缺陷了,而解决的办法很简单,我们完全可以让听、写、思三个独立的过程,并行起来,这样很明显可以提高听课的效率。而实际的操作系统中,也同样引入了这种类似的机制——线程。
3.进程之间互相访问数据的四种方法
ps:不同进程间内存是不共享的,所以互相之间不能访问对方的数据
法1:利用Queues 实现父进程到子进程(或子进程间)的数据传递
法2:利用管道pipe实现两个进程间数据传递
法3:Managers 实现多进程数据共享
法4:借助redis 中间件进行数据共享
4.进程和程序的区别
1.程序只是一个普通文件,是一个机器代码指令和数据的集合,所以,程序是一个静态的实体。
2.进程是程序运行在数据集上的动态过程,进程是一个动态实体,它应创建而生,应调度执行因等待资源或事件而被处于等待状态,因完成任务而被撤消。
3.进程是系统进行资源分配和调度的一个独立单位。
4.一个程序对应多个进程,一个进程为多个程序服务(两者是多对多的关系)。
5.一个程序执行在不同的数据集上就成为不同的进程,可以用进程控制块来唯一标识每个进程。