[Linux内核]
文章平均质量分 82
qq_20398345
这个作者很懒,什么都没留下…
展开
-
《Linux内核设计与实现》读书笔记 - 目录 (完结)
https://www.cnblogs.com/wang_yb/p/3514730.html 为了方便以后查看, 做个《Linux内核设计与实现》读书笔记 的目录: 《Linux内核设计与实现》读书笔记(一)-内核简介 《Linux内核设计与实现》读书笔记(二)- 内核开发的准备 《Linux内核设计与实现》读书笔记(三)- Linux的进程 《Linux内核设计与实现》读书...转载 2018-07-24 14:47:14 · 712 阅读 · 0 评论 -
linux netlink通信机制
https://www.cnblogs.com/wenqiang/p/6306727.html 一、什么是Netlink通信机制 Netlink套接字是用以实现用户进程与内核进程通信的一种特殊的进程间通信(IPC) ,也是网络应用程序与内核通信的最常用的接口。 Netlink 是一种特殊的 socket,它是 Linux 所特有的,类似于 BSD 中的AF_ROUTE 但...转载 2018-07-31 17:38:28 · 469 阅读 · 0 评论 -
《Linux内核设计与实现》读书笔记(十八)- 内核调试
http://www.cnblogs.com/wang_yb/p/3504539.html 内核调试的难点在于它不能像用户态程序调试那样打断点,随时暂停查看各个变量的状态。也不能像用户态程序那样崩溃后迅速的重启,恢复初始状态。 用户态程序和内核交互,用户态程序的各种状态,错误等可以由内核来捕获并显示。而内核是直接和硬件交互的,内核出错之后整个系统就无法正常运行了,所以要想熟...转载 2018-07-31 17:50:19 · 104 阅读 · 0 评论 -
《Linux内核设计与实现》读书笔记(十九)- 可移植性
http://www.cnblogs.com/wang_yb/p/3512095.html linux内核的移植性非常好, 目前的内核也支持非常多的体系结构(有20多个).但是刚开始时, linux也只支持 intel i386 架构, 从 v1.2版开始支持 Digital Alpha, Intel x86, MIPS和SPARC(虽然支持的还不是很完善).从 v2.0版本开始加...转载 2018-08-01 11:02:55 · 131 阅读 · 0 评论 -
《Linux内核设计与实现》读书笔记(二十)- 补丁, 开发和社区
http://www.cnblogs.com/wang_yb/p/3514701.html linux最吸引我的地方之一就是它拥有一个高手云集的社区, 还有就是如果能=为linux内核中贡献代码, 一定是一件令人自豪的事情.下面主要总结一些和贡献代码相关的主要内容.加入社区 编码风格 提交补丁 总结 1. 加入社区如果想为linux贡献代码, 那么加入linux社区...转载 2018-08-01 11:08:44 · 97 阅读 · 0 评论 -
Linux 内核Coding Style整理
https://www.cnblogs.com/wang_yb/p/3532349.html 总结linux内核开发的coding style, 便于以后写代码时参考.下面只是罗列一些规则, 具体说明可以参考: 内核源码(Documentation/CodingStyle) 01 - 缩进缩进用 Tab, 并且Tab的宽度为8个字符swich 和 case对齐, 不用缩...转载 2018-08-01 13:42:23 · 380 阅读 · 0 评论 -
内核工具 – Sparse 简介
https://www.cnblogs.com/wang_yb/p/3575039.html Sparse是内核代码静态分析工具, 能够帮助我们找出代码中的隐患. 主要内容:Sparse 介绍 Sparse 使用方法 Sparse 在编译内核中的使用 补充 1. Sparse 介绍Sparse 诞生于 2004 年, 是由linux之父开发的, 目的就是提供一个...转载 2018-08-01 13:50:47 · 156 阅读 · 0 评论 -
Kernel数据结构移植(list和rbtree)
https://www.cnblogs.com/wang_yb/p/3818517.html 主要移植了内核中的 list,rbtree。使得这2个数据结构在用户态程序中也能使用。同时用 cpputest 对移植后的代码进行了测试。(测试代码其实也是使用这2个数据结构的方法) 内核代码的如下文件:(内核版本 v3.2 debian 7.5源码)include/linux/l...转载 2018-08-01 14:05:31 · 172 阅读 · 0 评论 -
GIT的使用
https://www.cnblogs.com/wang_yb/p/3867221.html GIT 的常规操作常规操作也是我自己平时常用的几个命令, 学自于 pro git 这本书中git 配置文件 git的配置文件位置 针对所有用户:/etc/gitconfig 针对当前用户: ~/.gitconfig 查看配置的方法 git config --lis...转载 2018-08-01 14:23:56 · 93 阅读 · 0 评论 -
编译Linux内核
https://www.cnblogs.com/wang_yb/p/3899439.html 下面的实验以 debian7.5 64bit 为例.获取源码获取 debian7.5 本身的源码非常简单:sudo apt-get install linux-sourcehttps://www.kernel.org/ 的git上提供的源码分支非常多, 刚开始学习源码主要关注下面...转载 2018-08-01 14:37:28 · 130 阅读 · 0 评论 -
Linux 容器的使用
https://www.cnblogs.com/wang_yb/p/3923040.html Linux 容器的使用Linux 容器在 v2.6.29版本之后就加入到内核之中了, 之前虽然也听说过, 但一直没有太留心, 一直使用 KVM 来创建虚拟机.直至最近 Docker 大出风头, 才开始关注. 想了解一下 Linux 容器究竟是什么? 与现有虚拟机技术(Xen, KVM等)有什...转载 2018-08-01 14:49:21 · 4526 阅读 · 0 评论 -
Linux资源控制-CPU和内存
https://www.cnblogs.com/wang_yb/p/3942208.html 主要介绍Linux下, 如果对进程的CPU和内存资源的使用情况进行控制的方法。 CPU资源控制每个进程能够占用CPU多长时间, 什么时候能够占用CPU是和系统的调度密切相关的.Linux系统中有多种调度策略, 各种调度策略有其适用的场景, 也很难说哪种调度策略是最优的.Linu...转载 2018-08-01 15:24:09 · 426 阅读 · 0 评论 -
Linux资源管理-IO优先级
https://www.cnblogs.com/wang_yb/p/3957913.html 前一篇博客介绍了利用 cgroup 来控制进程的 CPU和内存使用情况, 这次补上使用 cgroup 来控制进程的IO优先级的方法. 前提条件如果想控制进程的IO优先级, 需要内核的支持, 内核编译时需要打开下面2个参数.CONFIG_BLK_CGROUP=yCONFIG_CF...转载 2018-08-01 15:26:26 · 354 阅读 · 0 评论 -
Linux下的静态库与动态库
1、生成.SO:g++ test.cpp -fPIC -shared -o libtest.so2、使用.SO:g++ L. -ltest main.cpp在使用.SO的时候如果找不到.SO需要把.SO的路径加到/etc/ld.so.conf ldconfig使之生效ldd 可以查看MAIN中是否包含了.SO。3、生成.Aar -r libtest2.a...转载 2018-08-13 12:03:39 · 461 阅读 · 0 评论 -
《Linux内核设计与实现》读书笔记(十七)- 设备与模块
http://www.cnblogs.com/wang_yb/p/3489753.html 本章主要讨论与linux的设备驱动和设备管理的相关的4个内核成分,设备类型,模块,内核对象,sysfs。主要内容:设备类型 内核模块 内核对象 sysfs 总结 1. 设备类型linux中主要由3种类型的设备,分别是: 设备类型 代表设备 ...转载 2018-07-31 15:03:21 · 131 阅读 · 0 评论 -
《Linux内核设计与实现》读书笔记(十六)- 页高速缓存和页回写
http://www.cnblogs.com/wang_yb/p/3436126.html 主要内容:缓存简介 页高速缓存 页回写 1. 缓存简介在编程中,缓存是很常见也很有效的一种提高程序性能的机制。linux内核也不例外,为了提高I/O性能,也引入了缓存机制,即将一部分磁盘上的数据缓存到内存中。 1.1 原理之所以通过缓存能提高I/O性能是基于以下2个...转载 2018-07-30 20:25:22 · 133 阅读 · 0 评论 -
《Linux内核设计与实现》读书笔记(十五)- 进程地址空间(kernel 2.6.32.60)
http://www.cnblogs.com/wang_yb/p/3351599.html 进程地址空间也就是每个进程所使用的内存,内核对进程地址空间的管理,也就是对用户态程序的内存管理。主要内容:地址空间(mm_struct) 虚拟内存区域(VMA) 地址空间和页表 1. 地址空间(mm_struct)地址空间就是每个进程所能访问的内存地址范围。这个地址范围不是...转载 2018-07-30 20:09:11 · 145 阅读 · 0 评论 -
《Linux内核设计与实现》读书笔记(一)-内核简介
https://www.cnblogs.com/wang_yb/archive/2012/08/15/2640972.html 本篇简单介绍内核相关的基本概念。主要内容:单内核和微内核 内核版本号 1. 单内核和微内核 原理 优势 劣势 单内核 整个内核都在一个大内核地址空间上...转载 2018-07-24 14:51:15 · 107 阅读 · 0 评论 -
《Linux内核设计与实现》读书笔记(二)- 内核开发的准备
https://www.cnblogs.com/wang_yb/archive/2012/08/16/2641836.html 在尝试内核开发之前,需要对内核有个整体的了解。主要内容:获取内核源码 内核源码的结构 编译内核的方法 内核开发的特点 1. 获取内核源码内核是开源的,所有获取源码特别方便,参照以下的网址,可以通过git或者直接下载压缩好的源码包。htt...转载 2018-07-24 15:03:22 · 119 阅读 · 0 评论 -
《Linux内核设计与实现》读书笔记(三)- Linux的进程
https://www.cnblogs.com/wang_yb/archive/2012/08/20/2647912.html 进程是所有操作系统的核心概念,同样在linux上也不例外。主要内容:进程和线程 进程的生命周期 进程的创建 进程的终止1. 进程和线程进程和线程是程序运行时状态,是动态变化的,进程和线程的管理操作(比如,创建,销毁等)都是有内核来实现的。L...转载 2018-07-24 15:14:50 · 96 阅读 · 0 评论 -
《Linux内核设计与实现》读书笔记(四)- 进程的调度
https://www.cnblogs.com/wang_yb/archive/2012/09/04/2670564.html 主要内容:什么是调度 调度实现原理 Linux上调度实现的方法 调度相关的系统调用1. 什么是调度现在的操作系统都是多任务的,为了能让更多的任务能同时在系统上更好的运行,需要一个管理程序来管理计算机上同时运行的各个任务(也就是进程)。这个管理程...转载 2018-07-24 15:37:08 · 113 阅读 · 0 评论 -
《Linux内核设计与实现》读书笔记(五)- 系统调用
https://www.cnblogs.com/wang_yb/archive/2012/09/17/2688263.html 主要内容:什么是系统调用 Linux上的系统调用实现原理 一个简单的系统调用的实现1. 什么是系统调用简单来说,系统调用就是用户程序和硬件设备之间的桥梁。用户程序在需要的时候,通过系统调用来使用硬件设备。系统调用的存在,有以下重要的意义:...转载 2018-07-24 15:56:27 · 413 阅读 · 0 评论 -
《Linux内核设计与实现》读书笔记(六)- 内核数据结构
https://www.cnblogs.com/wang_yb/archive/2013/04/16/3023892.html 内核数据结构贯穿于整个内核代码中,这里介绍4个基本的内核数据结构。利用这4个基本的数据结构,可以在编写内核代码时节约大量时间。主要内容:链表 队列 映射 红黑树 1. 链表链表是linux内核中最简单,同时也是应用最广泛的数据结构。...转载 2018-07-24 18:40:50 · 144 阅读 · 0 评论 -
linux 系统 ko模块编译
https://blog.csdn.net/elfylin/article/details/5908265https://blog.csdn.net/yangbingzhou/article/details/51177066 .c文件如何编译为ko的MAKEFILE文件编写写个my.c和一个Makefile文件,然后make编译一下,就成功了,生成my.ko 再加载一下in...转载 2018-07-25 11:45:17 · 1354 阅读 · 0 评论 -
《Linux内核设计与实现》读书笔记(七)- 中断处理
https://www.cnblogs.com/wang_yb/archive/2013/04/19/3030345.html 中断处理一般不是纯软件来实现的,需要硬件的支持。通过对中断的学习有助于更深入的了解系统的一些底层原理,特别是驱动程序的开发。主要内容:什么是中断 中断类型 中断相关函数 中断处理机制 中断控制方法 总结 1. 什么是中断为了提高CPU和...转载 2018-07-25 15:30:43 · 112 阅读 · 0 评论 -
《Linux内核设计与实现》读书笔记(八)- 中断下半部的处理
https://www.cnblogs.com/wang_yb/archive/2013/04/23/3037268.html 在前一章也提到过,之所以中断会分成上下两部分,是由于中断对时限的要求非常高,需要尽快的响应硬件。主要内容:中断下半部处理 实现中断下半部的机制 总结中断下半部的实现 中断实现示例 1. 中断下半部处理那么对于一个中断,如何划分上下两部分呢?...转载 2018-07-26 16:22:34 · 166 阅读 · 0 评论 -
《Linux内核设计与实现》读书笔记(九)- 内核同步介绍
https://www.cnblogs.com/wang_yb/archive/2013/04/24/3040712.html 存在共享资源(共享一个文件,一块内存等等)的时候,为了防止并发访问时共享资源的数据不一致,引入了同步机制。主要内容:同步的概念 同步的方法-加锁 死锁 锁的粒度 1. 同步的概念了解同步之前,先了解另外2个概念:临界区 - 也称为临...转载 2018-07-26 19:25:29 · 103 阅读 · 0 评论 -
《Linux内核设计与实现》读书笔记(十)- 内核同步方法
https://www.cnblogs.com/wang_yb/archive/2013/05/01/3052865.html 内核中提供了多种方法来防止竞争条件,理解了这些方法的使用场景有助于我们在编写内核代码时选用合适的同步方法,从而即可保证代码中临界区的安全,同时也让性能的损失降到最低。主要内容:原子操作 自旋锁 读写自旋锁 信号量 读写信号量 互斥体 完成变...转载 2018-07-26 20:27:25 · 118 阅读 · 0 评论 -
《Linux内核设计与实现》读书笔记(十一)- 定时器和时间管理
https://www.cnblogs.com/wang_yb/archive/2013/05/10/3070373.html系统中有很多与时间相关的程序(比如定期执行的任务,某一时间执行的任务,推迟一段时间执行的任务),因此,时间的管理对于linux来说非常重要。 主要内容:系统时间 定时器 定时器相关概念 定时器执行流程 实现程序延迟的方法 定时器和延迟的例子 ...转载 2018-07-30 15:15:46 · 176 阅读 · 0 评论 -
《Linux内核设计与实现》读书笔记(十二)- 内存管理
http://www.cnblogs.com/wang_yb/archive/2013/05/23/3095907.html 内核的内存使用不像用户空间那样随意,内核的内存出现错误时也只有靠自己来解决(用户空间的内存错误可以抛给内核来解决)。所有内核的内存管理必须要简洁而且高效。主要内容:内存的管理单元 获取内存的方法 获取高端内存 内核内存的分配方式 总结 1....转载 2018-07-30 18:55:51 · 152 阅读 · 0 评论 -
《Linux内核设计与实现》读书笔记(十三)- 虚拟文件系统
http://www.cnblogs.com/wang_yb/p/3144291.html 虚拟文件系统(VFS)是linux内核和具体I/O设备之间的封装的一层共通访问接口,通过这层接口,linux内核可以以同一的方式访问各种I/O设备。虚拟文件系统本身是linux内核的一部分,是纯软件的东西,并不需要任何硬件的支持。 主要内容:虚拟文件系统的作用 虚拟文件系统的4个主...转载 2018-07-30 19:17:43 · 110 阅读 · 0 评论 -
《Linux内核设计与实现》读书笔记(十四)- 块I/O层
http://www.cnblogs.com/wang_yb/p/3299092.html 主要内容:块设备简介 内核访问块设备的方法 内核I/O调度程序 1. 块设备简介I/O设备主要有2类:字符设备:只能顺序读写设备中的内容,比如 串口设备,键盘 块设备:能够随机读写设备中的内容,比如 硬盘,U盘字符设备由于只能顺序访问,所以应用场景也不多,这篇文章主要讨论块...转载 2018-07-30 19:47:35 · 132 阅读 · 0 评论 -
7.Practical Java_实践 1-7:一般技术
实践 1:参数以by value方式而非by reference方式传递import java.awt.*;public class PassByValue { public static void ModifyPoint(Point pt, int j) { pt.setLocation(5,5); j = 15; Sys...原创 2018-08-21 15:42:09 · 219 阅读 · 0 评论