OS
文章平均质量分 78
zhongjiekangping
热爱技术,追逐但不狂热...... 比较喜欢探索自己的未知领域,喜欢了解各种编程环境和领域,平时也比较喜欢阅读,用心的阅读可以使人沉淀。
展开
-
Unicode 的编码和实现
Unicode 的编码和实现 非 Unicode 环境 XML 和 Unicode 输入Unicode 为什么使用Unicode? Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。1990年开始研发,1994年正式公布。随着计算机工作能力的增强,Unicode也在面世转载 2009-07-29 14:07:00 · 752 阅读 · 0 评论 -
信号量和线程互斥锁
None转载 2010-06-10 10:53:00 · 1785 阅读 · 1 评论 -
信号量Semaphore
None转载 2010-06-10 10:28:00 · 845 阅读 · 0 评论 -
Win32 Thread Basics 线程 默认堆栈大小
一直在用线程,但是一直没时间认真研究一下今天从 Jeffrey Richter的>看起,然后慢慢展开-Whats process?A process actually consists of two components* A Process Kernel Object* An Address SpaceProcess=Process Kernel Object + Address spac转载 2010-05-19 13:28:00 · 3640 阅读 · 1 评论 -
Windbg内核调试
运用Windbg进行内核调试, 熟练的运用命令行是必不可少的技能. 但是面对众多繁琐的命令, 实在是不可能全部的了解和掌握. 而了解Kernel正是需要这些命令的指引, 不断深入理解其基本的内容. 下面, 将介绍最常用的一些指令, 使初学Kernel调试的朋友们能有一个大致的了解. 至于如何熟练的运用它们, 还需要实际的操作过程中进行反复的琢磨.Windbg能够方便的进行远程调试和本地进程调转载 2009-11-16 21:28:00 · 1359 阅读 · 1 评论 -
缓冲区溢出
本文首先解释什么是缓冲区溢出,以及它们为何如此常见和如此危险。然后讨论广泛用于解决缓冲区溢出的新 Linux 和 UNIX 方法 ―― 以及为什么这些方法还不足够。随后将展示 C/C++ 程序中防止缓冲区溢出的各种方法,同时包括静态调整大小的方法(比如标准的 C 库和 OpenBSD/strlcpy 解决方案)和动态调整大小的解决方案,以及一些将为您提供帮助的工具。最后,本文以一些关于缓冲区溢出缺转载 2009-10-23 10:47:00 · 1518 阅读 · 0 评论 -
内存对齐
一、什么是字节对齐,为什么要对齐? 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。 对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只能从某转载 2009-09-17 20:59:00 · 693 阅读 · 0 评论 -
Windows内存管理机制及C++内存分配实例(二):内存状态查询
2. 内存状态查询函数2.1系统信息Windows 提供API可以查询系统内存的一些属性,有时候我们需要获取一些页面大小、分配粒度等属性,在分配内存时用的上。请看以下C++程序: SYSTEM_INFO sysInfo; GetSystemInfo(&sysInfo); cout cout cout cout cout结果如下:可以看出,页面大小是4K,区域转载 2009-09-09 11:09:00 · 1227 阅读 · 0 评论 -
Windows内存管理机制及C++内存分配实例(五):堆
5.内存管理机制--堆 (Heap)·使用场合堆是进程创建时在进程空间建立的区域,由堆管理器来管理。一个进程可以有很多个堆。进程有一个默认堆为1M,可以动态的扩大。当程序需要管理很多小对象时,适合用堆;当需要的空间大于1M时,最好用虚拟内存来管理。堆的优点是,有堆管理器来替它管理,不需管理具体的事情如页面边界和分配粒度等问题,你可以从调用函数看的出来,比VirtualAlloc的参数少了不少。转载 2009-09-09 11:04:00 · 968 阅读 · 1 评论 -
Windows内存管理机制及C++内存分配实例(六):堆栈
·使用场合操作系统为每个线程都建立一个默认堆栈,大小为1M。这个堆栈是供函数调用时使用,线程内函数里的各种静态变量都是从这个默认堆栈里分配的。·堆栈结构默认1M的线程堆栈空间的结构举例如下,其中,基地址为0x0004 0000,刚开始时,CPU的堆栈指针寄存器保存的是栈顶的第一个页面地址0x0013 F000。第二页面为保护页面。这两页是已经分配物理存储器的可用页面。随着函数的调用,系统将需转载 2009-09-09 11:01:00 · 1150 阅读 · 0 评论 -
Windows内存管理机制及C++内存分配实例(三):虚拟内存
3.内存管理机制--虚拟内存 (VM)·虚拟内存使用场合虚拟内存最适合用来管理大型对象或数据结构。比如说,电子表格程序,有很多单元格,但是也许大多数的单元格是没有数据的,用不着分配空间。也许,你会想到用动态链表,但是访问又没有数组快。定义二维数组,就会浪费很多空间。它的优点是同时具有数组的快速和链表的小空间的优点。·分配虚拟内存如果你程序需要大块内存,你可以先保留内存,需要的时候再提交物理转载 2009-09-09 11:00:00 · 1579 阅读 · 0 评论 -
Windows内存管理机制及C++内存分配实例(一):进程空间
本文背景:在编程中,很多Windows或C++的内存函数不知道有什么区别,更别谈有效使用;根本的原因是,没有清楚的理解操作系统的内存管理机制,本文企图通过简单的总结描述,结合实例来阐明这个机制。本文目的:对Windows内存管理机制了解清楚,有效的利用C++内存函数管理和使用内存。本文内容:本文一共有六节,由于篇幅较多,故按节发表。1. 进程地址空间1.1地址转载 2009-09-09 10:45:00 · 1027 阅读 · 1 评论 -
Windows内存管理机制及C++内存分配实例(四):内存映射文件
4.内存管理机制--内存映射文件 (Map) 和虚拟内存一样,内存映射文件可以用来保留一个进程地址区域;但是,与虚拟内存不同,它提交的不是物理内存或是虚拟页文件,而是硬盘上的文件。·使用场合它有三个主要用途:系统加载EXE和DLL文件,操作系统就是用它来加载exe和dll文件建立进程,运行exe。这样可以节省页文件和启动时间。访问大数据文件,如果文件太大,比如超过了进程用户区2G,用fop转载 2009-09-09 11:09:00 · 1543 阅读 · 0 评论 -
字节序的问题
说到程序间的通信,说到底便是发送数据流。我们一般把字节(byte)看作是数据的最小单位。当然,其实一个字节中还包含8个比特(bit)──有时候我奇怪为什么很多朋友会不知道bit或是它和byte的关系。当我们拿到一系列byte的时候,它本身其实是没有意义的,有意义的只是“识别字节的方式”。例如,同样4个字节的数据,我们可以把它看作是1个32位整数、2个Unicode、或者字符4个AS转载 2009-07-29 14:12:00 · 700 阅读 · 0 评论 -
判断 字节续
None原创 2010-12-09 14:37:00 · 679 阅读 · 0 评论