
P.OS-操作系统 & 内核
do2jiang
http://www.mythroad.net/modou
展开
-
copy_to_user,copy_from_user,get_user,put_user函数比较
copy_to_user -- Copy a block of data into user space. copy_from_user -- Copy a block of data from user space.get_user -- Get a simple variable from user space. put_user -- Write a si原创 2010-04-02 18:53:00 · 1652 阅读 · 0 评论 -
后继无人:Linux核心维护人员日渐苍老
一年一度的Linux开发者大会上周在旧金山举行,会上Linux基金会执行理事Jim Zemlin表示,得益于云计算以及其它科技潮流的出现,Linux的市场地位十分稳固,然而一些主要的维护人员已经日渐苍老,后继者却还没有成熟。 sysfs内核子系统维护者Grey Kroah-Hartman指出:“上层的人员仍然没有变动,我们都还在,不过保持持续的人员变动是必要的,如果我们已经阻碍了L转载 2010-04-20 16:29:00 · 1387 阅读 · 0 评论 -
Linux内核态下的文件操作
在VFS的支持下,用户态进程读写任何类型的文件系统都可以使用read和write着两个系统调用,但是在linux内核中没有这样的系统调用我们如何操作文件呢?我们知道read和write在进入内核态之后,实际执行的是sys_read和sys_write,但是查看内核源代码,发现这些操作文件的函数都没有导出(使用EXPORT_SYMBOL导出),也就是说在内核模块中是不能使用的,那如何是好?原创 2010-04-21 04:24:00 · 2373 阅读 · 0 评论 -
Linux内核模块编程简介
主题: linux内核模块的程序结构--模块加载函数(必须),模块卸载函数(必须),模块许可证声明(必须),模块参数(可选),模块导出符号(可选),模块作者的等信息声明(可选)一个linux内核模块主要由以下几个部分组成。1、模块加载函数"用module_init()来指定"(必须) 当通过insmod和modprobe命令加载内核模块时,模块的加载函数会自动被内核执行,完成本模块的相关初原创 2010-04-25 15:48:00 · 999 阅读 · 0 评论 -
Linux内核源码Kconfig语法分析
linux在2.6版本以后将配置文件由原来的config.in改为kconfig,对于kconfig的语法在/Documentation/kbuild/kconfig-language.txt中做了详细的说明,在这里给出kconfig-language.txt的中文版。介绍----在配置数据库的配置选项是以树的形式组织的: +- Code maturity level option转载 2010-04-22 00:25:00 · 1723 阅读 · 0 评论 -
北桥与南桥
北桥,南桥是主板上芯片组中最重要的两块了.它们都是总线控制器.他们是总线控制芯片.相对的来讲,北桥要比南桥更加重要.北桥连接系统总线,担负着cpu访问内存的重任.同时连接这AGP插口,控制PCI总线,割断了系统总线和局部总线,在这一段上速度是最快的.南桥不和CPU连接通常用来作I/O和IDE设备的控制.所以速度比较慢.一般情况下,南桥和北桥中间是PCI总线原创 2010-04-27 17:26:00 · 3192 阅读 · 0 评论 -
宏内核与微内核,Linux内核与Unix内核
操作系统内核可能是微内核,也可能是单内核(后者有时称之为宏内核Macrokernel)。按照类似封装的形式,这些术语定义如下: 单内核:也称为宏内核。将内核从整体上作为一个大过程实现,并同时运行在一个单独的地址空间。所有的内核服务都在一个地址空间运行,相互之间直接调用函数,简单高效。微内核:功能被划分成独立的过程,过程间通过IPC进行通信。模块化程度高,一个服务失效不会影原创 2010-04-25 23:11:00 · 3541 阅读 · 0 评论 -
Linus Torvalds自作多情了
Linus声称:Linux内核臃肿,该减肥了!北京时间2009年9月22日消息,据媒体报道,在周一举行的LinuxCon技术大会上,Linux操作系统创始人、素有“Linux之父”之称的林纳斯·托瓦尔兹(Linus Torvalds)表示,目前Linux内核体积越来越大,功能也越来越复杂,虽然此举使后续代码整合工作更为容易,但目前当务之急,还是应该对Linux内核进行“瘦身”,使其内核能够原创 2010-04-26 00:14:00 · 1361 阅读 · 0 评论 -
非屏蔽中断与异常
异常就是CPU内部出现的中断,也就是说,在CPU执行特定指令时出现的非法情况。非屏蔽中断就是计算机内部硬件出错时引起的异常情况。从上图可以看出,二者与外部I/O接口没有任何关系。Intel把非屏蔽中断作为异常的一种来处理,因此,后面所提到的异常也包括了非屏蔽中断。在CPU执行一个异常处理程序时,就不再为其他异常或可屏蔽中断请求服务,也就是说,当某个异常被响应后,CPU清除eflag的中IF位原创 2010-04-28 15:57:00 · 4415 阅读 · 0 评论 -
【数据结构重温】Linux内核中的hash和bucket
哈希表(Hashtable)又称为“散置”,Hashtable是会根据索引键的哈希程序代码组织成的索引键(Key)和值(Value)配对的集合。Hashtable 对象是由包含集合中元素的哈希桶(Bucket)所组成的。而Bucket是Hashtable内元素的虚拟子群组,可以让大部分集合中的搜寻和获取工作更容易、更快速。 哈希函数(Hash Function)为根据索引键来返回数值哈希程序代转载 2010-05-01 20:24:00 · 14391 阅读 · 4 评论 -
百度系统部面试总结
同学去百度被问到的一些面试题的整理,因为是内推并没有参加笔试。以下的面试问题仅仅针对内核,如果你是做应用的,你可能会觉得一头雾水(话说我也是刚开始看内核来着)。另外,相信我,同学被问到的问题应该算是比较深入了,因为我毕业那年找工作虽然没有去百度面试过,但是有不少同学去过,他们被问到的问题大部分停留在应用层和算法部分,所以你不一定会被问到这样的问题,但如果你是做内核转载 2010-04-19 14:20:00 · 5687 阅读 · 0 评论 -
[经典]Linux内核中ioremap映射的透彻理解
几乎每一种外设都是通过读写设备上的寄存器来进行的,通常包括控制寄存器、状态寄存器和数据寄存器三大类,外设的寄存器通常被连续地编址。根据CPU体系结构的不同,CPU对IO端口的编址方式有两种: (1)I/O映射方式(I/O-mapped) 典型地,如X86处理器为外设专门实现了一个单独的地址空间,称为"I/O地址空间"或者"I/O端口空间",CPU通过专门的I/O指令(如X86的IN和OUT转载 2010-04-05 01:52:00 · 75653 阅读 · 17 评论 -
Linux proc file system for module development
创建一个 proc 文件根据对 proc 文件的不同使用,内核提供了多种包装函数来创建一个 proc 文件。方法一:struct proc_dir_entry *create_proc_entry(const char *name, mode_t mode, struct proc_dir_entry *parent)这是最直接,包装最少的创建方法。参数 name 是要创建的 proc 文件名原创 2010-04-02 17:39:00 · 1567 阅读 · 1 评论 -
outb_p() 函数、outb函数与outb指令
outb_p() 在执行了CPU的outb指令后会再使用jmp指令延迟了几个机器周期时间.而outb()则是只执行outb指令原创 2010-04-02 17:57:00 · 7566 阅读 · 0 评论 -
linux内核分析-存储器管理-理论篇
存储器寻址-----------------------------------------------------------------------------------------------------------------------------存储器地址80x86微处理器三种不同的地址逻辑地址:包含在机器语言指令中用来指定一个操作数或一条指令的地址,每个逻辑地址都有一个段和偏移量组转载 2010-04-02 19:34:00 · 2964 阅读 · 0 评论 -
Linux内存线性地址空间布局解析
Linux内存线性地址空间大小为4GB,分为2个部分:用户空间部分(通常是3G)和内核空间部分(通常是1G)。在此我们主要关注内核地址空间部分。内核通过内核页全局目录来管理所有的物理内存,由于线性地址前3G空间为用户使用,内核页全局目录前768项(刚好3G)除0、1两项外全部为0,后256项(1G)用来管理所有的物理内存。内核页全局目录在编译时静态地定义为swapper_pg原创 2010-04-17 03:59:00 · 2806 阅读 · 0 评论 -
linux的物理内存空间与线性地址空间的的对应关系
在支持MMU的32位处理器平台上,Linux系统中的物理存储空间和虚拟存储空间的地址范围分别都是从0x00000000到0xFFFFFFFF,共4GB,但物理存储空间与虚拟存储空间布局完全不同。Linux运行在虚拟存储空间,并负责把系统中实际存在的远小于4GB的物理内存根据不同需求映射到整个4GB的虚拟存储空间中。 物理存储空间布局Linux的物理存储空间布局与处理器相关,详细情况可以转载 2010-04-17 05:20:00 · 3898 阅读 · 1 评论 -
是谁编写了Linux:美国公司
来源:cnbeta 作者:cnbeta 2008-10-31 出处:pcdog.com 我不知道为什么“只有0.10068%的Linux内核开发者领薪水”这种稀里糊涂的想法流传不息,但它确实在流传.所以,我只想一劳永逸地说,就绝大部分而言,Linux是由一些主要的美国公司雇用的软件工程师和程序员编写的.早在2008年4月,Linux基金会就仔细划分谁在做Linux内核的开发.转载 2010-04-17 02:57:00 · 1387 阅读 · 0 评论 -
外设IO地址空间中的地址怎么转换到内核态的虚拟地址空间(一个ioremap函数真的解释清楚了么)
LZ发问:在看到i/o memory i/o region,以及ioremap,mmap时,被这些概念弄糊涂了,看到zhanrk的《Linux对IO端口资源的管理》后,对memory-mapped的i/o还是有些疑问, 我们都知道,采用I/O映射方式的X86处理器为外设实现了一个单独的地址空间,也即“I/O空间”(I/O Space)或称为“I/O端口空间”,其大小是64KB(0原创 2010-04-05 03:55:00 · 4519 阅读 · 1 评论 -
Linux内核中常见的结构体对象中的函数指针赋值操作
常见的赋值操作两种方法都可实现,Linux内核编程的相关书籍中看到方法一较多,周立功编写的linux系统构建于驱动程序开发范例中见到的是方法二,于是奇怪,编写两种代码实验,都成功。赋值操作 方法一:static struct file_operations File_Ops_4_Our_Proc_File = {.read = module_output,.write = module原创 2010-04-02 22:52:00 · 2624 阅读 · 0 评论 -
Linux slab 分配器剖析
Linux slab 分配器剖析了解 Linux 内存管理的方式 级别: 中级M. Tim Jones, 顾问工程师, Emulex2007 年 6 月 11 日良好的转载 2010-04-03 20:13:00 · 771 阅读 · 0 评论 -
内存映射-IO空间-ioremap-iounremap
Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 <object class转载 2010-05-03 22:53:00 · 5267 阅读 · 1 评论 -
linux内核中的Hlist与List_head结构
List_Head操作系统内核经常需要维护数据结构。内核有标准的循环链表、双向链表的实现。在文件中定义了一个list_head类型简单结构:struct list_head { struct list_head *next, *prev; }; 通用链表的常用用途是将某一个数据结构本身串成链表,或将某些链表与一个数据结构联系起来原创 2010-05-01 20:47:00 · 4605 阅读 · 0 评论 -
Yaffs文件系统结构
1.1简介 1.1.1应用场合Yaffs(YetAnotherFlashFileSystem)文件系统是专门针对NAND闪存设计的嵌入式文件系统,目前有YAFFS和YAFFS2两个版本,两个版本的主要区别之一在于YAFFS2能够更好的支持大容量的NANDFLASH芯片。Yaffs文件系统有些类似于JFFS/JFFS2文件系统,与之不同的是JFFS1/2文件系统最初是针对NORF转载 2010-05-02 00:43:00 · 1343 阅读 · 1 评论 -
核高基引发的Linux口水战
自从五月底去某公司面试,完了回学校准备六月一号毕业答辩,然后就是办理手续,收拾行囊 and data,和几个朋友弄了下中南的讲座网(现在已经交接给学校的有关组织管理) 再就是毕业前的小小留念,六月18号匆匆打点邮寄,赶着站票的火车回了浙江,回家没有想象中的清闲,家里生意不好,资金周转不很好,也替老爸担心,在家的一个星期里没有什么放松的活动,给他们帮了帮忙,期间约了小学初中的若干个好友一起Hi了下,都很忙,只来了四个凑得一桌(麻将) ^_^ ,然后是老同学结婚,替他们高兴,祝福他们,然后当晚(27号晚上)的火转载 2010-07-31 21:46:00 · 5174 阅读 · 0 评论 -
Nucleus PLUS介绍
Nucleus PLUS嵌入式操作系统是目前最受欢迎的操作系统之一,是美国源代码操作系统商ATI公司为实时嵌入式应用而设计的一个抢先式多任务操作系统内核,其95%的代码是用ANSIC写成的,因此非常便于移植并能够支持大多数类型的处理器。从实现角度来看,Nucleus PLUS 是一组C函数库,应用程序代码与核心函数库连接在一起,生成一个目标代码,下载到目标板的RAM中或直接烧录到目标板的ROM中执行。转载 2010-08-08 16:58:00 · 1436 阅读 · 0 评论 -
“魔数”的来由
<br /> ELF魔数 我们可以从前面readelf的输出看到,最前面的“Magic”的16个字节刚好对应“Elf32_Ehdr”的e_ident这个成员。这16个字节被ELF标准规定用来标识ELF文件的平台属性,比如这个ELF字长(32位/64位)、字节序、ELF文件版本,如图3-5所示。 <br /><br /><br /> 最开始的4个字节是所有ELF文件都必须相同的标识码,分别为0x7F、0x45、0x4c、0x46,第一个字节对应ASCII字符里面的DEL控制符,后面3个字节刚好是E原创 2010-08-11 21:58:00 · 3925 阅读 · 0 评论 -
ELF文件结构描述
3.4 ELF文件结构描述 我们已经通过SimpleSection.o的结构大致了解了ELF文件的轮廓,接着就来看看ELF文件的结构格式。图3-4描述的是ELF目标文件的总体结构,我们省去了ELF一些繁琐的结构,把最重要的结构提取出来,形成了如图3-4所示的ELF文件基本结构图,随着我们讨论的展开,ELF文件结构会在这个基本结构之上慢慢变得复杂起来。 ELF目标文件格式的最前部是ELF文件头(ELF Header),它包含了描述整个文件的基本属性,比如ELF文件版本、目标机器型号、程序入口地址等。紧转载 2010-08-11 22:32:00 · 3253 阅读 · 1 评论 -
UTF-8、UTF-16、UTF-32
Unicode 是Unicode.org制定的编码标准,目前得到了绝大部分系统和编程语言的支持。Unicode.org官方对 Unicode的定义是:Unicode provides a unique number for every character。可见,Unicode所做的是为每个字符定义了一个相应的数字表示。比如,“a“的Unicode值是0x0061,“一”的 Unicde值是0x4E00,这是最简单的情况,每个字符用2个字节表示。原创 2010-09-04 13:14:00 · 1315 阅读 · 0 评论 -
strace —— 跟踪系统调用和信号
strace 用来截取程序发出的系统调用并将其显示出来。被 strace 跟踪的程序,可以是从 strace 命令运行的,也可以是系统上已经运行的进程。strace 是调试汇编语言和高级语言程序时价值无法估量的工具。转载 2010-09-15 23:44:00 · 3294 阅读 · 0 评论 -
BIOS Interupt service
BIOS Interupt service原创 2010-10-18 22:55:00 · 4815 阅读 · 1 评论 -
Linux内存分配机制:SLAB / SLUB / SLOB
Linux内存分配机制:SLAB / SLUB / SLOB原创 2011-05-15 21:47:00 · 8190 阅读 · 0 评论 -
如何成为一个Linux内核开发者
如何成为一个Linux内核开发者转载 2011-04-07 23:29:00 · 2216 阅读 · 0 评论 -
【经典操作系统问题】睡眠理发师问题分析
2.理发师问题:一个理发店有一个入口和一个出口。理发店内有一个可站5 位顾客的站席区、4 个单人沙发、3 个理发师及其专用理发工具、一个收银台。新来的顾客坐在沙发上等待;没有空沙发时,可在站席区等待;站席区满时,只能在入口外等待。理发师可从事理发、收银和休息三种活动。理发店的活动满足下列条件: 1)休息的理发师是坐地自己专用的理发椅上,不会占用顾客的沙发; 2)处理休息状态的原创 2010-05-22 15:20:00 · 11593 阅读 · 1 评论 -
【经典操作系统问题】读者写者问题分析
哲学家就餐问题对于互斥访问有限资源的竞争问题(如I/O设备)一类的建模过程十分有用。另一个著名的问题是读者-写者问题(Courtois等人,1971),它为数据库访问建立了一个模型。例如,设想一个飞机订票系统,其中有许多竞争的进程试图读写其中的数据。多个进程同时读数据库是可以接受的,但如果一个进程正在更新(写)数据库,则所有的其他进程都不能访问该数据库,即使读操作也不行。这里原创 2010-05-22 15:36:00 · 2739 阅读 · 1 评论 -
三次握手与四次挥手 机制
v/:* {behavior:url(#default#VML);}o/:* {behavior:url(#default#VML);}w/:* {behavior:url(#default#VML);}.shape {behavior:url(#default#VML);} Normal 0 7.8 磅 0 2原创 2010-05-06 16:26:00 · 1682 阅读 · 0 评论 -
【全球IT界】三国鼎立,烽火燎原——中国你在哪里?
苹果Google微软三国战争地图据Gizmodo报道,令人吃惊的并不是微软或者苹果的规模,他们有几十年的历史,打造了行业的巨擘(现在又一致困在时空隧道里),真正令人吃惊的是Google。在十几年时间里,Google一举成为网络世界最重量级的公司,像病毒一样迅速侵入互联网的每一个角落,从搜索到视频,从移动电话到操作系统,很快又将波及电视机领域。回到上世纪90年代,“霸权”的转载 2010-05-06 20:16:00 · 2056 阅读 · 0 评论 -
Linux内核增加系统调用
其实像这样的文章网上一搜一大堆,又千篇一律,中国的网络世界就是这样一个特点,今天我也没有逃过这样的“特点”,转载确实让我省了很多的文字输入,但是千篇一律的错误也被转载是我不能容忍的,实验之后,将错误之处一一更正,希望错误不再被继续转...1.linux 系统调用的基本原理 linux的系统调用形式与POSIX兼容,也是一套C语言函数名的集合。然而,linu转载 2010-05-06 13:18:00 · 12245 阅读 · 7 评论 -
Linux操作系统新贵MeeGo前世今生
4月29日消息,在刚刚结束的巴塞罗那2010世界移动大会上,Linux智能操作系统家族两股势力合并,即英特尔的Moblin与诺基亚的Maemo,合并后启用新名MeeGo,并交由Linux基金会管理。MeeGo问世新闻一出就如猛虎下山,引发业界广泛关注和热议。谁说英雄不问出处?先不论未来是否三分天下而得其一,正是因为其出身显贵,MeeGo才吸引了众多技术人员、分析人士以及媒体记者,在从来转载 2010-05-08 12:51:00 · 1873 阅读 · 2 评论 -
vmware下重新编译内核必选选项(备忘)
vmware下重新编译内核必选选项如果你在vmware下重新编译内核,硬盘用的是scsi的,以下选项必选:Device Drivers --->;SCSI device support --->;; SCSI disk supportDevice Drivers --->;SCSI device support --->;SCSI low-level drivers --->;转载 2010-05-12 16:08:00 · 1584 阅读 · 0 评论