linux内核管理
一 linux组成:kernel、库、rootfs、程序
1、kernel的功能:
1) kernel提供的功能都通过系统调用给用户接口
2) kernel包括:进程管理 、内存管理 、网络管理 、驱动程序、安全管理 、文件系统
![](https://images2018.cnblogs.com/blog/1270435/201803/1270435-20180325190346133-2031164482.jpg)
2、库
函数功能模块集合,调用接口是二进制程序,要想运行,必须别其他程序调用,即其他程序面向硬件的一个中间层,有两种情形
1)过程调用(procedure)无返回值
2)函数调用(function ):有返回值
3、rootfs
linux一切皆文件,除了一级文件外,其他文件需要挂载至根文件系统
4、程序
1)、开机过程
开机 -->内核运行 --> 内核加载根文件系统 -->运行根文件系统上的第一个应用程序init
init:它是负责后面的总的应用程序的启动回收等,启动可能需要向内核申请,这一切都在用户空间运行,如果init程序终止了,则用户空间的所有程序终止
2)、配置文件
让程序按照我们需要的方式一直运行下去
二 运行中分为二层系统环境
1)用户空间:应用程序
2)内核空间:系统调用时会运行
三 内核程序设计流派
内核也是应用程序,内核具有许多功能,那么是将这些功能全都整合到内核中,还是各功能独立成子系统,是内核设计流派不同的主要原因。
![](https://images2018.cnblogs.com/blog/1270435/201803/1270435-20180325190346526-1539876526.jpg)
注:linux在一步步的发展中吸取了微内核的设计经验,虽然是单内核,但是兼具微内核的特性。
linux通过使用模块化内核设计来兼具微内核特性,但这样的模块化设化设计并不是像微内核一样是各个子系统,而是由核心加外围的功能性模块组成内核。而微内核子系统都是各自独立运行的,不需要依赖其他部分就能工作。而linux各模块必须依赖核心,在使用时进行装载,不用时被动态卸载。linux下的模块外在表现为类型程序的库文件,只是程序库文件后缀名为.so,而内核模块后缀名为.ko(kernel object),被内核调用。
四 linux操作系统中内核特点
支持模块化
linux内核会将其各部分功能模块化,这使得在安装linux内核时,可以仅保持最基本的内核和功能,不过内核中模块数量会变多。linux内核中的.ko(kernel object)文件就是可以被内核调用的内核模块。
做以下假设:驱动是内核提供的,编译好一个内核之后,在装在主机上,在未来添加新的硬件设备没有新的驱动的话。是重新编译一次内核?这种设计是一件反人类的设计啊,因此引入了模块设计。
模块化设计得以避免这种情况,故各大厂商可以通过模块化的形式开发自己的驱动,只需针对某一特定设备开发自己驱动程序即可,在编译驱动模块。由于linux支持动态装载和卸载模块,因此当我需要和不需要某一功能时,可自行拆卸,此操作并不影响核心的正常运行。
五 linux内核的组成部分
1、内核核心文件
/boot/vmlinuz-VERSION-release
VERSION :内核版本,release:rpm包的发行号,不是必要的
2、ramdisk(内存盘)
CentOS 5:/boot/initrd-VERSION-release.img
CentOS 6,7:/boot/initramfs-VERSION-release.img
当系统完成内核的加载之后,内核要加载根文件系统以启动用户空间,但是根文件系统是在某个硬件设备之上,内核需要某驱动程序来装载根文件系统,但是驱动程序的文件又存在某目录之下,也就是存在根文件系统之下(鸡和蛋的问题)
内核有两种解决方案:
方案一:将驱动程序编译进内核,但是因为不知道用户要装载哪种根文件系统,会导致内核变复杂
方案二:借助一个外部设备来生成驱动根文件系统的驱动程序,ramdisk就是这样一个文件,它把内存当做一个磁盘来使用,将硬盘设备装载至内核,伪根文件系统仅仅存有驱动根文件系统所在硬件设备的文件,它随着内核被装载至内存也装载进内存,它和内核在同一个目录之下,所以内核完成启动初始化后,就来加载这个文件中的各种驱动程序,这个文件不是提前制作后的,而是内核被加载之后动态生成的,以相对应的生成对应硬件设备的驱动程序文件。它仅仅是辅助装载驱动,装载完成之后进行根切换,把临时的这个为根文件系统切换为真正的根文件系统
3、功能模块文件
/lib/modules/VERSION-release
#查看内核核心文件
[root@Centos5 ~]# ls /boot
config-2.6.18-398.el5 grub initrd-2.6.18-398.el5.img lost+found message symvers-2.6.18-398.el5.gz System.map-2.6.18-398.el5 vmlinuz-2.6.18-398.el5
vmlinuz-2.6.18-398.el5 内核核心文件
#查看内核模块文件
[root@Centos5 ~]# ls /lib/modules/2.6.18-398.el5/
build modules.dep modules.pcimap updates
extra modules.ieee1394map modules.seriomap weak-updates
kernel modules.inputmap modules.symbols
modules.alias modules.isapnpmap modules.usbmap
modules.ccwmap modules.ofmap source
linux内核管理的更多相关文章
- Linux 内核管理
Linux内核基础:Linux Kernel: Linux内核的体积结构是单内核的,但充分借鉴了微内核设计体系的优点,为内核引入模块化机制,使得虽然是单内核,但工作在模块化的方式下,并且模块可以动态 ...
- Linux内核管理子系统和进程管理子系统
内核管理子系统职能:1.管理虚拟地址与物理地址的映射 2.物理内存的分配 程序:存放在磁盘上的一系列代码和数据的可执行映像,是一个静止的实体. 进程:是一个执行中的程序,它是动态的实体 进程四要素: ...
- 二十七、Linux内核管理
内核组成: uname命令 内核:uname,mkinitrd,dracut 模块: lsmod,modinfo,depmod,modprobe,insmod,rmmod /proc,sysctl,/ ...
- Linux 内核管理类
一个类由一个 struct class 的实例来定义: struct class { char *name; struct class_attribute *class_attrs; struct c ...
- linux内核--内存管理(二)
一.进程与内存 所有进程(执行的程序)都必须占用一定数量的内存,它或是用来存放从磁盘载入的程序代码,或是存放取自用户输入的数据等等.不过进程对这些内存的管理方式因内存用途不一而不尽相同,有些内 ...
- 初探Linux内核中的内存管理
Linux内核设计与实现之内存管理的读书笔记 初探Linux内核管理 内核本身不像用户空间那样奢侈的使用内存; 内核不支持简单快捷的内存分配机制, 用户空间支持? 这种简单快捷的内存分配机制是什么呢? ...
- Linux内存管理 【转】
转自:http://blog.chinaunix.net/uid-25909619-id-4491368.html Linux内存管理 摘要:本章首先以应用程序开发者的角度审视Linux的进程内存管理 ...
- 2018-2019-1 20189215 《Linux内核原理与分析》第七周作业
<庖丁解牛>第六章书本知识总结 操作系统内个实现操作系统的三大管理功能:进程管理.内存管理.文件系统.分别对应<操作系统原理>中最重要的3个抽象概念是进程.虚拟内存和文件. L ...
- linux物理内存管理
1.为什么需要连续的物理内存: Linux内核管理物理内存是通过分页机制实现的,它将整个内存划分成无数个4k(在i386体系结构中)大小的页,从而分配和回收内存的基本单位便是内存页了.利用分页管理有助 ...
随机推荐
- 3.3.5 DMA写时发生Cache命中的优化
在许多高性能处理器中,还提出了一些新的概念,以加速外设到存储器的DMA写过程.如Freescale的I/O Stashing和Intel的IOAT技术. 如图3?8所示,当设备进行存储器写时,如果可以 ...
- 关于编译FFMPEG的初级教程
首先我们要下载相关工具,这里不多说,大家按照我的地址去下载文件就好了 MINGW下载地址:http://prdownloads.sourceforge.net/mingw/MinGW-3.1.0-1. ...
- Linux显示PCI设备
Linux显示PCI设备 youhaidong@youhaidong-ThinkPad-Edge-E545:~$ lspci -tv -[0000:00]-+-00.0 Advanced Micro ...
- org.hibernate.MappingException
1.错误描述 org.springframework.beans.factory.BeanCreationException:Error creating bean with name 'sessio ...
- 芝麻HTTP:Appium的安装
Appium是移动端的自动化测试工具,类似于前面所说的Selenium,利用它可以驱动Android.iOS等设备完成自动化测试,比如模拟点击.滑动.输入等操作,其官方网站为:http://appiu ...
- 芝麻HTTP:Python爬虫利器之Xpath语法与lxml库的用法
安装 pip install lxml 利用 pip 安装即可 XPath语法 XPath 是一门在 XML 文档中查找信息的语言.XPath 可用来在 XML 文档中对元素和属性进行遍历.XPat ...
- python爬虫--爬取某网站电影下载地址
前言:因为自己还是python世界的一名小学生,还有很多路要走,所以本文以目的为向导,达到目的即可,对于那些我自己都没弄懂的原理,不做去做过多解释,以免误人子弟,大家可以网上搜索. 友情提示:本代码用 ...
- 经典面试问题: Top K 之 ---- 海量数据找出现次数最多或,不重复的。
作者:林冠宏 / 指尖下的幽灵 掘金:https://juejin.im/user/587f0dfe128fe100570ce2d8 博客:http://www.cnblogs.com/linguan ...
- Jmeter_从jdbc请求的响应中获取参数做关联
在之前的文章-参数关联中,留个一个小尾巴,这里补充一下 http://www.cnblogs.com/Zfc-Cjk/p/8295495.html 1:从sql表中将需要取的数据查出来 2:我们需要把 ...
- 【HDU4622】Reincarnation(后缀自动机)
[HDU4622]Reincarnation(后缀自动机) 题面 Vjudge 题意:给定一个串,每次询问l~r组成的子串的不同子串个数 题解 看到字符串的大小很小 而询问数太多 所以我们预处理任意的 ...