文章分类 -  linux内核2.6

linux进程调度浅析
摘要:linux进程调度浅析http://hi.baidu.com/_kouu/item/7111e61acd04a9f487ad4ed0操作系统要实现多进程,进程调度必不可少。有人说,进程调度是操作系统中最为重要的一个部分。我觉得这种说法说得太绝对了一点,就像很多人动辄就说"某某函数比某某函数效率高XX... 阅读全文

posted @ 2014-06-18 10:38 Landscape-Mi 阅读(156) 评论(0) 推荐(0)

linux内存管理介绍
摘要:http://blog.csdn.net/macrocrazier/article/details/6705298Linux的内存管理主要分为两部分:物理地址到虚拟地址的映射,内核内存分配管理(主要基于slab)。物理地址到虚拟地址之间的映射1、概念 物理地址(physical address) ... 阅读全文

posted @ 2014-06-18 10:38 Landscape-Mi 阅读(213) 评论(0) 推荐(0)

Linux内存管理
摘要:摘要:本章首先以应用程序开发者的角度审视Linux的进程内存管理,在此基础上逐步深入到内核中讨论系统物理内存管理和内核内存的使用方法。力求从外到内、水到渠成地引导网友分析Linux的内存管理与使用。在本章最后,我们给出一个内存映射的实例,帮助网友们理解内核内存管理与用户内存管理之间的关系,希望大家最... 阅读全文

posted @ 2014-06-18 10:38 Landscape-Mi 阅读(115) 评论(0) 推荐(0)

linux内核同步
摘要:一,内核抢占1.容许在内核运行态发生内核切换;2.switch_to();3.内核抢占设置:current_thread_info()==thread_info==preempt_count>0;二,同步1.竞争条件和进程临界区(1)计算结果依赖于两个或者两个以上的交叉内核控制路径的嵌套方式,出现竞... 阅读全文

posted @ 2014-06-18 10:38 Landscape-Mi 阅读(106) 评论(0) 推荐(0)

进程地址空间
摘要:我们知道,在32位机器上linux操作系统中的进程的地址空间大小是4G,其中0-3G是用户空间,3G-4G是内核空间。其实,这个4G的地址空间是不存在的,也就是我们所说的虚拟内存空间。 那虚拟内存空间是什么呢,它与实际物理内存空间又是怎样对应的呢,为什么有了虚拟内存技术,我们就能运行比实际物理... 阅读全文

posted @ 2014-06-18 10:37 Landscape-Mi 阅读(142) 评论(0) 推荐(0)

fork与vfork的区别
摘要:http://blog.csdn.net/jianchi88/article/details/6985326fork()与vfock()都是创建一个进程,那他们有什么区别呢?总结有以下三点区别:1. fork ():子进程拷贝父进程的数据段,代码段 vfork( ):子进程与父进程共享数据段2. f... 阅读全文

posted @ 2014-04-24 09:56 Landscape-Mi 阅读(108) 评论(0) 推荐(0)

虚拟文件系统
摘要:虚拟文件系统作为内核子系统,为用户空间程序提供了文件和文件系统相关的接口。VFS(虚拟文件系统)。VFS使得用户可以直接使用open(),read()和write()这样的系统调用而不用关注具体文件系统和实际物理介质。也许你感觉不是很新奇啊,告诉你新奇的事情:在老式操作系统上(比如DOS),任何对非本地文件系统的访问都必须依靠特殊工具才能完成。这种实现的方式是内核在它的底层文件系统接口上建立了一个抽象层。该抽象层是linux能够支持各种文件系统,即便是它们在功能和行为上存在很大差别。为了支持文件系统,VFS提供了一个通用文件系统模型,该模型囊括了我们所能想到的文件系统的常用功能和行为。这个VF 阅读全文

posted @ 2013-09-03 18:45 Landscape-Mi 阅读(172) 评论(0) 推荐(0)

