WIN32学习(7月26号)-day2

WIN32程序运行原理

CPU的工作方式:

80386处理器的3种工作方式:

实模式

保护模式:

虚拟86模式:

虚拟内存

保护模式下80386所有32根地址线都可供寻址,寻址范围:0x00000000~0xFFFFFFFF(2^32,4G)

实际工作,进程不可能使用所有的系统空间;空间分为系统空间和用户空间

系统空间:系统空间中所有进程是共享的,这部分数据被保护起来

用户空间:进程私有的空间,所有的应用程序的数据都存放在这部分空间

两种访问模式(内核模式和用户模式)

Windows为防止程序访问或修改关键的系统数据,系统设置了两种访问模式:内核模式和用户模式;

内核模式:系统程序(系统驱动等)代码在内核模式下运行

用户模式:用户程序代码在用户模式下运行

当用户的应用程序调用一个系统函数时,程序会从用户模式切换到内核模式去执行;

内核对象

内核对象:用户模式下代码与内核模式下代码进行交互的基本接口;

对象句柄:句柄(Handle)是一个是用来标识对象或者项目的标识符,可以用来描述窗体、文件等,值得注意的是句柄不能是常量;

计数法——系统管理内核对象的方式

一个进程在第一次创建内核对象时,系统为其分配资源,并将其计数属性初始化为1;后续每次打开这个内核加1,如果关闭则减1,减到0说明进程对这个内核对象所有引用都关闭,系统释放此内核对象的资源。

应用程序的启动过程

进程:进程是正在运行的程序

线程:线程是进程执行代码的独立实体,

主线程:操作系统创建进程后,会创建一个线程执行进程中的代码;主线程在运行过程中可能会创建其他线程(辅助线程)。

线程只能访问属于它的进程的内存,属于其他进程的内存被屏蔽(不能被它访问)

例:A进程的地址0X12345存一个数据,B进程在地址0X12345可以存一个不一样的数据;A访问0X12345时只能访问A中的数据,B则访问的是B的。

应用程序的启动过程:

操作系统通过调用 CreateProcess函数创建新进程(内核计数会加1),接着系统会为新进程创建一个主线程,主线程通过运行启动代码调用main函数;

(若系统创建新的进程和进程的主线程成功,CreateProcess函数会返回TURE,否则返回FALSE)

父进程:创建进程的进程

子进程:被创建的进程

STARTUPINFO:系统在创建新的进程会为新进程指定一些信息,这个结构包含了父进程传递给子进程的一些信息;

 CreateProcess函数:用来创建一个新的进程和它的主线程,这个新进程运行指定的可执行文件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_40963883

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值