理解Linux内核最好预备的知识点
Linux内核的特点
Linux内核的任务
内核的组成部分
哪些地方用到了内核机制?
Linux进程
Linux创建新进程的机制
Linux线程
内核线程
地址空间与特权级别
虚拟地址与物理地址
特权级别(Linux的两种状态)
系统调用
设备驱动程序、块设备和字符设备
网络
文件系统
模块和热插拔
注:本文为《深入Linux内核架构》%20的学习笔记
理解Linux内核最好预备的知识点:
Linux内核的特点:
结合了unix操作系统的一些基础概念
Linux内核的任务:
1.从技术层面讲,内核是硬件与软件之间的一个中间层。作用是将应用层序的请求传递给硬件,并充当底层驱动程序,对系统中的各种设备和组件进行寻址。
2.从应用程序的层面讲,应用程序与硬件没有联系,只与内核有联系,内核是应用程序知道的层次中的最底层。在实际工作中内核抽象了相关细节。
轻量级进程和普通进程的区别在于:前者没有独立的用户空间(内核态线程无用户空间,用户态线程共享用户空间)linux命令,而普通进程有独立的内存空间。可用共享磁盘网格会显示可用磁盘的列表、每个磁盘是否可用作共享磁盘以及每个磁盘资源的说明。cmd\输入net%20config%20server%20可以显示不能配置的下服务器计算机名\服务器注释%20\服务器版本服务器处于活动状态%20\服务器处于隐藏状态最大登录用户数每个会话打开文件的最大数空闲会话时间chkdsk.exe磁盘检查.chkdsk%20/r%202000命令控制台中的chkdsk%20/r命令检查修复系统文件cleanmgr%20垃圾整理clipbrd%20剪贴板查看器c:boot.ini打开启动菜单compact.exe%20显示或改变ntfs分区上文件的压缩状态conime.exeime控制台control.exe控制面板convert.exe%20ntfs%20转换文件系统到ntfsconvlog.exe%20转换Ⅱs日志文件格式到ncsa格式cprofile.exe%20转换显示模式cscript.exe较本宿主版本csrss.exe客户服务器runtime进程csvde.exe%20格式转换程序dcpromo活动目录安装drwtsn32%20系统医生diskmgmt.msc磁盘管理器dxdiag%20检查directx信息dcomcnfg.exedcom配置属性dcpromo.exe%20安装向导ddeshare.exe%20dde共享debug.exe%20检查debugdfrgfat.exefat分区磁盘碎片整理程序dfrgntfs.exentfs分区磁盘碎片整理程序名称服务器的信息。
4.内核就像一个库,提供了一组面向系统的命令。系统调用对于应用程序来说,就像调用普通函数一样。
内核实现策略:
1.微内核。最基本的功能由中央内核(微内核)实现。所有其他的功能都委托给一些独立进程,这些进程通过明确定义的通信接口与中心内核通信。
2.宏内核。内核的所有代码,包括子系统(如内存管理、文件管理、设备驱动程序)都打包到一个文件中。内核中的每一个函数都可以访问到内核中所有其他部分。目前支持模块的动态装卸(裁剪)。Linux内核就是基于这个策略实现的。
内核的组成部分:
1.用户空间(在“地址空间与特权级别”小节会详细介绍):
应用程序:
C库
2.内核空间(在“地址空间与特权级别”小节会详细介绍):
核心内核
设备驱动程序
硬件
详细可参考图1
特点:
1.不与任何特定的用户空间进程相关联。
2.与中断上下文运转的内核相比,内核线程可以进入睡眠状态,也可以像系统中的普通进程一样被调度器跟踪。
用途:
1.从内存和块设备之间的数据同步。
2.帮助调度器在CPU上分配进程。
如何查看内核线程:
命令:ps fax 方括号内的就是内核线程。
地址空间与特权级别
在正式介绍之前先介绍几个单位:
KiB 2^10字节
MiB 2^20
GiB 2^30
虚拟地址与物理地址:
虚拟地址:在计算机的专用术语中是指标识一个虚拟(非物理地址)的实体地址。
称存储字存储单元:存放一个存储字的若干个记忆单元组成一个存储单元存储体:大量存储单元的集合组成存储体存储单元地址:存储单元的编号字编址:对存储单元按字编址字节编址:对存储单元按字节编址寻址:由地址寻找数据。在计算机的组成结构中,有一个很重要的部分,就是存储器.存储器是用来存储程序和数据的部件,对于计算机来说,有了存储器,才有记忆功能,才能保证正常工作.存储器的种类很多,按其用途可分为主存储器和辅助存储器,主存储器又称内存储器(简称内存),辅助存储器又称外存储器(简称外存).外存通常是磁性介质或光盘,像硬盘,软盘,磁带,cd等,能长期保存信息,并且不依赖于电来保存信息,但是由机械部件带动,速度与cpu相比就显得慢的多.内存指的就是主板上的存储部件,是cpu直接与之沟通,并用其存储数据的部件,存放当前正在使用的(即执行中)的数据和程序,它的物理实质就是一组或多组具备数据输入输出和数据存储功能的集成电路,内存只用于暂时存放程序和数据,一旦关闭电源或发生断电,其中的程序和数据就会丢失.。小段:字数据的高字节存储在高地址中,而字数据的低字节则存放 在低地址中。
映射关系:
用页表为物理地址分配虚拟地址
注意:未必虚拟地址的所有页都映射到某个页帧。
原因:
1.页没有内存可以使用
2.数据尚不需要使用而没有载入内存。
3.页已经换出硬盘,需要时再换回内存。
页帧:物理内存页
页:专指虚拟地址空间中的页。
页表:将虚拟地址空间映射到物理地址空间的数据结构。
多级分页:建立虚拟地址到物理地址映射的一种方法,能有效减少内存用量。
CPU加速内存的访问过程,方法:
1.MMU(Memory Management Unit)内存管理单元