进程是linux操作系统非常重要的部分,也是一改下功夫的地方;这次介绍关于linux系统进程的一些知识。本次先介绍一下什么是进程,与程序、线程有什么区别与联系。
一、进程vs程序
1、从内核角度来看,进程是操作系统分配内存、CPU时间片等资源的基本单位,为正在运行的程序提供的运行环境。它代表程序的一个执行过程,是一个动态的实体,随程序中指令的执行而不断变化。
2、主要区别如下:
① 程序是静态的,进程是动态的。程序作为一个静态文件存储在硬盘等存储介质中,而进程则是为处于执行状态的程序提供的动态运行环境
② 一个程序可以对应多个进程,打一个进程只能对应一个程序;
③ 进程从创建直至退出具有一定的生命期,而程序只是指令与数据的集合。
二、进程vs线程
1、线程是在进程基础上进一步的抽象,一个进程分为两部分:资源集合和线程集合。线程是进程的一个动态对象,是一组独立的指令流,进程中的所有线程将共享里的资源,但同时各个线程也拥有独立的程序计数器和寄存器上下文。、
2、所有进程至少拥有一个线程。相对于进程是操作系统进行资源管理的最小单元,线程则是程序执行的最小单元。
3、从内核角度来说,并无线程进程之分,从而也就不会有特别针对想成进行描述的数据结构。线程在内核的体现是一个普通的进程,有自己的进程描述符,但与其他进程共享某些资源,这样的进程也叫轻量级进程。
4、针对linux这种独特的线程机制,在进行剁线程应用实现的时候,就需要将轻量级进程(内和调度实体)与用户创建地每个进程关联起来,这样,每个进程可以由内核独立调度,保证了多个线程的并发执行。
三、进程描述符
内核使用进程描述符,即结构task_struct来描述与一个进程相关的所有信息。
一、进程vs程序
1、从内核角度来看,进程是操作系统分配内存、CPU时间片等资源的基本单位,为正在运行的程序提供的运行环境。它代表程序的一个执行过程,是一个动态的实体,随程序中指令的执行而不断变化。
2、主要区别如下:
① 程序是静态的,进程是动态的。程序作为一个静态文件存储在硬盘等存储介质中,而进程则是为处于执行状态的程序提供的动态运行环境
② 一个程序可以对应多个进程,打一个进程只能对应一个程序;
③ 进程从创建直至退出具有一定的生命期,而程序只是指令与数据的集合。
二、进程vs线程
1、线程是在进程基础上进一步的抽象,一个进程分为两部分:资源集合和线程集合。线程是进程的一个动态对象,是一组独立的指令流,进程中的所有线程将共享里的资源,但同时各个线程也拥有独立的程序计数器和寄存器上下文。、
2、所有进程至少拥有一个线程。相对于进程是操作系统进行资源管理的最小单元,线程则是程序执行的最小单元。
3、从内核角度来说,并无线程进程之分,从而也就不会有特别针对想成进行描述的数据结构。线程在内核的体现是一个普通的进程,有自己的进程描述符,但与其他进程共享某些资源,这样的进程也叫轻量级进程。
4、针对linux这种独特的线程机制,在进行剁线程应用实现的时候,就需要将轻量级进程(内和调度实体)与用户创建地每个进程关联起来,这样,每个进程可以由内核独立调度,保证了多个线程的并发执行。
三、进程描述符
内核使用进程描述符,即结构task_struct来描述与一个进程相关的所有信息。