<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[tinnycloud的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/tinnycloud</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; tinnycloud]]></copyright><item><title><![CDATA[从src包编译内核【精简版】]]></title><link>https://blog.youkuaiyun.com/tinnycloud/article/details/7342186</link><guid>https://blog.youkuaiyun.com/tinnycloud/article/details/7342186</guid><author>tinnycloud</author><pubDate>Sun, 11 Mar 2012 16:22:34 +0800</pubDate><description><![CDATA[1. 从redhat 的ftp站点下载 src rpm包， kernel-*.src.rpm
2. 执行 rpmbuild -bp kernel-*.src.rpm
3.   进入BUILD目录的源码目录， 把自己的config 拷贝成.config 然后make menuconfig，给代码打patch
4.   cp .config 覆盖 configs目录中的config文件，并把co]]></description><category></category></item><item><title><![CDATA[从Src rpm 编译 自己修改的内核]]></title><link>https://blog.youkuaiyun.com/tinnycloud/article/details/7341958</link><guid>https://blog.youkuaiyun.com/tinnycloud/article/details/7341958</guid><author>tinnycloud</author><pubDate>Sun, 11 Mar 2012 14:42:57 +0800</pubDate><description><![CDATA[我需要创建一个自设的内核


英文版本由 RalphAngenendt 创建。现在由 AlanBartlett 及 AkemiYagi 维护。




Contents

编译前的准备设置内核内核的
 ABI更改内核的
 spec 文件编译新内核



