浅墨浓香

想要天亮进城,就得天黑赶路。

导航

随笔分类 -  Windows核心编程

摘要:17.1 操作系统的内存管理(1)内存管理基础 ①虚拟内存函数:主要用于预留/提交/释放虚拟内存,在虚拟内存页上改变保护方式、锁定虚拟内存页,以及查询一个进程的虚拟内存等操作,是一组位于底层的函数。 ②堆管理函数:相对比较高级一点。Win32中的堆分为两种,一种是进程的“默认堆”,默认堆只有一个... 阅读全文

posted @ 2015-10-22 08:53 浅墨浓香 阅读(5275) 评论(0) 推荐(1) 编辑

摘要:16.1 线程栈及工作原理(1)线程栈简介 ①系统在创建线程时,会为线程预订一块地址空间(即每个线程私有的栈空间),并调拨一些物理存储器。默认情况下,预订1MB的地址空间并调拨两个页面的存储器。 ②调整线程栈的默认大小可以使用编译选项或#pragma指令,具体用法视编译器不同,VC下可以使用 /... 阅读全文

posted @ 2015-10-17 20:07 浅墨浓香 阅读(866) 评论(0) 推荐(0) 编辑

摘要:15.6 改变保护属性(1)VritualProtect函数参数描述PVOID pvAddress指向要修改属性的内存基地址SIZE_T dwSize区域的大小,以字节为单位DWORD flNewProtectPAGE_*(除PAGE_WRITECOPY、PAGE_EXCUTE_WRITECOPY外... 阅读全文

posted @ 2015-10-07 22:06 浅墨浓香 阅读(591) 评论(0) 推荐(1) 编辑

摘要:15.1 预订(Reserve)地址空区域 (1)VirutalAlloc(pvAddress,dwSize,fdwAllocationType,fdwProtect) ①PVOID pvAddress参数:内存地址,要预订的地址空间中的哪一块。 A.这个参数也说明也该函数是较底层函数的原因,因为可 阅读全文

posted @ 2015-10-06 17:47 浅墨浓香 阅读(767) 评论(0) 推荐(0) 编辑

摘要:14.4 确定地址空间的状态14.4.1 查询内存状态API (1)VirtualQuery(Ex)函数参数描述HANDLE hProcess要查询的另一个进程的句柄。(注意,这个参数只有VirtualQueryEx才有,VirtualQuery只能查本进程的信息)LPCVOID pvAddress... 阅读全文

posted @ 2015-10-03 16:47 浅墨浓香 阅读(908) 评论(0) 推荐(0) 编辑

摘要:14.1 系统信息(1)获取系统信息GetSystemInfo函数中的SYSTEM_INFO参数字段描述WORD wProcessorArchitecture或wReserved联合体。为今后扩展而保留,请勿使用DWORD dwPageSize表示CPU页面的大小。在x86和x64机器中,该值为4K... 阅读全文

posted @ 2015-10-02 21:00 浅墨浓香 阅读(795) 评论(0) 推荐(0) 编辑

摘要:13.1 Windows的虚拟地址空间安排13.1.1虚拟地址空间的分区(即虚拟地址空间布局)进程的地址空间划分分区x86 32位Windows3GB用户模式下的x8632位WindowsX64 64位WindowsIA-64 64位Windows空指针赋值区0x0000 00000x0000 FF... 阅读全文

posted @ 2015-09-29 14:14 浅墨浓香 阅读(2790) 评论(0) 推荐(1) 编辑

摘要:12.1 纤程对象的介绍(1)纤程与线程的比较比较线程(Thread)纤程(Fiber)实现方式是个内核对象在用户模式中实现的一种轻量级的线程,是比线程更小的调度单位。调度方式由Microsoft定义的算法来调度,操作系统对线程了如指掌。内核对线程的调度是抢占式的。由我们自己调用SwitchToFi... 阅读全文

posted @ 2015-09-23 00:09 浅墨浓香 阅读(2427) 评论(0) 推荐(1) 编辑

摘要:11.3 私有的线程池11.3.1 创建和销毁私有的线程池(1)进程默认线程池 当调用CreateThreadpoolwork、CreateThreadpoolTimer、CreateThreadpoolWait或CreateThreadpoolIo,并使传入参数PTP_CALLBACK_ENVIR... 阅读全文

posted @ 2015-09-20 14:09 浅墨浓香 阅读(1018) 评论(0) 推荐(0) 编辑

摘要:11.2 Win2008以上的新线程池(1)传统线程池的优缺点: ①传统Windows线程池调用简单,使用方便(有时只需调用一个API即可) ②这种简单也带来负面问题,如接口过于简单,无法更多去控制线程池的行为。(2)Windows2008新线程池及API线程池对象传统APIWin2008及以上... 阅读全文

posted @ 2015-09-16 09:40 浅墨浓香 阅读(3279) 评论(0) 推荐(3) 编辑

摘要:第11章 Windows线程池11.1 传统的Windows线程池及API(1)线程池中的几种底层线程 ①可变数量的长任务线程:WT_EXECUTELONGFUNCTION ②Timer线程:调用CreateTimerQueueTimer时,将在Timer线程上创建以APC方式通知的可等待计时器... 阅读全文

posted @ 2015-09-13 17:01 浅墨浓香 阅读(2199) 评论(1) 推荐(0) 编辑

摘要:I/O完成端口原理见上一篇(可点击这里)10.5.4.4 利用I/O完成端口实现Socket通信(1)Accept和AcceptEx流程的比较 ①采用accept方式的流程示意图如下(普通的阻塞函数) ②采用AcceptEx方式的流程示意图如下(可工作在阻塞或非阻塞方式)、【注意】:Accept... 阅读全文

posted @ 2015-09-11 22:38 浅墨浓香 阅读(1104) 评论(0) 推荐(0) 编辑

摘要:10.5 接收I/O请求完成的通知(1)I/O请求被加入设备驱动程序的队列,当请求完成以后,设备驱动也要负责通知我们I/O请求己经完成。(2)可以用4种方法来接收I/O请求己经完成的通知技术特点触发设备内核对象①允许一个线程发出I/O请求,另一个线程对结果进行处理。②当向一个设备同时发出多个I/O请... 阅读全文

posted @ 2015-08-28 10:56 浅墨浓香 阅读(1952) 评论(0) 推荐(0) 编辑

摘要:10.3 执行同步设备I/O(1)对设备读写操作的函数 ①ReadFile/WriteFile函数参数描述hFile文件句柄pvBuffer指向要接收文件数据的缓冲区或把缓冲区数据写入设备nNumbytesToRead要读取的字节数或写入的字节数pdwNumBytes实际读取的字节数或写入的字节数... 阅读全文

posted @ 2015-08-27 21:09 浅墨浓香 阅读(696) 评论(0) 推荐(0) 编辑

摘要:10.1 打开和关闭设备10.1.1 设备的定义——在Windows中可以与之进行通信的任何东西。(1)常见设备及用途设备用途用来打开设备的函数文件永久存储任何数据CreateFile(pszName为路径名或UNC路径名)目录属性和文件压缩的设置同上,如果指定FILE_FLAG_BACKUP_SE... 阅读全文

posted @ 2015-08-26 23:33 浅墨浓香 阅读(1231) 评论(0) 推荐(0) 编辑

摘要:9.7 线程同步对象速查表 对象 何时处于未触发状态 何时处于触发状态 成功等待的副作用 进程 进程仍在运行的时候 进程终止的时(ExitProcess、TerminateProcess) 没有 线程 线程仍在运行的时候 线程终止的时候(ExitThread、TermimateThread) 没有 阅读全文

posted @ 2015-08-21 10:51 浅墨浓香 阅读(1250) 评论(0) 推荐(1) 编辑

摘要:9.5 信号量内核对象(Semaphore)(1)信号量的组成 ①计数器:该内核对象被使用的次数 ②最大资源数量:标识信号量可以控制的最大资源数量(带符号的32位) ③当前资源数量:标识当前可用资源的数量(带符号的32位)。即表示当前开放资源的个数(注意不是剩下资源的个数),只有开放的资源才能... 阅读全文

posted @ 2015-08-19 14:36 浅墨浓香 阅读(688) 评论(0) 推荐(0) 编辑

摘要:9.4 可等待的计时器内核对象——某个指定的时间或每隔一段时间触发一次(1)创建可等待计时器:CreateWaitableTimer(使用时应把常量_WIN32_WINNT定义为0x0400)参数描述psa安全属性(如使用计数、句柄继承等)bManualReset手动重置计时器还是自动重置计时器。①... 阅读全文

posted @ 2015-08-18 16:33 浅墨浓香 阅读(846) 评论(0) 推荐(0) 编辑

摘要:9.1 等待函数(1)WaitForSingleObject(hObject,dwMilliseonds); ①dwMilliseconds为INFINITE时表示无限等待 ②dwMilliseconds=0时表示立即返回,即使它要等待的条件还没满足 ③dwMilliseconds为其它值时(... 阅读全文

posted @ 2015-08-18 09:28 浅墨浓香 阅读(708) 评论(0) 推荐(0) 编辑

摘要:8.6 条件变量(Condition Variables)——可利用临界区或SRWLock锁来实现 8.6.1 条件变量的使用 (1)条件变量机制就是为了简化 “生产者-消费者”问题而设计的一种线程同步机制。其目的让线程以原子方式释放锁并将自己阻塞,直到某一个条件成立为止。如读者线程当没有数据可读取 阅读全文

posted @ 2015-08-15 22:20 浅墨浓香 阅读(2514) 评论(0) 推荐(0) 编辑