<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[轨迹]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/wangchaoxjtuse</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; wangchaoxjtuse]]></copyright><item><title><![CDATA[哈希表]]></title><link>https://blog.youkuaiyun.com/wangchaoxjtuse/article/details/6074292</link><guid>https://blog.youkuaiyun.com/wangchaoxjtuse/article/details/6074292</guid><author>wangchaoxjtuse</author><pubDate>Mon, 13 Dec 2010 22:44:00 +0800</pubDate><description><![CDATA[ 1.哈希表      根据给定的关键字，按照某种算法得出该关键字的哈希值，然后直接用哈希值读取所要查找的关键字记录。理论上哈希表是最快的查找表，他的查找时间复杂度理论上可以达到O(1)，也就是直接读取。但是现实中往往哈希表的存储容量是有限的，而且不同的关键字有可能经过哈希算法得出相同的哈希值，因此有可能不同的关键字会映射到相同的哈希表项，这样就产生了冲突，这个现象叫做碰撞。      这里就可以明确出哈希表中最关键的两个部分，第一个就是哈希函数（散列函数），第二就是解决冲突的办法。这两个因素综合决定了哈希]]></description><category></category></item><item><title><![CDATA[Linux 2.4调度系统分析]]></title><link>https://blog.youkuaiyun.com/wangchaoxjtuse/article/details/6060074</link><guid>https://blog.youkuaiyun.com/wangchaoxjtuse/article/details/6060074</guid><author>wangchaoxjtuse</author><pubDate>Tue, 07 Dec 2010 10:56:00 +0800</pubDate><description><![CDATA[杨沙洲 (pubb@163.net)国防科技大学计算机学院杨沙洲，目前在国防科技大学计算机学院攻读软件方向博士学位，对于文章的建议和意见，请直接与 pubb@163.net联系。 <br /> <br />简介： 本文详尽地分析了Linux 2.4内核中调度系统的工作原理，特别是i386体系结构下SMP系统的调度表现。通过对2.4调度系统实现原理及其细节的分析，文章在文末指出了2.4调度系统在功能上、实时性上以及多处理机系统表现上存在的不足，为后继的2.6系统的分析作铺垫。<br />  <br />在开源]]></description><category></category></item><item><title><![CDATA[Linux 2.4调度系统分析]]></title><link>https://blog.youkuaiyun.com/wangchaoxjtuse/article/details/6060072</link><guid>https://blog.youkuaiyun.com/wangchaoxjtuse/article/details/6060072</guid><author>wangchaoxjtuse</author><pubDate>Tue, 07 Dec 2010 10:56:00 +0800</pubDate><description><![CDATA[杨沙洲 (pubb@163.net)国防科技大学计算机学院杨沙洲，目前在国防科技大学计算机学院攻读软件方向博士学位，对于文章的建议和意见，请直接与 pubb@163.net联系。 <br /> <br />简介： 本文详尽地分析了Linux 2.4内核中调度系统的工作原理，特别是i386体系结构下SMP系统的调度表现。通过对2.4调度系统实现原理及其细节的分析，文章在文末指出了2.4调度系统在功能上、实时性上以及多处理机系统表现上存在的不足，为后继的2.6系统的分析作铺垫。<br />  <br />在开源]]></description><category></category></item><item><title><![CDATA[Linux 进程调度分析]]></title><link>https://blog.youkuaiyun.com/wangchaoxjtuse/article/details/6053250</link><guid>https://blog.youkuaiyun.com/wangchaoxjtuse/article/details/6053250</guid><author>wangchaoxjtuse</author><pubDate>Fri, 03 Dec 2010 16:14:00 +0800</pubDate><description><![CDATA[<br />李方军 1,2 蒋波 1 邓豫蜀 1 <br />（ 1. 中国工程物理研究院工学院，四川 绵阳 621900 ； <br />2 . 西南交通大学 信息科学与技术学院，四川 成都 610031 ） <br />摘 要：进 程调度是多任务操作系统的核心。 Linux 中的每个进程用 task_struct 结构来描述，进程调度的依据是 task_struct 结构中的 policy 、 priority 、 counter 和 rt_priority 。 Linux 根据 policy 将进程划]]></description><category></category></item><item><title><![CDATA[linux内核进程调度机制]]></title><link>https://blog.youkuaiyun.com/wangchaoxjtuse/article/details/6053173</link><guid>https://blog.youkuaiyun.com/wangchaoxjtuse/article/details/6053173</guid><author>wangchaoxjtuse</author><pubDate>Fri, 03 Dec 2010 15:50:00 +0800</pubDate><description><![CDATA[<br />Linux的进程管理由进程控制块、进程调度、中断处理、任务队列、定时器、bottom half队列、系统调用、进程通信等等部分组成。<br />进程调用分为实时进程调度和非实时进程调度两种。前者调度时，可以采用基于动态优先级的轮转法（RR），也可以采用先进现出算法（FIFO）。后者调度时，一律采用基于动态优先级的轮转法。某个进程采用何种调度算法由改进程的进程控制块中的某些属性决定，没有专门的系统用来处理关于进程调度的相关事宜。Linux的进程调度由schedule（）函数负责，任何进程，当它从系]]></description><category></category></item><item><title><![CDATA[关于linux内核中 等待队列 数据结构之思考]]></title><link>https://blog.youkuaiyun.com/wangchaoxjtuse/article/details/6049500</link><guid>https://blog.youkuaiyun.com/wangchaoxjtuse/article/details/6049500</guid><author>wangchaoxjtuse</author><pubDate>Thu, 02 Dec 2010 10:51:00 +0800</pubDate><description><![CDATA[关于linux等待队列，大体有如下描述：等待队列是一个双向循环链表，在这个链表中，有两种数据结构：等待队列头（wait_queue_head_t）和等待队列项（wait_queue_t）。等待队列头和等待队列项中都包含一个list_head类型的域作为"连接件"。等待对头wait_queue_head_t 和等待队列元素wait_queue_t的定义如下：//队头结构struct __wait_queue_head { spinlock_t lock; struct list_head task_list;]]></description><category></category></item><item><title><![CDATA[自旋锁（Spinlock）使用注意事项]]></title><link>https://blog.youkuaiyun.com/wangchaoxjtuse/article/details/6044661</link><guid>https://blog.youkuaiyun.com/wangchaoxjtuse/article/details/6044661</guid><author>wangchaoxjtuse</author><pubDate>Tue, 30 Nov 2010 09:59:00 +0800</pubDate><description><![CDATA[自旋锁比信号量的不同之处是，进程在获得不了自旋锁时会进入循环等待（循环检测锁的状态），而不阻塞。因此，自旋锁的效率要比信号量高，但是仅适用于等待时间比较短的情况。适用自旋锁时要非常慎重，因为进程在持有自旋锁时如果进入sleep状态，则可能导致死锁。因此要仔细考虑在持有自旋锁时进行的那些可能会导致进程sleep的操作。]]></description><category></category></item><item><title><![CDATA[container_of 理解 ]]></title><link>https://blog.youkuaiyun.com/wangchaoxjtuse/article/details/6040750</link><guid>https://blog.youkuaiyun.com/wangchaoxjtuse/article/details/6040750</guid><author>wangchaoxjtuse</author><pubDate>Sun, 28 Nov 2010 14:22:00 +0800</pubDate><description><![CDATA[<br />  container_of 理解 收藏<br /><br /><br /><br />问题：如何通过结构中的某个变量获取结构本身的指针？？？<br /><br />关于container_of见kernel.h中:<br />/**<br />* container_of - cast a member of a structure out to the containing structure<br />* @ptr:     the pointer to the member.<br />]]></description><category></category></item><item><title><![CDATA[LINUX-VFS的supper bolck、inode、dentry和file关系简述]]></title><link>https://blog.youkuaiyun.com/wangchaoxjtuse/article/details/6036874</link><guid>https://blog.youkuaiyun.com/wangchaoxjtuse/article/details/6036874</guid><author>wangchaoxjtuse</author><pubDate>Fri, 26 Nov 2010 11:08:00 +0800</pubDate><description><![CDATA[The common file model consists of the following object types:The superblock objectStores information concerning a mounted filesystem. For disk-based filesystems, this object usually corresponds to a filesystem control block stored on disk.The inode objectS]]></description><category></category></item><item><title><![CDATA[i节点(inode)和文件描述符(file descriptor)的区别和联系]]></title><link>https://blog.youkuaiyun.com/wangchaoxjtuse/article/details/6036816</link><guid>https://blog.youkuaiyun.com/wangchaoxjtuse/article/details/6036816</guid><author>wangchaoxjtuse</author><pubDate>Fri, 26 Nov 2010 10:52:00 +0800</pubDate><description><![CDATA[ inode 或i节点是指对文件的索引。如一个系统，所有文件是放在磁盘或flash上，就要编个目录来说明每个文件在什么地方，有什么属性，及大小等。就像书本的目录一样，便于查找和管理。这目录是操作系统需要的，用来找文件或叫管理文件。许多操作系统都用到这个概念，如linux， 某些嵌入式文件系统等。当然，对某个系统来说，有许多i节点。所以对i节点本身也是要进行管理的。

    在linux中，内核通过inode来找到每个文件，但一个文件可以被许多用户同时打开或一个用户同时打开多次。这就有一个问题，如何管理]]></description><category></category></item><item><title><![CDATA[文件结构体struct file(Linux 2.6.23内核) （转）]]></title><link>https://blog.youkuaiyun.com/wangchaoxjtuse/article/details/6036684</link><guid>https://blog.youkuaiyun.com/wangchaoxjtuse/article/details/6036684</guid><author>wangchaoxjtuse</author><pubDate>Fri, 26 Nov 2010 10:17:00 +0800</pubDate><description><![CDATA[struct file结构体定义在/linux/include/linux/fs.h(Linux 2.6.11内核)中，其原型是：struct file {        /*         * fu_list becomes invalid after file_free is called and queued via         * fu_rcuhead for RCU freeing         */        union {                struct list_he]]></description><category></category></item><item><title><![CDATA[字符设备驱动 架构分析]]></title><link>https://blog.youkuaiyun.com/wangchaoxjtuse/article/details/6035413</link><guid>https://blog.youkuaiyun.com/wangchaoxjtuse/article/details/6035413</guid><author>wangchaoxjtuse</author><pubDate>Thu, 25 Nov 2010 17:09:00 +0800</pubDate><description><![CDATA[<br />Char Device Driver<br /><br />相关数据结构：<br /><br />struct cdev {<br />        struct kobject kobj;<br />        struct module *owner;<br />        const struct file_operations *ops;<br />        struct list_head list;<br />        dev_t dev;<br />     ]]></description><category></category></item><item><title><![CDATA[Linux 字符设备驱动中的数据结构]]></title><link>https://blog.youkuaiyun.com/wangchaoxjtuse/article/details/6033443</link><guid>https://blog.youkuaiyun.com/wangchaoxjtuse/article/details/6033443</guid><author>wangchaoxjtuse</author><pubDate>Wed, 24 Nov 2010 22:40:00 +0800</pubDate><description><![CDATA[struct cdev: 定义于 linux/include/linux/cdev.h 中，原型如下struct cdev {
  13        struct kobject kobj;
  14        struct module *owner;
  15        const struct file_operations *ops;
  16        struct list_head list;
  17        dev_t dev;
  18        un]]></description><category></category></item><item><title><![CDATA[课程设计──LINUX字符驱动]]></title><link>https://blog.youkuaiyun.com/wangchaoxjtuse/article/details/6032613</link><guid>https://blog.youkuaiyun.com/wangchaoxjtuse/article/details/6032613</guid><author>wangchaoxjtuse</author><pubDate>Wed, 24 Nov 2010 16:29:00 +0800</pubDate><description><![CDATA[别人博客上摘来的，我写不出来，先学习下课程设计──LINUX字符驱动dev.c 代码#ifndef __KERNEL__
