内核的功能
linux操作系统的层面分为用户层、内核层(两个子系统:文件系统和进程系统)、物理层。这里主要学习内核层。
内核对操作系统的管理,分为四个管理方面:内存管理、进程管理、文件管理、设备管理。
内存管理
内存管理分为四个部分:分别为内存分配调用、内存保护、地址映射、内存扩充。
- 内存分配
内存分配有两种方式:静态分配和动态分配。
所谓的动态分配是指在程序运行的过程中,对内存的分配或者回收。
- 内存保护
主要是为了使多个程序运行时,内存之间互不干扰。
内存保护的两种方法:使用界线寄存器或存储保护键(具体不清楚)
- 地址映射
由于多道系统下,程序的逻辑地址和内存的物理地址不可能一致,所以需要提供地址映射,实现程序的逻辑地址和内存的物理地址之间的映射功能。
- 内存扩充
从逻辑上扩充物理内存。以允许比物理内存更大的程序在机器内运行。(机器必须拥有请求调入功能和置换功能)
进程管理
进程管理又分为四个部分,分别是进程控制、进程协调、进程通信、进程调度。
- 进程控制
内核对进程的控制可以分为四个部分:进程创建、进程撤销、进程阻塞、进程唤醒。
- 进程协调
由于多个进程运行的时候具有异步性。多个进程同时运行的时候,内核需要协调进程的运行,协调进程运行的两种方式分别是进程互斥方式和进程同步方式
进程互斥方式,主要是进程在访问临界资源时,需要协调进程互斥访问。
进程同步方式,在多个进程相互合作完成一个任务的时候,由进程同步机制对它们的执行顺序加以协调。
- 进程通信
主要是完成同一台机器上不同进程之间的通信或者不同机器上进程之间的通信。
- 进程调度
操作系统按照一定规则对等待的多道程序进行调度,以保证每个程序有机会得到运行,并且最终完成。
文件管理
内核在非结构化的硬件之上,建立了一个结构化的文件系统。
文件管理分为三个部分:文件存储空间的管理,目录管理,文件的读/写管理和存取控制。
- 文件的内存空间管理
为了提高外部存储空间的利用率给每一个文件都分配必要的外存(外部存储空间),系统设置了相应的数据结构,用于记录文件存储空间的使用情况。
- 目录管理
为了方便文件管理,文件系统建立了目录结构。
- 文件读/写和存储控制
利用一定的系统调用对文件进行读写操作。
存储控制功能:为了防止文件被非法窃取或访问,文件系统提供了有效的存储控制功能。
设备管理
操作系统的功能最终要映射到物理设备上,这个时候需要考虑对设备方面的相关管理功能,设备管理分为:缓存管理、设备分配、设备处理。初此之外,设备的管理要保证设备的独立性和虚拟设备。
- 缓存管理
管理各类的缓冲区。比如字符缓冲区和快缓冲区,以缓和cpu和I/O设备的速度不匹配的矛盾,最终达到提高cpu和I/O设备的利用率,进一步提高系统的吞吐量。
- 设备分配
内核根据用户的I/O请求,为用户分配其所需的设备。
- 设备处理
几乎驱动每一个物理设备都需要特定的代码,这些代码称为驱动程序。
利用设备驱动程序实现cpu和设备控制器之间的通信。
- 设备独立性和虚拟设备
为了能够实现多个程序并发使用同一个物理设备,以及用户的程序独立于物理设备,需要设备驱动程序来实现cpu和设备控制器之间的通信。