【原】Linux内核面试题集锦

  1. 内核编程与在用户层编程有什么区别?
    1)内核编程时既不能访问C库也不能访问标准的C头文件。
    2)内核编程时必须使用GNU C。
    3)内核编程时缺乏像用户空间那样的内存保护机制。
    4)内核编程时难以执行浮点运算。
    5)内核给每个进程只有一个很小的定长堆栈。内核栈的大小一般是两页,意味着32位机的内核栈是8KB。
    6)由于内核支持异步中断、抢占和SMP,因此必须时刻注意同步和并发。
    7)要考虑可移植性的重要性。
  2. 什么是“写时拷贝”技术?
    写时拷贝是一种可以推迟甚至免除拷贝数据的技术,fork时内核并不复制整个进程地址空间,而是让父进程和子进程共享同一个拷贝。只有在需要写入的时候,数据才会被复制,从而使各个进程拥有各自的拷贝。
  3. kmalloc 和vmalloc的区别?
    vmalloc分配的内存虚拟地址是连续的,而物理地址则无须连续。kmalloc确保两个地址都是连续的。
原文地址:https://www.cnblogs.com/xmuliushuo/p/3296006.html