普通漫谈兼容内核-Windows线程间的强相互作用

漫谈兼容内核-Windows线程间的强相互作用
    在现代的计算机系统中,一项作业(Job)往往需要多个进程或线程的协作,而操作系统则要为进程或线程间的协作提供基础设施和机制上的支持。操作系统、特别是内核,提供什么样的设施和手段,系统中的进程之间和线程之间就会有什么样的相互作用。如果把一个系统比作一个社会,那么系统中的进程和线程就好像是社会中的成员。成员的行为和成员之间...

普通Windows用户模式内核模式-转

Windows用户模式内核模式-转
    运行 Windows 的计算机中的处理器有两个不同模式:“用户模式”和“内核模式”。根据处理器上运行的代码的类型,处理器在两个模式之间切换。应用程序在用户模式下运行,核心操作系统组件在内核模式下运行。多个驱动程序在内核模式下运行,但某些驱动程序在用户模式下运行。 当启动用户模式的应用程序时,Windows 会为该应用程...

普通物理地址和虚拟地址的概念

物理地址和虚拟地址的概念
    虚拟地址和物理地址的概念 CPU通过地址来访问内存中的单元,地址有虚拟地址和物理地址之分,如果CPU没有MMU(Memory Management Unit,内存管理单元),或者有MMU但没有启用,CPU核在取指令或访问内存时发出的地址将直接传到CPU芯片的外部地址引脚上,直接被内存芯片(以下称为物理内存,以...

普通Windows MDL原理总结

Windows MDL原理总结
    1 先是mdl的数据结构。 2 下面根据用法逐步的讲解mdl数据结构的含义:一般用法,先是 IoAllocateMdl :原型为: 最常用的是VirtualAddress和Length。把自己的NonPageable buffer的起始地址传给IoAllocateMdl ,长度也传给他。可是这个函数具体做了啥呢(下面只...

普通win32内存管理

win32内存管理
    1.Windows的内存结构Windows系统中的每个进程都被赋予它自己的虚拟地址空间。对于32位进程来说,这个地址空间是4GB,因为32位指针可以拥有从0x00000000至0xFFFFFFFF之间的任何一个值。对于64位进程来说,则这个空间是16EB。由于每个进程可以接收它自己的私有的地址空间,因此当进程中的一个线...

普通在驱动和应用程序间共享内存

在驱动和应用程序间共享内存
    在不同的场合,很多驱动编写人员需要在驱动和用户程序间共享内存。两种最容易的技术是: l 应用程序发送IOCTL给驱动程序,提供一个指向内存的指针,之后驱动程序和应用程序就可以共享内存。(应用程序分配共享内存) l 由驱动程序分配内存页,并映射这些内存页到指定用户模式进程的地址空间,并且将地址返回给应用程序。(驱动程...

普通《算法之美》---二叉堆及其实现

《算法之美》---二叉堆及其实现
    二叉堆是一棵满足下列性质的完全二叉树: 1)如果某节点有孩子,则根节点的值都小于孩子节点的值。我们称之为小根堆; 2)如果某节点有孩子,则根节点的值都大于孩子节点的值。我们称之为大根堆。 这样,如果我们用一维数组a存储来存储该堆,那么具有n个节点的堆可看成是一棵按层次排列,同一层按自左向右排列的完全二叉树。显然,小根堆...

普通《ASCE1885的IT笔试面试题》の0000 0006

《ASCE1885的IT笔试面试题》の0000 0006
    1)输出当前源文件的文件名以及源文件的当前行号? 解答: ANSI C标准预定义宏: 1)__LINE__:在源文件中插入当前源代码行号; 2)__FILE__:在源文件中插入当前源文件名; 3)__DATE__:在源文件中插入当前的编译日期; 4)__TIME__:在源文件中插入当前编译时间; 5)__STDC__:...

普通《ASCE1885的IT笔试面试题》---0000 0005

《ASCE1885的IT笔试面试题》---0000 0005
    1)什么时候使用模板,而不是重载? 解答:模板适用于函数的参数个数相同而类型不同,且函数体相同的情况;不满足这种情况时,就只能使用函数重载。 2)C++不使用sizeof,判断机器是16位还是32位? 解答:如果可以使用sizeof,那是再简单不过了: #include <iostream> int main() ...

普通《ASCE1885的IT笔试面试题》---0000 0004

《ASCE1885的IT笔试面试题》---0000 0004
    一、 对错题。判断以下说法的正确性,在下面表格中对应的编号下面写上“对”或“错”。(20分,每个题目2分) 题号 1 2 3 4 5 6 7 8 9 10 对/错 对 错 对 错 错 对 错 对 错 对 1. 说明函数原型时不需要指明每个函数参数的名字,只需要说明每个参数的类型和返回值类型就可以了。 2. 所...
共57条记录