`
laoyao319
  • 浏览: 13387 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类

进程说明

 
阅读更多

一、什么是程序?什么是进程?什么是线程?

       首先先回顾一下经典的定义。程序(program)是为实现特定目标或解决特定问题而用计算机语言编写的命令序列的集合。进程(process)是一个执行中的程序的一个实例。线程(thread)是"进程"中某个单一顺序的控制流。

       接下来通过两个生活中的实例来给出一个感性认识。第一个实例是拍电影的场景。程序就相当于一个剧本,事先写好的,而进程就相当于依照这个剧本来拍电影的整个过程,包括这个过程的环境,线程则是整部电影的各个小场景的拍摄过程,线程之间必须有个同步,就如同一部电影很多场景的拍摄的先后顺序要协调一下。大家想想,操作系统相当于电影整个过程中的哪个角色?

       另一个实例就是元旦舞会的举办。举办舞会也需要事先写好的策划书,然后按照策划书来举办舞会,整个舞会也有很多不同的小事情。程序就相当于策划书,进程就相当于舞会的整个过程,线程就相当于舞会中的不同的小事情。

       接下来让我们从初级程序员的角度来看看这些概念。程序不用说了,就是你用计算机语言编写的代码。进程对于程序来说,相当于一个容器,程序的运行就是把程序装入容器,然后操作系统根据程序的命令使得这个容器运转起来,期间还可能需要向容器中加入一些其他的东西(比如DLL等)来使得程序正常运行。当应用程序被运行两次时,前一个进程容器里的东西并不会被倒掉,系统会找一个新的进程容器来容纳它,重复上述的过程。程序的执行是为了完成某项任务,而完成这项任务可能有很多小步骤需要完成,如果这些小步骤可以并发执行,则可以把这些小步骤作为进程中的线程,线程就是进程这个大步骤中的不同的需要协调的小步骤。

       进程中有什么内容呢?它的虚拟地址空间布局是什么样的呢?

 

 1 进程组成内容

 

进程的用户地址空间布局

       应用程序的格式是什么样的呢?我们编写的代码和编译好的应用程度的对应关系是怎样的呢?

 

3 ELF文件的格式

 

代码和ELF格式应用程序的对应关系

 

进程的特征

       动态性:进程的实质是程序在多道程序系统中的一次执行过程,进程是动态产生,动态消亡的。

  并发性:任何进程都可以同其他进程一起并发执行

  独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位;

  异步性:由于进程间的相互制约,使进程具有执行的间断性,即进程按各自独立的、不可预知的速度向前推进

  结构特征:进程由程序、数据和进程控制块三部分组成。

       多个不同的进程可以包含相同的程序:一个程序在不同的数据集里就构成不同的进程,能得到不同的结果;但是执行过程中,程序不能发生改变

 

为什么要引入进程?

       从理论角度看,是对正在运行的程序过程的抽象。传统的程序本身是一组指令的集合,是一个静态的概念,无法描述程序在内存中的执行情况,即我们无法从程序的字面上看出它何时执行,何时停顿,也无法看出它与其它执行程序的关系,因此,程序这个静态概念已不能如实反映程序并发执行过程的特征。

       从实现角度看,进程是一种数据结构,目的在于清晰地刻划动态系统的内在规律,有效管理和调度进入计算机系统主存储器运行的程序。

 

一个程序的生与死是怎样的过程呢?

       下面讲一个EXE格式的程序的具体运行过程。首先点击exe应用程序的图标,操作系统的shell进程(也就是explorer.exe桌面进程)就会监测到这一动作,它便查找注册表中应用程序的相关信息(如果是绿色版软件就不需要查找注册表),然后Explorer.exe 以应用程序文件名调用CreateProcess 函数来创建一个进程,CreateProcess函数做的工作就是创建进程内核对象(操作系统用它来管理进程的一个数据结构),创建进程的虚拟地址空间,初始化虚拟地址空间(也就是把exe文件代码,数据以及其他一些必须的DLL文件映射到这个空间,还记不记得进程相当于一个容器?),创建主线程(一个进程至少要有一个主线程才能运行,可以说进程只是充当一个容器的作用,而线程才是执行用户代码的载体。就像一个运作的企业,它只是提供一个大环境,真正做事的都是里面的人)。主线程获得CPU时间后(因为可能有很多程序同时执行,操作系统要切换进程,我们的进程才能获得CPU时间),接下来就是主线程要执行代码了,首先是找到主函数入口(当然之前要做一些运行库的初始化,因为代码中要调用这些库函数),然后开始执行代码咯(像windows程序的话就是先注册窗口类,然后创建窗口或者对话框,然后等待用户的点击或者输入,因为windows程序是基于消息的,你点击一下就会发消息给程序,程序就根据消息的不同来执行相应的代码,然后循环点击-响应这个过程)。最后当你点击关闭的时候,程序就会关闭窗口,退出消息循环的过程,然后做一些内存清理的工作(因为你运行的时候系统给你分配了很多资源啊,结束了肯定要退还啊),最后调用ExitProcess函数来销毁进程(销毁空间啊,内核对象啊等),然后程序的运行就终止了。

 

回顾一下:

1ShellExplorer.exe)调用CreateProcess 函数激活exe 程序

2、系统创建一个进程内核对象,引用计数置为1

3、系统为进程创建一个4GB 的进程虚拟地址空间

4PE 装载器把exe 的代码映射到地址空间,并查找Import Table 引入相关的动态链接库(DLLs

5、系统为进程创建一个主线程,线程得到CPU 后,把CS:IP 指向.text 节中的程序进入点(OEP),此处是一条JMP 指令,它跳到XXXCRTStartup函数处执行

6、这里完成c/c++运行期库的一些初始化设置,包括c++构造函数的调用全局变量,静态变量的初始化

7、调用WinMain/main 函数,进入主函数

8、注册窗口类,创建窗口,显示窗口,更新窗口,进入消息循环

9、销毁窗口,退出消息循环,销毁进程,程序运行结束。

分享到:
评论

相关推荐

    Oracle 11gR2 RAC 进程说明

    在深入探讨Oracle 11gR2 RAC(Real Application Clusters)的进程说明之前,我们首先需要理解Oracle Clusterware的基础概念以及它如何利用投票磁盘(Voting Disks)和Oracle Cluster Registry(OCR)来确保集群的...

    centos进程说明终版.pdf

    centos进程说明终版.pdf

    XP所有进程说明

    在深入探讨Windows XP系统中的进程之前,我们先简要了解Windows XP系统本身。Windows XP是微软于2001年发布的一款操作系统,以其稳定性和用户友好性而广受好评,直至今日,在某些领域仍能看到其身影。对于电脑故障...

    进程控制实验说明

    ### 进程控制实验知识点详解 #### 一、实验背景与目标 本次实验的主要目的是让学生深入理解操作系统中的进程控制机制。通过实际编程操作,学生能够更直观地掌握进程的概念及其与程序之间的区别,并且能够认识到...

    易语言暂停进程源码.zip_API暂停进程_暂停程序源码_暂停进程代码_进程暂停_进程暂停API

    "源码说明.txt"应该是对源代码的解释和指导,帮助用户理解并使用这段代码。"看流星社区.url"可能是一个链接到编程社区的快捷方式,用户可以在那里找到更多易语言相关的资源和技术支持。 总的来说,这个压缩包提供了...

    Window系统进程详细说明

    以下是一些常见的系统进程及其详细说明: 1. **System Process**(system process):这是Windows内核的一部分,主要负责页面内存管理和0级优先级的任务。它不直接与用户交互,但管理其他进程的内存分配和页面交换...

    Unix进程管理说明

    "Unix进程管理说明" Unix进程管理是指Unix系统中对进程的创建、管理和调度的机制。进程是Unix系统中最基本的执行单元,是系统进行资源分配和调度的基本单位。 一、Unix进程概念 Unix进程是一个具有一定独立功能...

    Windows进程详细说明

    ### Windows进程详细说明 #### 基本概念与作用 在Windows操作系统中,进程是操作系统进行资源分配和调度的基本单位,也是程序的一次执行过程。每个进程都有自己独立的地址空间、资源(如文件句柄、内存)和系统...

    linux关于进程同步的说明

    在该协议下,当一个高优先级进程被一个低优先级进程阻塞时,低优先级进程会暂时提升自己的优先级至与高优先级进程相同,这样即使有其他更低优先级的进程准备就绪也不会抢占低优先级进程的CPU时间,从而确保高优先级...

    进程调度程序模拟 进程调度程序模拟 进程调度程序模拟

    以下是关于这两种调度策略的详细说明: 1. **先来先服务(FCFS)调度算法**: FCFS是最简单的调度算法,它按照进程到达的先后顺序来分配CPU。在实验中,进程按照其ReachT(到达时间)从小到大依次执行。例如,如果...

    HideProcess完结篇.zip_c++ 进程隐藏_c++隐藏进程_隐藏进程_隐藏驱动_驱动隐藏进程

    "说明.txt"可能提供了额外的技术细节或使用指南。"Win7Debug"可能包含了一些针对Windows 7系统的调试工具或资料。"HideProcess"和"x64"目录可能分别包含编译后的可执行文件和适用于64位系统的相关文件。"HideProcess...

    伪进程隐藏,简单实现任务管理器进程列表不显示

    优点:不用加载驱动,简单实用,不需要什么高技术。缺点:。①限制winxp和win7(为什么限制winxp和win7? 因为其他系统的进程列表显示不是用超级列表框...说明:仅仅适合winXP和win7系统。@[不速之客]。Tags:进程隐藏。

    Linux 进程管理 实验说明

    Linux 进程管理实验说明 Linux 进程管理是 Linux 操作系统中的一项重要功能,它负责管理系统中的进程资源,包括进程创建、进程调度、进程同步、进程通信等。下面是 Linux 进程管理实验说明中的一些重要知识点: 一...

    易语言进程双向通信源码

    "源码使用说明.txt"文件应该包含了关于如何编译、运行以及理解这些源代码的详细指南。通过阅读这份文档,我们可以了解到如何在易语言环境中运行和调试这些代码,同时也能深入理解其背后的实现原理。 在实际应用中,...

    VC进程ID获得主窗口句柄获得进程名

    7. 其它说明 从CCheckObject类和上面的源码中,不难写出从 进程ID 主线程ID 进程ID 主窗口句柄 主线程ID--->主窗口句柄 等等其它类似转换. 对于主窗口,特点如下: A. 不能用进程ID,要用线程ID,因为一个进程可能有...

    windows系统进程详解说明

    进程名称: Windows内存处理系统进程 描述: Windows页面内存管理进程,拥有0级优先。 是否为系统进程: 是 alg.exe 进程文件: alg or alg.exe 进程名称: 应用层网关服务 描述: 这是一个应用层网关服务用于网络共享。...

    隐藏进程保护进程

    “请先看我.txt”可能是一个说明文件,提供了关于如何使用上述资源的指南,包括如何安装驱动,如何配置隐藏进程,以及可能的安全注意事项。阅读这个文本文件对于正确理解和使用提供的工具至关重要。 隐藏进程技术...

    进程创建系统说明书

    《进程创建系统说明书》 进程创建是操作系统中的基础操作,它允许程序在系统中并行运行,形成多任务环境。本说明书将详细阐述如何利用系统调用`fork()`来创建两个子进程,以及在此过程中涉及的进程概念和操作系统...

    操作系统中进程相关题目

    四、 某进程完成一次 I/O 操作,从操作系统管理角度观察,应使用哪些软、硬件资源参与操作,请示图说明。 在操作系统中,I/O 操作需要使用软、硬件资源,如: 1. 中断机制。 2. 设备驱动程序。 3. 缓冲区。 4. ...

Global site tag (gtag.js) - Google Analytics