
Linux 内核相关
badman250
专注分享IT知识技能
展开
-
硬中断 / 软中断的原理和实现
转载自:http://blog.youkuaiyun.com/zhangskd/article/details/21992933 本文主要内容:硬中断 / 软中断的原理和实现内核版本:2.6.37Author:zhangskd @ csdn blog 概述 从本质上来讲,中断是一种电信号,当设备有某种事件发生时,它就会产生中断,通过总线把电信号发送给中断转载 2015-12-06 20:46:10 · 32171 阅读 · 0 评论 -
通过CPUID命令访问CPU详细信息
通过cpuid命令,来获取CPU的信息,这个命令的底层是通过CPUID指令。获取的内容比/proc/cpuinfo要详细很多,如果要获取详细信息就使用cpuid命令吧。例如,执行#cpuidCPU 0: vendor_id = "GenuineIntel" version information (1/eax): processor type = primary process...原创 2018-06-11 14:41:57 · 6924 阅读 · 1 评论 -
通过msr-tools读取CPU寄存器的值
通过msr-tools工具包可以用来来读取或写MSR寄存器值。MSR是Model Specific Register的全称。 MSR是为了设置CPU 的工作环境和标示CPU 的工作状态,包括温度控制,性能监控等 1. Thermal 2. Frequency 3. C State 4. Microcode 5. EIST 6. TM 7. Key Features Of CPU ...原创 2018-06-11 15:30:04 · 7210 阅读 · 0 评论 -
dd命令的另类分析
今天想看下dd命令启动后调用的系统调用。于是就用strace了一把,考虑到dd命令是需要带参数的,所有执行一个字节的写,写10次,所在文件系统为xfs, 执行如下。 如下,注释直接加下输出的内容中了:# strace dd if=/dev/zero of=test.log bs=1 count=10execve("/usr/bin/dd", ["dd", "if=/dev/zero", "of=...原创 2018-06-05 16:35:53 · 1085 阅读 · 1 评论 -
linux中用户和内核空间的交互接口汇总
内核提供接口给用户空间程序,便于用户进行进行信息的读取和配置。procfs和sysctl都可以导出内部信息,其中procfs主要用于导出只读信息,sysctl导出可写的。此外还有sysfs,ioctl1. procfsprocfs是内核提供的,一种在用户空间中对各种子系统的设置进行配置的方式,通常挂载在/proc下。 网络代码注册的文件位于/proc/net目录中2. sysctl系统调用...原创 2018-05-24 20:25:28 · 2176 阅读 · 0 评论 -
调试Linux内核操作指南(withing kgdb)
kgdb在内核2.6.26中加入,用于调试内核。kdb是内建的内核调试器,由SGI开发。 两者差异是:使用kgdb需要两个机器,通过网络连接,其中客户端使用gdb。而kdb可以直接在目标机器上调试。Kgdb支持C代码级别调试,可以识别内核数据结构,而kdb只能识别汇编级别。 这里两台机器(使用的是两台VBox的虚拟机),一个是目标机器(被调试内核的机器),另一台是开发机器(连接被调试内核的机器)...原创 2018-06-02 10:32:19 · 947 阅读 · 0 评论 -
linux内核错误码
#define EPERM 1 /* Operation not permitted */#define ENOENT 2 /* No such file or directory */#define ESRCH 3 /* No such process */#define EINTR ...原创 2018-07-02 09:45:21 · 1872 阅读 · 0 评论 -
linux内核权限参数
#define S_IFMT 00170000#define S_IFSOCK 0140000#define S_IFLNK 0120000#define S_IFREG 0100000#define S_IFBLK 0060000#define S_IFDIR 0040000#define S_IFCHR 0020000#define S_IFIFO 0010000#define ...原创 2018-07-02 09:56:42 · 786 阅读 · 0 评论 -
linux内核打印等级
#define KERN_EMERG KERN_SOH "0" /* system is unusable */#define KERN_ALERT KERN_SOH "1" /* action must be taken immediately */#define KERN_CRIT KERN_SOH "2" /* critical condit...原创 2018-07-02 19:59:29 · 614 阅读 · 0 评论 -
Linux内核中的锁——知识点
系统中的锁,说简单点就是为了保护共享资源,从而更好的实现系统并发。本文对内核中的相关常用锁进行了介绍以及部分使用。1. 信号量第一个经验法则是设计驱动时在任何可能的时候记住避免共享的资源。全局变量远远不是共享数据的唯一方式信号量Semaphores是一个单个整型值, 结合有一对函数, 典型地称为 P 和 V 。当信号量用作互斥,阻止多个进程同时在同一个临界区内运行 -- 它们的值将初始化为 1...原创 2018-07-04 15:20:48 · 613 阅读 · 0 评论 -
linux内核模块导出函数
一个模块可以使用另一个模块导出的函数,可以通过函数EXPORT_SYMBOL(func_name)来导出,导出后的函数位于/proc/kallsyms文件中。1. 导出代码:#include <linux/init.h>#include <linux/module.h> MODULE_LICENSE("Dual BSD/GPL"); static int hello_i...原创 2018-06-04 11:16:32 · 1842 阅读 · 0 评论 -
linux中PCI子系统补充
相关知识:《linux中pci设备》很多网络接口卡都是PCI设备,必须与Linux PCI子系统协同工作。新的PCI设备是PCI Express设备.PCI设备都有只读的配置空间,可以通过lspci命令来读取。 #lspci -xxx可以查看PCI配置空间内容的十六进制表示 #lspci -xxxx可以查看扩展PCI配置空间内容的十六进制表示当然linux PCI API提...原创 2018-05-17 10:19:14 · 1315 阅读 · 0 评论 -
start_kernel启动函数——简版
start_kernel函数是内核的入口函数,定义在init/main.c文件中。我们来一个一个函数看。asmlinkage __visible void __init start_kernel(void){ char *command_line; char *after_dashes; set_task_stack_end_magic(&ini...原创 2018-04-21 20:54:21 · 3925 阅读 · 0 评论 -
Linux内核开发环境管理和搭建(Git&Vim)
Linux内核开发环境管理和搭建 Kernel官方的链接是:https://www.kernel.org,有三种版本mainline,stable,longterm,其中mainline是主线版本,stable是稳定版,longterm是长期支持版,当然就是不再支持的EOL(end of life)我们使用git来完成开发环境的管理和搭建。关于Git的详细使用更可以查看链接:htt原创 2017-07-23 16:45:45 · 5120 阅读 · 0 评论 -
操作系统下spinlock锁解析、模拟及损耗分析
http://linuxperformance.top/index.php/archives/46/ 转自网站:LinuxPerformance.Top转载 2017-07-26 23:01:37 · 8456 阅读 · 0 评论 -
I/O栈链路优化
http://linuxperformance.top/index.php/archives/53/转载自:http://linuxperformance.top/I/O栈链路优化作者: yanyun 时间: July 28, 2017 分类: Storage传统存储I/O链路问题在传统存储中现有的存储IO软件栈,相比整条I/O链路的占比很小转载 2017-07-28 22:00:54 · 2347 阅读 · 0 评论 -
Linux内核概述——之一
Linux内核概述 Linux内核模块Linux内核主要由进程调度(SCHED)、内存管理(MM)、 虚 拟 文 件 系 统 (VFS)、网络接口(NET)和进程间通信(IPC)5个子系统组成。 就5个子系统搞定一个就是搞定20%了,是不是信心大增?咳咳~~ 进程调度控制系统中的多个进程对CPU的访问,使得多个进程能在CP原创 2017-10-12 11:39:16 · 1293 阅读 · 0 评论 -
Linux内核调试工具 ftrace
Linux内核调试工具 ftrace 1 tracepointtracing目录位于/sys/kernel/debug/tracing/2 系统tracing/sys/kernel/debug/tracing/events/block 1. 挂载debug文件系统mount -t debugfs nodev /debug原创 2017-10-12 11:40:47 · 1363 阅读 · 0 评论 -
valgrind之旅-简单安装使用
valgrind之旅-简单安装使用1. 简介Valgrind是一款用于内存调试、内存泄漏检测以及性能分析的软件开发工具。名字取自北欧神话中英灵殿的入口。Valgrind的最初作者是Julian Seward,他于2006年由于在开发Valgrind上的工作获得了第二届Google-O'Reilly开源代码奖。Valgrind遵守GNU通用公共许可证条款,是一款自由软件。支持x86、x8原创 2018-01-21 22:31:05 · 1241 阅读 · 0 评论 -
valgrind之旅-功能介绍
valgrind之旅-功能介绍 最新的valgrind工具包(3.10.1)包含多个工具,如memcheck, cachegrind,helgrind,callgrind,massif, DRD,DHAT,SGcheck,BBV 这篇主要是简单介绍一下,关于具体使用,蛤蟆会一点点进行深入之.1. memcheckMemcheck 是一个内存错误检查工具。原创 2018-01-21 22:32:04 · 444 阅读 · 0 评论 -
1.Linux内核3.x内核编译操作指南
内核下载地址https://www.kernel.org/在系统中安装相关的内核:主要是ncurses-devel包 编译步骤将下载的内核包上传到服务器上。 解压通过相关命令解压内核包xd –dlinux-XXX.tar.xztar –xvflinux-XXX.tar.xz 清除旧.o文件Cd 到解压的内核包目录目录中运行如下命令make m原创 2018-01-10 22:09:08 · 819 阅读 · 0 评论 -
linux系统调用实现机制详解(内核4.14.4)
linux系统调用实现机制详解(内核4.14.4)https://yq.aliyun.com/articles/522766?spm=a2c4e.11155435.0.0.25d33312xbNbM51.1 linux系统调用介绍linux内核中设置了一组用于实现系统功能的子程序,称为系统调用。和普通库函数调用相似,只是系统调用由操作系统核心提供,运行于核心态,而普通的函数调用由函数库或用...原创 2018-03-09 16:18:12 · 2681 阅读 · 1 评论 -
linux系统调用实现机制详解(内核4.14.4)
#原创1.1 linux系统调用介绍linux内核中设置了一组用于实现系统功能的子程序,称为系统调用。和普通库函数调用相似,只是系统调用由操作系统核心提供,运行于核心态,而普通的函数调用由函数库或用户自己提供,运行于用户态。在Linux中,每个系统调用被赋予一个系统调用号。通过这个独一无二的号就可以关联系统调用。当用户空间的进程执行一个系统调用的时候,这个系统调用号就被用来指明...原创 2019-03-10 11:34:43 · 905 阅读 · 1 评论