进程、线程

进程、线程
 
进程是可并发执行的程序在某个数据集合上的一次计算活动,也是操作系统进行资源分配和调度的基本单位。
狭义概念:进程是正在运行的程序的实例
 
在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;
在当代面向线程设计的计算机结构中,进程是线程的容器。
程序是指令、数据及其组织形式的描述,进程是程序的实体。
 
特征
动态性:进程的实质是程序在多道程序系统中的一次执行过程,进程是动态产生,动态消亡的。
并发性:任何进程都可以同其他进程一起并发执行
独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位;
异步性:由于进程间的相互制约,使进程具有执行的间断性,即进程按各自独立的、不可预知的速度向前推进
结构特征:进程由程序、数据和进程控制块三部分组成。
 
多个不同的进程可以包含相同的程序:
一个程序在不同的数据集里就构成不同的进程,能得到不同的结果;
但是执行过程中,程序不能发生改变。
 
同步:按顺序执行,后面的步骤依赖前面的步骤
异步:每个步骤没有依赖关系,可以同步执行
 
cpu是怎么工作的:时间片
上下文切换:进程运行过程中产生的数据和产物完整的保留切换
 
一个计算机系统进程包括(或者说“拥有”)下列数据:
 
程序的可运行机器码所在存储器的映像。
分配到的存储器(通常包括虚拟内存的一个区域)。
存储器的内容包括可运行代码、特定于进程的数据(输入、输出)、调用堆栈、堆栈(用于保存运行时运数中途产生的数据)
分配给该进程的资源的操作系统描述符,诸如文件描述符(Unix术语)
或文件句柄(Windows)
 
安全特性,诸如进程拥有者和进程的权限集(可以容许的操作)。
 
当进程正在运行时,状态通常储存在寄存器,其他情况在存储器。
 
进行进程切换就是从正在运行的进程中收回处理器,然后再使待运行进程来占用处理器。
 
 
这里所说的从某个进程收回处理器,实质上就是把进程存放在处理器的寄存器中的中间数据找个地方存起来,从而把处理器的寄存器腾出来让其他进程使用。那么被中止运行进程的中间数据存在何处好呢?当然这个地方应该是进程的私有堆栈。
 
让进程来占用处理器,实质上是把某个进程存放在私有堆栈中寄存器的数据(前一次本进程被中止时的中间数据)再恢复到处理器的寄存器中去,并把待运行进程的断点送入处理器的程序指针PC,于是待运行进程就开始被处理器运行了,也就是这个进程已经占有处理器的使用权了。
 
状态:
1)就绪状态(Ready)
2)运行状态(Running)
3)阻塞状态(Blocked):
 
进程和线程关系:
 
通常在一个进程中可以包含若干个线程,它们可以利用进程所拥有的资源,在引入线程的操作系统中,通常都是把进程作为分配资源的基本单位,而把线程作为独立运行和独立调度的基本单位,由于线程比进程更小,基本上不拥有系统资源,故对它的调度所付出的开销就会小得多,能更高效的提高系统内多个程序间并发执行的程度。
 
多进程:多核cpu (适用于更大的并发)
多线程:单核cpu(适用于多I/O)
协程:单线程(执行不同程序,自动识别I/O,自动跳过I/O的等待)
 
 
posted @ 2018-09-26 17:27  _冒号  阅读(134)  评论(0)    收藏  举报