一、操作系统简介:
操作系统是管理计算机硬件与软件资源的程序,是计算机的基石;操作系统本质上是一个运行在计算机上的软件程序,用于管理计算机硬件和软件资源;操作系统存在屏蔽了硬件层的复杂性;操作系统的内核是操作系统的核心部分,它负责系统的内存管理、硬件设备的管理、文件系统的管理以及应用程序的管理。
1、内核
是操作系统的核心部分,它负责系统的内存管理,硬件设备的管理,文件系统的管理以及应用程序的管理;是连接应用程序和硬件的桥梁,决定着操作系统的性能和稳定性。
中央处理器:
为了保证操作系统的稳定性和安全性,一个进程的地址空间划分为用户空间和内核空间。
像我们平常运行的应用程序都是运行在用户空间,只有内核空间才能进行系统态级别的资源有关的操作,比如如文件管理、进程通信、内存管理等等。也就是说,我们想要进行 IO 操作,一定是要依赖内核空间的能力。并且,用户空间的程序不能直接访问内核空间。当想要执行 IO 操作时,由于没有执行这些操作的权限,只能发起系统调用请求操作系统帮忙完成。因此,用户进程想要执行 IO 操作的话,必须通过 系统调用 来间接访问内核空间。
2、系统调用:
根据进程访问资源的特定,进程在系统上的运行分为1、用户态:用户态运行的进程或可以直接读取用户程序的数据,2、系统态:系统态运行的进程或程序几乎可以访问计算机的任何资源,不受限制。
用户程序中,与系统态级别的资源有关的操作,都必须通过系统调用方式向操作系统提出服务请求,并由操作系统代为完成。主要有设备管理、文件管理、进程控制、进程通信、内存管理。
现代操作系统,内核一般会提供四个基本能力:
管理进程、线程,决定哪个进程、线程使用CPU,也就是进程调度的能力;
管理内存,决定内存的分配和回收,也就是内存管理的能力;
管理硬件设备,位进程和硬件设备之间提供通信能力,也就是硬件通信能力;
提供系统调用,如果应用程序要运行更高权限运行的服务,那么就需要有系统调用,它是用户程序与操作系统之间的接口。
内核的架构:
宏内核,包含多个模块,整个内核像一个完整的程序;
微内核,有一个最小版本的内核,一些模块和服务则由用户态管理;
混合内核,是宏内核和微内核的结合体,内核中抽象出了微内核的概念,也就是内核中会有一个小型的内核,其他模块就在这个基础上搭建,整个内核是个完整的程序。
二、内存管理
1、虚拟内存:
应用程序直接操作内存的物理地址,会产生冲突。
操作系统为每个进程分配独立的一套虚拟地址,将不同进程的虚拟地址和不同内存的物理地址映射起来。
我们程序所使用的内存地址叫做虚拟内存地址,实际存在硬件里的空间地址叫做物理地址。
进程持有的虚拟地址会通过CPU芯片中的内存管理单元(MMU)的映射关系,来转换成物理地址,然后再通过物理地址访问内存。
2、内存分段:
内存分页:
段页式内存管理:
Linux内存管理: