linux内核
tiger_future
这个作者很懒,什么都没留下…
展开
-
进程0和进程1
进程0和进程1 所有进程的祖先叫做进程0,idle进程或者swapper进程,它是在Linux的初始化阶段从无到有的创建的内核进程(该进程描述符使用的是静态分配的数据结构,其他进程都是动态分配的)。 进程0调用start_kernel()函数初始化内核需要的所有数据结构,激活中断,创建一个进程1 的内核进程(init进程),进程0和进程1 共享每进程的所有内核数据结构。 多处理器中,每个CPU原创 2016-09-18 19:36:50 · 3736 阅读 · 0 评论 -
进程切换小结
linux与任何分时系统一样,通过一个进程到另一个进程的切换,达到表面上多个进程同时执行的神奇效果。然而进程之间是如何切换的,并且怎样去决定切换进程。主要谈谈进程切换和进程调度算法:相关知识:进程链表 在多处理器中,每个CPU都有自己的对应的进程描述符双向链表。进程链表的头是指向init_task 描述符(进程0或者swapper进程)。linux将每个CPU下对应的可运行链表原创 2016-09-19 11:27:13 · 2150 阅读 · 0 评论 -
调度策略
*linux 调度*基于分时技术:多个进程以时间多路复用方式运行,CPU时间被分成了很多片。分时依赖于定时中断。 在linux中,进程的优先级是动态的。调度程序周期性的调整优先级。进程是抢占式的,那么调度进程应该根据进程的优先级来运行。linux进程分为实时进程,批处理进程,交互式进程。 调度程序总是能找到至少一个可运行进程(swapper进程) 每个linux进程总是按照以下三种被调度SC原创 2016-09-19 14:05:16 · 771 阅读 · 0 评论 -
伙伴系统
linux 中有个被称作分区页框分配器的内核子系统,处理对连续页框的内核分配请求。管理区分配器接受动态内存分配与释放的请求,该部分会搜索一个满足所请求的一组连续页框内存的管理区,每个管理区都被伙伴系统所处理。伙伴系统工作原理:请求了一个256个页框的块。算法现在256个页框大小的链表中去检查是否有一个空闲块满足要求,如果没有,算法会查找下一个更大的页块。也就是先在512的页框链表中查找,如果有,会把原创 2016-09-20 13:36:31 · 416 阅读 · 0 评论 -
内核同步
内核同步 共享内存的应用程序必须留意保护共享资源,防止共享资源被并发的访问。并发访问共享数据是造成系统不稳定的一类隐患。 临界区:访问和操作共享数据的代码段。 避免并发和防止竞争条件称为同步,就是访问和操作共享资源是原子执行的。两个原子指令交错发生不可能。这就出现了锁机制:要明白什么造成了并发执行,再针对性的保护相应的临近资源。 锁机制会造成死锁,每个线程都在等待其中一个资源,但是所原创 2016-09-23 20:27:09 · 203 阅读 · 0 评论 -
进程管理
进程管理 一个进程就是处于可执行期的程序,但不仅仅限于此。它还包括其他的系统资源。打开的文件,挂起的信号,内核的内部数据,处理器状态,进程地址空间等。 进程也是内核进行调度的基本单元。进程描述符(struct task_struct数据结构)包含一个进程的所有信息。内核把进程存放在一个任务队列的双向链表中。 linux内核采用一种特殊的实现方式。内核需要创建一个进程时,通过fork()和exe原创 2016-09-21 16:39:36 · 216 阅读 · 0 评论 -
内存管理
内存管理: 内核把物理页作为内存管理的基本单位,内存管理单元,管理内存并把虚拟地址转换为物理地址,通常是以页为单位。struct page{ page_flags_t flags; atomic_t _count; atomic_t _mapcount; unsigned long private; struct address_space *mapping原创 2016-09-25 11:16:11 · 302 阅读 · 0 评论 -
VFS
虚拟文件系统: 系统中所有的文件系统不但依赖于VFS共存,而且也依赖于VFS系统协同工作。通过虚拟文件系统,程序可以利用标准的UNIX 文件系统调用对不同介质上的不同文件系统进行相应的操作。 两种不同的介质,两种不同的文件系统,连接到同一个虚拟文件系统上。 虚拟文件系统为何有如此强大的功能,为此,虚拟文件系统提供一个抽象层,该层为用户提供统一的通用文件操作接口,用户根本 不用关心底层的实现原创 2016-09-25 15:47:25 · 359 阅读 · 0 评论