linux虚拟文件系统
摘要:1 引言Linux 中允许众多不同的文件系统共存,如 ext2, ext3, vfat 等。通过使用同一套文件 I/O 系统 调用即可对 Linux 中的任意文件进行操作而无需考虑其所在的具体文件系统格式;更进一步,对文件的 操作可以跨文件系统而执行。如图 1 所示,我们可以使用 cp 命令从 vfat 文件系统格式的硬盘拷贝数据到 ext3 文件系统格式的硬盘;而这样的操作涉及到两个不同的文件系统。图 1. 跨文件系统的文件操作“一切皆是文件”是 Unix/Linux 的基本哲学之一。不仅普通的文件,目录、字符设备、块设备、 套接字等在 Unix/Linux 中都是以文件被对待;它们虽然类型 阅读全文

posted @ 2013-09-03 18:36 Landscape-Mi 阅读(224) 评论(0) 推荐(0)

linux信号
摘要:信号是Linux编程中非常重要的部分,本文将详细介绍信号机制的基本概念、Linux对信号机制的大致实现方法、如何使用信号,以及有关信号的几个系统调用。信号机制是进程之间相互传递消息的一种方法,信号全称为软中断信号,也有人称作软中断。从它的命名可以看出,它的实质和使用很象中断。所以,信号可以说是进程控制的一部分。一、信号的基本概念本节先介绍信号的一些基本概念,然后给出一些基本的信号类型和信号对应的事件。基本概念对于理解和使用信号,对于理解信号机制都特别重要。下面就来看看什么是信号。1、基本概念软中断信号(signal,又简称为信号)用来通知进程发生了异步事件。进程之间可以互相通过系统调用kill 阅读全文

posted @ 2013-09-03 18:30 Landscape-Mi 阅读(105) 评论(0) 推荐(0)

linux系统调用
摘要:Linux 2.6内核标准教程 第7章 系统调用使用Linux系统调用的内核命令深入理解Linux的系统调用Linux系统调用接口、系统调用例程和内核服务例程之间的关系向linux内核中添加三个系统调用(Ubuntu9.10)++++++++++++++++++++++++++++++++++使用Linux系统调用的内核命令作者:M. Tim Jones转贴自:本站原创Linux® 系统调用 —— 我们每天都在使用它们。不过您清楚系统调用是如何在用户空间和内核之间执行的吗?本文将探究 Linux 系统调用接口(SCI),学习如何添加新的系统调用(以及实现这种功能的其他方法),并介绍与 阅读全文

posted @ 2013-09-03 18:26 Landscape-Mi 阅读(323) 评论(0) 推荐(0)

