1.内核的任务
内核:充当底层的驱动程序,应用程序只与内核有联系,内核是应用程序的所知道的层次结构中最底层的,也是资源管理程序,也是一种库,提供了一组面向系统的命令。
2.实现策略
微内核(中央内核)
宏内核(构建系统内核的传统方法)
3.内核的组成部分
用户空间:应用程序,C库,系统调用。
内核空间:核心内核与设备驱动程序,硬件
4.进程,进程切换与调度
各个进程都在CPU的虚拟内存中分配地址空间,互相并不干涉。
两个创建进程的机制:fork()函数与exec( )函数。
fork()函数:可以创建当前进程的一个副本。将内存复制操作延迟到父进程或子进程向某个内存页面写入数据之前,在只读访问的情况下父进程可以共用一个内存页。
例如(浏览器窗口的打开)
exec()函数:将一个新程序加载到当前进程的内存中打开执行,旧程序的内存页将刷出,其内容将替换为新的数据,开始新的进程。
5.线程
进程并不是内核支持的唯一一种程序执行进程,有重量级进程和线程两种,与主程序并行运行的程序函数或例程。
Linux中用CLone方法创建线程,类似于Fork,但是启用了精确的检查,来确认哪些资源与父进程共享,哪些资源为线程所独立创建。这种细粒度的资源分配扩展了一搬的线程概念,在一定的程度上允许线程与进程的连续转换。
6.命名空间
传统的Linux使用许多全局量,例如进程ID。系统中的每一个进程都有一个唯一标识符(ID)启用命名空间之后,以前的全局资源现在具有不同分组。每组命名空间可以包含一个特定的PID集合。
例如:虚拟主机供应商利用容器的命名空间来建立系统的多个示图。从容器内部看来这是一个完整的Linux系统。
7.地址空间
空间地址的最大长度与实际可用的物理内存数量无关。因此被称为虚拟地址空间,从系统中每个进程的角度来看,地址空间中只有自身一个进程而无法感知到其他进程的存在。
Linux将虚拟地址空间划分为两部分,分别称为内核空间和用户空间。
版权声明:本文为博主原创文章,未经博主允许不得转载。