自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 资源 (14)
  • 收藏
  • 关注

转载 详细介绍Linux /etc/group文件

Linux /etc/group文件与/etc/passwd和/etc/shadow文件都是有关于系统管理员对用户和用户组管理时相关的文件,Linux /etc/group文件相对另外两个文件内容相对较少,这里对这一文件进行以下分析。 用户组的所有信息都存放在/etc/group文件中将用户分组是Linux系统中对用户进行管理及控制访问权限的一种手段。每个用户都属于某个

2010-03-30 11:44:00 1829

转载 centos5.3搭建DNS多域名解析服务器

一、域名与域名解析 网络中为了区别各个主机,必须为每台主机分配一个惟一的地址,这个地址即称为“IP 地址”。但这些数字难以记忆,所以就采用“域名”的方式来取代这些数字了。不过最终还是必须将域名转换为对应的IP 地址才能访问主机。DNS 服务,又叫域名解析服务,即提供域名与IP 地址的相互转换。域名的正向解析是将主机名转换成IP 地址的过程,域名的反向解析

2010-03-30 09:47:00 2754

转载 Shelll 错误 syntax error: unexpected end of file

今天shell一直运行正常,修改了几次,反倒不能运行了,我是在windows下修改的shell,开始怀疑是windows和linux文件格式转换错误,看了网上的也有说是这个,但是我的几经修改还是不行,最后发现时语法错误---多了一个引号。     echo "Dir " $WORK_DIR has already exist "-------   就是这个错误;修改为  echo "D

2010-03-27 11:41:00 1426

转载 rrdtool1.4.2画图中文乱码解决

rrdtool绘图时, 会取系统环境变更, 如果是中文, 就会在输出图片的时候, 自动输出中文(如XX月等),如果没有中文字体, 就是出现乱码。解决办法有两个1. 设置语言环境变量 2. 修改安装源文件代码后,再安装. 修改方法: vi src/rrd_graph.c // setlocale(LC_NUMERIC, old_locale); /* reen

2010-03-26 17:46:00 3833

原创 Centos Linux 系统下快速关闭SELINUX

SElinux是php的天敌,我在长期的linux实践中总结的经验:我们经常由于默认系统的安全性配置导致些莫名其妙的问题,比如SElinux本来是用于安全子系统的权限控制,可是搞不好就发现限制多多,我们可以用如下方法快速关闭SElinux  /usr/sbin/setenforce 0 立刻关闭 SELINUX  /usr/sbin/setenforce 1 立刻启用 SE

2010-03-26 17:20:00 1205

原创 集群监控之 —— ipmi操作指南

这两天,配置了一堆500来个节点的大型集群,被ipmi的问题困扰了一天半,到下午16:40,终于解决了。这里来总结一下: 智能平台管理界面(IPMI,Intelligent Platform Management Interface)是管理基于 Intel结构的企业级系统中所使用的外围设备采用的一种工业标准,用户能够利用IPMI监控服务器的物理健康特征,如温度、电压、风扇工作状态、电源状态

2010-03-23 16:45:00 16760 8

原创 PHP高级语法(一)—— 文件处理2

  file(PHP 3, PHP 4, PHP 5)file -- 把整个文件读入一个数组中说明array file ( string filename [, int use_include_path [, resource context]] )和 readfile() 一样,只除了 file() 将文

2010-03-22 17:03:00 1660

原创 如何用shell脚本杀死指定名称的进程

killp.sh i1=`ps   -ef|grep   -E   "your_process_name "|grep   -v   grep|awk   {print   $2} `   kill   -9   $i1  小心shell脚本的名称可能与你要杀的进程名称有联系,一定要小心。

2010-03-19 17:20:00 3141 1

原创 sendmail简单配置

人们在互联网上最常使用的就是电子邮件了,很多企业用户也经常使用免费的电子邮件系统。今天我就给大家介绍一种在Red Hat Linux 9.0环境下运行的邮件服务器软件Sendmail。Sendmail作为一种免费的邮件服务器软件,已被广泛的应用于各种服务器中,它在稳定性、可移植性、及确保没有bug等方面具有一定的特色,且可以在网络中搜索到大量的使用资料。   一.安装Sendm

2010-03-18 20:18:00 1468

