内核

linux是否可以升级内核?

左心房为你撑大大i 提交于 2019-12-03 02:21:31
如果之前已经部署了软件和应用就需要慎重,因为升级可能导致不支持老硬件,有些编译安装的软件需要重新编译 如果是全新安装的系统,可以yum update 你也可以跳过内核升级(大概30M左右),yum update --exclude=kernel* 如果升级了内核,会在同版本系列升级,比如centos 6.5 升级后变成centos 6.7(6系列最新的内核),但不会升级成centos 7 来源: oschina 链接: https://my.oschina.net/u/107233/blog/658250

Linux 内核的文件 Cache 管理机制介绍

不打扰是莪最后的温柔 提交于 2019-12-03 01:53:04
1 前言 自从诞生以来,Linux 就被不断完善和普及,目前它已经成为主流通用操作系统之一,使用得非常广泛,它与 Windows、UNIX 一起占据了操作系统领域几乎所有的市场份额。特别是在高性能计算领域,Linux 已经成为一个占主导地位的操作系统,在2005年6月全球TOP500 计算机中,有 301 台部署的是 Linux 操作系统。因此,研究和使用 Linux 已经成为开发者的不可回避的问题了。 下面我们介绍一下 Linux 内核中文件 Cache 管理的机制。本文以 2.6 系列内核为基准,主要讲述工作原理、数据结构和算法,不涉及具体代码。 2 操作系统和文件 Cache 管理 操作系统是计算机上最重要的系统软件,它负责管理各种物理资源,并向应用程序提供各种抽象接口以便其使用这些物理资源。从应用程序的角度看,操作系统提供了一个统一的虚拟机,在该虚拟机中没有各种机器的具体细节,只有进程、文件、地址空间以及进程间通信等逻辑概念。这种抽象虚拟机使得应用程序的开发变得相对容易:开发者只需与虚拟机中的各种逻辑对象交互,而不需要了解各种机器的具体细节。此外,这些抽象的逻辑对象使得操作系统能够很容易隔离并保护各个应用程序。 对于存储设备上的数据,操作系统向应用程序提供的逻辑概念就是"文件"。应用程序要存储或访问数据时,只需读或者写"文件"的一维地址空间即可

内核模块编程之模块工具的使用及区别

自作多情 提交于 2019-12-02 06:36:48
[摘要]:本文主要介绍了在内核模块中,如何使用模块工具加载模块驱动、卸载模块驱动、显示已经加载的内核模块信息,以及如何通过模块工具查看内核模块之间的依赖关系、以及如何查看模块的附加信息。并讲解了insmod和modprobe的区别以及rmmod和modprobe的区别。 一..insmod 1.功能: 用来加载内核模块。 2.使用方法: insmod module_name.ko 如果模块不在当前目录,需要给出模块的具体路径名: insmod /home/jibo/helloworld/helloworld.ko 二.modprobe 1.功能: 主要用来装载内核模块到运行的内核中,也可以结合参数执行一些其它功能。 2.使用方法: modprobe module_name 直接跟内核模块名,不用加具体的路径信息。 note:insmod和modprobe又有什么相同点和不同点呢。 (1)相同点: 在Linux中,modprobe和insmod都可以用来加载module。 (2)区别: 1>依赖关系 modprobe可以解决load modue时的依赖关系,比如load moduleA就必须先load moduleB之类的,它是通过/lib/modules/<kernel-version>/modules.dep文件来查找依赖关系的,该依赖文件是通过depmod生成的

如何下载并编译Android 4.0内核源码Goldfish

為{幸葍}努か 提交于 2019-12-02 03:25:39
下面进入正题: 第一步:下载goldfish源码 在Android源码根目录下新建kernel文件夹 $mkdir kernel $cd kernel 下载源码: $git clone http://android.googlesource.com/kernel/goldfish.git 下载完毕如下图: 此时在kernel目录下会生成一个goldfish文件夹。进入此目录: cd goldfish 此目录下有一个隐藏的目录.git,通过 ls -al 可看到此目录: 查看所有分支: git branch -a 如下图: check out: git checkout remotes/origin/android-goldfish-2.6.29 此时你会看到goldfish目录下会出现很多文件: ls 这个时候goldfish源码就已经下下来了,接下来的事情就是编译了. 第二步:编译goldfish 导出交叉编译工具目录到$PATH环境变量中去. export PATH=$PATH:/uslocalandroidsource/bin/WORKING_DIRECTORY/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin 我们将使用上述这个目录下的交叉编译器 arm-eabi- gcc

Linux内存管理(x86-32位系统)

北慕城南 提交于 2019-12-01 17:12:46
linux内存的管理主要分为两部分,地址管理和存储设备管理。下面针对这两部分介绍一下我对内存管理的理解。 硬件地址的基本概念 DRAM域地址:是DRAM控制器所能访问的地址空间集合。 PCI总线域地址:是PCI设备所能直接访问的地址空间集合。 存储器域地址:是CPU所能访问的地址空间集合。 结合下图对上面概念进行解释: CPU访问DRAM域或PCI总线域地址空间时,都需要进行地址转换(将存储器域地址转换为相应域的地址)。例如:CPU访问DRAM域时,需要进行存储器域地址空间到DRAM域地址空间的转换(由DRAM控制器完成);CPU访问PCI总线域时,需要进行存储器域地址空间到PCI总线域地址空间的转换(由HOST主桥完成)。 在x86处理器系统中,会将DRAM域和PCI总线域映射到存储器域空间中,并且其大多数DRAM域中的地址与存储器域中的地址一一对应而且相等,而存储器域的PCI地址与PCI总线域的地址也一一对应而且相等。它们在存储器域空间的映射彼此独立,互不冲突,映射关系由BIOS提供(e820地址映射表)。 PCI设备访问DRAM域地址空间时,首先要经过HOST主桥将PCI总线域地址转换为存储器域地址,然后再由DRAM控制器将存储器域地址转换为DRAM域地址。 软件地址的基本概念 逻辑地址 ,是一个32位长的地址。所有进程地址都使用逻辑地址。 线性地址(也称为虚拟地址)

Ubuntu11.10下编译android内核源码

萝らか妹 提交于 2019-12-01 15:58:26
在之前的文章中,为读者介绍了 《Ubuntu Linux下android源码下载方法》 、 《Ubuntu11.10下配置android的Eclipse开发环境》 、 配置过程中遇到的一些问题 ,以及 《Ubuntu11.10下android源码4.0.3的编译方法》 。本文继续为读者介绍Ubuntu11.10下android内核的编译方法。 编译android源码时并不会自动编译android内核,因此需要手动编译这部分代码。编译内核所用的时间比编译android源码要少得多,只需一会就编译完成。 1、确定内核版本 进入存放android内核源码的kernel目录,我下载了common.git与goldfish.git,以goldfish为例,进入goldfish目录,在命令行输入以下命令,显示所有分支及当前所在的分支: $git bransh -a 输出结果如下: * master remotes/origin/HEAD -> origin/master remotes/origin/android-goldfish-2.6.29 remotes/origin/master 输入以下命令选择当前的最新版本(goldfish为android的模拟器描述的CPU): $git checkout -b android-goldfish-2.6.29 origin/android