`
- 浏览:
91190 次
- 性别:
- 来自:
长沙
-
本文围绕以下三个部分展开:
一、进程的定义、特征和基本状态
二、进程通信
三、线程
四、进程与线程的比较
一、进程的定义、特征和基本状态
1. 定义
进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。
进程是一个可拥有资源的独立单位;同时又是一个可独立调度和分配的基本单位。
2. 特征
(1)结构特征
进程实体:由 程序段、相关的数据段和PCB(Process Control Block,进程控制块)三部分构成。
PCB:通常的程序是不能并发执行的。为使程序(含数据)能独立运行,应为之配置一个PCB。
在许多情况下所说的进程,实际上是指进程实体。丽日,所谓创建进程,实质上是创建进程实体中的PCB;而撤销进程,实质上是撤销进程的PCB。
(2)动态性
进程的实质是进程实体的一次执行过程,因此,动态性是进程的最基本的特征。动态性还表现在:“它由创建而产生,由调度而执行,由撤销而消亡。”
(3)并发性
指:多个进程实体同存于内存中,且能在一段时间内同时运行。
(4)独立性
指:进程实体是一个能独立运行、独立分配资源和独立接受调度的基本单位。
(5)异步性
指:进程按各自独立的、不可预知的速度向前推进。或者说,进程实体按异步方式运行。
3. 进程的三种基本状态
(1)就绪(Ready)状态
当进程已分配到除CPU以外的所有必要资源后,只要再获得CPU,便可立即执行,进程这时的状态称为就绪状态。
在一个系统中,处于就绪状态的进程可能有多个,通常将它们排成一个队列,称为 就绪队列。
(2)执行状态
进程已获得CPU,其程序正在执行。
(3)阻塞状态
正在执行的进程由于发生某事件而暂时无法继续执行时,便放弃处理机而处于暂停状态,亦即进程的执行受到阻塞。把这种暂停状态称为阻塞状态(等待状态/封锁状态)。
通常将这种处于阻塞状态的进程也排成一个队列。有的系统则根据阻塞原因的不同,把处于阻塞状态的进程排成多个队列。
(4)状态相互转换的条件和过程
①处于就绪状态的进程,在调度程序为之分配了处理剂之后,该进程便可执行,由就绪状态转变为执行状态。
②如果分配给当前进程的时间片已完而被暂停执行时,该进程由执行状态又转变为就绪状态。
③如果因发生某事件而使进程的执行受阻(例如,进程请求访问某临界资源,而该资源正被其它进程访问时),使之无法继续执行,该进程将由执行状态转变为阻塞状态。
二、进程通信
1. 概念
指:进程之间的信息交换。
2. 低级进程通信
进程之间的互斥和同步,由于其所交换的信息量少而被归结为低级通信。在进程互斥中,进程通过只修改信号量来向其他进程表明临界资源是否可用。
3. 高级进程通信
(1)指:用户可直接利用操作系统所提供的一组通信命令,高效地传送大量数据的一种通信方式。
操作系统隐藏了进程通信的实现细节。或者说,通信过程对用户是透明的。这样就大大减少了通信程序编制上的复杂性。
(2)随着操作系统的发展,用于进程之间实现通信的机制也在发展,并已由早期的低级进程通信机制,发展为能传送大量数据的高级通信工具机制。
4. 进程通信的类型
(1)共享存储器系统(Shared-Memory System)
在共享存储器系统中,相互通信的进程 共享某些数据结构 或 共享存储区 ,进程之间能够通过这些空间进行通信。
(2)消息传递系统(Message passing system)
它是当前应用最为广泛的一种进程间的通信机制。在该机制 中,进程间的数据交换是以格式化 的消息/报文(message)为单位的。
程序员直接利用操作系统提供的一组通信命令(原语),不仅能实现大量数据的传递,而且还隐藏了通信的实现细节,使通信过程对用户是透明的,从而大大简化了通信程序编制的复杂性,因而获得了广泛的应用。
(3)管道通信
“管道”:指用于连接一个读进程和一个写进程,以实现它们之间通信的一个共享文件,又名 pipe 文件。
三、线程
1. 概念
通常一个进程中包含多个线程,每个线程都作为利用CPU的基本单位,是花费最小开销的实体。
2. 属性
(1)轻型实体。线程中的实体基本上不拥有系统资源,只是有一点必不可少的、能保证其独立运行的资源。
(2)独立调度和分派的基本单位。
(3)可并发执行。
(4)共享进程资源
四、进程与线程的比较
1. 调度
线程作为调度和分派的基本单位,而进程作为资源拥有的基本单位。线程基本上不拥有资源,这样线程便能轻装前进,从而可显著提高系统的并发程度。
2. 并发性
进程之间可并发执行,一个进程中的多个线程之间也可以并发执行,使得操作系统具有良好的并发性,从而能更加有效地提高系统资源的利用率和系统的吞吐量。
3. 拥有资源
进程拥有资源,线程自己不拥有系统资源(只有一点必不可少的资源)。
4. 系统开销
在创建或撤销进程时,操作系统付出的开销明显大于线程创建或撤销时的开销。
线程切换的代价也小于进程切换的代价。
在同步和通信的实现方面,线程也比进程容易。
整理时重点参考:《计算机操作系统》(第三版) -- 汤小丹、梁红兵、哲凤屏、汤子瀛 编著
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
4. **线程与工人**:在一个车间里,有许多工人协同完成任务,这里的工人可以对应于进程中的线程。一个进程可以包含多个线程,它们共同完成同一项任务的不同部分。 5. **共享资源**:车间的空间(例如工具间、仓库等...
在操作系统课程设计中,Linux进程与线程的通信是一个核心且复杂的主题。在这个项目中,学生将深入理解操作系统内核如何管理和协调不同进程和线程之间的数据交换,从而实现高效的任务执行。以下是对这个主题的详细...
本文将详细讲解如何使用C#语言来创建一个简单的进程与线程管理器,适合初学者入门。 首先,让我们了解基础概念。进程是操作系统中正在运行的一个程序实例,每个进程都有独立的内存空间,而线程则是进程内的执行单元...
嵌入式Linux开发教程深入探讨了进程与线程的概念及其在操作系统中的实现,这对于理解和开发高效、并发的嵌入式应用程序至关重要。以下是这些知识点的详细解释: **一、基础知识:线程和进程** 1. **进程**:是操作...
总结,理解和掌握C++中的进程与线程是编写高性能、并发应用程序的关键。正确地利用它们可以提高程序的效率,但同时也需要关注同步和通信的细节,以避免潜在的问题。通过实践和学习,开发者能够更好地驾驭这个强大的...
对于初学者来说,理解进程与线程的关系至关重要,因为这有助于深入掌握操作系统的基本原理及应用。下面将详细阐述进程与线程之间的区别及其相互作用。 #### 一、进程的概念 进程是程序的一次执行过程,是系统进行...
进程与线程是操作系统中重要的概念,它们是执行程序的基础。在计算机系统中,进程可以理解为一个资源分配的基本单位,包含应用程序运行所需的所有资源,如内存、输入/输出设备等。而线程则是执行的基本单元,是进程...
鉴于网上和一些教材上对进程和线程说明不是很全面,在对这方面知识学习之后,进行了总结,对操作系统中进程与线程的关系和一些应用进行了整理,希望对有这方面需要的同道中人有所帮助。
在计算机科学领域,进程与线程是操作系统中最基础且至关重要的概念。进程是程序执行时的一个实例,每个进程都有自己的独立内存空间,包括代码、数据、堆栈等资源。线程则是进程内的一个执行单元,它共享进程的内存...
了解和掌握进程与线程的区别和交互机制,对于编写高效的多线程程序至关重要。通过互斥锁和信号量等同步工具,我们可以有效地控制线程的并发访问,确保程序的正确性和性能。在实际开发中,合理地使用进程和线程,结合...
操作系统中的进程与线程是计算机科学中两个基本的并发执行单元。进程是操作系统资源分配的基本单位,它拥有独立的内存空间,包括代码、数据、堆栈等资源,而线程则是执行调度的基本单位,线程共享同一进程的内存资源...
"easx.rar_进程与线程"这个压缩包文件显然包含了与易语言(EasyLanguage)相关的幼儿算术程序源码,这为易语言爱好者提供了一个学习和研究进程与线程如何在实际应用中运作的机会。 易语言是一种面向对象、简单易学...
3. **线程与工人** - 在一个车间里,有许多协同工作的工人,这对应于一个进程中可以有多个线程。 - 线程是任务执行的最小单元,它们共享同一份内存空间,共同完成进程的任务。 4. **内存共享与资源限制** - 就像...
标题中的“tph.zip_进程与线程”表明这是一个关于操作系统中进程和线程概念的压缩包文件,可能包含了一些示例代码或者教学材料。在IT领域,进程和线程是计算机程序执行时的重要概念。 **进程**是操作系统中运行程序...
综上所述,理解和掌握进程线程的创建、结束、暂停与恢复、同步与通信等知识对于编写高并发、高效能的多线程程序至关重要。在实际编程中,需要根据系统特性选择合适的线程管理机制,并遵循最佳实践以保证程序的稳定性...
"Android Task 进程与线程详解" Android 中的 Task 概念是指一组以栈的模式聚集在一起的 Activity 组件集合,具有潜在的前后驱关联。Task 的主要作用是将组件之间的连接,从进程概念的细节中剥离出来,可以以一种...
标题"Mis.rar_进程与线程"涉及到计算机操作系统中的核心概念——进程和线程。在计算机系统中,进程是程序的执行实例,每个进程都有独立的内存空间,而线程则是进程内部的一个执行流,共享同一进程的资源。陶善文的...
在这个"MFC进程与线程Demo程序"中,我们可以深入理解并实践如何在MFC环境中管理进程和线程。 首先,进程是操作系统分配资源的基本单位,而线程则是执行的基本单位。在MFC中,我们可以使用`CWinApp`类来创建和管理...
在本实验中,我们主要探讨了如何使用C++模拟查看进程与线程,以及了解操作系统中进程和线程的基本概念。实验目标旨在深入理解进程的生命周期,以及它们在Windows 2000操作系统中的表现。 首先,我们编写了一个简单...