系统调用表
摘要:以下是Linux系统调用的一个列表,包含了大部分常用系统调用和由系统调用派生出的的函数。这可能是你在互联网上所能看到的唯一一篇中文注释的Linux系统调用列表,即使是简单的字母序英文列表,能做到这么完全也是很罕见的。按照惯例,这个列表以man pages第2节,即系统调用节为蓝本。按照笔者的理解,对其作了大致的分类,同时也作了一些小小的修改,删去了几个仅供内核使用,不允许用户调用的系统调用,对个别本人稍觉不妥的地方作了一些小的修改,并对所有列出的系统调用附上简要注释。其中有一些函数的作用完全相同,只是参数不同。(可能很多熟悉C++朋友马上就能联想起函数重载,但是别忘了Linux核心是用C语言写 阅读全文

posted @ 2013-09-03 18:25 Landscape-Mi 阅读(337) 评论(0) 推荐(0)

进程地址空间
摘要:我们知道,在32位机器上linux操作系统中的进程的地址空间大小是4G,其中0-3G是用户空间,3G-4G是内核空间。其实,这个4G的地址空间是不存在的,也就是我们所说的虚拟内存空间。 那虚拟内存空间是什么呢,它与实际物理内存空间又是怎样对应的呢,为什么有了虚拟内存技术,我们就能运行比实际物理内存大的应用程序,它是怎么做到的呢? 呵呵,这一切的一切都是个迷呀,下面我们就一步一步解开心中的谜团吧! 我们来看看,当我们写好一个应用程序,编译后它都有什么东东? 例如: 用命令size a.out会得到: 其中text是放的是代码,data放的是初始化过的全局变量或静态变量,bss放的... 阅读全文

posted @ 2013-09-03 17:16 Landscape-Mi 阅读(248) 评论(0) 推荐(0)

linux进程状态浅析
摘要:linux进程状态浅析众所周知,现在的分时操作系统能够在一个CPU上运行多个程序,让这些程序表面上看起来是在同时运行的。linux就是这样的一个操作系统。在linux系统中,每个被运行的程序实例对应一个或多个进程。linux内核需要对这些进程进行管理,以使它们在系统中“同时”运行。linux内核对进程的这种管理分两个方面:进程状态管理,和进程调度。本文主要介绍进程状态管理,进程调度见《linux进程调度浅析》。进程状态在linux下,通过ps命令我们能够查看到系统中存在的进程,以及它们的状态:R(TASK_RUNNING),可执行状态。只有在该状态的进程才可能在CPU上运行。而同一时刻可能有多 阅读全文

posted @ 2013-08-23 06:48 Landscape-Mi 阅读(265) 评论(0) 推荐(0)

linux内核同步
摘要:Linux设备驱动中必须解决的一个问题是多个进程对共享资源的并发访问,并发访问会导致竞态,linux提供了多种解决竞态问题的方式,这些方式适合不同的应用场景。Linux内核是多进程、多线程的操作系统,它提供了相当完整的内核同步方法。内核同步方法列表如下:中断屏蔽原子操作自旋锁读写自旋锁顺序锁信号量读写信号量BKL(大内核锁)Seq锁一、并发与竞态:定义:并发(concurrency)指的是多个执行单元同时、并行被执行,而并发的执行单元对共享资源(硬件资源和软件上的全局变量、静态变量等)的访问则很容易导致竞态(race conditions)。在linux中,主要的竞态发生在如下几种情况:1、对 阅读全文

posted @ 2013-08-18 19:12 Landscape-Mi 阅读(199) 评论(0) 推荐(0)

内存对齐
摘要:内存对齐结构体的内存布局依赖于CPU、操作系统、编译器及编译时的对齐选项。结构体内部成员的对齐要求,结构体本身的对齐要求。最重要的有三点(一)成员对齐。对于结构体内部成员,通常会有这样的规定:各成员变量存放的起始地址相对于结构的起始地址的偏移量必须为该变量的类型所占用的字节数的倍数。但是也可以看到,有时候某些字段如果严格按照大小紧密排列,根本无法达到这样的目的,因此有时候必须进行padding。各成员变量在存放的时候根据在结构中出现的顺序依次申请空间,同时按照上面的对齐方式调整位置,空缺的字节编译器会自动填充也就是padding。(二)然后,还要考虑整个结构体的对齐需求。ANSI C标准规定结 阅读全文

posted @ 2013-08-18 18:55 Landscape-Mi 阅读(116) 评论(0) 推荐(0)

大端小端
摘要:详解大端模式和小端模式一、大端模式和小端模式的起源 关于大端小端名词的由来,有一个有趣的故事,来自于Jonathan Swift的《格利佛游记》:Lilliput和Blefuscu这两个强国在过去的36个月中一直在苦战。战争的原因:大家都知道,吃鸡蛋的时候,原始的方法是打破鸡蛋较大的一端,可以那时的皇帝的祖父由于小时侯吃鸡蛋,按这种方法把手指弄破了,因此他的父亲,就下令,命令所有的子民吃鸡蛋的时候,必须先打破鸡蛋较小的一端,违令者重罚。然后老百姓对此法令极为反感,期间发生了多次叛乱,其中一个皇帝因此送命,另一个丢了王位,产生叛乱的原因就是另一个国家Blefuscu的国王大臣煽动起来的,叛... 阅读全文

posted @ 2013-08-18 18:54 Landscape-Mi 阅读(123) 评论(0) 推荐(0)

导航