小编Sen*_*Sen的帖子

非抢占式、抢占式和选择性抢占式内核之间有什么区别?

“非抢占式”、“抢占式”和“选择性抢占式”内核之间有什么区别?

希望有人能对此有所了解。

linux kernel

21
推荐指数
1
解决办法
4万
查看次数

dmesg 中的虚拟内核内存布局意味着什么?

在浏览“dmesg 输出”时,我可以看到一个我无法正确理解的值列表。

Memory: 2047804k/2086248k available (3179k kernel code, 37232k reserved, 1935k data, 436k init, 1176944k highmem)
virtual kernel memory layout:
    fixmap  : 0xffc57000 - 0xfffff000   (3744 kB)
    pkmap   : 0xff800000 - 0xffa00000   (2048 kB)
    vmalloc : 0xf7ffe000 - 0xff7fe000   ( 120 MB)
    lowmem  : 0xc0000000 - 0xf77fe000   ( 887 MB)
      .init : 0xc0906000 - 0xc0973000   ( 436 kB)
      .data : 0xc071ae6a - 0xc08feb78   (1935 kB)
      .text : 0xc0400000 - 0xc071ae6a   (3179 kB)
Run Code Online (Sandbox Code Playgroud)

从值中我了解到我有 2GB RAM(物理内存)。但其余的事情对我来说似乎是魔术数字。

我想简要了解每个(fixmap、pkmap 等)(如果有更多疑问,我会将每个作为单独的问题发布)?

有人可以向我解释一下吗?

linux kernel memory

20
推荐指数
1
解决办法
2万
查看次数

Linux 中的库调用和系统调用有什么区别?

我想知道 Linux 中的库调用和系统调用有什么区别。任何能够很好地理解两者背后的概念的指针将不胜感激。

linux libraries system-calls

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

fork() 和 vfork() 有什么区别?

我想详细了解 fork() 和 vfork() 之间的区别。我无法完全消化手册页。

我还要澄清一下我的一位同事评论“在当前的 Linux 中,没有 vfork(),即使你调用它,它也会在内部调用 fork()”

linux system-calls fork

13
推荐指数
1
解决办法
1万
查看次数

为什么 vfork 或 fork 的孩子应该调用 _exit() 而不是 exit()?

从手册页vfork()

vfork() 与 fork() 的不同之处在于父进程被挂起,直到子进程调用 execve(2) 或 _exit(2)。子进程与其父进程共享所有内存,包括堆栈,直到子进程发出 execve()。子进程不能从当前函数返回或调用 exit(),但可以调用 _exit()。

为什么孩子应该使用 an_exit()而不是简单地调用exit()?我希望这适用于vfork()fork()

c system-calls fork exit

13
推荐指数
1
解决办法
8069
查看次数

内核中可能调用和不太可能调用的区别是什么?

内核中可能调用和不太可能调用之间的区别是什么。在搜索内核源代码时,我发现了这些语句。

# define likely(x)      __builtin_expect(!!(x), 1)
# define unlikely(x)    __builtin_expect(!!(x), 0)
Run Code Online (Sandbox Code Playgroud)

有人可以解释一下吗?

linux kernel

11
推荐指数
1
解决办法
8434
查看次数

Ramdisk 和 initrd 是一样的吗?

在阅读ramfs-rootfs-initramfs.txt 中关于 ramdisk 的内核文档时, 我有一个疑问,就像 ramdisk 解释的那样,那里与the-difference-between-initrd-and-initramfs 上的帖子中描述的 initrd 功能相同。

有人可以澄清我吗?

如果它是相同的,我读到它有很多缺点,但仍然在我的 Fedora PC 中,我看到

initrd-2.6.29.4-167.fc11.i686.PAE.img

在我的启动文件夹中。和上面提到的initrd有区别吗??

UPDATE_EDIT :
文章中我什至看到一个命令
# update-initramfs -u all
update-initramfs: Generating /boot/initrd.img-2.6.18-5-amd64

那么这个 initramfs 是如何链接到 initrd.img 的呢?

linux boot initrd

10
推荐指数
1
解决办法
3922
查看次数

是否可以在不支持虚拟内存的情况下支持多个进程?

是否可以在不支持虚拟内存的情况下支持多个进程?如果是这样,我想了解更多。

process memory

8
推荐指数
1
解决办法
2138
查看次数

是否可以在堆空间中执行代码?

我想知道我是否可以执行位于堆空间内的代码片段?

linux memory dynamic-linking

8
推荐指数
1
解决办法
5722
查看次数

struct thread_info 定位struct task_struct 需要什么?

在阅读 Linux 设备驱动程序时,我可以理解进程描述符(类型struct task_struct)包含有关特定任务的所有信息。进程描述符由slab分配器动态分配。

我想知道的是需要引入一个称为thread_info存储在堆栈底部的新结构(假设为 x86)。为什么这样做?

为什么不能将当前正在执行的任务地址 ( struct task_struct)的地址放入内核堆栈?

linux process c kernel multithreading

8
推荐指数
2
解决办法
5612
查看次数