腾讯云
开发者社区
文档
建议反馈
控制台
登录/注册
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
搜索
搜索
关闭
发布
首页
学习
活动
专区
工具
TVP
最新优惠活动
返回腾讯云官网
linux驱动个人学习
专栏成员
举报
724
文章
1442544
阅读量
183
订阅数
订阅专栏
申请加入专栏
全部文章(724)
编程算法(170)
linux(160)
其他(78)
android(65)
kernel(57)
缓存(55)
内核(48)
数据结构(35)
进程(32)
内存(32)
系统(30)
c++(22)
node.js(22)
数据(22)
单片机(21)
打包(20)
arm(19)
api(19)
http(19)
存储(19)
java(17)
硬件开发(16)
tcp/ip(14)
程序(14)
函数(13)
线程(13)
host(12)
c 语言(11)
腾讯云测试服务(11)
proc(11)
接口(10)
性能(10)
ide(9)
struct(9)
usb(9)
编译(9)
数据库(8)
容器(8)
git(7)
unix(7)
网站(7)
数据分析(7)
core(7)
driver(7)
sys(7)
指针(7)
shell(6)
二叉树(6)
系统架构(6)
device(6)
io(6)
操作系统(6)
对象(6)
管理(6)
架构(6)
配置(6)
调试(6)
c#(5)
xml(5)
汇编语言(5)
文件存储(5)
网络安全(5)
bit(5)
cpu(5)
init(5)
磁盘(5)
工具(5)
内存管理(5)
优化(5)
javascript(4)
sql(4)
命令行工具(4)
面向对象编程(4)
gcc(4)
任务调度(4)
clock(4)
max(4)
pid(4)
task(4)
trace(4)
队列(4)
工作(4)
异常(4)
主机(4)
go(3)
makefile(3)
github(3)
容器镜像服务(3)
云函数(3)
云推荐引擎(3)
人工智能(3)
electron(3)
开源(3)
flash(3)
windows(3)
https(3)
nat(3)
迁移(3)
arm64(3)
back(3)
count(3)
data(3)
int(3)
interface(3)
monitor(3)
panel(3)
set(3)
state(3)
变量(3)
服务(3)
排序(3)
前端(3)
设计(3)
事件(3)
索引(3)
统计(3)
文件系统(3)
硬件(3)
原理(3)
ios(2)
python(2)
bash(2)
css(2)
html(2)
嵌入式(2)
access(2)
jar(2)
搜索引擎(2)
消息队列 CMQ 版(2)
检测工具(2)
serverless(2)
爬虫(2)
opencv(2)
udp(2)
kvm(2)
大数据(2)
安全(2)
kafka(2)
sdk(2)
action(2)
add(2)
buffer(2)
byte(2)
class(2)
config(2)
controller(2)
display(2)
dto(2)
fifo(2)
gpio(2)
input(2)
iso(2)
ld(2)
limit(2)
lock(2)
malloc(2)
overlay(2)
pixel(2)
root(2)
shared(2)
spi(2)
status(2)
video(2)
编码(2)
编译器(2)
定时器(2)
后端(2)
基础(2)
链表(2)
连接(2)
命令行(2)
实践(2)
数组(2)
同步(2)
效率(2)
协议(2)
字符串(2)
负载均衡(1)
官方文档(1)
php(1)
actionscript(1)
.net(1)
scala(1)
jquery ui(1)
jquery(1)
ajax(1)
android studio(1)
listview(1)
composer(1)
memcached(1)
vba(1)
ubuntu(1)
bash 指令(1)
solaris(1)
深度学习(1)
批量计算(1)
访问管理(1)
NAT 网关(1)
SSL 证书(1)
文字识别(1)
视频处理(1)
图像处理(1)
数据备份(1)
vr 视频解决方案(1)
数据安全(1)
游戏(1)
分布式(1)
黑客(1)
jvm(1)
ssh(1)
正则表达式(1)
gui(1)
asp(1)
ftp(1)
jenkins(1)
iis(1)
socket编程(1)
ntp(1)
小程序(1)
机器人(1)
物联网(1)
安全漏洞(1)
虚拟化(1)
小程序·云开发(1)
amp(1)
app(1)
assert(1)
bat(1)
block(1)
bluetooth(1)
bootloader(1)
button(1)
channel(1)
char(1)
children(1)
crash(1)
default(1)
detect(1)
dp(1)
dpi(1)
dt(1)
dynamic(1)
elf(1)
equals(1)
error(1)
expression(1)
file(1)
filter(1)
google(1)
gpt(1)
handler(1)
header(1)
i2c(1)
include(1)
instance(1)
jni(1)
libc(1)
load(1)
loading(1)
local(1)
lookup(1)
ls(1)
map(1)
matplotlib(1)
message(1)
migrate(1)
mips(1)
mmap(1)
module(1)
mutex(1)
output(1)
parent(1)
path(1)
point(1)
port(1)
profile(1)
provider(1)
qemu(1)
report(1)
route(1)
samsung(1)
save(1)
screen(1)
selection(1)
self(1)
semaphore(1)
server(1)
simulator(1)
stack(1)
static(1)
stderr(1)
summary(1)
super(1)
swap(1)
system(1)
table(1)
target(1)
text(1)
tools(1)
transfer(1)
translation(1)
transparent(1)
trim(1)
txt(1)
view(1)
widget(1)
width(1)
x86(1)
备份(1)
编程(1)
布局(1)
测试(1)
程序设计(1)
多线程(1)
二进制(1)
翻译(1)
高性能(1)
后台(1)
加密解密(1)
监控(1)
开发者(1)
框架(1)
蓝牙(1)
漏洞(1)
内存泄漏(1)
权限(1)
日志(1)
软件(1)
软件架构(1)
软件开发(1)
手机(1)
树莓派(1)
算法(1)
通信(1)
网络(1)
芯片(1)
性能优化(1)
虚拟机(1)
学习笔记(1)
压缩(1)
异步(1)
异常处理(1)
语法(1)
源码(1)
原型(1)
状态机(1)
嵌入式系统(1)
搜索文章
搜索
搜索
关闭
linux性能工具--ftrace使用
kernel
命令行工具
node.js
Ftrace设计作为一个内部的tracer提供给系统的开发者和设计者,帮助他们弄清kernel正在发生的行为,它能够调式分析延迟和性能问题。对于前一章节,我们学习了Ftrace发展到现在已经不仅仅是作为一个function tracer了,它实际上成为了一个通用的trace工具的框架
233333
2022-09-23
1.5K
0
linux内核数据结构 红黑树
linux
kernel
node.js
编程算法
红黑树(Red-Black Tree,RBT)是一种平衡的二叉查找树,前面的红黑树原理与实现这篇文章中详细介绍了红黑树的细节。在Linux的内核源代码中已经给我们实现了一棵红黑树,我们可以方便地拿过来进行使用。本文将参考Linux内核的源码和文档资料,介绍Linux内核中红黑树的实现细节及使用方法。
233333
2021-12-22
1.4K
0
Apollo ROS原理(一)
node.js
ROS不关注各个节点是用什么语言来写的,只需要按照ROS提供的一些接口完成消息的订阅和分发,就可以完成一个消息的通信
233333
2021-09-27
1K
0
Fastbootd实现原理分析
flash
node.js
android
c++
c#
fastboot是一种用于Android设备上的刷机协议,便于系统开发者快速烧录系统。随着AOSP的发展,谷歌在Android Q版本引入了super动态分区功能,实现system、vendor和product等分区大小的灵活配置,避免了系统升级带来频繁修改分区表的问题。同时引入了手机端侧fastboot模式实现super分区的擦写,之前版本的fastboot刷写功能通常实现在bootloader模式(一般由SOC厂家提供原始实现),新引入的fastboot模式实现在recovery系统中集成了fastbootd二进制程序,在recovery系统中可复用系统的usb、网络等驱动,降低了开发难度,具有更好的可移植性(目前各个厂家的bootloader方案各有不同),一定程度降低了厂家的工作量。
233333
2021-07-29
2.4K
0
power supply是如何上报电池信息的
kernel
linux
node.js
编程算法
作为一个内核初学者,经常容易进入“知其然但不知其所以然”的状态,在power supply子系统中就是这样,知道如何去添加一个属性prop,知道psy可以创建一堆文件节点,也知道上层是通过读取这些节点来获取供电信息的,但对于其中的细节,便知之甚少。最近深究其中,才逐步发现内核的奥妙所在。
233333
2021-07-14
1.7K
0
AK47所向披靡,内存泄漏一网打尽
c++
node.js
青囊,喜欢运动T恤加皮裤的非典型程序猿。此时,他正目不转睛注视着屏幕上一行行的代码,内存泄漏这个问题已经让他茶饭不思两三天了,任凭偌大的雨滴捶打着窗户也无动于衷。就这么静悄悄地过了一会儿,突然间,他哼着熟悉的小曲,仿佛一切来的又那么轻松又惬意。
233333
2021-06-10
695
0
USB设备状态设置-- usb_gadget_set_state()
node.js
在USB 2.0协议中第 9.1 USB Device States 章节规定了USB设备的6种状态,包括:
233333
2021-01-30
2.2K
0
Linux ADF(Atomic Display Framework)浅析---概述
node.js
数据结构
因为工作关系,最近有涉及到ADF(Atomic Display Framework)相关的内容,部分内容来自互联网
233333
2020-07-20
1.7K
0
vmalloc函数
c++
arm
api
node.js
kmalloc、vmalloc和malloc这三个常用的API函数具有相当的分量,三者看上去很相似,但在实现上大有讲究。kmalloc基于slab分配器,slab缓冲区建立在一个连续的物理地址的大块内存之上,所以缓冲对象也是物理地址连续的。如果在内核中不需要连续的物理地址,而仅仅需要内核空间里连续的虚拟地址的内存块,该如何处理呢?这时vmalloc()就派上用场了。
233333
2020-07-07
1.2K
0
伙伴系统分配内存
tcp/ip
node.js
编程算法
内核中常用的分配物理内存页面的接口函数是alloc_pages(),用于分配一个或者多个连续的物理页面,分配页面个数只能是2个整数次幂。相比于多次分配离散的物理页面,分配连续的物理页面有利于提高系统内存的碎片化,内存碎片化是一个很让人头疼的问题。alloc_pages()函数有两个,一个是分配gfp_mask,另一个是分配阶数order。
233333
2020-05-25
1.7K
0
内存管理相关数据结构之pg_data_t
node.js
数据结构
若系统节点多余一个,则内核会维护一个位图用于提供每个节点的状态信息,状态信息为一个enum。定义如下:
233333
2020-04-13
785
0
直接内存回收中的等待队列
node.js
c++
编程算法
在直接内存回收过程中,有可能会造成当前需要分配内存的进程被加入一个等待队列,当整个node的空闲页数量满足要求时,由kswapd唤醒它重新获取内存。这个等待队列头就是node结点描述符pgdat中的pfmemalloc_wait。如果当前进程加入到了pgdat->pfmemalloc_wait这个等待队列中,那么进程就不会进行直接内存回收,而是由kswapd唤醒后直接进行内存分配。
233333
2020-04-13
1.6K
0
Linux内核的LED设备驱动框架【转】
node.js
/************************************************************************************
233333
2020-03-18
2.6K
0
Linux-3.14.12内存管理笔记【构建内存管理框架(3)】
node.js
此处接前文,分析free_area_init_nodes()函数最后部分,分析其末尾的循环:
233333
2019-10-08
866
0
Linux-3.14.12内存管理笔记【构建内存管理框架(2)】
node.js
kernel
编程算法
前面构建内存管理框架,已经将内存管理node节点设置完毕,接下来将是管理区和页面管理的构建。此处代码实现主要在于setup_arch()下的一处钩子:x86_init.paging.pagetable_init()。据前面分析可知x86_init结构体内该钩子实际上挂接的是native_pagetable_init()函数。
233333
2019-10-08
899
0
Linux-3.14.12内存管理笔记【伙伴管理算法(1)】
node.js
编程算法
前面分析了memblock算法、内核页表的建立、内存管理框架的构建,这些都是x86处理的setup_arch()函数里面初始化的,因地制宜,具有明显处理器的特征。而start_kernel()接下来的初始化则是linux通用的内存管理算法框架了。
233333
2019-10-08
788
0
Linux-3.14.12内存管理笔记【构建内存管理框架(5)】
node.js
编程算法
前面已经分析了内存管理框架的构建实现过程,有部分内容未完全呈现出来,这里主要做个补充。
233333
2019-10-08
641
0
Linux-3.14.12内存管理笔记【构建内存管理框架(1)】
node.js
编程算法
linux
数据结构
传统的计算机结构中,整个物理内存都是一条线上的,CPU访问整个内存空间所需要的时间都是相同的。这种内存结构被称之为UMA(Uniform Memory Architecture,一致存储结构)。但是随着计算机的发展,一些新型的服务器结构中,尤其是多CPU的情况下,物理内存空间的访问就难以控制所需的时间相同了。在多CPU的环境下,系统只有一条总线,有多个CPU都链接到上面,而且每个CPU都有自己本地的物理内存空间,但是也可以通过总线去访问别的CPU物理内存空间,同时也存在着一些多CPU都可以共同访问的公共物理内存空间。于是乎这就出现了一个新的情况,由于各种物理内存空间所处的位置不同,于是访问它们的时间长短也就各异,没法保证一致。对于这种情况的内存结构,被称之为NUMA(Non-Uniform Memory Architecture,非一致存储结构)。事实上也没有完全的UMA,比如常见的单CPU电脑,RAM、ROM等物理存储空间的访问时间并非一致的,只是纯粹对RAM而言,是UMA的。此外还有一种称之为MPP的结构(Massive Parallel Processing,大规模并行处理系统),是由多个SMP服务器通过一定的节点互联网络进行连接,协同工作,完成相同的任务。从外界使用者看来,它是一个服务器系统。
233333
2019-10-08
863
0
linux kernel内存碎片防治技术
kernel
node.js
从buddy申请内存页,如果找不到合适的页,则会进行两步调整内存的工作,compact和reclaim。前者是为了整合碎片,以得到更大的连续内存;后者是回收不一定必须占用内存的缓冲内存。这里重点了解comact,整个流程大致如下:
233333
2019-05-25
3K
0
图解slub
编程算法
node.js
c++
缓存
数据结构
在Linux中,伙伴系统(buddy system)是以页为单位管理和分配内存。但是现实的需求却以字节为单位,假如我们需要申请20Bytes,总不能分配一页吧!那岂不是严重浪费内存。那么该如何分配呢?slab分配器就应运而生了,专为小内存分配而生。slab分配器分配内存以Byte为单位。但是slab分配器并没有脱离伙伴系统,而是基于伙伴系统分配的大内存进一步细分成小内存分配。
233333
2019-05-25
1.2K
0
点击加载更多
社区活动
【纪录片】中国数据库前世今生
穿越半个世纪,探寻中国数据库50年的发展历程
立即查看
Python精品学习库
代码在线跑,知识轻松学
立即查看
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
立即体验
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
立即查看
领券
问题归档
专栏文章
快讯文章归档
关键词归档
开发者手册归档
开发者手册 Section 归档