zoukankan      html  css  js  c++  java
  • 一个进程的诞生与死亡

    执行一个程序,必然就产生一个进程。最直接的程序执行方式就是在shell中以鼠标双击某一个可执行文件图标,执行起来的App进程起始是shell调用CreateProcess激活的。
    1.shell调用CreateProcess激活App.exe
    2.产生一个进程核心对象,计数值为1
    3.系统为此进程建立一个4GB地址空间
    4.加载器将必要的代码加载到上述地址空间中,包括App.exe的程序、数据,以及所需要的动态链接函数库DLL。加载器如何知道要加载那些DLLs呢?它们被记录在可执行文件PE文件的.idata section中。
    5.系统为此进程建立一个线程,称为主线程。线程才是CPU时间的分配对象。
    6.系统调用C runtime函数库的Startup code
    7.Startup code调用App程序的WinMain函数
    8.App程序开始运行
    9.使用者关闭App主窗口,是WinMain中的消息循环结束掉,于是WinMain结束
    10.回到Startup code
    11.回到系统,系统调用ExitProcess结束进程

    一个线程的诞生与死亡

    执行程序代码,是线程的工作。当一个进程建立起来后,主线程也产生。所以每一个Windows程序一开始就有了一个线程。我们可以调用CraeteThread产生额外的线程,系统会帮我们完成下列事情:

    1.配置“线程对象”,其handle将成为CreateThread的返回值

    2.设定计数值为1

    3.配置线程的context

    4.保留线程的堆栈

    5.将context中的堆栈指针缓存器(SS)和指针缓存器(IP)设定妥当。

    所谓的工作切换(context switch)其实就是对线程context的切换。

    http://blog.csdn.net/zang141588761/article/details/49512053

  • 相关阅读:
    战国时期主张合众联横的两位游士
    解读蓝帆“取势,明道,优术”
    云起龙骧
    取势明道优术_百度百科
    曾鸣[长江商学院教授]_互动百科
    E=MC2
    罗斯福6号_百度百科
    时尚大帝_百度视频
    群星云集 BOSS上海时装秀—情沪魅影- 在线观看
    林志玲“情沪魅影”时装片展情缘-中新网
  • 原文地址:https://www.cnblogs.com/findumars/p/6711507.html
Copyright © 2011-2022 走看看