
C/C++
文章平均质量分 90
内核大本营
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Linux下Makefile的简单编写与使用
一个工程文件中的源文件可能有很多,并且不同的功能、模块等都放在不同的目录中,常规的编译已经不能高效化的处理这样的问题,而Makefile就是为解决这一问题而来。转载 2022-08-30 14:14:46 · 1003 阅读 · 1 评论 -
利用OpenVSwitch在多台主机上部署Docker的教程
重启服务或重启主机后,你将获得一个具备连接冗余(link redundancy)的全网状网络,Docker服务可以在专用的IP范围(不会重叠)上运行容器,并且不需要在公网或内网网卡上暴露所有端口就能互联。糟糕的是,默认仓库里OpenVSwitch安装包不可用(或过期了),我们需要自己构建.deb文件(一次),然后分发给不同主机。我们将假定主机运行的是Ubuntu Server 14.04.02 LTS x64,对于其它系统,你可能需要修改下面提供的各项配置。无需多言,遵循官网提供的指南就行。...转载 2022-08-30 13:55:16 · 477 阅读 · 0 评论 -
手把手带你部署Ceph集群
Ceph作为开源的分布式文件系统,可以轻松地将存储容量扩展到PB以上并拥有不错的性能。Ceph提供对象存储、块存储和文件系统三种存储方式,如果不想花时间安装ceph,可以通过ceph-docker来部署Ceph集群,使用容器部署Ceph集群的一大好处就是不用为升级而烦恼,本篇文章将手把手带你快速在单节点上部署Ceph集群。本教程采用的Linux及相关软件版本如下:CentOS Linux release 7.8.2003版本Docker的版本是20.10.10。...转载 2022-08-29 19:45:06 · 6856 阅读 · 0 评论 -
Linux环境监控工具有哪些?
CPU内存磁盘IO网络系统负载其他工具。转载 2022-08-29 19:41:08 · 264 阅读 · 0 评论 -
Linux内核中断下半部工作队列(work queue)
queue_delayed_work 跟schedule_delayed_work 类似,区别在于schedule_delayed_work 是在系统默认的工作队列上执行一个work,queue_delayed_work需要自行指定工作队列。flush_delayed_work 等待一个delayed_work执行完毕。queue_work 跟schedule_work类似,区别在于schedule_work是在系统默认的工作队列上执行一个work,而queue_work 需要自行指定工作队列。...原创 2022-08-27 20:40:52 · 1871 阅读 · 0 评论 -
如何学好Linux内核?
很多为Linux内核“吐血而亡”的程序员都犯了一个通病,那就是一开始就陷入无穷无尽的细节,比如一开始就陷入源代码情景分析。情景分析这样的书,无疑是好书,但是你把《新华字典》从第一个字,背到最后一个字,你仍然写不出一篇作文。那么先来点真实的:学习Linux内核能上哪些岗位?有哪些阶段?怎么去学、该看哪些书呢?下面我们来论述学习Linux内核的各个阶段。...转载 2022-08-27 16:30:07 · 2238 阅读 · 0 评论 -
前端&后端程序员必备的Linux基础知识
操作系统(Operation System,简称OS)是管理计算机硬件与软件资源的程序,是计算机系统的内核与基石;操作系统本质上是运行在计算机上的软件程序;为用户提供一个与系统交互的操作界面;操作系统分内核与外壳(我们可以把外壳理解成围绕着内核的应用程序,而内核就是能操作硬件的程序)。我们上面已经介绍到了Linux,我们这里只强调三点。Linux是一种自由、开放源码的类似Unix的操作系统严格来说,Linux这个词本身只表示Linux内核一个编程领域的传奇式人物。......原创 2022-08-27 14:29:10 · 616 阅读 · 0 评论 -
Linux简单应用:消息队列源码分析
创建一个权限为0666(所有用户可读可写,具体查询linux权限相关内容)的消息队列,并返回一个整形消息队列ID,如果key值已经存在有消息队列了,则出错返回-1。创建一个权限为0666(所有用户可读可写,具体查询linux权限相关内容)的消息队列,并返回一个消息队列ID,如果key值已经存在有消息队列了,则直接返回一个消息队列ID。flag的值为 IPC_CREAT | IPC_EXCL:如果不存在key值的消息队列,且权限不为0,则创建消息队列,并返回一个消息队列ID。如果存在,则产生错误。...转载 2022-08-26 22:15:10 · 416 阅读 · 0 评论 -
内存管理:巨页HugePage
如果启动"always",那就是系统默认进行在分配巨页的时候,所需要的内存大于2MiB,将会默认分配巨页,请注意,分配的内存并一定都是巨页,巨页是按照某个配置项设置的"伪对齐",比如我自己实践的虚拟机,默认2MiB对齐(pmd中间页表项)。传统巨页的实现核心是提前预留巨页内存,但是在通过hugetlbfs分配传统巨页无法满足的时候,系统会从buddy分配物理内存,生成临时巨页,这些巨页因为也是通过hugetlbfs的方式使用,也属于传统巨页。内核完成了这套流程的代码,用户是不可能见的。...转载 2022-08-26 19:54:03 · 1921 阅读 · 0 评论 -
嵌入式工程师为什么要学习Qt?它有几种开发方式?
相对于以前的Qt版本,Qt4 的进步是巨大的,他不仅彻底的对高效易用的模板容器、高级的模型/视图功能、快速而灵活的二维绘图框架和强大的统一字符编码标准的文本查看和编辑类进行了大量的改进,更不必说对那些贯穿整个Qt类中的成千上万个小的改良。Matthias Ettrich在1998年加入公司,并且在当年9月,发布了Qt 1系列的最后一个版本——V1.40.199年6月,Qt 2.0发布,该版本有有一个新的开源许可协议——Q公共许可协议(QPL,Q Public License),他与开源的定义一直。.....转载 2022-08-26 19:51:35 · 3201 阅读 · 0 评论 -
Docker/Linux底层网络基础
运行着Linux内核的机器本身就是一台主机,有可能是网络报文的目的地,其收到的报文除了转发和丢弃,还可能被送到网络协议栈的上层(网络层),从而被自己(这台主机本身的协议栈)消化,所以我们既可以把它看做一个二层设备,也可以看做是一个三层设备。在简历了新的网络命名空间,并将某个进程关联到这个网络命名空间后,就出现了下图所示的内核数据结构, 所有网络栈变量都放入了网络命名空间的数据结构中。的一个重要作用就是打通互相看不到的协议栈之间的壁垒,它就像一条管子,两端分别连着不同的网络命名空间的协议栈。...转载 2022-08-25 17:58:05 · 341 阅读 · 0 评论 -
如何检查Linux系统下的Virtio 驱动
7.按 “↓” 键将光标调到 “Paravirtualized guest support”,并按 “Enter”,进入 Paravirtualized guest support 详情界面。14.按 “↓” 键将光标调到 “Network device support”,并按 “Enter”,进入 Network device support 详情界面。11.按 “↓” 键将光标调到 “Block devices”,并按 “Enter”,进入 Block devices 详情界面。转载 2022-08-25 15:36:51 · 2070 阅读 · 0 评论 -
全面总结Linux内核下的IIC子系统架构
Linux下的I2C体系结构分为3个组成部分:I2C核心:I2C核心提供了I2C总线驱动和设备驱动的注册,注销方法,I2C通信方法(algorithm)上层的,与具体适配器无关的代码以及探测设备,检测设备地址的上层代码等。I2C总线驱动:I2C总线驱动是对I2C硬件体系结构中适配器端的实现,适配器可由CPU控制,甚至可以直接集成在CPU内部。转载 2022-08-25 15:32:31 · 1067 阅读 · 0 评论 -
前端&后端程序员必备的Linux基础知识
操作系统(Operation System,简称OS)是管理计算机硬件与软件资源的程序,是计算机系统的内核与基石;操作系统本质上是运行在计算机上的软件程序;为用户提供一个与系统交互的操作界面;操作系统分内核与外壳(我们可以把外壳理解成围绕着内核的应用程序,而内核就是能操作硬件的程序)。我们上面已经介绍到了Linux,我们这里只强调三点。Linux是一种自由、开放源码的类似Unix的操作系统严格来说,Linux这个词本身只表示Linux内核一个编程领域的传奇式人物。转载 2022-08-25 13:52:04 · 393 阅读 · 0 评论 -
大厂程序员推荐的linux内核学习路线
什么是开源软件?什么是闭源软件?什么是自由软件?什么是 GPL 协议?什么是一切皆文件的设计?什么是内核?什么是发行版?各个发行版的区别特色?什么是 POSIX 标准?什么是 GNU 计划?哪些你喜欢的软件可以运行在 linux 吗?为什么国内很多厂商不愿意为 linux 开发软件?为什么玩 linux 需要各种改配置文件?什么是软件包?什么是包管理器?什么是 github?为什么会有这么多种桌面环境?如果你有一定的C语言编程基础,那么更好了,你还可以以 C语言为基础去进一步了解:什么是编译?转载 2022-08-25 13:47:37 · 1212 阅读 · 0 评论 -
何为音视频流媒体,音视频基础概念(建议收藏)
立体声有L,R两个声道组成,我们可以在L,R中分别填充相同的数据或者不同的数据,以达到更强的音质和可以同时在L,R听到不同的声音,排列顺序:L,R,L,R,L,R…垂直刷新率指的是屏幕上的图像每秒重绘的次数,刷新率越高,图像越稳定,越好点,对眼睛越好,不容易疲劳。75Hz以上不易觉察闪烁和抖动。是一种颜色编码方法,对于视频帧的裸数据的表示方式,其主要应用于优化彩色视频信号的传输,向后兼容老式黑白电视机。通过特定的压缩技术,将某个视频的视频流格式转换成另一种视频格式的视频流方式,一种减少字节的算法。转载 2022-08-25 13:45:24 · 808 阅读 · 0 评论 -
浅谈sysfs系统--文件和目录的创建
sysfs_get_sb函数的实现和aufs文件系统一样,通过调用内核提供的get_sb_single创建超级块对象。sysfs调用get_sb_single时,提供sysfs_fill_super 函数作为sysfs文件系统超级块的赋值函数。从第2章分析的知识点我们了解到,dentry代表着文件系统内部的层次关系,而包含dentry指针的结构kobject可以对应到sysfs文件系统的一个目录,这个dentry指针就是目录文件的dentry。1)调用sysfs_create_dir 函数创建目录文件。转载 2022-08-24 22:23:59 · 547 阅读 · 0 评论 -
LINUX驱动开发中的红外(IRDA)程序
红外遥控是一种无线、非接触控制技术,具有抗干扰能力强,信息传输可靠,功耗低,成本低,易实现等显著优点,被诸多电子设备特别是家用电器广泛采用,并越来越多的应用到计算机系统中。由于红外线遥控不具有像无线电遥控那样穿过障碍物去控制被控对象的能力,所以,在设计红外线遥控器时,不必要像无线电遥控器那样,每套(发射器和接收器)要有不同的遥控频率或编码(否则,就会隔墙控制或干扰邻居的家用电器),所以同类产品的红外线遥控器,可以有相同的遥控频率或编码,而不会出现遥控信号“串门”的情况。转载 2022-08-24 19:55:01 · 1518 阅读 · 0 评论 -
PCI设备驱动与虚拟网卡驱动源码分析
在使用sudo ifconfig xxx up/down和sudo insmod xxx,sudo rmmod xxx命令时,输出的结果可以通过开启另外一个终端观察,tail -f /var/log/kern.log,查看内核日志的输出,从而观察到各个命令的执行时,他们会去执行哪一个函数。执行前先把e1000卸载了。转载 2022-08-24 19:53:11 · 1456 阅读 · 0 评论 -
Linux磁盘小知识分享
Linux 无论划分多少分区,分别分给哪个目录使用,最终都属于一个根目录,这保证逻辑上 Linux 具有一个独立且唯一的文件结构,操作系统中任意分区都是文件系统的一部分。提示 device is busy,多为被挂载目录正在被使用,检查是否工作目录就是此目录,退出即可。指令:mount -a 是自动挂载生效,每次重启从 /etc/fstab 中自动挂载。文件数:ls -l 目标目录 | grep "^-" | wc -l。执行后分区具有挂载点,但重启后挂载点断开,尚未自动(永久)挂载。转载 2022-08-24 17:32:59 · 2529 阅读 · 0 评论 -
常见大厂面试题:进程的切换与进程控制(纯干货)
系统中处于就绪状态的进程可能有多个,通常把它们排成一个队列。转载 2022-08-24 15:25:50 · 1487 阅读 · 0 评论 -
Linux内核系统中进程如何管理控制
当然,许多系统服务将以守护(daemon)程序的形式出现,守护程序仅在后台运行,即使linux系统没有登录,linux系统也会在后台运行一些例行事务。ps 命令能够列举许多运行状态的详细信息,弊端是它只能提供ps 命令执行时刻的机器状态快照,也就是相对静态的,不能实时滚动最新数据。在某种情况下,我们只是想要停止一个进程,而不是终止它,那么可以使用Ctrl-z,即可停止前台进程,并转为后台。//表示有两个进程,分别为进程5198 和进程10129,各自对应的命令是bash命令和ps命令。转载 2022-08-24 15:22:58 · 287 阅读 · 0 评论 -
Linux内核逆向映射的演变与源码分析
在聊逆向映射之前,我们先聊聊正向映射好了,当你明白了正向映射,逆向映射的概念也就易如反掌了。所谓正向映射,就是在已知虚拟地址和物理地址(或者page number、page struct)的情况下,为地址映射建立起完整的页表的过程。例如,进程分配了一段VMA之后,并无对应的page frame(即没有分配物理地址),直到程序访问了这段VMA之后,产生异常,由内核为其分配物理页面并建立起所有的各级的translation table。转载 2022-08-24 15:20:32 · 238 阅读 · 0 评论 -
一文搞懂socket读写数据接口API
注意: 再启动一个客户端,尝试连接服务器,发现第二个客户端,不能正确的和服务器进行通信。分析原因,是因为我们accept了一个请求之后,就在一直while循环尝试read,没有继续调用到accept,导致不能接受新的请求 所以这是不科学的,需要采用下面的多进程和多线程版本的TCP网络通信。注意:recvfrom函数和sendto函数还可以用于面向连接的socket读写,只需要把最后两个参数都设置为NULL就可以了,因为我们已经知道对端的socket地址了,这就有点像下面要将的recv和send了。转载 2022-08-24 15:12:56 · 2061 阅读 · 0 评论 -
Linux操作系统面试总结
该注册函数是早期的注册函数,major是设备的主设备号,name是驱动程序的名称,而fops是默认的file_operations结构(这 是只限于file_operations结构)。cpu_init(CPU内部的初始化),board_init(x210开发板相关的初始化),interrupt_init(初始化定时器),env_init(环境变量有关的初始化),而线程不一样,线程拥有独立的堆栈空间,但是共享数据段,它们彼此之间使用相同的地址空间,共享大部分数据,比进程更节俭,开销比较小,切换速度也比进。转载 2022-08-23 21:27:01 · 499 阅读 · 0 评论 -
剖析Linux内存中的/proc/meminfo参数
前言:proc/meminfo是了解Linux系统内存使用状况的主要接口,我们最常用的”free”、”vmstat”等命令就是通过它获取数据的 ,/proc/meminfo所包含的信息比”free”等命令要丰富得多,然而真正理解它并不容易,比如我们知道”Cached”统计的是文件缓存页,manpage上说是“In-memory cache for files read from the disk (the page cache)”,那为什么它不等于[Active(file)+Inactive(file)]?转载 2022-08-23 20:55:03 · 2757 阅读 · 1 评论 -
Linux内核驱动技术——内核中断篇
中断不属于进程上下文,所以不能被内核调度,如果进入了中断处理函数,就只能将其执行完毕,不能被打断,这样带来的一个问题是如果在中断处理函数中执行耗时操作,就会极大的影响系统性能,为了解决这个问题,Linux内核中提出了中断。在硬件上,中断源可以通过中断控制器向CPU提交中断,进而引发中断处理程序的执行,不过这种硬件中断体系每一种CPU都不一样,而Linux作为操作系统,需要同时支持这些中断体系,如此一来,Linux中就提出了。除了上述API,内核还提供了其他的中断操作API,在内核代码中被广泛使用。转载 2022-08-23 19:56:20 · 631 阅读 · 0 评论 -
听说你要把Linux内核源码读完?
Linux内核Git源码树中的代码达到了2780万行,核心代码只有2%是由李纳斯•托瓦兹自己编写的,其他均是其他个人和组织贡献的,李纳斯•托瓦兹公开了Linux但保留了选择新代码和需要合并的新方法的最终裁定权。在计算机科学中是一个用来管理软件发出的数据I/O(输入与输出)要求的计算机程序,将这些要求转译为数据处理的指令并交由中央处理器(CPU)及计算机中其他电子组件进行处理,是现代操作系统中最基本的部分。它提供了连接内核的系统调用接口,还提供了在用户空间应用程序和内核之间进行转换的机制。转载 2022-08-23 17:01:35 · 1752 阅读 · 0 评论 -
《嵌入式开发笔记》教你解决解决大厂面试难题
嵌入式 Linux是嵌入式操作系统的一个新成员,其最大的特点是源代码公开并且遵循GPL协议,已成为研究热点。正在开发的嵌入式系统中,有近50%的项目选择Linux作为嵌入式操作系统。嵌入式linux 是将日益流行的Linux操作系统进行裁剪修改,使之能在嵌入式计算机系统上运行的一种操作系统。嵌入式linux既继承了Internet上无限的开放源代码资源,又具有嵌入式操作系统的特性。嵌入式Linux的特点是版权费免费;购买费用媒介成本技术支持全世界的自由软件开发者提供支持网络特性免费,而且性能优异,软件移植容转载 2022-08-23 16:55:50 · 247 阅读 · 0 评论 -
简短概述Linux并发控制与原子操作
不同于自旋锁, 使用RCU的读端没有锁、 内存屏障、 原子指令类的开销, 几乎可以认为是直接读(只是简单地标明读开始和读结束) , 而RCU的写执行单元在访问它的共享资源前首先复制一个副本,然后对副本进行修改, 最后使用一个回调机制在适当的时机把指向原来数据的指针重新指向新的被修改的数据, 这个时机就是所有引用该数据的CPU都退出对共享数据读操作的时候。同时, 由于每个核的进程上下文持有锁的时候用的是spin_lock_irqsave() , 所以该核上的中断是不可能进入的, 这避免了核内并发的可能性。转载 2022-08-23 14:07:47 · 257 阅读 · 0 评论