自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 程序代码段为只读属性,为什么还有自修改代码?

参考链接:https://blog.yanhao.org/?p=271我们都知道编译器会把程序的代码放在.text段,即代码段。这段地址是只读的,系统在加载的时候会把相应的代码数据附上只读属性,这样当相对其修改的时候就会引发例外。但是系统提供了mprotect系统调用,它可以修改内存的属性,自修改代码就是利用它来实现的。下面看一下mprotect传入的参数: SYSCALL_DEFINE...

2019-09-11 16:42:01 2412 1

原创 虚拟化:gva、gpa、hva、hpa转化

gva -> gpa和hva -> hpa转化较为简单,分别去查guest和host页表即可。gpa -> hva:由于我所接触的虚拟化方式是采用qemu-kvm的方式。kvm负责cpu和内存的虚拟化,qemu负责io的虚拟化,且gpa->hva都是由qemu维护的,提供给kvm管理借口。具体代码实现见:kvm_pfn_t __gfn_to_pfn_memsl...

2019-09-06 14:28:08 7446 1

原创 内核怎么分配一段连续的内存区间

内核可以用kmalloc分配一段连续的内存空间,kmalloc的具体实现为:static __always_inline void *kmalloc(size_t size, gfp_t flags){ struct kmem_cache *cachep; void *ret; if (__builtin_constant_p(size)) { i...

2019-09-05 11:53:05 569

空空如也

空空如也

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

TA关注的人

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