2014年1月10日
摘要: Linux虚拟存储系统2012-07-19 22:25:27| 分类: Linux | 标签:linux 存储系统 虚拟内存 |字号大中小订阅 Linux为每一个进程单独维护了一个单独的虚拟地址空间,形式如图所示。 其中内核虚拟存储器包含内核中的代码和数据结构。内核虚拟存储器中的某些区域被映射到所有进程共享的物理页面。例如每个进程共享内核的代码和全局数据结构。 内核虚拟存储器的其他区域包含每个进程都不相同的数据,比如页表,内核在进程上下文中执行代码时用到的栈。 Linux将虚拟存储器组织成一些区域(也叫做段)的集合。一个区域就是已经存在的(已分配的)虚拟存储器的连续片,这些页是以某种方式相关. 阅读全文
posted @ 2014-01-10 09:18 思过崖 阅读(734) 评论(0) 推荐(0)
摘要: 记录上锁2012-08-09 21:01:36| 分类: Linux | 标签:linux |字号大中小订阅记录锁可用于有亲缘关系或无亲缘关系的进程之间共享某个文件的读与写。被锁住的文件通过其描述符访问,执行上锁操作的函数是fcntl。这种类型的锁通常是在内核中维护的,所以这些锁可以用于不同进程间的上锁,而不仅用于同一进程内不同线程间的上锁。现在假如我们要在不同进程之间进行互斥操作,如果选用互斥锁或者读写锁的话,我们必须先让这些进程共享某个内存区,然后再该共享内存区中使用某种类型的同步变量。而如果使用fcntl记录上锁的话,就不需要共享内存。下面将着重讲解fcntl函数的使用。POSIX f. 阅读全文
posted @ 2014-01-10 09:17 思过崖 阅读(289) 评论(0) 推荐(0)
摘要: 2012-07-24 13:24:50| 分类: Linux | 标签:linux |字号大中小订阅以下是Linux系统调用的一个列表,包含了大部分常用系统调用和由系统调用派生出的的函数。这可能是你在互联网上所能看到的唯一一篇中文注释的Linux系统调用列表,即使是简单的字母序英文列表,能做到这么完全也是很罕见的。按照惯例,这个列表以man pages第2节,即系统调用节为蓝本。按照笔者的理解,对其作了大致的分类,同时也作了一些小小的修改,删去了几个仅供内核使用,不允许用户调用的系统调用,对个别本人稍觉不妥的地方作了一些小的修改,并对所有列出的系统调用附上简要注释。其中有一些函数的作用完全相. 阅读全文
posted @ 2014-01-10 09:17 思过崖 阅读(203) 评论(0) 推荐(0)
摘要: 2012-07-23 13:41:13| 分类: Linux | 标签:linux |字号大中小订阅比较一下下面三段程序:程序1int main(){ printf("this is a test\n")printf("test exit fun");exit(0);}运行结果是:This is a testTest exit fun[root@localhost3.23]#程序2int main(){ printf("this is a test\n")printf("test exit fun");_exit( 阅读全文
posted @ 2014-01-10 09:16 思过崖 阅读(330) 评论(0) 推荐(0)
  2014年1月9日
摘要: 标准I/O库提供缓冲的目的是尽可能地减少使用read和write调用的次数。他也对每个I/O流自动地进行缓冲管理,从而避免了应用程序需要考虑这一点所带来的麻烦。不幸的是,标准I/O库最令人迷惑的也是他的缓冲。标准I/O提供了三种类型的缓冲:1、全缓冲。这种情况下,在填满标准I/O缓冲区后才进行实际I/O操作。对于驻留在磁盘上的文件通常是由标准I/O库实施全缓冲。一个流上执行第一次I/O操作时,相关标准I/O函数通常调用malloc获得需使用的缓冲区。术语冲洗说明I/O缓冲区的写操作。缓冲区可由标准I/O例程自动冲洗,或者可以调用函数fflush冲洗一个流。值得引起注意的是在UNIX环境中,fl 阅读全文
posted @ 2014-01-09 12:00 思过崖 阅读(1824) 评论(0) 推荐(0)
摘要: windows与unix/linux下输入回车换行的区别2012-07-23 22:51:02| 分类: Linux | 标签:linux 缓冲区 |字号大中小订阅当在windows的编辑器中敲击回车进行换行的时候,实际的文件中输入的字符为回车字符‘\r’和换行符'\n',两者对应的ASCII码分别为13和10。这是因为windows遵从了英文打字机的传统模式,英文打字机是如何换行的呢?英文打字机是选择将小车退回至起点,这个过程称为回车(carriage return, CR),随后把小车调至下一行的位置,这个过程称为换行(line feed, LF),这样就完成了英文打字机中 阅读全文
posted @ 2014-01-09 11:54 思过崖 阅读(1287) 评论(0) 推荐(0)
  2013年12月19日
摘要: strtok()函数 2009-09-03 18:55:33分类: LINUXstrtok()这个函数大家都应该碰到过,但好像总有些问题, 这里着重讲下它首先看下MSDN上的解释:char *strtok( char *strToken, const char *strDelimit );ParametersstrTokenString containing token or tokens.strDelimitSet of delimiter characters.Return ValueReturns a pointer to the next token found in strToken 阅读全文
posted @ 2013-12-19 15:05 思过崖 阅读(2049) 评论(0) 推荐(0)
摘要: //头文件的作用//1.存放标准头文件//2.宏定义//3.数据封装//4.函数的声明#ifndef#ifndef x#define x ... #endif 这是宏定义的一种,它可以根据是否已经定义了一个变量来进行分支选择,一般用于调试等等 #ifndef x //先测试x是否被定义过 #define x//如果没有定义下面就定义x并执行下面的语句 ... #endif //如果已经定义了则执行#endif后面的语句 条件指示符#ifndef检查预编译常量在前面是否已经被定义。如果在前面没有被定义,则条件指示符的值为真,于是从#ifndef到#endif之间的所有语句... 阅读全文
posted @ 2013-12-19 10:59 思过崖 阅读(199) 评论(0) 推荐(0)
摘要: C语言feof()函数的使用正确的应该是feof返回0表示文件没有结束,返回1,表示结束。feof实际观察的是上次读操作的内容,也就是上次读操作fread返回的值,如果读操作的返回值表明读取的不是空,那feof就返回0,如果上次读操作失败了,则feof返回1,表示读取完了。而fread返回值是表示正确读取的块数,如果不够,则返回0。那么我们看一下下面的程序:while(1){ if(feof(fp1)) { break; } else { tmpint = fread(&(tmp[k]),1,1,fp1); k++; }}如果fp1指向的文件有256个字节,那么运... 阅读全文
posted @ 2013-12-19 10:37 思过崖 阅读(3958) 评论(0) 推荐(0)
  2013年12月10日
摘要: 一:填空(共28分)1.(2分)structAA{chara; charb[2];shortc;intd; };请问sizeof(structAA)是___12___。2.(2分)structBB{chara;shortb[2];charc;intd;};请问sizeof(structBB)是__12____。3.(6分)int*p=NULL;intmain(){inti=3;staticinta=5;int*p1=NULL;p=&a;*p=i;p1=(int*)malloc(5*sizeof(int));i++;printf(“%d,%d\n”,a,i);return0;}在32位系 阅读全文
posted @ 2013-12-10 17:22 思过崖 阅读(444) 评论(0) 推荐(0)