Linux内核学习笔记(十一)内核同步方法(自旋锁,信号量,互斥锁,完成变量,顺序锁,禁止抢占)

原子操作 Linux内核提供了多种同步机制,这些机制本质上都是通过原子操作来实现的。原子操作可以保证指令以原子方式执行,不会被中途打断(中断也不会打断一个指令,处理器只有在当前指令完成后才会去处理中断)。内核提供了两套原子操作的接口,一套用于整数原子操作,一套用于进行位原子操作。这些接口的实现是...

2018-06-09 02:18:34

阅读数:441

评论数:0

Linux内核学习笔记(十)中断处理的下半部(Bottom Halve)

为什么需要下半部 中断处理程序有如下局限性: 中断处理程序是异步中断,被其中断执行的代码(包括别的中断处理程序)可能正在执行非常重要的任务,为了避免被中断进程停止过长时间,中断处理程序的执行应该越快越好。 中断处理程序会禁用其服务的中断线(没有设置IRQF_DISABLE),这是最好的情况。...

2018-06-06 23:06:58

阅读数:343

评论数:0

Linux内核学习笔记(九)中断和中断处理程序

中断 为了对计算机的硬件(键盘,硬盘,鼠标等)进行管理,内核需要和这些硬件通信。一种方式是使用轮训(polling)的方式,这种方式周期性地查看所有硬件设备的状态并做相应处理,这会造成很多不必要的系统开销。Linux内核使用中断的方式来管理硬件设备,中断本质上是一种电信号,设备通过和中断控制器引...

2018-06-04 23:35:49

阅读数:344

评论数:0

Linux内核学习笔记(八)Page Cache与Page回写

综述 Page cache是通过将磁盘中的数据缓存到内存中,从而减少磁盘I/O操作,从而提高性能。此外,还要确保在page cache中的数据更改时能够被同步到磁盘上,后者被称为page回写(page writeback)。一个inode对应一个page cache对象,一个page cache...

2018-06-02 23:38:19

阅读数:1353

评论数:0

Linux内核学习笔记(七)系统调用

综述 用户空间进程通过内核提供的一套接口和系统进行交互,这些接口让用户空间进程能够受控地访问系统资源、创建新的进程以及和其他进程通信等。受控表示用户进程不能不受限制地做任何想做的事情,这对保证系统的稳定非常关键。在Linux系统中,系统调用是除了exception和trap之外用户空间和内核交互...

2018-05-30 23:05:51

阅读数:375

评论数:0

Linux内核学习笔记(六)进程调度

综述 内核调度子系统负责进程调度,调度程序决定让哪个进程运行、什么时候运行、运行多久。调度程序的目标有两个:一个是最大化系统资源的利用率,一个是减少和用户的交互延迟,让用户觉得多个进程在同时运行。这两个目标是冲突的,需要做trade-off。 多任务操作系统 多任务操作系统指的是指可以多...

2018-05-29 13:16:55

阅读数:501

评论数:0

Linux内核学习笔记(五)进程地址空间

**# 进程地址空间简介 Linux是一个虚拟内存操作系统,系统中的所有进程以虚拟方式共享内存。从一个进程的视角来看,它独占系统中所有的物理内存,并且一个进程的地址空间可以远远大于物理内存的大小。 进程的地址空间由可寻址的虚拟内存组成,进程通过地址空间中的地址访问内存。一个进程可以选择和其他进...

2018-05-10 10:37:25

阅读数:486

评论数:0

Linux内核学习笔记(四)进程管理

进程简介 进程(Process)是Unix操作系统最基本的抽象概念之一。进程是正在执行的程序,同时也是操作系统进行资源管理的最小单位,进程需要管理打开的文件、挂起的信号、内核内部数据、处理器状态等。 线程(Thread)是进程中正在执行的程序片段,是操作系统进行调度的最小单位,一个线程指的是进...

2018-05-09 17:10:40

阅读数:560

评论数:0

Linux内核学习笔记(三)Block I/O层

块设备(Block Device)简介 块设备是一种以块(block)为单位可以进行随机存取的硬件设备。常见的块设备有硬盘,软盘,闪存等。 块设备的最小寻址单元是扇区(sector),一个扇区是2\^n个字节,512Bytes是最常见的扇区大小。内核的文件系统使用块(block)作为最小寻址单...

2018-04-27 19:55:04

阅读数:852

评论数:2

