0%

本文首先介绍了Linux内核中解决并发问题的意义和思路,然后介绍了Linux内核中提供的多种同步机制的原理和使用。

阅读全文 »

引子

本篇文章是作者阅读《庖丁解牛Linux内核分析》一书中的第七章————“可执行程序的工作原理”的读书笔记,这篇文章要解决的两个问题是:

  • 一个.c源代码文件是如何编译成可执行文件的?
  • 当我们在shell中执行一个可执行程序时,发生了什么?

为了解决这两个问题,本文首先介绍了ELF文件格式,其次完整地概括了程序的编译过程,最后总结了可执行程序在Linux中的装载过程。

阅读全文 »

很基本的汇编语法基础,在学习linux kernel的过程中经常会出现一些汇编代码,特在此记录一些基础用法,以便查阅。

本文主要总结了以下几个部分的知识:

  1. 为了理解汇编语句而需要了解的CPU寄存器;
  2. 简单汇编语句的语法规则;
  3. 函数调用在汇编层面的实现以及如何实现的函数调用堆栈;
  4. C语言中嵌入式汇编代码的基本语法
阅读全文 »

本文是笔者读《深入理解操作系统》的虚拟内存部分的读书笔记。本文总结了书中提到的虚拟内存的这几个方面:

  1. 虚拟内存的作用;
  2. 引入虚拟内存后,地址翻译的过程
  3. TLB和cache的结合使用
  4. 多级页表的引入
  5. Linux中虚拟内存的组织方式
  6. 内存映射和共享对象/私有对象
阅读全文 »

简介

本文总结了《KVM实战:原理、进阶与性能调优》一书中的KVM原理简介部分,这一部分主要介绍了KVM虚拟化的基本原理,从硬件到软件、从底层到上层都做了一些介绍,包括:硬件虚拟化技术简介、KVM软件架构概况、KVM内核模块、QEMU用户态设备模拟、与KVM结合的vhost-net等组件、KVM的管理工具等。由于KVM是基于硬件辅助的虚拟化软件,故在第一节又分别介绍了CPU虚拟化、内存虚拟化、I/O虚拟化以及Intel 的虚拟化技术发展情况,以帮助读者理解虚拟化原理。

如果你想:

  1. 大概了解KVM虚拟化的基本原理;
  2. 大致了解KVM和QEMU是如何配合工作的;
  3. 在当今的云计算场景下,有哪些和KVM配合使用的工具;

那么相信此文会对您有所帮助!:)

为了更好地明白此文,您需要对以下知识需要有了解:

  1. 虚拟内存;
阅读全文 »

什么是钩子函数?

钩子函数也叫回调函数,是通过函数指针来实现的,那我们来看看什么是函数指针。

首先看看以下例子:

1
2
3
4
5
int *p;
int a,b;
//我们可以让指针p先后指向a, b,这样,p就先后代表了不同变量的地址
p = &a;
p = &b;
阅读全文 »

SSM(Spring、SpringMVC、MyBatis)

整合步骤

  1. Mybatis配置文件的编写和相关实体类的引入
  2. 编写Spring MVC配置文件
    1. 配置扫描控制器
    2. 定义视图解析器
    3. 两个标准配置
  3. 编写Spring配置文件
    1. 配置组件扫描,过滤控制器
    2. 配置数据源
    3. 整合Mybatis
      1. 目的:(1)Spring管理所有组件,mapper的实现类;(2)Spring来管理事务
      2. 结果:mybatis-config.xml的大部分功能被替代了
    4. 引入事务管理器
阅读全文 »

1. 编译内核

1.1 配置选项

不同的架构有不同的默认文件,比如x86平台,可以在arch/x86/configs找到相关文件:

1
2
3
4
5
6
7
# junyu @ junyu in ~/Documents/linux/arch/x86/configs on git:136057256686 o [15:56:45] 
$ ll
total 24K
-rw-rw-r-- 1 junyu junyu 5.9K 11月 30 14:24 i386_defconfig #32位系统
-rw-rw-r-- 1 junyu junyu 147 11月 30 14:24 tiny.config
-rw-rw-r-- 1 junyu junyu 5.8K 11月 30 14:24 x86_64_defconfig #64位系统
-rw-rw-r-- 1 junyu junyu 744 11月 30 14:24 xen.config
阅读全文 »