你肯定吗？CentOS 被设计以一个完整的环境去运作。如果你替换一个最要的组件，它很可能会影响系统其它部份的运作。]]></description><category></category></item><item><title><![CDATA[[转]why memory barrier]]></title><link>https://blog.youkuaiyun.com/tinnycloud/article/details/6572212</link><guid>https://blog.youkuaiyun.com/tinnycloud/article/details/6572212</guid><author>tinnycloud</author><pubDate>Tue, 28 Jun 2011 12:49:00 +0800</pubDate><description><![CDATA[要了解如何使用memory barrier，最好的方法是明白它为什么存在。CPU硬件设计为了提高指令的执行速度，增设了两个缓冲区（store buffer, invalidate queue）。这个两个缓冲区可以避免CPU在某些情况下进行不必要的等待，从而提高速度，但是这两个缓冲区的存在也同时带来了新的问题。要仔细分析这个问题需要先了解cache的工作方式。目前CPU的cache的工作]]></description><category></category></item><item><title><![CDATA[linux device 2]]></title><link>https://blog.youkuaiyun.com/tinnycloud/article/details/5922479</link><guid>https://blog.youkuaiyun.com/tinnycloud/article/details/5922479</guid><author>tinnycloud</author><pubDate>Tue, 05 Oct 2010 15:15:00 +0800</pubDate><description><![CDATA[<br />§1 bus<br />系统中总线由struct bus_type描述，定义为：<br />struct bus_type {<br />char * name; 总线类型的名称<br />struct subsystem subsys; 与该总线相关的subsystem<br />struct kset drivers; 所有与该总线相关的驱动程序集合<br />struct kset devices; 所有挂接在该总线上的设备集合<br />struct bus attribute * bu]]></description><category></category></item><item><title><![CDATA[Linux 设备模型]]></title><link>https://blog.youkuaiyun.com/tinnycloud/article/details/5922473</link><guid>https://blog.youkuaiyun.com/tinnycloud/article/details/5922473</guid><author>tinnycloud</author><pubDate>Tue, 05 Oct 2010 15:08:00 +0800</pubDate><description><![CDATA[<br />Kobject <br /> <br />>是Linux 2.6引入的新的设备管理机制<br />>每个在内核中注册的kobject对象都对应于sysfs文件系统中的一个目录。<br />>Kobject是组成设备模型的基本结构。类似于C++中的基类<br /><br />Kobject结构定义为：<br />struct kobject {<br />char * k name; 指向设备名称的指针<br />char name[KOBJ NAME LEN]; 设备名称<br />struct]]></description><category></category></item><item><title><![CDATA[Linux 的initrd 机制]]></title><link>https://blog.youkuaiyun.com/tinnycloud/article/details/5919809</link><guid>https://blog.youkuaiyun.com/tinnycloud/article/details/5919809</guid><author>tinnycloud</author><pubDate>Sun, 03 Oct 2010 16:06:00 +0800</pubDate><description><![CDATA[<br /><br />前言 <br />本文源于这样一个问题：内核镜像存储在硬盘下特定文件系统中，bootloader必须先加载文件系统驱动，才能读取内核文件。类似的，内核要读取根文件系统中的文件，也需要先加载文件系统驱动。如果文件系统驱动存储在硬盘中，启动时没有驱动无法读硬盘，将导致整个启动过程的失败。那么Grub和内核如何解决这个问题的呢？ <br />启动过程中需要读硬盘的时刻： <br />1. BIOS读硬盘中MBR，将控制权交给MBR中Grub Stage1 <br />2. Stage 1读]]></description><category></category></item><item><title><![CDATA[Xen api的层次结构]]></title><link>https://blog.youkuaiyun.com/tinnycloud/article/details/5919784</link><guid>https://blog.youkuaiyun.com/tinnycloud/article/details/5919784</guid><author>tinnycloud</author><pubDate>Sun, 03 Oct 2010 15:44:00 +0800</pubDate><description><![CDATA[Xen api 的层次结构 XendXend是xen中用来管理虚拟机的一套python脚本，其中包括了虚拟机的创建，销毁，状态查看等，在linux以服务的形式在后台运行Xend 和上层API通过XML-RPC的方式进行通信libxen虚拟机管理的C语言接口的封装pyxen对虚拟机C语言接口的python封装，为xm所用]]></description><category></category></item><item><title><![CDATA[.linux内核网络栈代码]]></title><link>https://blog.youkuaiyun.com/tinnycloud/article/details/5914239</link><guid>https://blog.youkuaiyun.com/tinnycloud/article/details/5914239</guid><author>tinnycloud</author><pubDate>Wed, 29 Sep 2010 14:27:00 +0800</pubDate><description><![CDATA[<br />一.linux内核网络栈代码的准备知识<br /> <br />1. linux内核ipv4网络部分分层结构：<br /> <br />BSD socket层： 这一部分处理BSD socket相关操作，每个socket在内核中以struct socket结构体现。这一部分的文件<br /> <br />主要有：/net/socket.c /net/protocols.c etc<br />INET socket层：BSD socket是个可以用于各种网络协议的接口，而当用于tcp/ip，即建立]]></description><category></category></item><item><title><![CDATA[AT&T 汇编 (AT&T ASM) 参考 上]]></title><link>https://blog.youkuaiyun.com/tinnycloud/article/details/5907636</link><guid>https://blog.youkuaiyun.com/tinnycloud/article/details/5907636</guid><author>tinnycloud</author><pubDate>Sun, 26 Sep 2010 15:59:00 +0800</pubDate><description><![CDATA[AT&T 汇编 (AT&T ASM) 参考 上2010-02-06 19:35<br />AT&TASM<br /><br />开发一个OS，尽管绝大部分代码只需要用C/C++等高级语言就可以了，但至少和硬件相关部分的代码需要使用汇编语言，另外，由于启动部分的代码有大小限制，使用精练的汇 编<br />可以缩小目标代码的尺寸。另外，对于某些需要被经常调用的代码，使用汇编可以提高性<br /><br />能。所以我们必须了解汇编语言，即使你有可能并不喜欢它。<br /><br />如果你是计算机专业的话，在大]]></description><category></category></item><item><title><![CDATA[AT&T 汇编 (AT&T ASM) 参考 上]]></title><link>https://blog.youkuaiyun.com/tinnycloud/article/details/5907634</link><guid>https://blog.youkuaiyun.com/tinnycloud/article/details/5907634</guid><author>tinnycloud</author><pubDate>Sun, 26 Sep 2010 15:59:00 +0800</pubDate><description><![CDATA[AT&T 汇编 (AT&T ASM) 参考 上2010-02-06 19:35<br />AT&TASM<br /><br />开发一个OS，尽管绝大部分代码只需要用C/C++等高级语言就可以了，但至少和硬件相关部分的代码需要使用汇编语言，另外，由于启动部分的代码有大小限制，使用精练的汇 编<br />可以缩小目标代码的尺寸。另外，对于某些需要被经常调用的代码，使用汇编可以提高性<br /><br />能。所以我们必须了解汇编语言，即使你有可能并不喜欢它。<br /><br />如果你是计算机专业的话，在大]]></description><category></category></item><item><title><![CDATA[ELF文件格式一例分析：  ]]></title><link>https://blog.youkuaiyun.com/tinnycloud/article/details/5907605</link><guid>https://blog.youkuaiyun.com/tinnycloud/article/details/5907605</guid><author>tinnycloud</author><pubDate>Sun, 26 Sep 2010 15:47:00 +0800</pubDate><description><![CDATA[ELF文件格式一例分析：   -[ELF Linux assembly]ELF文件格式一例分析：以nasm生成一尽量小的ELF文件，以二进制方式，以objdump方式，以readelf方式，分析加载入内存及运行规律，得出结论。 编辑一个小的asm文件如下：
crq@ $ cat new18.asm
global _start

