自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 资源 (8)
  • 收藏
  • 关注

原创 linux内存管理-页面回收
原力计划

页面回收Q1:那些页面可以被回收在页面申请的时候会将可回收的页加入到zone的active_list/inactive_list链表,并更新zone的NR_ACTIVE,NR_INACTIVE的数据do_wp_pageinstall_arg_pagedo_anonymous_pagedo_no_page页面回收的时候有两部分:LRU维护的页面,slab,其中slab中只回收注册了shrinker的slab,通常是dcache,icache,nfs,xfs,mbcache的slab,shrink

2020-05-31 18:42:13 87

翻译 linux bootmem memblock的演进

有人可能认为在系统启动的时候内存的分配应该非常容易:基本上所有的内存都是可用的,不需要考虑并发性。尽管如此,boot阶段的内存管理仍然不是一个简单的任务。物理内存不一定是连续的,系统之间他们的分布更是有很大的不同,如何检测内存的布局就不是一个简单的任务。在NUMA的机器上这件事情更加复杂,在内存分配的时候还需要考虑在当前节点上分配,构建内存的拓扑图。为了应对这些问题,在启动过程中的早期阶段需要一些复杂的机制来进行内存管理工作。有人会问,为什么不一开始就使用buddy这些系统来管理呢?因为linux的页分配

2020-05-30 01:41:33 106

原创 反汇编二进制代码

最近又做了一些内核hook的工作,繁琐的地方在于二进制指令的可读性上,下面简要记录dump出指令二进制,之后利用binutils来转成可读的汇编代码.hook的主要流程参考之前的linux内核态hook模块-splice,主要就是构建一个trampoline的代码区域,主要的工作就是操作堆栈,返回地址,还有修复跳转地址.不聊这么复杂的东西,回归主题,dump指令很简单,将指令按照16进制打印出来,4个字节一组void dump(void *buf, int len) { int i = 0;

2020-05-22 17:40:51 403

原创 linux内存-x86-64页表初始化
原力计划

x86-64的地址空间x86-64的页表初始化

2020-05-22 00:44:50 289

原创 linux为什么限制用户栈空间的大小
原力计划

coding的时候为什么不建议申请太大的临时变量,例如下面得这样的用法:int fun() { char buf[8192]; ...}我们通过ulimit -a看到系统对当前进程的栈size进行了限制,大部分是8M1.内核中对于每个线程的内核栈进行了限制,一般是8kb,它在栈底部放置了thread_info信息,当栈越界的时候就会乱写thread_info信息,基本上就会触发内核崩溃.为什么栈不放的大一点?每个线程的内核栈在创建线程的时候就已经实际分配了,一个线程就算什么也不做,它也占据了

2020-05-21 00:15:42 302 3

原创 浅析linux内存管理

CPU能够看到虚拟地址,MMU能够看到物理地址虚拟地址是指针,而物理地址是整数?CPU如何访问内存地址?MMU根据页表进行转换地址转换,还进行权限管理TLB进行页表缓存权限:进行内存保护,读写执行和用户/内核权限page fault是CPU提供的机制,地址不可访问就是在页表中不存在,权限不对其中这个权限是用户和内核空间模型的基础,用户坚决访问不了内核空间MPU:内存权限管理物理地...

2020-05-18 20:22:23 344

原创 linux内存中的page,pte,alloc_page的flag
原力计划

内核中关于内存的这几个flag容易混淆,他们的功能相互关联,下面简要总结一下他们的区别,其中的重要flag的用途页表项的flag:使用页表项的有两个:CPU和MMU,MMU的功能有两个,将虚拟地址转换为物理地址,检查访问权限是否合法,它是arch完全相关的page的flag:page是物理地址空间管理的元数据,它是纯粹的软件概念,基本是通用的alloc_page的flag:根据物理内存的稀有程序,它受到区别对待分成了ZONE_DMA,ZONE_DMA32,ZONE_NORMAL,ZONE_HIGH;而

2020-05-17 23:53:11 346

原创 linux fork COW机制分析

1.整体设计2.拷贝时3.使用时按需分配

2020-05-12 01:01:26 296

原创 linux内存管理-per cpu数据管理

per-CPU是2.6内核中引入的,它是一种典型的空间换时间的方案,通过为每个处理器都分配自己的内存区间来避免并发问题, 访问per-CPU变量几乎不需要锁,只需要微不足道的原子操作.每个处理器都在其自己的副本上工作,这些副本是如何生成的呢?静态分配的per-CPU结构设计分为两个阶段:编译阶段和运行时阶段在编译阶段,实际上只生成了一个CPU原本。系统中所有per-CPU结构都放到了一个叫做data.percpu的section中,在ld.S链接脚本有如下内容:__per_cpu_load =

2020-05-11 18:18:07 69

原创 linux内存管理-永久映射,临时映射,固定映射

1.永久映射的作用1.1 永久映射和vmalloc有什么不同2.实现原理3.使用场景

2020-05-09 18:28:42 397

原创 copy_from_user copy_to_user的权限控制

在linux中核心的一个概念就是特权级别,用户地址空间使用ring 0,内核地址空间使用ring 3,内核空间管理系统中所有的资源和设备,应用只能通过系统调用陷入到内核空间向其发出请求,由内核来代为完成对硬件资源的操作。另外一个是内核不能随意访问用户空间的数据,这里传达了两个信息:内核可以访问用户空间,内核只能通过特定的api完成对用户空间数据的访问。虽然在页表项中有标志位记录当前的ring 状...

2020-05-07 17:37:43 112

Android应用程序开发宝典

Android应用程序开发指南 飞凌嵌入式 让嵌入式开发融入移动互联时代 TE/OK6410

2012-03-01

人体感应智能开关的设计方法

只是一个关于人体感应智能开关的设计方法,说的比较笼统但是思想已经表达出来了

2011-09-05

51单片机串行口讲解

51单片机的串行口实例讲解,主要是一个例子,适合初学者观看

2011-08-27

无线通信原理概述()

无线通信原理的概述,主要讲解了无限电方面的基础知识

2011-07-23

MAX232单片机的c语言程序,适合初学者

这是一个描述关于c语言的串口通信的单片机程序,适合初学者,了解每一步的过程

2011-07-17

matlab命令大全集

这里是好多的matlab命令概括,不懂的可以下载下来每日记住,打印出来更好

2011-04-09

详细的关于1602的资料

这是一个关于液晶显示屏1602的资料,有引脚和内存分配

2011-08-04

74hc138的英文资料

这是一个关于我们常用的74hc138芯片的英文资料,

2011-08-04

空空如也

空空如也

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

TA关注的人 TA的粉丝

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