zoukankan      html  css  js  c++  java
  • 进程

    l         进程概念

    l         进程的诞生

    l         进程的死亡

          

     

    一、进程:

    1、简单的说

    双击一个EXE图标时,系统就会产生一个相应的进程,分配相应的资源,并执行相应的代码。

     

    2、标准一些的说法:

       进程是一个具有独立功能的程序关于某个数据集合的一次运行活动。它可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体。它不只是程序的代码,还包括当前的活动,通过程序计数器的值和处理寄存器的内容来表示。

    3、进程的定义

       进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。

     

     

     

    二、 进程,线程相关函数

    Process and Thread Functions

    下列是进程与线程相关的函数

     

    三、进程的诞生

        假设EXE文件名为app.exe

        CreateProcess

      1、系统Shell调用CreateProcess 创建名为app.exe的进程

      2、系统产生一个“进程核心对象”,计数值为1

      3、系统为此进程建立一个4GB的地址空间

      4、系统将代码及相关数据加载映射到上述地址空间(如app.exe的程序代码,数据资源,dll动态链接库等)

      5、系统为此进程创建一个线程,这个线程称为主线程(primary thread),线程才是CPU时间分配对象。

       进程可以想成是一个家庭,线程是家里的成员,主线程就是一家之长!,一个进程最少有一个线程。

      6、系统调用C runtime 函数库的Startup code

      7、Startup code 调用App程序的WinMain入口函数

      8、App程序开始运行

     

    四、进程的死亡

        9、使用者关闭app主窗口,使WinMain消息循环结束,于是winMain结束。

        10、回到Startup code

        11、回到系统,系统调用 ExitProcess结束进程

        TerminateProcess

     

    五、相关代码测试

     CreateProcess

       PROCESS_INFORMATION pi;

           STARTUPINFO si={sizeof(si)};

         CreateProcess(NULL,"notepad.exe d:\1.txt",

                 NULL,NULL,false,NORMAL_PRIORITY_CLASS,NULL,NULL,

                 &si,&pi);

     

     ExitProcess

     TerminateProcess

  • 相关阅读:
    PHP 学习轨迹
    beego 遇到的一些问题
    Fiddler 502问题
    SourceTree
    Trait
    PHP PSR 标准
    解决MySQL联表时出现字符集不一样
    Git 代码管理命令
    PHP 运行相关概念
    CentOS 7
  • 原文地址:https://www.cnblogs.com/15157737693zsp/p/3842540.html
Copyright © 2011-2022 走看看