自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

缘起宇轩阁

华华的技术专栏

  • 博客(17)
  • 收藏
  • 关注

原创 虚拟文件系统之二

4.3. 目录项对象        VFS把目录当作文件对待,所以在路径/bin/vim中,bin和vim都属于文件:bin是特殊的目录文件,而vim是一个普通文件,路径中的每个组成部分都由一个索引节点对象表示。    为了方便查找路径,VFS引入了目录项的概念。每个dentry代表路径中的一个特定部分。比如,/、bin、vim都是目录项对象。在路径中,包括普通文件在内,每一个部分都是目录

2009-05-25 23:42:00 778

原创 虚拟文件系统之一

1. 通用文件系统接口      虚拟文件系统(VFS)作为内核子系统,为用户空间程序提供了文件系统相关的接口。系统中所有文件系统不但依赖VFS共存,而且也依靠VFS系统协同工作。通过VFS,程序可以利用标准的UNIX文件系统对不同介质上的不同文件系统进行读写操作。 2. 文件系统抽象层      之所以可是使用这种通用接口对所有类型的文件系统进行操作,是因为内核在它的底层文件系统接口上建

2009-05-25 23:38:00 814

原创 块IO层

1. 概述系统能够随机访问固定大小数据片的设备称为块设备,这些数据片称作块。另一种基本的设备类型是字符设备。字符设备按照字节流的方式被有序访问,像串口和键盘都属于字符设备。这两种类型的设备的根本区别在于它们是否可以被随机访问,换句话说,就是能否在访问设备时随意从一个位置跳到另一个位置。字符设备仅仅需要控制一个位置--当前位置;而块设备访问的位置必须在介质的不同区间前后移动,同时块设备对执行性能的要

2009-05-25 23:27:00 1372

原创 页高速缓存和页回写

1. 页高速缓存页高速缓存(cache)是Linux内核实现的一种主要磁盘缓存。它主要用来减少对磁盘的I/O操作。具体的讲,就是通过把磁盘中的数据缓存到物理内存中,把对磁盘的访问变为对物理内存的访问。磁盘高速缓存的原因在于:一是访问磁盘的速度要远远低于访问内存的速度;第二,数据一旦被访问,就可能在短期内再次被访问到。页高速缓存是由RAM中的物理页组成的,缓存中每一页都对应着磁盘中的多个

2009-05-21 23:17:00 2129

原创 内存管理之二

4. slab层为了便于数据结构的频繁分配和回收,会用到一个空闲链表。它相当于对象高速缓存以便快速存储频繁使用的对象类型。在内核中,空闲链表面临的主要问题是不能全局控制。为了弥补这一缺陷,Linux内核提供了slab层(slab分配器)。 4.1. slab层的设计slab层把不同的对象划为所谓高速缓存(cache)组,其中每个高速缓存都存放不同类型的对象。每种对象类型对应一个高速

2009-05-21 23:03:00 836

原创 内存管理之一

