Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux

Linux文件系统制作

Linux文件系统制作

1、概述文件系统就是管理外存上数据的逻辑结构,是存储、组织计算机文件和数据的一种方法,更严格地说,是一套实现了数据的存储、分级组织、访问和获取等操作的抽象数据类型(Abstract data type),通过它来访问、查找文件和数据很容易。外存数据在硬盘就是具体位置,用代码表述的话就是起始地址,但是看着不直观,操作也不方便,有文件系统弄出文件及目录的概念来翻译转换这些数据区域操作更方便。打个比方:一本书中就好比文件系统,目录及内容就是被文件系统管理的正文,...
BTrace简单实用教程

BTrace简单实用教程

BTrace本身也是可以独立运行的程序,作用是在不停止目标程序运行的前提下,通过HotSpot虚拟机的HotSwap技术动态插入原本不存在的调试代码。比如遇到了我们的程序出问题,而又没有足够的打印语句时,我们一般的方法是不得不停掉服务,然后修改代码,增加打印语句,重新编译重新运行来解决,效率很低。但有了BTrace,我们需要做的就很简单了,举例说明:比如环境上运行着一个简单程序:package com.huawei.main;import java.io....
Linux下设备device_register和驱动driver_register先后注册的影响和关系

Linux下设备device_register和驱动driver_register先后注册的影响和关系

