小编not*_*esh的帖子

如何从命令行写入 dmesg?

我想给 dmesg 写一份声明。我怎样才能做到这一点?

linux command-line logs kernel dmesg

62
推荐指数
2
解决办法
5万
查看次数

两个相同的虚拟地址怎么会指向不同的物理地址呢?

在 Linux 中调用 fork() 之后,两个进程(一个是另一个的子进程)将共享分配的堆内存。这些分配的页面被标记为 COW(写时复制),并且将保持共享状态,直到任一进程修改它们。此时,它们被复制,但引用它们的虚拟地址指针保持不变。MMU(内存管理单元)如何区分两者呢?考虑以下:

  1. 进程A启动
  2. 进程A分配了一个内存页,由虚拟地址0x1234指向
  3. 进程A fork()s,生成进程B
  4. 进程A和B现在共享虚拟地址0x1234,指向相同的物理内存位置
  5. 进程B修改其0x1234内存页
  6. 该内存页被复制然后修改
  7. 进程A和B都有虚拟地址0x1234,但这指向不同的物理内存地址

这如何区分呢?

linux memory hardware fork

5
推荐指数
1
解决办法
4065
查看次数

标签 统计

linux ×2

command-line ×1

dmesg ×1

fork ×1

hardware ×1

kernel ×1

logs ×1

memory ×1