
linux kernel
flaoter
这个作者很懒,什么都没留下…
展开
-
linux进程调度与管理(三)
本节内容介绍用于普通进程调度的完全公平调度类(Completely Fair Scheduler),它的基本原理是这样的:设定一个调度周期(sched_latency_ns),目标是让每个进程在这个周期内至少有机会运行一次,换一种说法就是每个进程等待CPU的时间最长不超过这个调度周期;然后根据进程的数量,大家平分这个调度周期内的CPU使用权,由于进程的优先级即nice值不同,分割调度周期的时候要加权原创 2017-07-21 20:37:48 · 909 阅读 · 0 评论 -
linux进程调度与管理(二)
转载请标明出处floater的csdn blog,http://blog.youkuaiyun.com/flaoter上节内容对linux进程的表示和常用基础知识等进行了说明,本节开始对进程管理进行说明。1 进程调度数据结构1.1 数据结构在介绍进程调度数据结构之前,先看一下task_struct中与进程调度相关的数据成员。struct task_struct{ int prio, static_pri原创 2017-07-19 21:45:07 · 717 阅读 · 0 评论 -
Linux时间子系统(一) -- 原理
转载请标明出处floater的csdn blog,http://blog.youkuaiyun.com/flaoter1 内核概述内核2.6之前的时间子系统主要是围绕低分辨定时器和基于它实现的tick时钟周期展开的,随着嵌入式应用的发展,时间子系统引入了两个主要功能: 高分辨率定时器, tickless系统。 1. tickless系统。为了满足嵌入式设备的低功耗需求,会停用周期性的时钟,使系统长时间地进入省原创 2017-08-19 16:34:18 · 5580 阅读 · 0 评论 -
Linux时间子系统(二) -- clocksource, timekeeper
转载请标明出处floater的csdn blog,http://blog.youkuaiyun.com/flaoter从本节开始使用的内核代码版本是3.18.12,使用的定时器硬件是ARM Generic Timer。1 clocksource在上一节中介绍过clocksource提供了一个单调增加的计时器,它的底层硬件在arm平台上对应的就是上一节中的System Counter。1.1 数据结构struct原创 2017-08-22 22:38:17 · 3848 阅读 · 0 评论 -
Linux时间子系统(三) -- clockevent, tick device
1 clockeventclockevent是具有编程和事件产生能力的定时器,在我使用的ARM SOC平台上底层依赖的硬件是ARM Generic Timer中的Timers。当然,在SOC系统中应该还会有其它的timer可以使用,但是本文的介绍只限于arm的timer。1.1 数据结构struct clock_event_device { void原创 2017-08-23 22:18:38 · 3028 阅读 · 0 评论 -
arm linux 临时页表的建立
本小节主要针对Android启动过程中kernel的启动进行说明,kernel的启动涉及知识太多,不可能在一节中进行足够的讲解,本节先对汇编部分进行解析。linux kernel的主要特点之一就是运行在虚拟地址空间上,但是怎么才能实现物理地址到虚拟地址空间的切换是本节关注的重点。本文使用的kernel版本为4.4。bootloader跳转到kernel之前需要保证 MMU = off, D-cac原创 2017-06-26 21:11:15 · 2379 阅读 · 2 评论 -
arm linux 页表创建
本文对arm linux页表创建函数进行说明。在http://blog.youkuaiyun.com/flaoter/article/details/73381695中对MMU使能之前的临时页表进行了说明,此文是对kernel中正式使用的页表创建过程进行说明。 arm linux使用两级页表,L1是pgd,L2是pte。其中L1页表共2048项,每项占用8bytes,每项对应2M内存,共占用2048*8=16原创 2017-07-03 22:07:44 · 2299 阅读 · 0 评论 -
linux进程管理与调度(一)
进程的管理与调度是所有操作系统的核心功能。从内核的角度来看,进程是内核分配资源(CPU,Memory)的重要单元,是计算机用来管理这些资源的一种抽象。从本节开始,将对linux内核的进程管理与调度子系统进行分析,其中使用的内核版本是4.4。1 进程描述在linux内核中,每一个进程唯一对应一个struct task_struct结构体,内核通过这些task_struct的管理实现对进程的管理。此数据原创 2017-07-19 20:39:09 · 2055 阅读 · 0 评论