linux-内核概述学习笔记

内核控制着计算机上的所有硬件和软件,必要时分配硬件,有需要时执行软件。
内核基本负责四项主要功能:
(1)系统内存管理
内核不仅管理服务器上的可用物理内存,还可以创建和管理虚拟内存。

内核通过硬盘上的存储空间实现虚拟内存,硬盘上的这块存储空间区域称为交换空间(swap space),内核不断的在交换空间和实际的物理内存之间
反复交换虚拟内存存储单元中的内容,这使得系统以为它拥有比物理内存更多的内存。

内存存储单元会被按组分成很多块,这些块称作页面(page),内核会将每个内存页面放在物理空间或者交换空间。然后内核会维护一个内存页面表,
来指明哪些页面位于物理内存内,哪些页面被换到磁盘上,即交换空间。

内核会记录哪些内存页面正在使用中,并自动把一段时间未访问的页面复制到交换空间区域(称为换出swapping out),即使还有可用内存。当程序
要访问一个已被换出的内存页面时,内核必须从物理内存中换出另外一个内存页面来给它让出空间,然后从交换空间换入(swapping in)请求的内存
页面。这个过程要花费时间,并使得运行中的进程变慢。只要Linux在运行,此过程就不会停歇。

查看当前虚拟内存状态:cat /proc/meminfo

默认情况下,运行在Linux系统上的每个进程都有各自的内存页面,进程不能访问其他进程正在使用的内存页面。内核维护着它自己的内存区域。出于
安全考虑,用户进程不能访问内核进程使用的内存。

用户可以创建一些共享的内存页面,由内核负责维护和管理。

(2)软件程序管理
Linux称在其上运行的程序为进程。内核控制着Linux系统如何管理运行在系统上的所有进程。

内核创建第一个进程(称init进程)来启动系统上的所有其他进程。内核启动时,会将init进程加载到虚拟内存中。内核在启动其他任何进程时,都
会在虚拟内存中给新进程分配一块专有区域来存储进程用到的数据和代码。

一些Linux发行版使用一个表来管理系统开机时要自动启动的进程,这个表通常位于/etc/inittab中。

另外一些系统如Ubuntu则采用/etc/init.d目录,将开机时启动或者停止某个应用的脚本放在这个目录下,这些脚本通过/ect/rcX.d目录下的入口启动。
这里X表示运行级(run level)。

Linux系统的Init系统采用了运行级,运行级决定了init进程运行/etc/inittab文件或者.etc/rcX.d目录中定义好的某些特定类型的进程。Linux系统有
五个运行级:
运行级为1时,只有基本的系统进程会启动,同时会启动叭一一个控制台终端进程。我们称之为单用户模式。单用户模式通常用来在系统有问题时进行紧
急的文件系统维护。显然,在这种模式下仅有一个人(通常是管理员)能登录到系统上操作数据。

标准的启动运行级为3,在这个运行级上,大多数应用软件,比如网络支持程序,都 会启动。另一个常见的Linux运行级是5,在这个运行级上系统会启动
图形化的X window系统,同时允许用户通过图形化桌面窗口登录系统。

(3)硬件设备管理
内核的另一职责是管理硬件设备。任何Linux系统需要与之通信的设备,都需要在内核代码中加入其驱动代码。

Linux系统将硬件设备当成特殊的文件,称为设备文件,设备文件下有3种分类:
(1)字符型设备文件:是指处理数据时每次只能处理一个字符的设备对应的文件。大多数类型的调制解调器和终端都是作为字符型设备文件创建的。
(2)块设备文件:是指处理数据时每次能处理大块数据的设备,比如硬盘。
(3)网络设备文件:是指采用数据包发送和接收数据的设备。包括各种网卡和一个特殊的回环设备。这个回环设备允许Linux系统使用通用的网络编程协
议同自己通信。

Linux为系统上的每个设备都创建一种特殊的文件。称为节点。与设备的所有通信都是通过设备节点完成的。每一个节点都有惟一的数值对,供Linux内核
标识他。数值对包括一个主设备号和一个次设备号。类似的设备划到同一主设备号下。次设备号用来标识同一主设备号下的某个特殊设备。

(4)文件系统管理
不同于一些其他文件系统,Linux内核支持多种不同类型的文件系统来从硬盘中读取或者写入数据。除了自身的诸多文件系统外,Linux还支持从其他操作
系统(如windows)所采用的文件系统中读取或者写入数据。内核必须在编译时就加入对所有可能用到的文件系统的支持。

Linux内核采用虚拟文件系统(Virtual File System,VFS)作为和每个文件系统交互的接口。这为Linux内核同任何类型文件通信提供了一个标准接口,当
每个文件系统被挂载和使用时,VFS将信息都缓存到内存中。

你可能感兴趣的:(linux学习)