zoukankan      html  css  js  c++  java
  • mfc 进程的诞生和死亡

        进程概念
        进程的诞生
        进程的死亡
           
    
    一、 进程:
    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
  • 相关阅读:
    Module not found: Error: Can't resolve './style':配置 extensions 的坑
    Mysql5.7前后修改用户密码变化
    一步步分析Java深拷贝的两种方式clone和序列化
    Windows下Nodejs的开发环境搭建
    JavaNIO第一话Buffer
    Vscode浏览器打开html vscode修改默认浏览器
    Windows电脑多个SSH Key管理.md
    jsonp跨域的原理
    POJ1502(MPI Maelstrom)
    POJ1088(滑雪)
  • 原文地址:https://www.cnblogs.com/whzym111/p/6231857.html
Copyright © 2011-2022 走看看