Linux内核知识个人小结

时间:2021-11-20 03:47:52

利用国庆假期复习了linux内核方面是知识,内核知识博大精深,因为时间较紧,来不及全面的复习,只是片面的挑自己认为是重点的复习。其中针对可能面试会被提问的方面,自己也做了一定的总结,记了一些笔记,在博客中分享。希望有错误或者不全面的地方大家能够指正(如果有人看的话。。科科)

1、linux系统的组成:
linux系统分为用户空间(user space)和内核空间(kernel space)。其中用户空间有用户程序(user app)和函数库(C library)组成,内核空间有系统调用(system call interface),内核(kernel 狭义上的内核),设备代码组成。

2、如何从用户空间进入内核空间:
1)系统调用
2)硬件中断

3、内核的组成(子系统):
1)系统调用(SCI):为用户空间提供接口
2)进程管理(PM):进程创建删除,进程调度,进程间通信
3)内存管理(MM):地址转换(虚拟地址),内存分配
4)Arch:CPU体系代码
5)设备驱动程序(DD)
6)网络协议栈(Network Stack)
7)虚拟文件系统(VFS)

4、为什么要进行bootloader移植:
1)芯片级:CPU体系架构的不同
2)板级:不同开发板硬件配置的不同

5、进程的特点:
1)用一段可执行程序
2)有专用的内核空间堆栈
3)用task_struct结构,即PCB,进程控制块(process control block)
4)用独立的用户空间

6、进程,线程的区别
从操作系统原理说,进程是资源分配的最小单位,线程是调度的最小单位。
从内存管理角度,进程有独立的用户空间,而同进程的线程的用户空间是共享的,内核线程没有用户空间

7、字符设备和块设备的区别
字符设备以字节流为单位访问硬件,只能顺序读取,如键盘,串口。
块设备以块数据为最小单位访问,块大小为512字节或其整数倍,支持随机访问。
在linux中,块设备访问单位允许为任意大小,区别仅仅为内核的和驱动的接口不同。

8、中断的机制
linux中断机制分上下两部分,上部分运行中断处理程序,当系统接收到一个中断发生信号,上半部分立即执行,在其运行过程中,cpu会禁止其他中断,所以上半部分的中断处理程序要求是必要的并且能短时完成,如对硬件复位,对中断发生进行应答。对实时性要求不是很高的工作可以在下半部完成。
下半部分实现的机制包括软中断,tasklet,工作队列。
软中断不能睡眠,不能阻塞,运行在中断上下文,不能被进程切换,不可以被自己打断,只能被硬件中断打断(软中断运行过程中不会执行任何进程)。
tasklet基于软中断
工作队列可以睡眠和阻塞,运行在进程上下文,,能够在进程间切换(运行在内核空间,不可以访问用户空间)

9、创建进程的系统调用,及其工作原理
fork()创建的子进程复制父进程的资源,同时运用了写时复制技术,子进程和父进程共用一个物理页,当子进程被写时,子进程复制这个物理页到新的物理页,由此可见,子进程和父进程的内存地址是分开的,各自独立运行。
vfork()是在父进程的地址上创建子进程,子进程对虚拟地址内任何的修改,对父进程都是可见的,并且会被父进程继承,为了防止父进程重写子进程的数据,在子进程运行过程中,父进程被阻塞,直到子进程运行结束。
clone()可以有选择性的复制父进程的资源,其余的资源则和父进程共享,可以用来创建用户线程。

先写这么多,明天继续