原创 如何让进程在Linux后台运行

在Linux中,如果要让进程在后台运行,一般情况下,我们在命令后面加上&即可,实际上,这样是将命令放入到一个作业队列中了:[root@localhost /]# ./test.sh &[1] 17208然后我们就可以用以下命令进行查看:[root@localhost /]# jobs -l[1]  17208 Running ./test.sh &

2010-03-18 10:55:00 1548

原创 shell 2>&1 解释

一直以来对shell并不是很熟悉,并且在报错日志的时候习惯的写 command >log.log 2>&1今天一个同事看了我的shell脚本,问我 2>&1是什么意思,还真把我给难住了。经过google了一番,有了个大概的了解: shell的标准输入默认的是键盘,也可以试文件或者管道 |标准输出默认是终端同样也可以是文件或者管道标准错误默认也是终端,可以试文件等 标

2010-03-17 17:08:00 2027

原创 功能强大的shell:if条件语句

if语句测试条件,测试条件返回真(0)或假(1)后,可相应执行一系列语句。if语句结构对错误检查非常有用。其格式为:if 条件1    then 命令1elif 条件2    then 命令2else     命令3fiif语句必须以单词fi终止。在if语句中漏写fi是最一般的错误。我自己有时也是这样。elif和else为可选项,如果语句中没有否则部分,那么就不

2010-03-17 16:16:00 6304 1

原创 快速使用locate命令查找Linux中的文件

在浩瀚的Linux中,查找某个文件是件非常要命的事儿。我试过很多方法,最简单、最方便的一种是利用locate命令和updatedb命令配合的方法: 比如,我们要查找一个文件名中带“chen”字符串的文件,这样做: [root@locahost /]# locate chen 这样就能出现一大串蕴含chen字符串文件名的文件。 注意,locate执行后的结果不一定准确

2010-03-16 16:03:00 2234

转载 linux中touch命令参数修改文件的时间戳

linux中touch命令参数不常用,一般在使用make的时候可能会用到,用来修改文件时间戳,或者新建一个不存在的文件,以下是linux中touch命令参数的使用方法:   touch [-acm][-r ref_file(参照文件)|-t time(时间值)] file(文件名)   example:  touch file1.txt 更新file1.txt的存取和修改时间

2010-03-15 19:02:00 2409

转载 CentOS 5.2安装nagios笔记

  nagios,难过死,难走死。反正不管咋叫,就是个难!自从上星期开始,折腾nagios快两个礼拜了,就想实现短信告警。东找找西找找,发现天下文章一大抄,一个人写的东西被N多人转来转去,甚至有的人还不知羞耻地把别人的东西弄成自己的原创了。唉,世风日下人心不古啊。而且多数的说明都很笼统,一边找,一边自己琢磨。整个过程中,前面2/3的时间最难熬,有无数次撞墙的冲动..

2010-03-15 16:58:00 1769 2

转载 linux下configure命令详细介绍

Linux环境下的软件安装,并不是一件容易的事情;如果通过源代码编译后在安装,当然事情就更为复杂一些;现在安装各种软件的教程都非常普遍;但万变不离其中,对基础知识的扎实掌握,安装各种软件的问题就迎刃而解了。Configure脚本配置工具就是基础之一,它是autoconf的工具的基本应用。 与一些技巧相比,Configure显得基础一些,当然使用和学习起来就显得枯燥乏味一些,当然要成

2010-03-12 11:42:00 1058

原创 同步与互斥的基本原理

