Linux内核剖析
介绍如何在本机上搭建linux内核的开发环境
介绍linux内存管理,进程调度,文件系统的知识
linux驱动(字符设备,块设备已经网络接口设备)的编写
CHENG Jian
天将降大任于是人也,必先苦其心志,劳其筋骨,饿其体肤,空乏其身,行拂乱其所为,所以动心忍性,曾益其所不能。
展开
-
进程间通信之-共享内存Shared Memory--linux内核剖析(十一)
共享内存共享内存是进程间通信中最简单的方式之一。共享内存是系统出于多个进程之间通讯的考虑,而预留的的一块内存区。共享内存允许两个或更多进程访问同一块内存,就如同 malloc() 函数向不同进程返回了指向同一个物理内存区域的指针。当一个进程改变了这块地址中的内容的时候,其它进程都会察觉到这个更改。关于共享内存当一个程序加载进内存后,它就被分成叫作页的块。通信将存在内存的两个页之间或者两个独立的进程之原创 2016-03-29 15:11:10 · 20237 阅读 · 1 评论 -
进程间通信之-信号量semaphore--linux内核剖析(十)
信号量什么是信号量信号量的使用主要是用来保护共享资源,使得资源在一个时刻只有一个进程(线程)所拥有。 信号量的值为正的时候,说明它空闲。所测试的线程可以锁定而使用它。若为0,说明它被占用,测试的线程要进入睡眠队列中,等待被唤醒。为了防止出现因多个程序同时访问一个共享资源而引发的一系列问题,我们需要一种方法,它可以通过生成并使用令牌来授权,在任一时刻只能有一个执行线程访问代码的临界区域。临界区域原创 2016-03-28 23:37:37 · 31044 阅读 · 5 评论 -
进程间通信之-信号signal--linux内核剖析(九)
信号及信号来源什么是信号信号是UNIX和Linux系统响应某些条件而产生的一个事件,接收到该信号的进程会相应地采取一些行动。通常信号是由一个错误产生的。但它们还可以作为进程间通信或修改行为的一种方式,明确地由一个进程发送给另一个进程。一个信号的产生叫生成,接收到一个信号叫捕获。信号本质信号是在软件层次上对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。信号是原创 2016-03-27 13:22:21 · 9407 阅读 · 0 评论 -
linux系统启动过程详解-开机加电后发生了什么 --linux内核剖析(零)
http://www.mamicode.com/info-detail-243819.html总的来说在操作系统加电启动之后到main函数执行之前操作系统经历了以下3个大步骤 * 启动BIOS。这个时候位于实模式下,加载中断向量和中断服务程序 * 加载操作系统内核并为保护模式做准备。这个时候操作系统一共加载了3部分代码:引导程序bootsect,内核代码setup,内核代码system模原创 2016-03-17 16:35:32 · 15788 阅读 · 2 评论 -
进程间通信之-管道--linux内核剖析(八)
管道管道是一种两个进程间进行单向通信的机制。因为管道传递数据的单向性,管道又称为半双工管道。管道的这一特点决定了器使用的局限性。管道是Linux支持的最初Unix IPC形式之一,具有以下特点:数据只能由一个进程流向另一个进程(其中一个读管道,一个写管道);如果要进行双工通信,需要建 立两个管道。管道只能用于父子进程或者兄弟进程间通信。,也就是说管道只能用于具有亲缘关系的进程间通信。除了以上局限原创 2016-03-16 23:30:21 · 3699 阅读 · 0 评论 -
Linux进程间通信的几种方式总结--linux内核剖析(七)
进程间通信概述进程通信的目的数据传输 一个进程需要将它的数据发送给另一个进程,发送的数据量在一个字节到几M字节之间共享数据 多个进程想要操作共享数据,一个进程对共享数据通知事 一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终止时要通知父进程)。资源共享 多个进程之间共享同样的资源。为了作到这一点,需要内核提供锁和同步机制。进程控制 有些进程希望完全控原创 2016-03-16 22:09:05 · 72335 阅读 · 0 评论 -
Linux系统调用详解(实现机制分析)--linux内核剖析(六)
本文介绍了系统调用的一些实现细节。首先分析了系统调用的意义,它们与库函数和应用程序接口(API)有怎样的关系。然后,我们考察了Linux内核如何实现系统调用,以及执行系统调用的连锁反应:陷入内核,传递系统调用号和参数,执行正确的系统调用函数,并把返回值带回用户空间。最后讨论了如何增加系统调用,并提供了从用户空间访问系统调用的简单例子。 参考 《Linux内核设计与实现》读书笔记(五)- 系统调原创 2016-03-02 21:58:09 · 44772 阅读 · 11 评论 -
Linux内核的构建过程----Linux内核剖析(五)
参考 一次实验引发的故事 – kernel build system探索—vmlinux是如何炼成的– kernel makefile问题在前面的博文中,我们先是为自己的Ubuntu安装了一套内核源码树,然后为了方便进行嵌入式交叉编译,我们又为arm板子构建了一套源码树。 那么现在我们已经知道如何自己的电脑上去构建、安装一个定制化的Linux内核,但是我们还是要在唠叨一些。 当你在内核源原创 2015-10-08 15:53:19 · 6060 阅读 · 0 评论 -
为arm内核构建源码树----Linux内核剖析(四)
前面说到要做linux底层开发或者编写Linux的驱动,必须建立内核源码树,之前我们提到过在本机上构建源码树—-Linux内核剖析(三),其建立的源码树是针对i686平台的,但是我么嵌入式系统用的是arm平台,这就需要我们为arm板交叉构建一份板子可用的内核源码树。首先下载与你嵌入式系统平台版本号一致的linux内核,我的版本为2.6.35,当然如果你使用的是之前做好的板子,那么内核源码可能已经有了原创 2015-10-01 17:24:00 · 4210 阅读 · 0 评论 -
构建源码树----Linux内核剖析(三)
linux源码树结构参考 http://www.360doc.com/content/13/0410/17/7044580_277403053.shtml 目录 描述 arch 目录包括了所有和体系结构相关的核心代码。它下面的每一个子目录都代表一种Linux支持的体系结构,例如i386就是Intel CPU及与之相兼容体系结构的子目录。PC机一般都基于此目录。 block 块设原创 2015-04-10 11:32:15 · 17568 阅读 · 0 评论 -
Linux内核绪论----Linux内核剖析(二)
什么是内核内核是操作系统最基本的部分。它是为众多应用程序提供对计算机硬件的安全访问的一部分软件,这种访问是有限的,并且内核决定一个程序在什么时候对某部分硬件操作多长时间。内核的分类可分为单内核和双内核以及微内核。严格地说,内核并不是计算机系统中必要的组成部分。内核是一个操作系统的核心。是基于硬件的第一层软件扩充,提供操作系统的最基本的功能,是操作系统工作的基础,它负责管理系统的进程、内存、设备驱动程原创 2015-04-09 15:48:15 · 11595 阅读 · 0 评论 -
Linux的历史----Linux内核剖析(一)
Unix操作系统Unix的由来汤普逊和里奇最早是在贝尔实验室开发Unix的,此后的10年,Unix在学术机构和大型企业中得到了广泛的应用,当时的UNIX拥有者AT&T公司以低廉甚至免费的许可将Unix源码授权给学术机构做研究或教学之用,许多机构在此源码基础上加以扩充和改进,形成了所谓的“Unix变种”,这些变种反过来也促进了Unix的发展,其中最著名的变种之一是由加州大学柏克莱分校开发的BSD产品。原创 2015-04-09 10:51:09 · 14527 阅读 · 2 评论