代码改变世界

linux内存源码分析 - 页表的初始化

2015-06-23 17:49 by tolimit, 12722 阅读, 1 推荐, 收藏, 编辑
摘要:本文为原创,转载请注明:http://www.cnblogs.com/tolimit/ 本文章中系统我们假设为x86下的32位系统,暂且不分析64位系统的页表结构。 linux分页 linux下采用四级分页,一个线性地址会分为5个偏移量用于寻址,具体看图: 虽然有四级,但并不是每一级都会用到,在li 阅读全文

linux内存源码分析 - SLAB分配器概述

2015-06-11 12:19 by tolimit, 18838 阅读, 3 推荐, 收藏, 编辑
摘要:本文为原创,转载请注明:http://www.cnblogs.com/tolimit/ 之前说了管理区页框分配器,这里我们简称为页框分配器,在页框分配器中主要是管理物理内存,将物理内存的页框分配给申请者,而且我们知道也可页框大小为4K(也可设置为4M),这时候就会有个问题,如果我只需要1KB大小的内 阅读全文

linux内存管理源码分析 - 页框分配器

2015-06-05 16:23 by tolimit, 11812 阅读, 3 推荐, 收藏, 编辑
摘要:本文为原创,转载请注明:http://www.cnblogs.com/tolimit/ 最近在学习内核模块的框架,这里做个总结,知识太多了。 分段和分页 先看一幅图 也就是我们实际中编码时遇到的内存地址并不是对应于实际内存上的地址,我们编码中使用的地址是一个逻辑地址,会通过分段和分页这两个机制把它转 阅读全文

linux源码分析 - 进程

2015-05-27 10:14 by tolimit, 6725 阅读, 5 推荐, 收藏, 编辑
摘要:本文为原创,转载请注明:http://www.cnblogs.com/tolimit/ 最近在回想一些知识点的时候,觉得对进程这一块有些模糊,特别写一篇随笔对进程信息进行巩固和复习。 程序和进程 以我个人的理解就是,程序是一段二进制编码甚至是一个简单的可执行文件,而当程序这段二进制编码放入内存运行时 阅读全文

linux中断源码分析 - 软中断(四)

2015-05-12 17:37 by tolimit, 4842 阅读, 3 推荐, 收藏, 编辑
摘要:本文为原创,转载请注明:http://www.cnblogs.com/tolimit/ 在上一篇文章中,我们看到中断实际分为了两个部分,俗称就是一部分是硬中断,一部分是软中断。软中断是专门用于处理中断过程中费时费力的操作,而为什么系统要分硬中断和软中断呢?问得明白点就是为什么需要软中断。我们可以试着 阅读全文

linux中断源码分析 - 中断发生(三)

2015-04-28 14:31 by tolimit, 4805 阅读, 0 推荐, 收藏, 编辑
摘要:本文为原创,转载请注明:http://www.cnblogs.com/tolimit/ 回顾 上篇文章linux中断源码分析 - 初始化(二)已经描述了中断描述符表和中断描述符数组的初始化,由于在初始化期间系统关闭了中断(通过设置CPU的EFLAGS寄存器的IF标志位为0),当整个中断和异常的初始化 阅读全文

linux中断源码分析 - 初始化(二)

2015-04-16 10:26 by tolimit, 5384 阅读, 0 推荐, 收藏, 编辑
摘要:本文为原创,转载请注明:http://www.cnblogs.com/tolimit/ 本篇文章主要讲述源码中是如何对中断进行一系列的初始化的。 回顾 在上一篇概述中,介绍了几个对于中断来说非常重要的数据结构,分别是:中断向量表,中断描述符表,中断描述符,中断控制器描述符,中断服务例程。可以说这几个 阅读全文

linux中断源码分析 - 概述(一)

