进程是操作系统结构的基础,是多道程序系统出现后,为了刻画系统内部出现的动态情况,描述系统内部各道程序的活动规律引进的一个概念。进程是一个具有独立功能的程序关于某个数据集合的一次运行活动,它可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体。它不只是程序的代码,还包括当前的活动,通过程序计数器的值和处理寄存器的内容来表示。
1. 进程的概念
l进程是一个正在执行的程序;计算机中正在运行的程序实例;可以分配给处理器并由处理器执行的一个实体;由单一顺序的执行显示,一个当前状态和一组相关的系统资源所描述的活动单元;
l对应用程序来说,进程就像一个大容器。在应用程序被运行后,就相当于将应用程序装进容器里了,你可以往容器里加其他东西(如:应用程序在运行时所需的变量数据、需要引用的DLL文件等);
l从理论角度看,进程是对正在运行的程序过程的抽象,从实现角度看,进程是一种数据结构,目的在于清晰地刻划动态系统的内在规律,有效管理和调度进入计算机系统主存储器运行的程序。
2. 进程的内容和状态
进程由进程控制块、程序段、数据段三部分组成。一个进程可以包含若干线程(Thread),线程可以帮助应用程序同时做几件事,在程序被运行后,系统首先要做的就是为该程序进程建立一个默认线程,然后程序可以根据需要自行添加或删除相关的线程。进程在运行时,状态(state)会改变:
l新生(new):进程新产生中;
l运行(running):正在运行;
l等待(waiting):等待某事发生,例如等待用户输入完成;
l就绪(ready):排队中,等待CPU;
l退出(terminated):完成运行;
状态之间的转换关系如图:
3. 进程死锁
如果多个进程同时占有对方需要的资源而同时请求对方的资源,而它们在得到请求之前不会释放所占有的资源,那么就会导致死锁的发生。
l死锁产生的原因:一是系统提供的资源太少,远不能满足并发进程对资源的需求;二是由于进程的推进顺序不合适
l产生死锁的必要条件:互斥条件(Mutual exclusion)、请求与保持条件(Hold and wait)、非剥夺条件(No pre-emption)和循环等待条件(Circular wait)
l死锁的预防:采用资源静态分配策略,破坏“部分分配”条件;允许进程剥夺使用其他进程占有的资源,从而破坏“不可剥夺”条件;采用资源有序分配法,破坏“环路”条件。最著名的死锁避免算法是银行家算法。
4. 进程间通信
进程间通信(IPC,Inter-Process Communication),指至少两个进程或线程间传送数据或信号的一些技术或方法。进程是计算机系统分配资源的最小单位,每个进程都有自己的一部分独立的系统资源,彼此是隔离的。为了能使不同的进程互相访问资源并进行协调工作,才有了进程间通信。这些进程可以运行在同一计算机上或网络连接的不同计算机上。进程间通信技术包括消息传递、同步、共享内存和远程过程调用。IPC是一种标准的Unix通信机制。主要的IPC方法:
l信号(Signals):信号是Unix系统中使用的最古老的进程间通信的方法之一。操作系统通过信号来通知进程系统中发生了某种预先规定好的事件(一组事件中的一个),它也是用户进程之间通信和同步的一种原始机制;
l套接字(Socket):更为一般的进程间通信机制,可用于不同机器之间的进程间通信。
l消息队列(Message queue):消息队列就是消息的一个链表,它允许一个或多个进程向它写消息,一个或多个进程从中读消息;
l管道(Pipe)和命名管道(Named Pipe):管道可用于具有亲缘关系进程间的通信,命名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信;
l信号量(Semaphore):主要作为进程间以及同一进程不同线程之间的同步手段;
l共享内存:通常由一个进程创建,其余进程对这块内存区进行读写;
l消息传递(Message passing)(不共享):用于MPI规范,Java RMI,CORBA,MSMQ, MailSlot 以及其它;
l内存映射文件(Memory-mapped file):内存映射允许任何多个进程间通信,每一个使用该机制的进程通过把一个共享的文件映射到自己的进程地址空间来实现它。
java实现进程间通信的方法主要有socket、RMI和CORBA
分享到:
相关推荐
隐藏进程Process MasterV1.1隐藏进程Process MasterV1.1隐藏进程Process MasterV1.1隐藏进程Process MasterV1.1隐藏进程Process MasterV1.1
【Python进程Process模块】是Python中用于处理进程的模块,它是多进程编程的基础。在操作系统中,进程是对各种资源管理的单位,包括内存、网络接口等。一个进程可以包含多个子进程,每个进程都有自己的独立内存空间...
标题中的“dotnet6创建进程Process.Start设置UseShellExecute在Windows下对性能的影响”涉及到的是.NET 6框架下的C#编程技术,特别是关于系统进程管理的部分。`Process.Start`是.NET Framework(包括.NET 6)中用于...
**ProcessExplorer 进程查看器详解** ProcessExplorer 是一款强大的系统监控工具,由微软的Sysinternals Suite开发团队创建,专用于Windows操作系统。它超越了Windows自带的任务管理器,提供了更详细、更深入的进程...
1. **详细进程信息**: Process Explorer能够显示每个进程的详细信息,包括PID(进程ID)、线程、优先级、内存使用情况、CPU占用率等,这对于系统管理员和开发者来说极其宝贵,他们可以据此分析和优化系统性能。...
进程Process是对各种资源管理的集合,包含对各种资源的调用、内存的管理、网络接口的调用;一个进程Process可以包含多个子进程,启动一个进程的时候会自动创建一个线程,进程里的第一个线程就是主线程(即python __...
首先,我们来理解“进程ID”(Process ID,PID)。每个正在运行的程序在操作系统中都被视为一个进程,拥有唯一的进程ID,它是操作系统管理进程的主要标识符。通过进程ID,我们可以精确地定位到我们需要关注的特定...
"C# 关闭进程 KillProcess"这个话题涉及到的就是如何使用C#编程语言来实现这一功能,特别是通过进程的PID(Process ID,进程标识符)来关闭指定的进程。下面我们将深入探讨这一主题。 首先,PID是Windows操作系统为...
2. **遍历进程列表**:对获取到的进程集合进行循环遍历,检查每个进程的`ProcessName`属性,看是否与目标进程名匹配。 3. **关闭进程**:如果找到匹配的进程,使用`Process.Kill()`方法强制结束该进程。这个操作是...
Process Hacker是一款针对高级用户的安全分析工具,它可以帮助研究人员检测和解决软件或进程在特定操作系统环境下遇到的问题。除此之外,它还可以检测恶意进程,并告知我们这些恶意进程想要实现的功能。 Process ...
代码首先检查进程是否存在,如果存在,就调用`Process.Kill()`方法来强制结束该进程。如果过程中出现异常,如权限不足或者进程已经结束,程序会显示相应的错误信息。 在实际应用中,需要注意安全性和权限问题。强制...
本资源"HideProcess完结篇.zip"聚焦于C++编程实现的进程隐藏及驱动级隐藏技术。这些技术涉及操作系统内部工作原理,特别是Windows系统,是系统安全、恶意软件防御和逆向工程中的重要组成部分。 首先,我们要理解...
标题和描述均提到了“Process启动进程”,这是在.NET框架中使用`System.Diagnostics.Process`类来启动外部程序或进程的一种方法。以下将深入探讨这一知识点,包括如何使用`Process`类来启动各种类型的应用程序、服务...
// 另一端程序,通过ProcessMonitor.getProcessMonitorTypeWEB() 即可开启守护进程 } } 发送消息测试: package com.test; import org.msun.process.SendMsgUtil; /** * 发送消息 */ public class SendMsg {...
可以使用`CreateToolhelp32Snapshot`和`Process32First/Next` API来遍历系统中的所有进程,然后根据进程名称匹配目标。 3. **PBDOM和SQLScript**:虽然PBDOM主要用于处理DataWindow对象,但也可以通过扩展使用到...
C#中可以使用System.Diagnostics命名空间下的Process类来与这些进程交互。 要找到并杀死Word进程,我们首先需要导入`System.Diagnostics`命名空间,然后使用以下步骤: 1. **查找Word进程**:我们可以遍历所有运行...
- **获取进程属性**:一旦有了进程对象,就可以调用它的属性获取详细信息,如`Process.MainModule.FileName`获取主模块文件名,`Process.WorkingSet64`获取内存使用量。 3. **示例代码**: ```csharp using ...
例如,`Process.Start`方法可以启动一个新的进程,`Process.Kill`方法可以结束指定的进程,`Process.Refresh`方法可以刷新进程的状态信息。 此外,如果需要更深入地获取进程的详细信息,如模块列表、环境变量等,...
Process Explorer 是一个强大的进程管理工具,由微软的Sysinternals Suite提供,它超越了Windows操作系统自带的任务管理器,提供了更详细、更深入的系统监控和管理能力。 Process Explorer 提供的功能包括但不限于...
Process类提供了与进程相关的各种功能,如启动、停止进程以及获取进程信息。要枚举计算机上的所有进程,我们需要实例化Process类并调用它的静态方法Process.GetProcesses()。这个方法会返回一个Process数组,包含了...