_start:
        ud0
        ud1
        ud2
很简单，只有 ud0, ud1, ud2 三个指令，都是产生非法 Opcode]]></description><category></category></item><item><title><![CDATA[Linux系统的内存管理机制学习]]></title><link>https://blog.youkuaiyun.com/tinnycloud/article/details/5843373</link><guid>https://blog.youkuaiyun.com/tinnycloud/article/details/5843373</guid><author>tinnycloud</author><pubDate>Fri, 27 Aug 2010 13:36:00 +0800</pubDate><description><![CDATA[Linux系统的内存管理机制学习2010年01月14日 星期四 20:31<br />一直对Linux的内存管理机制模模糊糊的，这两天有时间，就把Intel的手册和 《Understanding the Linux Kernel》还有《Understanding the Linux® Virtual Memory Manager》和内存管理相关的都仔细看了一遍。以前老是对分页的地方不是很清楚，这次看到手册上页表里面的物理地址是怎么存放的，就有豁然开朗的感觉，看其他部分代码也就很容易理解了。<br /><br]]></description><category></category></item><item><title><![CDATA[linux iostat]]></title><link>https://blog.youkuaiyun.com/tinnycloud/article/details/5840236</link><guid>https://blog.youkuaiyun.com/tinnycloud/article/details/5840236</guid><author>tinnycloud</author><pubDate>Thu, 26 Aug 2010 12:59:00 +0800</pubDate><description><![CDATA[<br />Field 1 -- rio # of reads issued<br />Field 2 -- rmerge  # of reads merged, <br />Field 3 -- rsect # of sectors read<br />Field 4 -- ruse  # of milliseconds spent reading<br />Field 5 -- wio # of writes completed<br />field 6 -- wmerge # of writes me]]></description><category></category></item><item><title><![CDATA[C语言中的宏]]></title><link>https://blog.youkuaiyun.com/tinnycloud/article/details/5742610</link><guid>https://blog.youkuaiyun.com/tinnycloud/article/details/5742610</guid><author>tinnycloud</author><pubDate>Sat, 17 Jul 2010 21:23:00 +0800</pubDate><description><![CDATA[<br />C语言中如何使用宏C（和C++）中的宏（Macro）属于编译器预处理的范畴，属于编译期概念（而非运行期概念）。下面对常遇到的宏的使用问题做了简单总结。 关于#和##<br />在C语言的宏中，#的功能是将其后面的宏参数进行字符串化操作（Stringfication），简单说就是在对它所引用的宏变量通过替换后在其左右各加上一个双引号。比如下面代码中的宏： #define WARN_IF(EXP)    /
    do{ if (EXP)    /
            fprintf(st]]></description><category></category></item><item><title><![CDATA[Mini-OS现有应用介绍]]></title><link>https://blog.youkuaiyun.com/tinnycloud/article/details/5742596</link><guid>https://blog.youkuaiyun.com/tinnycloud/article/details/5742596</guid><author>tinnycloud</author><pubDate>Sat, 17 Jul 2010 21:18:00 +0800</pubDate><description><![CDATA[<br />IntroductionToMiniosApplications   Mini-OS现有应用介绍<br />Mini-OS是跟随Xen hypervisor发布的一款小内核操作系统，目前有一些基于Mini-OS的应用：HP实验室在2007年发布了基于Mini-OS的Xen Library OS；2008年剑桥大学进一步完善了HP的工作，完成了HVM stubdom并置于Xen源码树中；伊利诺伊大学芝加哥分校(UIC)正致力于开发一款基于Mini-OS的小内核系统—Ethos。 <br /> Mi]]></description><category></category></item><item><title><![CDATA[simple function for print colorful text]]></title><link>https://blog.youkuaiyun.com/tinnycloud/article/details/5600277</link><guid>https://blog.youkuaiyun.com/tinnycloud/article/details/5600277</guid><author>tinnycloud</author><pubDate>Mon, 17 May 2010 13:42:00 +0800</pubDate><description><![CDATA[function print_color {local text=$1local fg=$2local bg=$3#change to right formcase "$fg" inred) fg="31m" ;;green) fg="32m" ;;yellow) fg="33m" ;;blue) fg="34m" ;;white) fg="37m" ;]]></description><category></category></item><item><title><![CDATA[shell 数组的用法]]></title><link>https://blog.youkuaiyun.com/tinnycloud/article/details/5600242</link><guid>https://blog.youkuaiyun.com/tinnycloud/article/details/5600242</guid><author>tinnycloud</author><pubDate>Mon, 17 May 2010 13:32:00 +0800</pubDate><description><![CDATA[ The bash shell allows a number of methods for accessing elements of variable arrays. This recipe demonstrates some of these techniques.Given the array defined by the following code:names=( ]]></description><category></category></item><item><title><![CDATA[Linux 同步方法剖析]]></title><link>https://blog.youkuaiyun.com/tinnycloud/article/details/5586117</link><guid>https://blog.youkuaiyun.com/tinnycloud/article/details/5586117</guid><author>tinnycloud</author><pubDate>Thu, 13 May 2010 11:02:00 +0800</pubDate><description><![CDATA[Linux 同步方法剖析内核原子，自旋锁和互斥锁 文档选项  将此页作为电子邮件发送级别： 中级M. Tim Jones, 顾问工程师, Emulex2007 年 11 月 19 ]]></description><category></category></item><item><title><![CDATA[pczou的linux进程内存解析]]></title><link>https://blog.youkuaiyun.com/tinnycloud/article/details/5546440</link><guid>https://blog.youkuaiyun.com/tinnycloud/article/details/5546440</guid><author>tinnycloud</author><pubDate>Fri, 30 Apr 2010 15:17:00 +0800</pubDate><description><![CDATA[pczou的linux进程内存解析2006年12月11日 wgzhao 发表评论 阅读评论 2月份的时候贴过一篇关于如何理解Linux内存的帖子。今天pczou献上了一道大餐–进程的内存使用解析。讲得非常详细，先剽窃过来，呵呵。Linux下如果知道一个进程究竟占用了多少内存？这是个经常被问道和被答错的问题。进程的内存分配是个比较复杂的话题，这里通过一个例子进行说明。有这么一个简单程序：]]></description><category></category></item><item><title><![CDATA[PS，TOP，PIDSTAT -R 等看的单个进程内存占用不准-----理解Linux上的内存使用]]></title><link>https://blog.youkuaiyun.com/tinnycloud/article/details/5546280</link><guid>https://blog.youkuaiyun.com/tinnycloud/article/details/5546280</guid><author>tinnycloud</author><pubDate>Fri, 30 Apr 2010 14:44:00 +0800</pubDate><description><![CDATA[PS，TOP，PIDSTAT -R 等看的单个进程内存占用不准-----理解Linux上的内存使用2008-11-06 23:16本文是为那些经常疑惑的人准备的，“为什么一个简单的KDE文本编辑器要占用25M内存？”导致大多数人认为许多Linux应用程序，特别是KDE或GNOME程序都象ps报告一样臃肿，虽然这可能是也可能不是真的，依赖于具体的程序，它通常不是真的，一些程序]]></description><category></category></item></channel></rss>