内核:有的时候被称管理者或者操作系统核心,通常内核负责响应中断的中断服务程序, 负责管理多个进程从而分享处理器时间的调度程序,负责管理进程地址空间德内存管理程序 和网络,进程间通信等系统服务程序共同组成.…
Linux内核设计与实现  读书笔记: http://www.cnblogs.com/wang_yb/tag/linux-kernel/ <深入理解LINUX内存管理> http://blog.csdn.net/yrj/article/category/718110 Linux内存管理和性能学习笔记(一) :内存测量与堆内存  第一篇 内存的测量 2.1. 系统当前可用内存 # cat /proc/meminfoMemTotal:        8063544 kBMemFree:      …
内核简介  本篇简单介绍内核相关的基本概念. 主要内容: 单内核和微内核 内核版本号 1. 单内核和微内核   原理 优势 劣势 单内核 整个内核都在一个大内核地址空间上运行. 1. 简单.2. 高效:所有内核都在一个大的地址空间上,所以内核各个功能之间的调用和调用函数类似,几乎没有性能开销. 一个功能的崩溃会导致整个内核无法使用. 微内核 内核按功能被划分成各个独立的过程.每个过程独立的运行在自己的地址空间上. 1. 安全:内核的各种服务独立运行,一种服务挂了不会影响其他服务. 内核各个服务之…
模块 1.概念:  如果让LINUX Kernel单独运行在一个保护区域,那么LINUX Kernel就成为了“单内核”.    LINUX Kernel是组件模式的,所谓组件模式是指:LINUX Kernel在运行时,允许“代码”动态的插入或者移出Kernel.    所谓模块是指:相关的一些子程序,数据.入口点和出口点共同组合成的一个单一的二进制映像,也就是一个可装载的Kernel目标文件.    模块的支持,使得系统可以拥有一个最小的内核映像,并且通过模块的方式支持一些可选的特征和驱动程序…
第三章 进程管理 1. fork系统调用从内核返回两次: 一次返回到子进程,一次返回到父进程 2. task_struct结构是用slab分配器分配的,2.6以前的是放在内核栈的栈底的:所有进程的task_struct连在一起组成了一个双向链表 3. 2.6内核的内核栈底放的是thread_info结构,其中有指向task_struct的指针: 4. current宏可以找到当前进程的task_struct:X86是通过先找到thread_info结构,而PPC是有专门的寄存器存当前task_s…
内核里的内存分配不像其他地方分配内存那么容易,内核的内存分配不能简单便捷的使用,分配机制也不能太复杂. 一.页 内核把页作为内存管理的基本单位,尽管处理器最小寻址坑是是字或者字节.但是内存管理单元MMU通常以页为单位进行处理. 从虚拟内存的角度来看,页就是最小单位.大多数32位系统支持4KB的页,而64位系统结构一般会支持8KB的页. 内核用struct page结构表示系统中每个物理页,在<linux/mm_types.h>中 struct page { unsigned long flag…
第十七章 设备与模块 关于设备驱动和设备管理,四种内核成分 设备类型:在所有unix系统中为了统一普通设备的操作所采用的分类 模块:Linux内核中用于按需加载和卸载目标代码的机制 内核对象:内核数据结构中支持面向对象的简单操作,还支持维护对象之间的父子关系 sysfs:系统中设备树的一个文件系统 17.1 设备类型 块设备 可寻址的,寻址以块为单位,块的大小随设备的不同而不同.块设备通常支持重定位操作,也就是对数据的随机访问 字符设备 不可寻址,仅提供数据的流式访问,就是一个个字符或字节.与块…
一.Linux内核相对于传统的UNIX内核的比較: (1):Linux支持动态内核模块. 虽然Linux内核也是总体式结构,但是同意在须要的时候动态哦卸除(rmmod xxx)和载入内核模块(insmod  xxx.ko). (2):Linux支持对称多处理(SMP)机制,虽然很多UNIX的变体也支持SMP.可是传统的UNIX并不支持这样的机制. (3):Linux内核能够抢占(preemptive).在Linux 2.4以及曾经的版本号都是不支持内核抢占的.在Linux 2.6以及以后就支持了…
一.原子操作 原子操作可以保证指令以原子的方式执行----执行过程不被打断. 1.1 原子整数操作 针对整数的原子操作只能对atomic_t类型的数据进行处理. 首先,让原子函数只接收atomic_t类型的操作数,可以确保原子操作只与这种特殊类型数据一起使用,并且不会被其他人使用. 使用atomic_t类型确保编译器不对,相应的值进行访问优化. 在不同体系结构上实现原子操作的时候,使用atomic_t可以屏蔽其间的差异 atomic_t类型定义在文件<linux/types.h> 中 type…
中断和中断处理 处理器的速度跟外围硬件设备的速度往往不再一个数量级上,因此,如果内核采取让处理器向硬件发出一个请求. 然后专门等待回应的办法,如果专门等待回应,明显太慢.所以等待期间可以处理其他事务,等待完成了请求操作后,再回来进行处理. 所以内核提供了一种机制,让内核在需要的时候再向内核发出信号.这就是中断机制. 一.中断 硬件中断可以随时产生,因此,内核随时可能因为新到来的中断而被打断. 不同的设备对应的中断不同,而每个中断都通过一个唯一的数字标志. 这些中断值通常被称为中断请求(IRQ)线…