操作系统
文章平均质量分 81
QQ51931373
这个作者很懒,什么都没留下…
展开
-
IO密集型线程 CPU密集型线程
关于这两种类型的线程本人认为是本基础的东西,不知道的请baidu.CPU密集型线程的作用是进行无阻塞的逻辑运算的线程。比如:RPG游戏中的游戏逻辑服务器(也叫地图服务器)里面的主逻辑线程,这个主逻辑线程需要进行大量的无阻塞的逻辑处理。当被操作系统内核调度的时候,这个线程就在给定的CPU执行时间内进行无阻塞的操作。如果这个游戏逻辑服务器还创建更多的线程来进行逻辑操作的话,这样的行为是得不原创 2014-04-17 17:56:04 · 5968 阅读 · 0 评论 -
为什么要内存对齐 Data alignment: Straighten up and fly right
转载自:http://blog.csdn.net/lgouc/article/details/8235471 为了速度和正确性,请对齐你的数据. 概述:对于所有直接操作内存的程序员来说,数据对齐都是很重要的问题.数据对齐对你的程序的表现甚至能否正常运行都会产生影响.就像本文章阐述的一样,理解了对齐的本质还能够解释一些处理器的"奇怪的"行为. 内存存取粒度转载 2015-05-19 16:21:04 · 570 阅读 · 0 评论 -
栈帧
前言 我们经常会讨论这样的问题:什么时候数据存储在堆栈(Stack)中,什么时候数据存储在堆(Heap)中。我们知道,局部变量是存储在堆栈中的;debug时,查看堆栈可以知道函数的调用顺序;函数调用时传递参数,事实上是把参数压入堆栈,听起来,堆栈象一个大杂烩。那么,堆栈(Stack)到底是如何工作的呢? 本文将详解C/C++堆栈的工作机制。阅读时请注意以下几点: 1)原创 2015-04-29 22:08:32 · 833 阅读 · 0 评论 -
使用rdtsc测试程序的运行速度
最近发现了rdtsc指令,可以获取CPU指令周期数,喜出望外,wiki了下相关的知识,写了代码利用CPU周期来测量程序的运行时间。 rdtsc指令返回的是自开机始CPU的周期数,返回的是一个64位的值EDX:EAX(高32在EDX,低32位在EAX)。OK,完全可以利用这条指令,测试我们的关注的一段代码的执行效率。 题外话,我转载 2015-01-08 15:03:16 · 1007 阅读 · 0 评论 -
Linux系统下的单调时间函数
一、编写linux下应用程序的时候,有时候会用到高精度相对时间的概念,比如间隔100ms。那么应该使用哪个时间函数更准确呢? 1、time 该函数返回的是自1970年以来的秒数,显然精度不够,不能使用 2、gettimeofday 该函数返回的是自1970年以来的秒数和微秒数,精度显然是够了。我想有很多程序员也是用的这个函数来原创 2015-01-08 15:11:13 · 1043 阅读 · 0 评论 -
虚拟地址和虚拟内存区别
程序访问存储器所使用的逻辑地址称为虚拟地址,虚拟地址 (virtual address): 4G虚拟地址空间中的地址,程序中使用的都是虚拟地址。每一个进程都分配有一个4G的虚拟地址。通过虚拟地址访问内存的形式称为保护模式,因为它不允许直接访问内核空间,而对应的直接访问物理内存的方式称为实模式,现在已经很少使用。 比如 mov eax,004227b8h ,这是把地址00422原创 2014-06-20 20:48:37 · 3215 阅读 · 0 评论 -
进程地址空间与虚拟存储空间的理解
在进入正题前先来谈谈操作系统内存管理机制的发展历程,了解这些有利于我们更好的理解目前操作系统的内存管理机制。一早期的内存分配机制在 早期的计算机中,要运行一个程序,会把这些程序全都装入内存,程序都是直接运行在内存上的,也就是说程序中访问的内存地址都是实际的物理内存地址。当计算 机同时运行多个程序时,必须保证这些程序用到的内存总量要小于计算机实际物理内存的大小。那当程序同转载 2014-06-20 20:47:34 · 918 阅读 · 3 评论 -
进程的虚拟地址空间
虚拟内存与虚拟地址空间检举|2013-03-28 16:45 匿名 | 分类:硬盘| 浏览15次请问 虚拟内存跟虚拟地址空间有没有联系。2个是不同的概念还是有相关的联系。还有帮忙介绍哈怎么做到每个进程都是4GB的地址空间。对于物理内存的地址空间 虚拟地址空间跟物理地址的空间的关系又什么···谢谢了我有更好的答案网友采纳检举|2013-03-29转载 2014-06-20 20:44:18 · 934 阅读 · 0 评论 -
windows 内存映射文件实现数据共享之原理
内存映射文件编辑内存映射文件,是由一个文件到一块内存的映射。Win32提供了允许应用程序把文件映射到一个进程的函数 (CreateFileMapping)。内存映射文件与虚拟内存有些类似,通过内存映射文件可以保留一个地址空间的区域,同时将物理存储器提交给此区域,内存文件映射的物理存储器来自一个已经存在于磁盘上的文件,而且在对该文件进行操作之前必须首先对文件进行映射。原创 2014-07-29 18:16:30 · 1373 阅读 · 0 评论 -
内存地址对齐
内存地址对齐,是一种在计算机内存中排列数据、访问数据的一种方式,包含了两种相互独立又相互关联的部分:基本数据对齐和结构体数据对齐。当今的计算机在计算机内存中读写数据时都是按字(word)大小块来进行操作的(在32位系统中,数据总线宽度为32,每次能读取4字节,地址总线宽度为32,因此最大的寻址空间为2^32=4GB,但是最低2位A[0],A[1]是不用于寻址,A[2-31]才能存储器相连,转载 2014-06-27 17:47:38 · 616 阅读 · 0 评论 -
结构体字节对齐
在用sizeof运算符求算某结构体所占空间时,并不是简单地将结构体中所有元素各自占的空间相加,这里涉及到内存字节对齐的问题。从理论上讲,对于任何 变量的访问都可以从任何地址开始访问,但是事实上不是如此,实际上访问特定类型的变量只能在特定的地址访问,这就需要各个变量在空间上按一定的规则排列, 而不是简单地顺序排列,这就是内存对齐。 内存对齐的原因: 1)某些平台只转载 2014-06-27 17:46:51 · 532 阅读 · 0 评论 -
多线程锁竞争造成的开销
先看实例代码:原创 2014-04-18 12:03:17 · 1537 阅读 · 0 评论 -
内核级线程的阻塞
内核级线程被操作系统内核创建并管理。当这样的线程内部原创 2014-04-17 18:41:19 · 2255 阅读 · 0 评论 -
内核级线程 和 用户级线程
从线程实现的角度看,线程可以分成用户级线程,内核级线程和轻量级线程。 在内核级线程的实现中,线程管理的所有工作由操作系统内核来做,内核专门提供API供开发者使用,应用程序区不需要有线程管理的代码。内核级线程的优点:在多处理器上,内核能调度同一进程中多个线程并发执行;若进程中一个线程被阻塞,内核能调度同一进程的其他线程占有处理器运行,也可以运行其他进程中的线程;由于内核线程仅有很小的原创 2014-04-17 17:35:30 · 1617 阅读 · 0 评论 -
32位 64位
不要做32位代码修改为64位代码或者64位代码修改为32位代码的无用功。也不要做用32位代码直接调用64位代码库或用64位代码直接调用32位代码库这样复杂、这样容易出错的傻事。只需让32、64位代码的输入输出重定向到文本文件,或修改32、64位代码让其通过文本文件输入输出。即可很方便地让32、64两种位宽之间协调工作。原创 2015-07-16 14:14:32 · 414 阅读 · 0 评论