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

首页 / 操作系统 / Linux

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...
<< 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 >>