1. 页内核把物理页作为内存管理的基本单位。内存管理单元(MMU)是把虚拟地址转换为物理地址的硬件。大多数32位体系结构支持4KB的页,而64位体系结构一般会支持8KB的页。内核用structpage结构表示系统中的每个物理页,在中定义。struct page{   page_flags_t               flags;   atomic_t        

2009-05-21 22:57:00 1041

原创 内核同步之Seq锁和屏障

5. 完成变量如果在内核中一个任务需要发出信号通知另一个任务发生了某个特定事件,利用完成变量(completion variable)是两个任务得以同步的简单方法。完成变量由结构completion表示,在中。静态初始化:DECLARE_COPLETION(my_comp);运行时动态初始化:int_completion(my_comp);在一个指定的完成变量上,需要等待的

2009-05-15 19:48:00 1510

原创 内核同步之自旋锁和信号量

3. 自旋锁Linux内核中最常见的锁是自旋锁。一个自旋锁就是一个互斥设备,它只能有两个值:"锁定"和"解锁"。如果锁可用,则"锁定"位被设置,而代码继续进入临界区;相反,如果锁被其他进程争用,则代码进入忙循环并重复检查这个锁,直到锁可用为止。这个循环就是自旋锁的"自旋"。自旋锁最多只能被一个可执行的线程持有。如果一个执行线程试图获得一个被争用的自旋锁,那么该线程就会一直进行忙循环-旋转-等待

2009-05-15 19:44:00 4906 3

原创 内核同步之名词解释和原子操作

1. 名词解释共享内存的应用程序必须要保护共享资源,防止共享资源被并发的访问。内核耶不例外。共享资源之所以要防止并发访问,是因为如果多个执行线程同时访问数据和操作数据,就有可能发生各线程之间相互覆盖共享数据的情况,造成被访问数据处于不一致状态。所谓临界区(critical region)就是访问和操作共享数据的代码段。如果两个执行线程有可能处于同一个临界区中,那么这就是程序包含了一个bug

2009-05-15 19:36:00 1902

原创 解决在CentOS上不能启动MySQL的问题

1. /etc/my.cnf的默认配置配置文件的内容如下:[mysqld]datadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.sock# Defaultto using old password format for compatibility with mysql 3.x# clients(those using t

2009-05-13 20:55:00 47921 11

原创 解决在CentOS上不能启动MySQL的问题

使用root帐户,执行service mysqld start:InnoDB: Operating system error number 13 in a file operation,The error means mysqld does not have the access rights to the directory.实际上存放这个数据文件的文件夹我已经chown mysql:mysql datadir;chmon -R 755 datadir。但是,只要把数据文件放在/var/lib/mys

2009-05-13 19:35:00 1368

原创 字符设备驱动程序之三

7. read和write方法read和write原型:ssize_t (*read)( struct file *filp, char __user *buff, size_t count, loff_t *offp);ssize_t (*write)( struct file *,filp char __user *,buff size_t count, loff_t *offp)

2009-05-10 19:57:00 784

原创 字符设备驱动程序之二

4. 字符设备的注册在内核调用设备的操作之前,必须分配并注册一个或多个struct cdev结构(在中定义)。分配和初始化该结构有两种方式。如果在模块运行时需要获取一个独立的cdev结构,则应该编写如下代码:struct cdev *my_cdev = cdev_alloc();my_cdev->ops = &my_fops;如果cdev结构需要嵌入到自己的设备特定结构中,就使

2009-05-10 19:44:00 706

原创 字符设备驱动程序之一

1. scddp的设计scddp,即"Simple Character Device DriverProgram,简单的字符设备驱动程序"的缩写。scddp是一个操作内存区域的字符设备驱动程序,这片内存区域就相当于一个设备。这个设备是由一个全局且持久的内存区域组成。"全局"是指,如果设备被多次打开,则打开它的所有文件描述符可共享该设备所包含的数据。"持久"是指,如果设备关闭后再打开,则其中

2009-05-10 19:31:00 1118

原创 构造和运行模块

1. HelloWorld 模块构造2.6.x内核的模块,必须在自己的系统中配置并构造好内核树。"helloworld"示例模块代码如下:  #include #include MODULE_LICENSE("GPL");static int __init hello_init(void){ printk(KERN_ALERT "Hello, world/

2009-05-09 10:37:00 795

原创 线程控制之二

3. 同步属性3.1. 互斥量属性int pthread_mutexattr_init (pthread_mutexattr_t * attr);int pthread_mutexattr_destroy (pthread_mutexattr_t *attr);函数pthread_mutexattr_init用默认的互斥量初始化pthread_mutexattr_t结构。值得注意的

2009-05-02 22:49:00 1146

原创 线程控制之一

1. 线程限制与其它的系统限制一样,这些线程限制也是通过sysconf函数进行查询的。当某些操作系统实现没有定义相应的sysconf符号(_SC_)时,表示为"未定义符号";如果操作系统实现的限制是不确定的,表示为"没有确定的限制",但这并不意味是无限制的;"不支持"表明操作系统实现定义了相应的sysconf限制符号,但是sysconf函数无法识别这个符号。 2. 线程属性在调用p

2009-05-02 22:40:00 701

空空如也

空空如也

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

TA关注的人

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