概念:在计算机科学中,进程(Process)是程序的执行实例。它是操作系统进行资源分配和调度的基本单位。进程可以被看作是程序的运行过程
进程的特点:
1.独立性:进程是独立运行的,拥有自己的地址空间,进程间的信息需要通过特定的机制(如进程间通信)来交换。
2. 动态性:进程的生命周期是动态的,它从创建到结束的过程中,会经历不同的状态,如运行、就绪、阻塞等。
3. 并发性:多个进程可以在单个处理器上并发执行,这得益于操作系统的多任务能力。
4. 结构性:进程由代码段、数据段和堆栈组成,它们共同定义了进程的执行环境。
5. 有序性:进程的执行是有序的,它按照程序的指令顺序执行。
进程的生命周期:
1. 创建(New):操作系统为新进程分配必要的资源,如内存空间、文件描述符等。
2. 就绪(Ready):进程已准备好运行,等待被调度器分配到处理器上。
3. 运行(Running):进程正在处理器上执行。
4. 阻塞(Blocked):进程因为等待某个事件(如输入/输出操作、信号量等)而暂停执行。
5. 终止(Terminated):进程完成执行或者因为错误、信号等原因终止。
进程和程序的区别:
程序是静态的,它是保存在磁盘上的指令的有序集合,没有任何执行的概念
进程是一个动态的概念,它是程序执行的过程,包括了动态创建、调度和销毁的整个过程
并发与并行:
并发:
并发是指在单个处理器上,通过时间片轮转或上下文切换,多个任务交替执行,从而在宏观上呈现出同时进行的假象。尽管单个处理器在任意时刻只能执行一个任务,但通过这种机制,可以实现多线程程序的并发执行,即操作系统轮流为每个线程分配短暂的运行时间。简而言之:
.单个处理器或核心上,任务以交替方式执行。
.依靠时间片轮转机制。
.宏观上看似同时进行,微观上则是交替执行的。
.典型应用场景包括:
.多任务操作系统中的用户界面响应。
.Web服务器处理多个客户端请求。
.嵌入式系统中的多任务调度。
并行:
并行计算是一种计算模式,其中多个处理器或核心同时执行多个任务。这种模式允许每个处理器或核心独立处理不同的任务,从而实现真正的同时计算。并行计算能够显著提升程序的执行速度,尤其在处理那些可以分解为多个独立子任务的程序时,效果更为明显。
应用场景包括:
科学计算,例如天气预报和分子动力学模拟。
大数据处理,例如分布式计算。
图形渲染,例如3D图形的并行渲染。
操作系统提供了一系列的系统调用(如 fork、exec、wait 等)来管理进程的生命周期。以下是一些常见的进程操作:
创建进程:在 Unix 和类 Unix 系统中,通常使用 fork 系统调用创建一个新的进程。fork 会复制当前进程(父进程)来创建一个新的进程(子进程)。
执行程序:exec 系列函数(如 execv、execve 等)可以在进程中加载并执行一个新的程序。
等待进程结束:wait 或 waitpid 系统调用允许父进程等待子进程结束。
终止进程:exit 函数用于终止当前进程的执行。
进程间通信:进程可以使用管道(pipe)、信号(signal)、共享内存、消息队列(message queue)等机制进行通信。