- 博客(18)
- 资源 (1)
- 收藏
- 关注
原创 内核数据结构之红黑树
<!--@page {margin:0.79in}p {margin-bottom:0.08in}-->红黑树是一种自平衡的二叉查找树,是Linux主要的二叉树结构。红黑树有一个特殊的颜色属性,要么红色,要么黑色。红黑树通过强制以下条件来保证红黑树仍然是半平衡的。所有结点要是红色或黑色的。叶子结点是黑色的。叶子结点不包含数据。
2012-03-30 23:58:31 2864
原创 内核数据结构之映射
<!--@page {margin:0.79in}p {margin-bottom:0.08in}-->映射也称之为关联数组,它是一组唯一键的集合,每个键与特定的值相关。一般支持至少三个操作:Add(key,value)Remove(key)value=Lookup(key)Linux提供了一个简单而有效的映射数据结构,它不是
2012-03-30 23:56:40 2844 2
原创 内核数据结构之队列
<!--@page {margin:0.79in}p {margin-bottom:0.08in}-->在操作系统内核中,一个常见的编程模式就是生产者和消费者。实现这种模式的最容易的方式就是队列。生产者将数据插入队列,消费者将数据移出队列。消费者以数据进队的顺序消费数据。内核中通用队列的实现称为kfifo,其实现文件位于kernel/kfifo.c中。本部分
2012-03-30 23:53:16 3884
原创 等待队列——休眠与唤醒
<!--@page {margin:0.79in}p {margin-bottom:0.08in}-->内核中的休眠是通过等待队列来处理的。等待队列是一个由正在等待某个事件发生的进程组成的一个简单链表。在内核用wait_queue_head_t来表示。<!--@page {margin:0.79in}p {margin-bottom:0.
2012-03-29 20:58:29 2263
原创 系统调用
<!--@page {margin:0.79in}p {margin-bottom:0.08in}-->用户程序请求内核程序为其服务主要通过以下几种方式:中断系统调用信号其中,系统调用是一种常见方式,它在用户进程与硬件之间提供了一个层,该层主要提供以下三个目的:它为用户空间提供了一个抽象的硬件接口它确保了系
2012-03-24 17:46:35 682
原创 内核热插拔管理
<!--@page {margin:0.79in}p {margin-bottom:0.08in}-->在可插拔的总线如USB(和CardbusPCI)中,终端用户在主机运行时将设备插入到总线上。在大部分情况下,用户期望设备立即可用。这意味着系统必须作许多事情,包括:找到一个可以处理设备的驱动。它可能包括装载一个内核模块,较新的驱动可以用模块初始化工
2012-03-24 17:42:52 910
原创 NeHe教程Qt实现——lesson13
NeHe 系列教程之十三: 位图字体英文教程地址:lesson13本课将展示位图字体的创建和显示, 代码基于第一课。首先是字休库的创建,如下所示:namespace {#define USE_DISPLAY_LIST //使用显示列表struct FyjFont{ char *name; //字体名称 int quality;
2012-03-24 17:15:58 960
原创 NeHe教程Qt实现——lesson12
NeHe 系列教程之十二: 显示列表英文教程地址:lesson12本课主要演示了显示列表的使用。代码基于第六课。显示列表的主要接口:glGenListsglNewListglCallList具体来看代码中的使用:namespace { ... static GLfloat boxcol[5][3]= // Array Fo
2012-03-24 17:05:54 699
原创 NeHe教程Qt实现——lesson11
NeHe 系列教程之十一:飘扬的旗帜英文教程地址:lesson11本课实现了类似旗帜飘扬的效果, 其要领就是实时循环改变纹理坐标。本课以第六课的代码为基础。首先是一些全局变量的定义:namespace { GLfloat xrot = 0; // X Rotation GLfloat yrot = 0;
2012-03-24 16:55:31 893
原创 NeHe教程Qt实现——lesson10
NeHe 系列教程之十:在3D空间中漫游英文教程地址:lesson10本课演示了从外部文件中加载数据构建3D模型的实例,代码基于第一课。首先是3D模型的数据结构定义:namespace { bool fp; // F pressed? const float piover180 = 0.0174532925f; float heading;
2012-03-17 12:34:03 1389 4
原创 NeHe教程Qt实现——lesson09
NeHe 系列教程之九: 在3D空间中移动位图英文教程地址:lesson09本课基于第一课的代码, 利用颜色混合的方法,将一个黑白纹理与随机颜色进行混合,产生绚丽的效果。首先是定义相关变量和数据结构,如下所示:namespace { bool twinkle; // Twinkling Stars bool
2012-03-17 10:13:24 854
原创 NeHe教程Qt实现——lesson08
NeHe 系列教程之八: 混合英文教程地址:lesson08本课将在第七课的基础上添加颜色混合的代码:namespace {...bool blend; // Blending OFF/ON? ( NEW )...bool bp; // B Pressed?.
2012-03-17 09:43:53 907
原创 NeHe教程Qt实现——lesson07
NeHe 系列教程之七: 光照及纹理过滤英文教程地址:lesson07本课将以第一课的代码为基础, 实现光照效果。首先是对象定义与纹理加载的代码:namespace {bool light; // Lighting ON / OFFbool lp; // L Presse
2012-03-17 09:29:07 2462
原创 NeHe教程Qt实现——lesson06
NeHe 系列教程之六: 纹理映射英文教程地址:lesson06本课以第一课的代码为基础,演示了加载纹理的过程。首先给出的是绘制几何对象和加载纹理坐标的代码namespace { GLfloat xrot = 0; // X Rotation ( NEW ) GLfloat yrot = 0;
2012-03-05 23:12:51 1305
原创 进程管理
<!--@page {margin:0.79in}p {margin-bottom:0.08in}-->进程创建使用系统调用fork()或vfork(),在内核中,这些函数是通过clone()系统调用完成的。进程通过系统调用exit()退出。父进程通过系统调用wait4()系统调用来查询一个停止的子进程的状态。基于wait4()系统调用的C函数有wait(),w
2012-03-02 20:25:08 135
原创 内核同步机制——完成量
<!--@page {margin:0.79in}p {margin-bottom:0.08in}-->内核中的许多部分初始化某些活动为单独的执行线程,然后等待这些线程完成。完成接口是一种有效并简单的方式来实现这样的代码模式。<!--@page {margin:0.79in}p {margin-bottom:0.08in}-->
2012-03-02 20:18:27 867
原创 内核同步机制——互斥量
<!--@page {margin:0.79in}p {margin-bottom:0.08in}--><!--@page {margin:0.79in}p {margin-bottom:0.08in}-->互斥量数组结构:structmutex.静态定义:DEFINE_MUTEX(name);动态初始化:mute
2012-03-02 20:14:53 595
原创 问题集锦(26-29)
<!--@page {margin:0.79in}p {margin-bottom:0.08in}-->Problem26 how to use access() function?Ans:函数原型:intaccess(const char *pathname, int mode);判断一个文件是否存在:if(access(“finame.t
2012-03-01 21:28:56 679
Beginning Visual C++ 2008(含源码)
2010-01-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人