进程
-
定义:
(1)进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。
(2)它是操作系统结构的基础,是程序的执行实体,是在处理器上顺序执行程序及其数据时发生的活动。
(3)进程是操作系统中最基本、重要的概念,是一个独立的资源分配和调度单元,可以申请并拥有系统资源,是一个动态的概念和一个活跃的实体。 -
引入原因:
- 从理论角度看,进程是对正在运行的程序过程的抽象。
- 从实现角度看,进程是一种数据结构,目的在于清晰地刻划动态系统的内在规律,有效管理和调度进入计算机系统主存储器运行的程序。
进程(Process)是计算机科学中的一个核心概念,它代表了计算机中已经运行的程序实例。进程是资源分配的基本单位,也是系统进行调度和管理的对象。以下是对进程的详细描述:
-
特点:
- 动态性:进程是程序的一次执行过程,是动态变化的。
- 并发性:多个进程可以在同一时间段内并发执行,共享系统资源。
- 独立性:进程是资源分配的基本单位,每个进程都有独立的内存空间和系统资源。
- 异步性:进程的执行不是严格按照顺序进行的,而是按照某种调度策略交替执行。
4.组成结构
程序计数器:指向当前程序执行的指令位置。
寄存器组:包含程序运行时的各种状态信息,如累加器、标志寄存器、索引寄存器等。
内存块:包括程序代码、数据和堆栈等。
进程控制块(PCB):用于存储进程的基本信息和状态,如进程标识符、进程状态、优先级、内存地址空间等。PCB是进程存在的唯一标志。
状态与转换
- 就绪状态:进程已获得除处理器外的所需资源,等待分配处理器资源。
- 运行状态:进程占用处理器资源正在运行。
- 阻塞状态:进程因等待某种条件(如I/O操作完成)而暂时停止运行。
- 终止状态:进程已结束运行,正在等待系统进行善后处理(如回收资源)。
进程的状态可以随着系统事件的发生而转换,如分配处理器资源、等待I/O操作完成等。
通信与同步
-
通信方式:
- 管道:一种半双工的通信方式,数据只能单向流动。
- 消息队列:一种全双工的通信方式,允许进程间双向通信。
- 共享内存:多个进程可以访问同一块内存区域,实现高效的数据共享。
- 信号量:用于控制进程对共享资源的访问,实现进程间的同步与互斥。
-
同步机制:
- 原子操作:不可分割的操作,要么全部完成,要么全部不完成。
- 信号量机制:通过信号量的PV操作实现对临界区的访问控制。
- 管程:一种高级的同步机制,将共享数据及其操作封装在一起,提供一个统一的接口供进程访问。
进程调度
进程调度是操作系统内核的主要功能之一,它决定了哪个进程将在何时获得处理器资源。常见的调度算法有:
- 先来先服务(FCFS):按照进程到达的顺序进行调度。
- 短作业优先(SJF):选择预计运行时间最短的进程进行调度。
- 优先级调度:根据进程的优先级进行调度,优先级高的进程先执行。
- 时间片轮转(RR):将处理器时间划分为多个时间片,每个进程轮流占用一个时间片。
- 多级队列调度:将进程分为多个队列,每个队列采用不同的调度算法。
进程是操作系统中用于实现并发执行和资源管理的重要概念。它包含了程序执行所需的各种资源和状态信息,并通过进程调度和通信机制实现多个进程之间的并发执行和资源共享。
线程
- 定义:线程是计算机科学中的基本概念,指的是在一个进程中执行的独立指令流。它是操作系统进行调度的最小单元(而进程是资源分配的最小单位)。线程由线程标识符、程序计数器、寄存器集合和堆栈组成。线程之间可以更轻松地共享数据和通信,因为它们属于同一个进程,共享相同的地址空间。
- 引入原因:引入线程是为了减小程序在并发执行时所付出的时空开销,提高操作系统的并发性能。线程被视为“轻量级进程”,能够在较小的系统开销下实现并发执行。
进程与线程的区别
-
资源分配与独立性:
- 进程是操作系统资源分配的基本单位,每个进程都有独立的代码和数据空间(程序上下文),进程之间的地址空间和资源是相互独立的。
- 线程是处理器任务调度和执行的基本单位,同一进程的线程共享本进程的地址空间和资源。
-
执行开销与切换效率:
- 进程拥有独立的执行环境和系统资源,因此进程切换时需要保存和恢复较多的上下文信息,开销较大。
- 线程共享进程的资源,因此线程切换时只需保存和恢复线程的上下文信息,开销较小。
-
并发性与健壮性:
- 多进程环境中,一个进程的崩溃不会影响其他进程的运行,因此多进程具有较高的健壮性。
- 多线程环境中,一个线程的崩溃可能导致整个进程的崩溃,因此多线程的健壮性相对较低。但多线程能够更高效地利用系统资源,实现更细粒度的并发控制。
-
共享数据与通信:
- 进程间通信需要借助特定的通信机制(如管道、消息队列、共享内存等),通信开销较大。
- 线程间可以直接共享进程的资源和数据,通信更加便捷且开销较小。