开始Linux驱动的真正开发,也是从基层开始看的。相比以为Linux下的驱动就是点灯之类的Led来说,现在我的感受就是,那些完全就是表面的东西。核心层次的驱动,完全不是这么随随便便写出来的。也正好说明现在很多公司正在写驱动的不多,完全独立写的也不多,因为实在太复杂。只能靠着源码或者BSP来修改。半个多月来看了Linux2.6.10下面的音频驱动OSS架构,不是一般的复杂。熟悉了I2C驱动的整个架构( 见 http://www.linuxidc.com/Li...
Linux I/O Scheduler--CFQ(上)

Linux I/O Scheduler--CFQ(上)

CFQ,即Completely Fair Queueing绝对公平调度器,力图为竞争块设备使用权的所有进程分配一个等同的时间片,在调度器分配给进程的时间片内,进程可以将其读写请求发送给底层块设备,当进程的时间片消耗完,进程的请求队列将被挂起,等待调度。相对于Noop和Deadline调度器,CFQ要复杂得多,因此可能要分几次才能将其分析完。相关阅读:Linux I/O Scheduler--CFQ(下) http://www.linuxidc.com/Li...
Linux内核中的定时

Linux内核中的定时

系统定时器频率(节拍率)是通过静态预处理器定义的,也就是HZ,编写内核代码时,不要以为HZ值是固定不变的值。连续两次时钟的间隔时间叫做节拍,它等于节拍率分之一秒。高HZ有利于提供诸如poll和select函数运行的精度;有利于提高进程抢占的准确度;有利于获得更精细的解析度。但是高HZ也会减少处理器处理其他工作的时间,而且还会更频繁的打乱处理器高速缓存并增加耗电。全局变量Jiffies用来记录自系统启动以来产生的节拍的总数,Jiffies一秒内增加的值就是H...
Linux内核中的中断

Linux内核中的中断

中断处理程序是被内核调用来响应中断的,它运行在中断上下文,中断处理程序是上半部,当接收到一个中断,它就立即开始执行,但只做有严格时限的工作,例如对接收的中断进行应答或复位硬件,这些工作都是在所有中断被禁止的情况下完成。能够被允许稍后完成的工作会推迟到下半部去。中断处理程序的注册是通过request_irq函数,由于该函数内部有分配内存的操作,所以它不能在中断上下文或其他不允许阻塞的代码中调用。Linux中的中断处理程序是无须重入的,因为当一个给定的中断处理...
Linux内核中的同步

Linux内核中的同步

如果一个进程正处于临界区时被非自愿抢占了,而且这个新调度的进程随后也进入同一个临界区,前后两个进程之间就会产生竞争,其实两者并不真是同时发生的,但它们相互交叉进行,所以叫做伪并发。如果有一台支持对称多处理器(SMP)的机器,那么两个进程就可以真正地在临界区中同时执行,这就叫真并发。并发产生的原因有:第一,中断;第二,软中断和tasklet;第三,内核抢占;第四,睡眠及与用户空间的同步;第五,对称多处理。设计锁在开始阶段都很粗,但当锁的争用问题变得严重时,设...
Linux内核中的系统调用

Linux内核中的系统调用

系统调用是用户空间访问内核的唯一手段,除异常和陷入外,它们是内核唯一的合法入口。其实,应用程序通过在用户空间实现的应用编程接口(API)而不是直接通过系统调用来编程。一般应用程序中的API调用C库,C库再调用内核中的系统调用。在Unix中,最流行的应用编程接口是基于POSIX标准的,C库提供了POSIX的绝大部分API。如何定义一个系统调用呢?asmlinkage long sys_test(void)注意函数声明中的asmlinkage限定词,这是一个编...
Linux内核中的内存

Linux内核中的内存

页内核把物理页作为内存管理的基本单位,尽管处理器的最小可寻址单位通常为字节,但是MMU(内存管理单元,管理内存并把虚拟地址转换为物理地址的硬件)通常以页作为单位进行处理。大多数32位体系结构支持4KB的页,内核用struct page结构表示系统的物理页,这个page与物理页相关,而并非与虚拟页相关。页的拥有者可能是用户空间进程、动态分配的内核数据、静态内核代码或页高速缓存等。区由于有些页位于内存特定的物理地址上,所以不能将其用于一些特定的任务。故内核把页...
Linux内核中的进程

Linux内核中的进程

多任务系统可以分为:非抢占式和抢占式。Linux提供抢占式多任务模式。进程在被抢占之前能够运行的时间叫进程的时间片,Linux独一无二的公平调度程序本身并没有采用时间片来达到公平调度。Linux之前采用O(1)调度器,它对大服务器的工作负载很理想,但是对响应时间敏感的程序却有不足。在2.6.23内核版本中用完全公平调度算法(CFS)代替了O(1)调度算法。进程可以被分为I/O消耗型和处理器消耗型。I/O消耗型指进程的大部分时间用来提交I/O请求或是等待I/...
Linux下的platform总线驱动

Linux下的platform总线驱动

一.Platform设备驱动概念主要讲解平台设备驱动的模型和基本概念,同时因为驱动加载的方式有动态加载和静态加载两种方式,这里我们分别对动态加载和静态加载两种情况下,如何使用平台设备和驱动加以叙述。最后使用mini2440开发板,运用Platform和device_attribute机制,编写按键驱动代码和测试代码。我们知道linux内核中常见的的总线有I2C总线,PCI总线,串口总线,SPI总线,PCI总线,CAN总线,单总线等,所以有些设备和驱动就可以...
Linux下的USB总线驱动

Linux下的USB总线驱动

一.USB理论1. USB概念概述USB1.0版本速度1.5Mbps(低速USB) USB1.1版本速度12Mbps(全速USB) USB2.0版本速度480Mbps(高速USB)USB驱动由USB主机控制器驱动和USB设备驱动组成。USB主机控制器是用来控制USB设备和CPU之间通信的,USB主机控制器驱动主要用来驱动芯片上的主机控制器硬件。USB设备驱动主要是指具体的例如USB鼠标,USB键盘灯设备的驱动。一般的通用的Linux设备,如U盘、USB...
Linux内核中用户空间栈和内核栈的区别

Linux内核中用户空间栈和内核栈的区别

1.进程的堆栈 内核在创建进程的时候,在创建task_struct的同事,会为进程创建相应的堆栈。每个进程会有两个栈,一个用户栈,存在于用户空间,一个内核栈,存在于内核空间。当进程在用户空间运行时,cpu堆栈指针寄存器里面的内容是用户堆栈地址,使用用户栈;当进程在内核空间时,cpu堆栈指针寄存器里面的内容是内核栈空间地址,使用内核栈。2.进程用户栈和内核栈的切换 当进程因为中断或者系统调用而陷入内核态之行时,进程所使用的堆栈也要从用户栈转到内核栈。 进...
Linux下的SPI总线驱动

Linux下的SPI总线驱动

一.SPI理论介绍SPI总线全名,串行外围设备接口,是一种串行的主从接口,集成于很多微控制器内部。和I2C使用2根线相比,SPI总线使用4根线:MOSI (SPI 总线主机输出/ 从机输入)、 MISO (SPI总线主机输入/从机输出)、SCLK(时钟信号,由主设备产生)、CS(从设备使能信号,由主设备控制)。由于SPI总线有专用的数据线用于数据的发送和接收,因此可以工作于全双工,当前市面上可以找到的SPI外围设备包括RF芯片、智能卡接口、E2PROM、R...
<< 3481 3482 3483 3484 3485 3486 3487 3488 3489 3490 >>