摘要: 前言 系统调用的基本原理系统调用其实就是函数调用,只不过调用的是内核态的函数,但是我们知道,用户态是不能随意调用内核态的函数的,所以采用软中断的方式从用户态陷入到内核态。在内核中通过软中断0X80,系统会跳转到一个预设好的内核空间地址,它指向了系统调用处理程序( 不要和系统调用服务例程混淆 ),这... 阅读全文
posted @ 2015-11-24 16:35 wangLinuxer 阅读(24479) 评论(0) 推荐(6) 编辑
摘要: 1.内部碎片和外部碎片 外部碎片 什么是外部碎片呢?我们通过一个图来解释: 假设这是一段连续的页框,阴影部分表示已经被使用的页框,现在需要申请一个连续的5个页框。这个时候,在这段内存上不能找到连续的5个空闲的页框,就会去另一段内存上去寻找5个连续的页框,这样子,久而久之就形成了页框的浪... 阅读全文
posted @ 2015-11-19 13:51 wangLinuxer 阅读(15812) 评论(4) 推荐(2) 编辑
摘要: Linux采用了通用的四级分页机制,所谓通用就是指Linux使用这种分页机制管理所有架构的分页模型,即便某些架构并不支持四级分页。对于常见的x86架构,如果系统是32位,二级分页模型就可满足系统需求;如果32位系统采用PAE(物理地址扩展)模式,Linux使用三级分页模型;如果是64位系统,Linu... 阅读全文
posted @ 2015-11-16 11:30 wangLinuxer 阅读(1913) 评论(0) 推荐(1) 编辑
摘要: 1.伙伴算法的引入内核在频繁的请求和释放不同大小的一组连续页框,必然会导致在已经分配的块内分散了许多小块的空闲页框。由此带来的问题是,及时有足够的空闲页框可以满足请求,但是要分配一个大块的连续页框就无法满足。所以,内核应该为分配一组连续的页框而建立一种健壮,高校的分配策略。这样,内核就引入了伙伴算... 阅读全文
posted @ 2015-11-06 20:05 wangLinuxer 阅读(3083) 评论(0) 推荐(1) 编辑
摘要: 1.调度器的概述 多任务操作系统分为非抢占式多任务和抢占式多任务。与大多数现代操作系统一样,Linux采用的是抢占式多任务模式。这表示对CPU的占用时间由操作系统决定的,具体为操作系统中的调度器。调度器决定了什么时候停止一个进程以便让其他进程有机会运行,同时挑选出一个其他的进程开始运行。 2.调... 阅读全文
posted @ 2015-10-26 15:50 wangLinuxer 阅读(10235) 评论(0) 推荐(0) 编辑
摘要: 1.进程的创建进程的创建是一个非常复杂的过程,这里以用户空间的fork为出手点,去探究进程在在内核中的创建流程。 1.1.进程的命名空间我们知道每个进程都有自己唯一的一个pid,在内核中都有自己唯一的一个task_struct,那么内核中是如何为一个进程分配一个唯一的pid的呢?我们来看一下内核中... 阅读全文
posted @ 2015-10-18 17:18 wangLinuxer 阅读(2190) 评论(0) 推荐(0) 编辑
摘要: 1.对内核中do_execve()函数的理解Linux提供了execle,execlp, execv, execvp和execve等六个用以执行一个可执行文件的函数(其之间的差异在于对命令行参数和环境变量的传递方式不同)。第一个参数是要被执行的程序的路径,第二个参数则向程序传递了命令行参数,第三个... 阅读全文
posted @ 2015-10-18 17:05 wangLinuxer 阅读(1511) 评论(0) 推荐(0) 编辑