Linux内核学习笔记(二)内存管理

综述 本文首先介绍和内存管理相关的一些概念如page,zone,然后介绍多种获得内存的方式,最后介绍Linux的slab层(slab分配器)。 页(page) 页是Linux内核进行内存管理的基本单元。MMU和虚拟内存也都使用页作为基本管理单元。不同的架构有不同的页大小,绝大部分的情况是32...

2018-04-24 15:33:05

阅读数:563

评论数:0

Linux内核学习笔记(一) 虚拟文件系统VFS

什么是VFS Vritual Filesystem 是给用户空间程序提供统一的文件和文件系统访问接口的内核子系统。借助VFS,即使文件系统的类型不同(比如NTFS和ext3),也可以实现文件系统之间交互(移动、复制文件等), 从用户空间程序的角度来看,VFS提供了一个统一的抽象、接口。这使得...

2018-04-20 17:32:20

阅读数:509

评论数:0

VFS中的数据结构(superblock、dentry、inode、file)

VFS简介 VFS的理念是使用统一的数据结构在内核中保存不同类型文件系统的信息(含操作)。 VFS是一个介于用户程序和文件系统实现之间的一个抽象层,VFS既给了不同类型的文件系统支持Linux系统的公共接口,也给用户程序提供了一个统一的调用接口。 VFS背后的核心idea是引入了通用文件模型...

2018-04-14 16:18:21

阅读数:612

评论数:0

Linux进程状态码总结

在Linux中执行ps aux命令时,STAT列表示的是进程的状态。最近研究了一下进程状态码,这里做一个简单的总结。 下图是ps的manual中给出的信息,本文将分别介绍每个状态 PROCESS STATE CODES Here are the different value...

2018-04-06 20:45:35

阅读数:550

评论数:0

Linux网卡驱动pcnet32.c的注释(AM79C9*系列网卡的驱动)

很久之前读的网卡驱动源码,很多东西已经忘记了,最近面试被问道了网卡收数据包的全过程,只能答出一个很简单的过程,NAPI这种非常优秀的机制都没有想起来,很惭愧,重新复习了一下收包的过程,顺便把当时注释的代码贴出来,仅供参考。注释内容主要关注AM79C970A,为了方便阅读分成了几个代码块。 /...

2018-03-20 10:38:09

阅读数:185

评论数:0

sk_buff结构和函数分析

在wlan驱动中,数据读取写入是通过sk_buff这个结构体,而sk_buff结构主要作用是包含接收的缓冲数据,和它的包头信息。 如下是sk_buff的主要结构成员: struct sk_buff {... unsigned char *head; unsigned char *data; un...

2015-01-28 22:21:31

阅读数:495

评论数:0

linux 内核模块编译的Makefile模板

编译的源文件是hello.c ,所以这里obj-m:=hello.o  其他名称类似 obj-m:= hello.o KERNELDIR := /lib/modules/$(shelluname –r)/build PWD := $(shell pwd) modules:   $(MAKE)-C...

2015-01-23 12:29:02

阅读数:429

评论数:0

linux 编译内核的步骤

1. 获取内核源码包,如何下载不在赘述 2. 解压缩 3. 进入内核源码目录 4-9可选 4. 输入 make menuconfig ,如果提示屏幕大小不够,则把窗口最大化,如果是在虚拟机中,虚拟机也要最大化 5. 进入general setup 选项, 6.进入local version 7...

2015-01-22 09:27:39

阅读数:364

评论数:0

Linux内核的同步机制——有DEFINE_SPINLOCK()

一、引言 在现代操作系统里,同一时间可能有多个内核执行流在执行,因此内核其实象多进程多线程编程一样也需要一些同步机制来同步各执行单元对共享数据的访问。尤其是在多处理器系统上,更需要一些同步机制来同步不同处理器上的执行单元对共享的数据的访问。 在主流的Linux内核中包含了几乎所有现代的操作系统...

2014-01-15 16:25:15

阅读数:819

评论数:0

Linux模块导出符号 EXPORT_SYMBOL_GPL EXPORT_SYMBOL

一个模块mod1中定义一个函数func1;在另外一个模块mod2中定义一个函数func2,func2调用func1。 在模块mod1中,EXPORT_SYMBOL(func1); 在模块mod2中,extern int func1(); 就可以在mod2中调用func1了。 ==========...

2014-01-15 15:59:07

阅读数:640

评论数:0

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