
linux
文章平均质量分 69
颖豆豆啦
这个作者很懒,什么都没留下…
展开
-
Linux下的虚拟地址映射详解(一)逻辑地址到线性地址的映射
原文:点击打开链接现在假设有这么一段代码: void main(){int a = 100;cout} 如果编译执行,先打印地址,假设是0x12345678。那么,这个地址,是逻辑地址呢,还是线性地址,亦或是物理地址呢? 首先我们需要引入一些别的东西。在英特尔的X86体系下,从他的发展可以看出他是从实模转载 2017-10-10 22:36:45 · 488 阅读 · 0 评论 -
Linux下的虚拟地址映射详解(二)线性地址到物理地址的映射
现在有这么一个函数 void main(){int a = 2;cout while(a){;}cout} 函数运行起来会是这个样子:先打印出a的地址,假设是0x12345678,接着会进入死循环。现在如果要求你寻找某个办法,来跳出循环打印”fun end”,然后结束整个函数转载 2017-10-10 22:41:33 · 644 阅读 · 0 评论 -
Linux下如何在进程中获取虚拟地址对应的物理地址
linux的/proc目录下记录了进程内存信息的映射,称其为虚拟目录。在/proc目录下有一个链接目录名为self,哪一个进程打开了它,它存储的信息就是该进程的。self中有一个pagemap文件,用来记录所链接进程的物理页号信息。pagemap是linux中一组新的接口集合,他通过读取/proc中的文件允许用户态的程序检查页表以及相关的信息。 /proc/pid/pagemap:这个文件允许一个原创 2017-10-11 12:26:48 · 3109 阅读 · 2 评论 -
系统调用
一、系统调用 Unix/Linux体系架构如上图所示,从宏观上来看,Linux操作系统的体系架构分为用户态和内核态(或者用户空间和内核)。内核从本质上看是一种软件——控制计算机的硬件资源,并提供上层应用程序运行的环境。用户态即上层应用程序的活动空间,应用程序的执行必须依托于内核提供的原创 2017-10-12 19:49:20 · 380 阅读 · 0 评论 -
fork()源码
调用fork()函数执行到了unistd.h中的宏函数syscall0 1 /* XXX - _foo needs to be __foo, while __NR_bar could be _NR_bar. */ 2 /* 3 * Don't remove the .ifnc tests; they are an insurance against 4 * any hard-to-spot翻译 2017-10-12 23:10:10 · 464 阅读 · 0 评论 -
fork(),vfork(),clone()的区别
一、fork() 1、fork()调用一次返回两次 返回值:成功(父进程:返回子进程的PID,子进程:返回0); 失败(父进程返回-1) fork创建一个进程时,子进程只是完全复制父进程的资源,复制出来的子进程有自己的task_struct结构和pid,但却复制父进程其它所有的资源。例如,要是父进程打开了五个文件,那么子进程也有五个打开的文件,而且这些文件的当前读写指针也停在相同的地方。这样原创 2017-10-13 14:18:24 · 553 阅读 · 0 评论 -
I/O复用--select函数源码剖析
一、select进入内核态之后就调用sys_select()//n表示调用时的参数表中一共有多少个位图,即需要监听的文件描述符最大值,一般为最大值加1//fd_set表示已打开文件的位图,位图的每一位都代表着当前进程的一个已打开文件,根据其结构定义得知,select最多可以监听1024个文件描述符//tvp表示睡眠等待的最长时间,如果为0则表示立即返回,如果为NULL则表示阻塞等待,直到所监听的原创 2017-11-05 16:14:26 · 387 阅读 · 0 评论