在本科学习过《操作系统》的同志们都知道,现代操作系统提供了一个并发控制环境,即系统中同时活动着的多个不同的进程,这些进程共享同一个CPU、内存或 I/O设备。特别是对于Linux这种世界上最先进的操作系统来说,其多任务、多用户、分时实时混合的性质决定了多个进程在某种程度上彼此依赖或相互制约的关系,这些关系我们叫“并发关系”,按其性质可以分为同步(synchronization)和互斥(mutual

2010-03-11 18:44:00 3453

转载 文件编辑器 vi

作者:北南南北来自:LinuxSir.Org(http://www.linuxsir.org/main/?q=node/206)摘要:vi 编辑器是最常用的文档创建和编辑工具,初学者应该学会简单应用vi ,学会在vi 中做简单的修改、删除、插入、搜索及替换作业;如果您是新手,不妨看看本文,或许这篇文档能让您在最短的时间内学会vi的简单操作; 1、关于文本编辑器;

2010-03-08 17:26:00 1249 1

原创 定时器中断

走到这里,大家肯定对Linux的中断处理有概念了,下面我们通过一个具体的实例,来了解Linux内核处理中断的全过程,那就是定时器中断。在详细分析这个过程之前,我们把Linux时间管理的概念先缕一缕。 在当前的80x86体系结构上,内核显式地与几种时钟和定时器电路打交道,其主要分为了时钟和定时器两大类:- 时钟电路同时用于跟踪当前时间和产生精确的时间度量。- 定时器电路由内核编程,所

2010-03-07 17:54:00 7695 2

原创 下半部分

我们在前面的“中断处理”博文中提到,在由内核执行的几个中断任务之间有些不是紧急的:在必要情况下它们可以延迟一段时间。回忆一下,一个中断处理程序是急迫的,调用do_IRQ将几个中断服务例程串行执行,并且通常在一个中断的处理程序结束前,不应该再次出现这个中断,我们叫它“上半部分”。相反,可延迟中断可以在开中断的情况下执行。把可延迟中断从中断处理程序中抽出来有助于使内核保持较短的响应时间。 Li

2010-03-07 16:26:00 3337 1

原创 中断处理(续)

上一篇博文我们把中断原理和中断处理所需要的数据结构清理了一遍,现在,我们就该看看中断处理的具体动作是怎样的了。 当CPU接收一个中断时,就开始执行相应的中断处理程序代码,前面介绍过了,该代码的地址存放在IDT的相应门中。于是,与其他上下文切换一样,Linux需要保留当前寄存器的内容以便保存和恢复当前指令。 保存寄存器是中断处理程序做的第一件事情。每个IRQ的中断处理程序地址存放于i

2010-03-07 15:28:00 2786 1

原创 中断处理

上一篇博文里,我们谈到了异常处理,现在我们开始研究一下中断处理的情况。中断处理比异常处理复杂得多,这是因为: 第一,中断的发生对于正在运行的进程无关,被调用的中断处理函数叫做中断服务程序,它运行在内核态并处于系统上下文中(使用内核页表、其为内核代码和内核数据结构),所以中断处理程序不允许被阻塞; 第二,由于硬件资源的限制,比如APIC的IRQ引脚数量有限,一根IRQ信号线需要被几个

2010-03-07 13:51:00 2483

转载 “赢在中国”对80后的30个忠告

1、一个年轻人,如果三年的时间里,没有任何想法,他这一生,就基本这个样子,没有多大改变了。 -2、成功者就是胆识加魄力,曾经在火车上听人谈起过温州人的成功,说了这么三个字,胆子大。这其实,就是胆识,而拿得起,放得下,就是魄力。 -3、这个世界,有这么一小撮的人,打开报纸,是他们的消息,打开电视,是他们的消息,街头巷尾,议论的是他们的消息,仿佛世界是为他们准备的,他们能够

2010-03-05 17:23:00 758

原创 云计算和云存储的关系

在“深度剖析云存储”这篇博文中,我详细介绍了云存储系统的架构及其技术特点,也提到了云计算。那么云存储和云计算之间到底有什么样的关系,两者之间有什么区别呢。云计算是分布式处理(Distributed Computing)、并行处理(Parallel Computing)和网格计算(Grid Computing)的发展,是透过网络将庞大的计算处理程序自动分拆成无数个较小的子程序,再交由多台服务

2010-03-04 18:58:00 2741

原创 云计算环境中存储必备的9大要求

介绍在最近对云计算的所有关注中,存储更多地被视为基础平台。时至今日,许多云计算提供的仅仅局限于CPU内核的集合,定量的内存分配,低转速存储,或者还有一些面向互联网的IP技术。近来,出现了有趣的与云计算和存储相关的高级技术,特别是使用 Web Services访问方式,使得访问存储不再受限于设备文件或者NFS加载点。典型的数据存储和管理的"企业级特征"在IT架构创新上不断推成出新。存

2010-03-04 18:35:00 1682

原创 深度剖析云存储

云存储(cloud storage)这个概念一经提出,就得到了众多厂商的支持和关注。Amazon在两年前就推出的Elastic Compute Cloud(EC2:弹性计算云)云存储产品,旨在为用户提供互联网服务形式同时提供更强的存储和计算功能。内容分发网络服务提供商CDNetworks 和业界著名的云存储平台服务商 Nirvanix发布了一项新的合作,并宣布结成战略伙伴关系,以提供业界目前唯一的

2010-03-03 19:01:00 2592 3

原创 PHP 调用shell命令

 可以使用的命令:popenfpassthrushell_execexecsystem 1.popen resource popen ( string command, string mode )打开一个指向进程的管道,该进程由派生给定的 command 命令执行而产生。 返回一个和 fopen() 所返回的相同的文件指针,只不过它是

2010-03-01 11:01:00 13424

NFS文件系统

NFS文件系统是目前最为成功的网络文件系统,在文件共享领域有着出色的表现,特别是pNFS的出现,使得NFS文件系统在性能和规模上有了大幅提升,为其带了更为广阔的应用空间。同时,NFS之所以备受关注,还在于它在NAS存储领域的关键作用。本文剖析了NFSv3文件系统源代码,使开发工程师,技术支持人员,特别是存储领域从业人员对NFS有更为深刻的认识。

2012-04-08

数据结构与算法——面向对象C++设计模式

数据结构与算法的经典教材,系统全面地介绍了各种传统的数据结构,把它们按照类层次的现代理念予以展开,进而达到抽象结构与实际设计的完美统一。本书后三章通过引入抽象问题求解的概念,集中进述了算法技术和各算法之间的关系。另外,作者运用一定的数学工具及必要的分析技术和分析理论,对每种数据结构及相关算法都进行了时间和空间效率分析。本书作者在每章后面布置了习题和设计项目,并在全书的后面给出了问题参考答案,希望读者能在其中汲取宝贵的知识与经验。

2011-11-27

高性能分布式监控系统Ganglia详解

Ganglia是一个高性能分布式监控系统,用来监控集群和超级计算机。Ganglia是一个基于多点传送的监听/告知协议来监控集群的状态,它使用一个点对点树来访问集群并且可以统计其综合的信息。Ganglia可以广泛地使用像XML这样的技术来表示数据;使用XDR技术来聚合、轻化数据传送;使用RRDTool来存储和显示数据。

2011-07-10

几个比较著名的哈希算法

几个比较著名的哈希算法,还有哈希算法的概念以及如何优化哈希值的分布,在日常软件开发中十分有用

2011-07-07

疯狂内核之——内核初始化

目录 1 引子 2 1.1 上电 2 1.2 BIOS时代 3 1.3 内核引导程序 5 2 内核映像的形成 8 2.1 MakeFile预备知识 9 2.1.1 Makefile书写规则 9 2.1.2 Makefile变量 10 2.1.3 条件判断 14 2.1.4 函数 17 2.1.5 隐含规则 17 2.1.6 定义模式规则 19 2.1 KBuild体系 23 2.1.1 内核目标 24 2.1.2 主机程序 26 2.1.3 编译标志 27 2.2 内核编译分析 28 2.2.1 编译配置 29 2.2.2 寻找第一个目标 32 2.2.3 prepare和scripts目标 38 2.2.4 递归编译各对象 41 2.2.5 链接vmlinux 44 2.2.6 制作bzImage 50 3 实模式下的内核代码 57 3.1 内核映像内存布局 58 3.2 实模式汇编代码header.S 60 3.2.1 无用的bootsect代码 60 3.2.2 初始化头变量hdr 63 3.2.3 准备实模式下C语言环境 64 3.3 实模式代码main函数 69 3.3.1 复制初始化头变量 71 3.3.2 初始化堆 74 3.3.3 确保支持当前运行的CPU 75 3.3.4 设置BIOS的x86模式 76 3.3.5 内存的检测 78 3.3.6 设置键盘属性 81 3.3.7 填充系统环境配置表 82 3.3.8 填充IST信息 83 3.3.9 设置Video模式 83 3.4 实模式代码go_to_proteced_mode函数 91 3.4.1 禁止可屏蔽和不可屏蔽中断 92 3.4.2 打开A20地址线 93 3.4.3 安装临时全局描述符表 99 3.4.4 第一次启动保护模式 101 4 保护模式下的内核代码 107 4.1 32位x86保护模式代码 107 4.1.1 内核解压缩的前期工作 108 4.1.2 解压缩内核 111 4.1.3 第二次启动保护模式 121 4.1.4 第一次启动分页管理 124 4.1.5 初始化0号进程 128 4.2 向start_kernel进发 131 4.2.1 初始化中断描述符表 132 4.2.2 第三次启动保护模式 137 4.2.3 启动x86虚拟机 141 5 走向现代:start_kernel函数 144 5.1 初始化同步与互斥环境 148 5.1.1 屏蔽中断 148 5.1.2 启动大内核锁 152 5.1.3 注册时钟通知链 153 5.1.4 激活第一个CPU 155 5.1.5 初始化地址散列表 160 5.1.6 打印版本信息 161 5.2 执行setup_arch()函数 166 5.2.1 拷贝可用内存区信息 171 5.2.2 获得总页面数 175 5.2.3 着手建立永久内核页表 177 5.2.4 第二次启动分页管理 181 5.2.5 建立内存管理架构 186 5.2.6 添砖加瓦 192 5.3 设置每CPU环境 206 5.4 初始化内存管理区列表 211 5.5 利用early_res分配内存 214 5.6 触碰虚拟文件系统 223 5.7 初始化异常服务 224 5.8 初始化内存管理 230 5.8.1 启用伙伴算法 230 5.8.2 初始化slab分配器 241 5.8.3 初始化非连续内存区 250 5.9 初始化调度程序 251 5.10 初始化中断处理系统 256 5.10.1 设置APIC中断服务 256 5.10.2 初始化本地软时钟 264 5.10.3 软中断初始化 268 5.10.4 初始化定时器中断 271 5.11 走进start_kernel尾声 273 5.11.1 初始化slab的后续工作 273 5.11.2 启动console 275 5.11.3 一些简单的函数 276 5.11.4 校准CPU时钟速度 279 5.11.5 创建一些slab缓存 282 5.12 安装根文件系统 287 5.12.1 创建VFS相关slab缓存 288 5.12.2 安装rootfs 291 5.12.3 安装proc文件系统 296 6 后start_kernel时代 298 6.1 创建1号进程 298 6.2 子系统的初始化 306 6.3 启动shell环境 309

2011-05-30

疯狂内核之——Linux虚拟内存

目录 第一章 Linux底层分段分页机制 5 1.1 基于x86的Linux分段机制 5 1.2 基于x86的Linux分页机制 7 1.2.1 页全局目录和页表 8 1.2.2 线性地址到物理地址 10 1.2.3 线性地址字段处理 13 1.2.4 页表处理 15 1.3 扩展分页与联想存储器 20 1.4 Linux内存布局 21 1.5 内核空间和用户空间 23 1.5.1 初始化临时内核页表 24 1.5.2 永久内核页表的初始化 32 1.5.3 第一次进入用户空间 41 1.5.4 内核映射机制实例 44 1.6 固定映射的线性地址 48 1.7 高端内存内核映射 50 1.8.1 永久内存映射 50 1.8.2 临时内核映射 55 第二章 内核级内存管理系统 58 2.1 Linux页面管理 58 2.1.1 NUMA架构 61 2.1.2 内存管理区 62 2.2 伙伴系统算法 65 2.2.1 数据结构 66 2.2.2 块分配 67 2.2.3 块释放 69 2.3 Linux页面级内存管理 72 2.3.1 分配一组页面 73 2.3.2 释放一组页面 80 2.4 每CPU页面高速缓存 81 2.4.1 数据结构 81 2.4.2 通过每CPU 页高速缓存分配页面 82 2.4.3 释放页面到每CPU 页面高速缓存 83 2.5 slab分配器 85 2.5.1 数据结构 86 2.5.2 分配/释放slab页面 92 2.5.3 增加slab数据结构 93 2.5.4 高速缓存内存布局 94 2.5.5 slab着色 95 2.5.6 分配slab对象 96 2.5.7 释放Slab对象 100 2.5.8 通用对象 102 2.5.9 内存池 103 2.6 非连续内存区 104 2.6.1 高端内存区回顾 105 2.6.2 非连续内存区的描述符 106 2.6.3 分配非连续内存区 109 2.6.4 释放非连续内存区 113 第三章 进程的地址空间 117 3.1 用户态内存分配 117 3.1.1 mm_struct数据结构 118 3.1.2 内核线程的内存描述符 122 3.2 线性区的数据结构 123 3.2.1 线性区数据结构 123 3.2.2 红-黑树算法 126 3.2.3 线性区访问权限 128 3.3 线性区的底层处理 130 3.3.1 查找给定地址的最邻近区 131 3.3.2 查找一个与给定的地址区间相重叠的线性区 135 3.3.3 查找一个空闲的地址区间 135 3.3.4 向内存描述符链表中插入一个线性区 137 3.4 分配线性地址区间 141 3.5 释放线性地址区间 151 3.5.1 do_munmap()函数 151 3.5.2 split_vma()函数 153 3.5.3 unmap_region()函数 155 3.6 创建和删除进程的地址空间 156 3.6.1 创建进程的地址空间 156 3.6.2 删除进程的地址空间 175 3.6.3 内核线程1号的地址空间 176 3.7 堆的管理 178 第四章 磁盘文件内存映射 182 4.1 内存映射的数据结构 182 4.2 内存映射的创建 184 4.3 内存映射的请求调页 194 4.4 刷新内存映射的脏页 203 4.5 非线性内存映射 210 第五章 页面的回收 215 5.1 页框回收概念 215 5.1.1 选择目标页 216 5.1.2 PFRA设计 217 5.2 反向映射技术 218 5.2.1 匿名页的反向映射 220 5.2.2 优先搜索树 226 5.2.3 映射页的反向映射 231 5.3 PFRA实现 235 5.3.1 最近最少使用(LRU)链表 236 5.3.2 内存紧缺回收 242 5.3.3 回收磁盘高速缓存的页 267 5.3.4 周期回收 273 5.3.5 内存不足删除程序 283 第六章 交换机制 289 6.1 交换区数据结构 289 6.1.1 创建交换区 290 6.1.2 交换区描述符 291 6.1.3 换出页标识符 293 6.2 激活和禁用交换区 295 6.2.1 sys_swapon()系统调用 296 6.2.2 sys_swapoff()系统调用 304 6.2.3 try_to_unuse()函数 308 6.3 分配和释放页槽 313 6.3.1 scan_swap_map()函数 313 6.3.2 get_swap_page()函数 316 6.3.3 swap_free()函数 318 6.4 页面的换入换出 320 6.4.1 交换高速缓存 320 6.4.2 换出页 323 6.4.3 换入页 329 第七章 缺页异常处理程序 335 7.1 总体流程 335 7.2 vma以外的错误地址 341 7.3 vma内的错误地址 346 7.3.1 handle_mm_fault()函数 348 7.3.2 请求调页 352 7.3.3 写时复制 358 7.4 处理非连续内存区访问 364

2011-05-30

疯狂内核之——进程管理子系统

目录 1 进程的组织 5 1.1 进程相关数据结构 5 1.1.1 进程的基本信息 6 1.1.2 进程状态 10 1.1.3 TASK_RUNNING状态的进程链表 11 1.1.4 进程间关系 12 1.2 Linux的线程——轻量级进程 15 1.3 进程的创建——do_fork()函数详解 19 1.4 执行进程间切换 33 1.4.1 进程切换之前的工作 33 1.4.2 进程切换实务 —— switch_to宏 37 1.4.3 __switch_to函数 39 1.5 fork与vfock系统调用的区别 42 1.6 内核线程 46 1.7 挂起状态进程的组织 49 1.7.1 等待队列头 49 1.7.2 等待队列的操作 50 1.7.3 进程资源限制 55 1.8 系统调用execve() 56 1.8.1 拷贝用户态参数 57 1.8.2 重要的数据结构 61 1.8.3 search_binary_handler函数 66 1.8.4 目标文件的装载和投入运行 69 1.8.5 库函数 92 2 中断控制 94 2.1 中断的分类 94 2.2 中断的硬件环境 95 2.2.1 外部中断请求IRQ 95 2.2.2 中断描述符表 96 2.2.3 中断和异常的硬件处理 97 2.3 中断描述符表 99 2.3.1 中断门、陷阱门及系统门 99 2.3.2 IDT的初步初始化 100 2.4 异常处理 101 2.5 中断处理 106 2.5.1 中断向量 107 2.5.2 IRQ数据结构 108 2.5.3 do_IRQ()函数 113 2.5.4 中断服务例程 115 2.5.5 IRQ线的动态分配 116 2.6 下半部分 117 2.6.1 软中断 118 2.6.2 tasklet 121 2.6.3 工作队列 122 2.7定时器中断 124 2.7.1 时钟与定时器 124 2.7.2 定时器中断相关的数据结构 127 2.7.3 定时器中断的上半部分 129 3 进程调度 138 3.1 进程调度的概念 138 3.2 进程调度的数据结构和优先级 141 3.2.1 进程的优先级 141 3.2.2 数据结构 145 3.3 调度程序所使用的函数 151 3.3.1 scheduler_tick函数 151 3.3.2 try_to_wake_up函数 156 3.3.3 recalc_task_prio函数 160 3.4 schedule()函数 163 3.4.1 直接调用 163 3.4.2 延迟调用 164 3.4.3 进程切换之前所做的工作 168 3.4.4 完成进程切换时所执行的操作 171 3.4.5 进程切换后所执行的操作 173 3.5 多处理器运行队列的平衡 175 3.5.1 调度域 176 3.5.2 rebalance_tick()函数 178 3.5.3 load_balance()函数 180 3.5.4 move_tasks()函数 183 3.6 进程退出 187 3.6.1 进程终止 187 3.6.2 进程删除 189 4 进程的并发性体现 191 4.1 内核抢占 193 4.1.1 内核抢占概念 193 4.1.2 同步技术总揽 196 4.2 每CPU变量 197 4.3 原子操作 199 4.4 优化屏障和内存壁垒 203 4.4.1 优化屏障 204 4.4.2 内存壁垒 204 4.5 自旋锁 206 4.6 读写自旋锁 211 4.6.1 为读获取和释放一个锁 213 4.6.2 为写获取或释放一个锁 214 4.7 顺序锁 215 4.8 RCU机制 217 4.9 信号量 219 4.9.1 获取和释放信号量 221 4.9.2 读/写信号量 224 4.9.3 补充信号量 225 4.10 禁止本地中断 226 4.10.1 禁止本地中断 227 4.10.2 禁止下半部(可延迟函数) 229 4.11 一些避免竞争条件的实例 231 4.11.1 引用计数器 231 4.11.2 大内核锁 231 4.11.3 内存描述符读/写信号量 232 4.11.4 slab高速缓存链表的信号量 233 4.11.5 索引节点的信号量 233 4.12 内核同步与互斥的总结 233

2011-05-30

疯狂内核之——Linux预备知识.pdf

目录 1.1 体系架构 3 1.1.1 Linux体系结构 4 1.1.2 一般程序的执行 5 1.2用户态向内核态切换 7 1.2.1 Linux的堆栈切换 7 1.2.2 80x86分段的总结 12 1.2.3 Linux的指针 14 1.3 C语言基本功 14 1.3.1 Linux内核中的链表 15 1.3.2 Linux双循环链表综合实例 29 1.4 内核汇编语言规则 30 1.4.1 GNU的x86汇编语言 32 1.4.2 嵌入式汇编语言 33 1.5 必要的硬件知识 37 1.5.1 EU模块 38 1.5.2 SU模块 39 1.5.3 PU模块 43 1.5.4 高速缓存 45 1.6 __attribute__ 机制 46 1.6.1 函数属性 46 1.6.2 变量属性 51 1.6.3 类型属性 52 1.6.4 变量属性与类型属性举例 54 1.7 必要的编译知识 55

2011-05-30

基于C++语言的GoF23种设计模式

懂了设计模式,你就懂了面向对象分析和设计(OOA/D)的精要。反之好像也可能成立。道可道,非常道。道不远人,设计模式亦然如此。 GoF 的 23 种模式研读、总结和探索,对想成为系统架构师的各位来说,意义重大。

2011-05-29

从8086到Pentium Ⅲ微型计算机及接口技术3

内容提要:   本书以Intel处理器为核心的微型计算机为背景,全面、系统、深入地介绍了微型计算机的基本组成、工作原理和实际应用,注重吸取微机发展的最新技术和最新知识,并将其融于全书之中。   全书共分10章,分别介绍微型计算机的基本知识、从8086到PentiumⅢ循序渐进地介绍了微处理器的内部结构及特点、指令系统、汇编语言程序设计、存储器、输入输出基础、中断系统、通信与接口技术、微机总线及其接口标准和微型计算机系统板等。每章后面都有大量思考题与习题。本书可作为高等院校各个专业本、专科教材,也可作为工程技术人员的参考书。   友情提示:虽然本书并未介绍的目前最新的处理器,但书籍是永远跟不上产品的发展速度的,更何况没有掌握基础的技术是绝对谈不上学会最新技术的,因此本书是很有价值的。本资料为PDF电子版,推荐采用Adobe Reader7.0或兼容阅读器在120%的显示比例下阅读! 目录 前言 第1章 概述 1.1 微型计算机的发展概况 1.2 计算机中信息的表示 1.3 微型计算机的硬件结构和基本工作原理 1.4 微型计算机的软件系统 1.5 微型计算机系统及性能指标 思考与习题 第2章 微处理器 2.1 8086/8088微处理器 2.2 80286微处理器 2.3 80386微处理器 2.4 CISC与RISC 2.5 80486微处理器 2.6 Pentium微处理器 2.7 Pentium Pro微处理器 2.8 MMX及MMX Pentium微处理器 2.9 Pentium II和Pentium III微处理器 2.10 新一代64位微处理器Merced 思考与习题 第3章 80X86指令系统 3.1 指令格式与编码 3.2 寻址方式 3.3 8086/8088指令系统 3.4 80286增强和扩充的指令 3.5 80386增强和扩充的指令 3.6 80486和Pentium增强和扩充的指令 思考与习题 第4章 汇编语言程序设计 4.1 概述 4.2 80X86宏汇编语言的数据和表达式 4.3 80X86宏汇编语言的伪指令语句 4.4 汇编语言程序设计方法 思考与习题 第5章 微型计算机中的存储器 5.1 存储器概述 5.2 半导体存储器分类及性能指标 5.3 随机存取存储器 5.4 只读存储器 5.5 存储器的扩展 5.6 微机内存层次结构 5.7 微机系统中的其他存储部件 5.8 微型计算机系统的内存管理 思考与习题 第6章 输入输出基础 6.1 概述 6.2 输入输出控制方式 6.3 I/O接口的基本结构及特点 6.4 I/O接口的读写技术 6.5 DMA控制器 思考与习题 第7章 微型计算机的中断系统 7.1 中断的基本概念 7.2 可编程中断控制器8259A 7.3 中断调用及中断程序设计 思考与习题 第8章 微机通信与接口技术 8.1 并行通信与串行通信 8.2 可编程串行通信接口芯片16550与8250 8.3 可编程并行通信接口芯片8255 8.4 可编程定时/计数器芯片8253与8254 8.5 A/D与D/A转换接口 8.6 打印机接口 8.7 显示适配器接口 8.8 软硬盘接口 8.9 调制解调器 8.10 简单实用的双机通信 思考与习题 第9章 微机总线及其接口标准 9.1 总线概述 9.2 总线层次及信号类型 9.3 ISA总线 9.4 EISA总线 9.5 VESA总线 9.6 PCI总线 9.7 AGP 思考与习题 第10章 微型计算机系统板 10.1 系统板概述 10.2 PC/XT和286系统板 10.3 386和486系统板 10.4 Pentium和PentiumⅡ/Ⅲ系统板 10.5 系统板重要元器件及接口功能介绍 10.6 微机硬件新技术 思考与习题 参考文献

2010-09-24

Linux sysfs 文件系统机制详解

Linux sys文件系统机制是非常难懂的一个机制。文章主要介绍了一些设备驱动相关的sys文件系统,结合ldd3(linux device driver 3)中的示例代码(主要是lddbus 和sculld 文件夹),详细分析虚拟文件系统sysfs,以及如何编写基于sysfs的模块化的驱动程序。使用的内核是2.6.18。

2009-12-14

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除