自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 linux内存管理——虚拟地址转换为物理地址实战

当然上面的分析中有一个问题,我们是通过pgd的虚拟地址来读取内存的,而其它的pud、pmd、pte等都是通过物理地址来读取内存,pgd的虚拟地址对应的物理地址该怎么计算呢,很明显它是一个内核空间的虚拟地址,通过init_mm.pgd(即swapper_pg_dir)按照上面的方法可以找到物理地址,然后init_mm.pgd也是个虚拟地址,它的物理地址又怎么得到呢,有可能是内核初始化的早期通过固定映射的方式将虚拟地址和物理地址关联起来(后面再看看相关代码吧)。说明字符串a的虚拟地址是0x402004。

2024-01-11 13:34:31 871

原创 linux scsi子系统 ----相关数据结构在内存中的联系

bus_subsys_private和class_subsys_private指的都是内核中的subsys_private,但为了区分所以分开表示。简单记录,不是标准类图,只是为了将相关数据结构联系起来。首先是基本的设备——总线——驱动模型。接下来是scsi相关数据结构的关系。下图截取自《存储技术原理》下图截取自《存储技术原理》

2024-01-03 17:00:09 419

原创 linux内存管理----伙伴系统初始化

内核:X86 openeuler4.19内存大小3G,采用的是sparse vmemmap内存模型,相关config如下。

2023-12-12 15:52:33 1127

原创 linux zram

使用zram的第一步是加载zram模块:modprobe zram(可通过添加num_devices参数指定zram设备的数量,默认一个zram0)。

2023-11-19 16:41:46 233

原创 linux cgroup (4)----attach task

当向一个cgroup目录的tasks节点写入一个pid时,调用该cftype对应的write方法cgroup1_tasks_write,该方法找到pid对应的struct task,将其作为参数调用cgroup_attach_task.

2023-11-05 16:55:01 131

原创 linux cgroup (3)----mkdir

通过这个流程可以看出来,cgroup树的层级关系由cgroup_subsys_state维护,每个cgroup包含一个css用于维护这个树,另外还有数个css,其由对应子系统的css_alloc函数分配,其ss指向对应的子系统。子系统的css_alloc函数会分配一个各子系统对应的cgroup结构(如mem_cgroup、blkcg等),其第一个成员就是一个css结构。

2023-11-05 13:13:36 46

原创 linux cgroup (2)----mount

cgroup的mount首先创建一个cgroup_root,然后将指定子系统从源cgroup_root迁移到新创建的cgroup_root。

2023-11-05 12:23:02 89

原创 linux cgroup (1)----初始化

init_css_set 和init_cgroup(cgrp_dfl_root->cgrp)的subsys数组前三项被填充,因为cpuset cpu cpuacct三个子系统在这个阶段需要初始化经过cgroup_init后,各个子系统被初始化,init_css_set 和cgrp_dfl_root->cgrp的subsys数组被填充,两者之间通过一个cgrp_cset_link建立连接。此时系统中仅有一个cgroup_root: cgrp_dfl_root。

2023-11-04 22:00:35 115

原创 linux cgroup (0) ----cgroup子系统

内核定义的cgroup子系统在include/linux/cgroup_subsys.h中声明,可通过全局变量cgroup_subsys数组访问。包括cpuset、 cpu、 cpuacct、 io、 memory、 devices、 freezer、 net_cls、 perf_event、 net_prio、 hugetlb、 pids、 rdma、 debug。由宏控制是否启用IS_ENABLEDIS_ENABLEDIS_ENABLEDIS_ENABLEDIS_ENABLED。

2023-11-04 21:59:03 58

原创 linux基础

Linux基础知识

2023-05-13 00:26:27 104 2

原创 Device Mapper

将虚拟块设备的逻辑范围分段进行映射,将一段范围按照特定的规则映射到低层设备。

2023-05-02 23:15:12 319

原创 linux IO

arm64 kernel5.0一、数据结构一)generic block layergendiskstruct gendisk { /* major, first_minor and minors are input parameters only, * don't use directly. Use disk_devt() and disk_max_parts(). */ int major; /* major number of driver */ int first_min

2023-04-20 14:24:09 255

原创 linux内存回收流程

简单介绍5.0的内存回收流程

2023-02-27 09:15:02 843

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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