Linux操作系统底层的学习

一.简述

1.内核

定义:在纯技术层面上,内核是硬件与软件之间的一个中间层。作用是将应用程序的请求传递给硬件,冰充当底层驱动程序,对系统中的各种设备和组件进行寻址。

实现策略上,有两种主要的范型:

(1) 微内核:只实现最基本的功能,其他功能委托给一些独立进程,这些进程通过明确定义的通信接口与中心内核通信。

(2) 宏内核:与微内核相反,所有代码和子系统都打包到一个文件中,每个函数都可以访问内核中所有其他部分。

内核的组成部分:

image-20251002211509470

2.进程与线程

定义:UNIX系统中运行的应用程序,服务器以及其他程序都成为进程

linux中,用fork创建进程(进程和父进程一样,但是却是一个个独立的个体,各自的地址空间是独立的,资源相同,开销较大),用clone创建线程(线程则是相当于一个个小分身,但是却共享同一个资源,开销较少)

image-20251002212336030

3.地址空间

一般用页表来为物理地址分配虚拟地址,虚拟地址关系到进程的用户空间和内核空间,而物理地址则用来寻址实际可用的内存。

这两个进程的虚拟地址空间,都被内核分成很多等长的部分,这些部分被称为页,物理内存也划分为同样大小的页

image-20251002213712761

物理内存页经常称作页帧,页则指虚拟地址空间


页表:用来将虚拟地址空间映射到物理地址空间的数据结构称为页表