Linux Kernel
迷糊的佳佳
这个作者很懒,什么都没留下…
展开
-
进程地址空间
进程的地址空间由允许进程使用的全部线性地址组成。每个进程所看到的线性地址集合是不同的,一个进程所使用的地址空间与另外一个进程所使用的地址之间没有什么关系。与进程地址空间有关的全部信息都包含在一个叫做内存描述符(memory descriptor)的数据结构中,这个结构的类型为mm_struct,进程描述符的mm字段就指向这个结构。内核线程仅运行在内核态,因此,它们永远不会访问低于TAS原创 2013-01-23 13:39:42 · 599 阅读 · 0 评论 -
linux系统启动(bootstrap)流程
一、BIOS1.POST(Power-On Self-Test)2.初始化硬件设备3.搜索一个操作系统来启动4.只要找到一个有效的设备,就把第一个扇区的内容拷贝到RAM中从物理地址0x00007c00开始的位置,然后跳转到这个地址处,开始执行刚刚装载进来的代码。二、Boot Loader:引导装入程序boot loader是由BIOS用来把操作系统的内核映像装载到R原创 2013-01-21 18:03:54 · 6168 阅读 · 1 评论 -
虚拟文件系统(VFS)
虚拟文件系统所隐含的思想是把表示很多不同种类文件系统的共同信息放入内核;其中有一个字段或函数来支持Linux所支持的所有实际文件系统所提供的任何操作。虚拟文件系统(Virtual Filesystem)也可以称之为虚拟文件系统转换(Virtual Filesystem Switch,VFS),是一个内核软件层,用来处理与Unix标准文件系统相关的所有系统调用。VFS支持的文原创 2013-01-21 18:37:27 · 648 阅读 · 0 评论 -
可重入内核
所有的Unix内核都是可重入的(reentrant),这意味着若干个进程可以同时在内核态下执行。提供可重入的一种方式是编写函数,以便这些函数只能修改局部变量,而不能改变全局数据结构,这样的函数叫做可重入函数。但是可重入内核不仅仅局限于这样的可重入函数,相反,可重入内核可以包含非重入函数,并且利用锁机制保证一次只有一个进程执行一个非重入函数原创 2013-01-21 21:10:58 · 539 阅读 · 0 评论 -
内核内存分配器(Kernel Memory Allocator, KMA)
内核内存分配器(Kernel Memory Allocator, KMA)是一个子系统,试图满足系统中所有部分对内存的请求。基于各种不同的算法技术,已经提出了几种KMA,包括:资源图分配算法2的幂次方空闲链表McKusick-Karels分配算法伙伴(Buddy)系统Mach的区域(Zone)分配算法Dynix分配算法Solaris的Slab分配算法slab分配原创 2013-01-22 17:07:59 · 1169 阅读 · 0 评论 -
硬链接和软链接(hard link&soft link)
包含在目录中的文件名就是一个文件的硬链接(hard link),或简称链接(link)。硬链接有一下两方面的限制:1.不允许用户给目录创建硬链接。因为这可能把目录树变为环形图,从而就不可能通过名字定为一个文件。2.只有在同一个系统中的文件之间才能创建链接。这带来比较大的限制,因为现代Unix系统可能包含了多种文件系统,这些文件系统位于不同的磁盘和/或分区,用户也许无法知道它们之原创 2013-01-21 20:52:52 · 1321 阅读 · 0 评论 -
linux kernel map 2.6
原创 2013-01-21 19:33:59 · 499 阅读 · 0 评论 -
initrd(Initial RAM Disk)
在GRUB加载kernel时,kernel会先在内存中制造一个rootfs当做临时的空间供系统使用,接下来,kernel便会将initrd当做是一个系统,将其mount到rootfs上启动。initrd一般使用文件名为/boot/initrd, 能够通过boot loader来加载到内存中,然后这个文件会被解压缩并且在内存当中仿真成一个根目录,且此仿真在内存当中的文件系统能够提供一个可执行的程原创 2013-01-21 18:21:17 · 778 阅读 · 0 评论 -
系统调用(system call)与应用程序接口(API)
系统调用(system call):通过软件中断向内核态发出一个明确的请求应用程序接口(API):只是一个函数定义,说明了如何获得一个给定的服务系统调用属于内核,而用户态的库函数不属于内核,当用户态的进程调用一个系统调用时,CPU切换到内核态并开始执行一个内核函数。系统调用处理程序执行下列操作:1.在内核态栈保持大多数寄存器的内容2.调用名为系统调用服务例程的相应的C函数来处理原创 2013-01-23 16:33:37 · 6699 阅读 · 0 评论 -
Linux slab 分配器剖析
转载:http://www.ibm.com/developerworks/cn/linux/l-linux-slab-allocator/动态内存管理内存管理的目标是提供一种方法,为实现各种目的而在各个用户之间实现内存共享。内存管理方法应该实现以下两个功能:最小化管理内存所需的时间最大化用于一般应用的可用内存(最小化管理开销)内存管理实际上是一种关于权衡的零转载 2013-01-23 15:44:20 · 532 阅读 · 0 评论 -
Linux进程地址空间的一步步探究
转载:http://soft.chinabyte.com/os/51/12324551.shtml我们知道,在32位机器上linux操作系统中的进程的地址空间大小是4G,其中0-3G是用户空间,3G-4G是内核空间。其实,这个4G的地址空间是不存在的,也就是我们所说的虚拟内存空间。 那虚拟内存空间是什么呢,它与实际物理内存空间又是怎样对应的呢,为什么有了虚拟内存技术,我们就能转载 2013-01-23 15:05:18 · 491 阅读 · 0 评论 -
unix文件类型
unix文件可以是下列类型之一:普通文件(regular file)目录符号链接面向块的设备文件面向字符的设备文件管道(pipe)和命名管道(named pipe)套接字(socket)原创 2013-01-21 21:03:58 · 585 阅读 · 0 评论