2015-04-07 17:56 by tolimit, 6118 阅读, 2 推荐, 收藏, 编辑
摘要:本文为原创,转载请注明:http://www.cnblogs.com/tolimit/ 关于中断和异常 一般在书中都会把中断和异常一起说明,因为它们具有相同的特点,同时也有不同的地方。在CPU里,中断和异常都会放入到一个中断向量表中,都需要特定的处理程序进行处理,并且它们都是异步事件,内核完全不知道 阅读全文

linux调度器源码分析 - 运行(四)

2015-03-13 17:42 by tolimit, 5616 阅读, 1 推荐, 收藏, 编辑
摘要:本文为原创,转载请注明:http://www.cnblogs.com/tolimit/ 引言 之前的文章已经将调度器的数据结构、初始化、加入进程都进行了分析,这篇文章将主要说明调度器是如何在程序稳定运行的情况下进行进程调度的。 系统定时器 因为我们主要讲解的是调度器,而会涉及到一些系统定时器的知识, 阅读全文

linux调度器源码分析 - 新进程加入(三)

2015-03-12 11:27 by tolimit, 3960 阅读, 0 推荐, 收藏, 编辑
摘要:本文为原创,转载请注明:http://www.cnblogs.com/tolimit/引言 之前的文章已经介绍了调度器已经初始化完成,现在只需要加入一个周期定时器tick驱动它进行周期调度即可,而加入定时器tick在下一篇文章进行简单说明(主要这部分涉及调度器比较少,更多的是时钟、定时器相关知识)... 阅读全文

linux调度器源码分析 - 初始化(二)

2015-03-04 15:20 by tolimit, 4961 阅读, 2 推荐, 收藏, 编辑
摘要:本文为原创,转载请注明:http://www.cnblogs.com/tolimit/引言 上期文章linux调度器源码分析 - 概述(一)已经把调度器相关的数据结构介绍了一遍,本篇着重通过代码说明调度器在系统启动初始化阶段是如何初始化和工作的。通过上期文章我们知道,在多核CPU和SMP系统中,每... 阅读全文

linux调度器源码分析 - 概述(一)

2015-02-27 12:30 by tolimit, 12223 阅读, 4 推荐, 收藏, 编辑
摘要:本文为原创,转载请注明:http://www.cnblogs.com/tolimit/ 引言 调度器作为操作系统的核心部件,具有非常重要的意义,其随着linux内核的更新也不断进行着更新。本系列文章通过linux-3.18.3源码进行调度器的学习和分析,一步一步将linux现有的调度器原原本本的展现 阅读全文

关于嵌套循环效率研究

2015-02-06 12:23 by tolimit, 3384 阅读, 0 推荐, 收藏, 编辑
摘要:本文为原创,转载请注明:http://www.cnblogs.com/tolimit/引言 大家都知道,当进行嵌套循环时,大循环放最外面和放最里面所造成的执行效率会不同,本篇文章会通过汇编代码进行分析具体情况。测试环境操作系统:ubuntu-14.04.1编译器:gcc-4.8编译命令:gcc t... 阅读全文

关于linux系统如何实现fork的研究(二)

2015-02-04 16:37 by tolimit, 2405 阅读, 3 推荐, 收藏, 编辑
摘要:本文为原创,转载请注明:http://www.cnblogs.com/tolimit/ 引言 前一篇关于linux系统如何实现fork的研究(一)通过代码已经说明了从用户态怎么通过软中断实现调用系统调用clone函数,而clone函数的精华copy_process函数就在此篇文章中进行分析。我们知道 阅读全文

关于linux系统如何实现fork的研究(一)

2015-01-30 17:22 by tolimit, 3781 阅读, 4 推荐, 收藏, 编辑
摘要:引言 fork函数是用于在linux系统中创建进程所使用,而最近看了看一个fork()调用是怎么从应用到glibc,最后到内核中实现的,这片文章就聊聊最近对这方面研究的收获吧。我们主要聊聊从glibc库进入内核,再从内核出来的情景,而从应用到glibc这部分本片文章就不详细说明了。为了方便期间,我... 阅读全文