#define __KERNEL__
#endif
#ifndef MODULE
#define MODULE
#endif
//#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#in]]></description><category></category></item><item><title><![CDATA[The art of good programming]]></title><link>https://blog.youkuaiyun.com/wangchaoxjtuse/article/details/6029987</link><guid>https://blog.youkuaiyun.com/wangchaoxjtuse/article/details/6029987</guid><author>wangchaoxjtuse</author><pubDate>Tue, 23 Nov 2010 15:52:00 +0800</pubDate><description><![CDATA[The art of good programming is in choosing the best trade-off between flexibility and efficiency]]></description><category></category></item><item><title><![CDATA[关于ejb中的BMT和CMT]]></title><link>https://blog.youkuaiyun.com/wangchaoxjtuse/article/details/6025393</link><guid>https://blog.youkuaiyun.com/wangchaoxjtuse/article/details/6025393</guid><author>wangchaoxjtuse</author><pubDate>Sun, 21 Nov 2010 18:58:00 +0800</pubDate><description><![CDATA[<br />几天在学习EJB，发现其中的东西真是很复杂和繁琐， 例如EJB中的事务管理，<br />我们可以在自己的bean代码中使用代码创建和管理自己的事务，这中方式就是BMT（bean-managed transaction）; <br />PICTURE:<br /><br />还可以把事务的写在bean的部署描述文件中，这样就不用自己去写事务相关的代码了，把这个包袱直接甩给容器就行了。这种方式就是CMT（Container managed rd transaction）。<br /><br />]]></description><category></category></item><item><title><![CDATA[这两周的总结]]></title><link>https://blog.youkuaiyun.com/wangchaoxjtuse/article/details/6025392</link><guid>https://blog.youkuaiyun.com/wangchaoxjtuse/article/details/6025392</guid><author>wangchaoxjtuse</author><pubDate>Sun, 21 Nov 2010 18:58:00 +0800</pubDate><description><![CDATA[<br />这两周学习了EJB和J2EE方面的东西，<br />首先，看了2本书： headfist EJB 和轻量级J2EE企业应用实战。<br />对于headfist EJB ，只是快速的浏览了一遍，对EJB中的一些概念和结构有了了解，比如说EJB中的几中类型的Bean等，但是仅仅是概念上的了解，没有实践项目的感知，所以感觉理解的很朦胧。<br />对于轻量级J2EE企业应用实战，详细阅读了前两章的东西，书中讲的很易懂，并且实例代码很好。所以安装了myeclipse和mysql，在学习了servlet]]></description><category></category></item><item><title><![CDATA[今天的收获--c#委托]]></title><link>https://blog.youkuaiyun.com/wangchaoxjtuse/article/details/6025390</link><guid>https://blog.youkuaiyun.com/wangchaoxjtuse/article/details/6025390</guid><author>wangchaoxjtuse</author><pubDate>Sun, 21 Nov 2010 18:57:00 +0800</pubDate><description><![CDATA[<br />做个winform的程序，不知道怎么窗口回调，忽然想起了c#里有委托的概念，可是从来没有弄明白是干什么的，所以查查了资料，并且运行了个实例，总算对委托有些认识了。<br /><br />委托是一个类，可以用其实例来代理一类方法，这些方法的参数列表必须和委托的声明相同。<br /><br />using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication2
{]]></description><category></category></item><item><title><![CDATA[《LINUX与UNIX SHELL编程指南》读后感]]></title><link>https://blog.youkuaiyun.com/wangchaoxjtuse/article/details/6025389</link><guid>https://blog.youkuaiyun.com/wangchaoxjtuse/article/details/6025389</guid><author>wangchaoxjtuse</author><pubDate>Sun, 21 Nov 2010 18:57:00 +0800</pubDate><description><![CDATA[适合初学者看，讲的很仔细<br />例子十分丰富，可以边看边实践]]></description><category></category></item><item><title><![CDATA[Linux 用户态和内核态]]></title><link>https://blog.youkuaiyun.com/wangchaoxjtuse/article/details/6025388</link><guid>https://blog.youkuaiyun.com/wangchaoxjtuse/article/details/6025388</guid><author>wangchaoxjtuse</author><pubDate>Sun, 21 Nov 2010 18:56:00 +0800</pubDate><description><![CDATA[<br />1. 内存的申请和释放：<br /><br />用户态下，可以使用malloc()和free()<br />内核态下，需要使用kmalloc()和kfree(), 原型如下：<br />void *kmalloc(unsigned int len, int priority);<br />void kfree(void *__ptr);<br />kmalloc的priority参数通常设置为GFP_KERNEL，如果在中断服务程序里申请内存则要用GFP_ATOMIC参数，因为使用GFP_KER]]></description><category></category></item></channel></rss>