
核心编程
每天积累一点点#
蜗牛
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
进程和线程的区别
转自:http://blog.youkuaiyun.com/andy6355/article/details/2506171进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性。进程和线程的区别在于:简而言之,一个程序至少有一个进程,一个进程至少有一个线程.线程的划分尺度小于进程,使得多线程程序的并发性高。另外,进程在执行过程中拥有独转载 2012-05-05 07:46:42 · 372 阅读 · 0 评论 -
13.5 物理存储器和页交换文件
13.5 物理存储器和页交换文件在老式的操作系统中,物理存储器被认为是机器中内存的总量。换句话说,如果一台机器装有16 MB内存,那么应用程序最多可以使用16 MB内存。当今的操作系统能让磁盘空间看起来像内存一样。磁盘上的文件一般被称为页交换文件(paging file),其中包含虚拟内存,可供任何进程使用。当然,为了能够使用虚拟内存,操作系统需要CPU的大力协助。当线程试图访问转载 2012-07-25 23:15:47 · 1476 阅读 · 0 评论 -
第15章 在应用程序中使用虚拟内存
Microsoft Windows提供以下三种机制来对内存进行操控:虚拟内存 :最适合用来管理大型对象数组或大型结构数组。内存映射文件 :最适合用来管理大型数据流(通常是文件),以及在同一机器上运行的多个进程之间共享数据。堆 :最适合用来管理大量的小型对象。 以下将讨论第一种方式,即虚拟内存。 1.预定地址空间区域 我们可以调用Virtu转载 2012-07-25 23:00:13 · 1011 阅读 · 0 评论 -
给区域调拨物理存储器
给区域调拨物理存储器:为了使用所预订的地址空间区域,我们还必须分配物理存储器,并将存储器映射到所预订的区域。这个过程被称为调拨(committing)物理存储器。物理存储器始终都以页面为单位来调拨。我们通过调用VirtualAlloc函数来将物理存储器调拨给所预订的区域。当我们调拨物理存储器给区域时,并不需要给整个区域都调拨物理存储器。例如,我们可以预订一块大小为64 KB的区域,原创 2012-07-24 16:43:26 · 714 阅读 · 0 评论 -
NUMA----非统一内存访问
看核心编程的时候看到一个短语叫“非统一内存访问”,不是很理解,于是百度一下,下面解释来自http://hi.baidu.com/dpf19861128/blog/item/831a90a4ef7e29fe9052eedc.html之前很多人都认为MS的产品只能使用在中小企业,进不了企业级市场,MS的东西都是在PC server上来实现,无法和IBM的主机系统来PK。随着硬件的不断发展,转载 2012-07-24 10:48:43 · 3073 阅读 · 0 评论 -
windows线程池
线程池,由系统自动为我们创建的一些线程,这些线程都是worker线程,并且让线程池中的一个线程来调用我们的回调函数。当然线程的数量是由系统来维护的,对用户是透明的。 windows线程池函数允许我们做一下事情:①以异步的方式调用一个函数②每隔一段时间调用一个函数③当内核对象触发的时候调用一个函数④当异步I/O请求完成的时候调用一个函数下面分别简单介绍一下:原创 2012-07-15 16:45:26 · 1156 阅读 · 1 评论 -
异步设备I/O相关知识
异步I/O操作是指应用程序可以在后台读或者写数据,而在前台做其他事情。overlapped I/O是win32的一项技术,你可以要求操作系统为你传送数据,并且在传送完成后通知你,这项技术使你的程序在I/O进行的过程中仍然能够处理事务。 一旦一个线程触发了一个异步I/O请求,该线程将会继续运行,以执行其它有用的任务。但即便如此,线程最终还是需要与I/O操作的完成状态进行同步。换句话说,原创 2012-07-11 08:57:13 · 1080 阅读 · 0 评论 -
句柄和伪句柄
GetCurrentProcess(), DuplicateHandle()Window中为什么会有句柄的概念:从Visual C++的头文件来看,HANDLE被typedef为void的指针,那是指向未确定数据结构的指针:typedef void* HANDLE; 但是这并不说明任何问题,因为句柄远远不只是指向任意数据类型的指针。它是指向数据对象指针的指针。句转载 2012-04-23 15:40:52 · 415 阅读 · 0 评论 -
用户模式与内核模式
用户模式与内核模式从Intel80386开始,出于安全性和稳定性的考虑,该系列的CPU可以运行于ring0~ring3从高到低四个不同的权限级,对数据也提供相应的四个保护级别。运行于较低级别的代码不能随意调用高级别的代码和访问较高级别的数据,而且也只有运行在ring0层的代码可以直接对物理硬件进行访问。由于WindowsNT是一个支持多平台的操作系统,为了与其他平台兼容,它只利用了CPU的转载 2012-04-22 11:21:23 · 428 阅读 · 0 评论 -
内核对象与用户对象/GDI对象
一、内核对象 1.可以理解为操作系统使用和管理的控制块,例如嵌入式操作系统里的任务控制块,邮箱控制块等。 2.内核对象中有少数的静态成员(全局可见)。 3.只有通过调用windows api 才能使用内核对象。 4.内核对象的作用域是基于进程的,这样做处于安全和健壮型考虑。 5.内核对象有一个静态成员用来计数,当内核对转载 2012-04-21 17:17:48 · 2344 阅读 · 0 评论 -
内核级线程和用户级线程
在多线程操作系统中,各个系统的实现方式并不相同。在有的系统中实现了用户级线程,有的系统中实现了内核级线程1.内核级线程:(1)线程的创建、撤销和切换等,都需要内核直接实现,即内核了解每一个作为可调度实体的线程。(2)这些线程可以在全系统内进行资源的竞争。(3)内核空间内为每一个内核支持线程设置了一个线程控制块(TCB),内核根据该控制块,感知线程的存在,并进行控制。转载 2012-05-05 10:29:59 · 850 阅读 · 0 评论 -
Windows 内存管理
附:这篇文章整体讲的还不错,不过有些话不好理解,比如说堆说成堆栈。1.Windows的内存结构Windows系统中的每个进程都被赋予它自己的虚拟地址空间。对于32位进程来说,这个地址空间是4GB,因为32位指针可以拥有从0x00000000至0xFFFFFFFF之间的任何一个值。对于64位进程来说,则这个空间是16EB。由于每个进程可以接收它自己的私有的地址空间,因此当进程中的一个转载 2012-09-24 21:06:16 · 659 阅读 · 0 评论