• <div id="0yoao"><tr id="0yoao"></tr></div>
    <dl id="0yoao"></dl>
  • <sup id="0yoao"></sup>
    <div id="0yoao"><tr id="0yoao"></tr></div>
  • <div id="0yoao"><tr id="0yoao"></tr></div>
  • O(n)、O(1)和CFS调度器

    作者:linuxer 发布于:2018-1-8 19:19 分类:进程管理

    随着内核版本的演进,其源代码的膨胀速度也在递增,这让Linux的学习曲线变得越来越陡峭了。这对初识内核的同学而言当然不是什么好事情,满腔热情很容易被当头浇灭。我有一个循序渐进的方法,那就是先不要看最新的内核,首先找到一个古老版本的内核(一般都会比较简单),将其吃透,然后一点点的迭代,理解每个版本变更背后的缘由和目的,最?#32960;?#36827;到最新内核版本。

    本文就是从2.4时代的任务调度器开始,详细描述其实现并慢慢向前递进。当然,为了更好的理解Linux调度器设计和实现,我们在第二章给出了一些通用的概念。之后,我们会在第四章讲述O(1)调度器如何改进并提升调度器性能。真正有划时代意义的是CFS调度器,在2.6.23版本的内核中并入主线。它的设计思想是那么的眩目,即便是目前最新的内核中,完全公平的设计思想仍然没有太大变化,这些我们会在第六章描述。第五章是关于公平调度思想的引入,通过这一章可以了解Con Kolivas的RSDL调度器,它是开启公平调度的先锋,通过这一章的铺垫,我们可以更顺畅的理解CFS。

    阅读全文>>

    标签: O(n) O(1) CFS scheduler

    评论(9) 浏览(6312)

    中断唤醒系统流程

    作者:smcdef 发布于:2018-1-1 17:03 分类:中断子系统

    1) 设备唤醒cpu之后是立即跳转中断向量表指定的位置吗?如果不是,那么是什么时候才会跳转呢?

    2) 已经跳转到中断服务函数开始执行代码,后续就会调用你注册的中断handle 代码吗?如果不是,那中断服务函数做什么准?#25913;兀?#32780;你注册的中断handle又会在什么时候才开始执行呢?
    3) 假如register_thread_irq方式注册的threaded irq中调用msleep(1000),睡眠1秒,请问系统此?#34987;?#32487;续睡下去而没调度回来吗?因此导致msleep后续的操作没有执行。
    4) 如果在注册的中断handle中把主要的操作都放在delayed work中,然后queue delayed work,work延时1秒执行,请问系统此?#34987;?#32487;续睡下去而没调度delayed work 吗?因此导致delayed work 中的操作没有执行呢?
    5) 如果4)成立的话,我们该如何编程避免这个问题呢?
    好了,本片文章就为你解答所有的疑问。
    注:文章代码分析基于linux-4.15.0-rc3。

    阅读全文>>

    标签: 电源管理 中断处理 中断子系统 中断唤醒

    评论(11) 浏览(10263)

    USB-C(USB Type-C)规范的简单介绍和分析

    作者:wowo 发布于:2017-12-18 16:18 分类:USB

    从1996年1月USB1.0正式发布至今(2017年9月 USB3.2发布),USB已经走过了21个年头。在这21年的时间了,USB标准化组织(USB Implementers Forum,USB-IF)折腾出来了各式各样、五花八门的接口形态:Type A、Type A SuperSpeed、Type B、Type B SuperSpeed、Mini-A、Mini-B、Micro-A、Micro-B、Micro-B SuperSpeed、Type C等等。

    另外,USB接口主要由插座(Receptacle)、插头(Plug)和线缆(Cable)三部分组成,再叠?#30001;?#36825;些奇奇怪怪的规范,灾难就发生了:

    A产品?#19981;?#29992;Type A的插座,B产品偏偏?#19981;禩ype B,连接它们的线缆就悲剧了,只能变成A-to-B的了。?#28304;?#31867;推,A-to-A、B-to-B、A-to-MicroA、等等,于是我们的抽屉就挤满了各种不明用途的USB线……

    好吧,吐槽时间结束,因为本文的主角不是过去的那些奇奇怪怪的接口,而是最新的、红到发?#31995;腢SB-C(也称作USB Type C)规范。提起typec,它还真和它的A、B前辈们不太一样:

    因为它有自己独立的、自行演化的规范文件----USB Type-C Specification(2014年发8月布1.0版本,2017年7月发布1.3版本)。而前辈们就没有这样的待遇了,它?#23884;?#20381;附于具体的USB规范(USB 1.0、USB 1.1、USB 2.0、等等)。

    为什么会这样的呢?当然是因为它有独特之处了,具体请参考本文后续的描述。

    阅读全文>>

    标签: Power USB typec type-c 3.1 pd

    评论(15) 浏览(25551)

    进程切换分析(3)?#21644;?#27493;处理

    作者:linuxer 发布于:2017-12-11 17:59 分类:进程管理

    本文主要描述了主调度器(schedule函数)中的同步处理。

    阅读全文>>

    标签: schedule

    评论(6) 浏览(4362)

    逆向?#25104;?#30340;演进

    作者:linuxer 发布于:2017-11-17 15:47 分类:内存管理

    数学大师陈省身有一句话是这样说的:了解历史的变化是了解这门学科的一个步骤。今天,我把这句话应用到一个具体的Linux模块:了解逆向?#25104;?#30340;最好的方法是了解它的历史。本文介绍了Linux内核中的逆向?#25104;?#26426;制如何从无到有,如何从笨重到轻盈的历史过程,通过这些历史的演进过程,希望能对逆向?#25104;?#26377;更?#30001;?#20837;的理解。

    阅读全文>>

    标签: Mapping 逆向?#25104;?/a> reverse

    评论(20) 浏览(5931)

    Linux kernel内存管理的基本概念

    作者:wowo 发布于:2017-11-9 22:37 分类:内存管理

    内存(memory)在Linux系?#25345;?#26159;一种牵涉面极广的资源,?#29616;?#24212;用程序、下至kernel和driver,无不为之魂牵梦绕。?#30001;?#23427;天然的稀缺性,导致内存管理(Memory Management,简称MM)是linux kernel中非常重要又非常复杂的一个子系统。

    重要性就不多说了,Kernel自有分寸。关于复?#26377;裕?#37492;于Linux kernel优秀的抽象能力),应该不会被?#32960;?#20154;(Linux系统的使用者、应用工程师、驱动工程师、轻量级的内核工程师)感知到才对。事实确实如此,Kernel屏蔽掉了大多数的实现细节,尽量以简单、易用的方式向其它模块提供memory服务。

    不过呢,这个世界上没有完美的存在,kernel的内存管理也是如此,由于两方面的原因:一、众口难调,内存管理有关的需求实在太复杂了;二、CPU、Device和Memory之间纠结的三角恋(参考下面?#35745;?#23548;致它也(不得不)提供了很多啰里啰唆的、不易理解的功能(困扰了很多从入门级到资深级的linux软件工程师)。

    memory_topology

    ?#35745;? CPU, Device and Memory

    基于上面的原因,本站内存管理子系统发布了很多分析文章,以帮助大家理解内存管理有关的概念。不过到目前为止,还缺少一篇索引类的文章,从整体出发,理解Kernel内存管理所需要面对的软?#24067;置妗?#25152;要解决的问题,以及各个内存管理子模块的功能和意义。这就是本文的目的。

    阅读全文>>

    标签: Linux Kernel 内核 内存管理 mm 概念

    评论(6) 浏览(12332)

    Linux kernel scatterlist API介绍

    作者:wowo 发布于:2017-10-13 22:20 分类:内存管理

    我们在那些需要和用户空间?#25442;?#22823;量数据的子系统(例如MMC[1]、Video、Audio等)中,经常看到scatterlist的影子。对我们这些“非英语母语”的人来说,初见这个词汇,?#28304;布?#23601;蒙圈了。scatter可翻译成?#21543;?#24320;、分散”,list是“列表”的意思,因而scatterlist可翻译为?#21543;?#21015;表”。?#21543;?#21015;表”又是什么?太抽象了!

    之所以抽象,是因为这个词省略了主语----物理内存(Physical memory),?#30001;?#21518;,就好理解了多了,既?#20309;?#29702;内存的散列表。再通俗一些,就是把一些分散的物理内存,以列表的形式组织起来。那么,也许你会问,有什么?#20040;?#21602;?

    当然有用,具体可参考本文后续的介绍。

    阅读全文>>

    标签: Linux Kernel 内核 scatterlist sg_table

    评论(6) 浏览(9021)

    X-026-KERNEL-Linux gpio driver的移植之gpio range

    作者:wowo 发布于:2017-9-27 22:27 分类:X Project

    我们在[1][2]中提到过,鉴于gpio的特殊性,pinctrl subsystem特意留了一个后门(gpio range),gpio driver可以通过这个后门直接向pinctrl subsystem申请将某个pin用作gpio功能。本文将根据一个简单的?#32416;?#20171;绍这个后门的使用方法,以?#30001;?#23545;相关机制的理解。

    注1:本文的测试方法和[3]中的一致,即?#21644;?#36807;gpiolib sysfs api控制LED0(GPIOA19)的亮灭,因而不再罗列详细步骤。

    阅读全文>>

    标签: driver GPIO porting pinctrl range

    评论(1) 浏览(5878)

    Device Tree(四):文件结构解析

    作者:smcdef 发布于:2017-9-24 11:08 分类:统一设?#25913;?#22411;

    通过linuxer发表的三篇设备树的文章,我想你应该对设备已经有一个非常充分的认识了。本篇文?#24405;?#20316;为一篇Device Tree的总结性文章,同时也作为linuxer文章的补充。本篇文章曾发表在Linuxer公众号,链接为

    http://mp.weixin.qq.com/s/OX-aXd5MYlE_YoZ3p32qWA

    阅读全文>>

    标签: 设备树

    评论(12) 浏览(17188)

    X-025-KERNEL-Linux gpio driver的移植之基本功能

    作者:wowo 发布于:2017-9-13 22:18 分类:X Project

    本文将基于本站GPIO subsystem[1]相关的文章,结合”X Project”?#30446;?#21457;过程,实现一个简单的gpio driver,并利用gpiolib提供的sysfs api进行简单的测试,进而?#30001;?#23545;gpio相关概念的理解。

    注1:本文后续的描述,kernel基于本?#23613;?/span>X Project”所使用的kernel版本,?#24067;?#22522;于 ”X Project”所使用的“Bubbugum-96”平台[2]

    阅读全文>>

    标签: sysfs driver GPIO porting gpiolib

    评论(2) 浏览(6756)

    Copyright @ 2013-2015 蜗窝科技 All rights reserved. Powered by emlog
    连码三全中是什么
  • <div id="0yoao"><tr id="0yoao"></tr></div>
    <dl id="0yoao"></dl>
  • <sup id="0yoao"></sup>
    <div id="0yoao"><tr id="0yoao"></tr></div>
  • <div id="0yoao"><tr id="0yoao"></tr></div>
  • <div id="0yoao"><tr id="0yoao"></tr></div>
    <dl id="0yoao"></dl>
  • <sup id="0yoao"></sup>
    <div id="0yoao"><tr id="0yoao"></tr></div>
  • <div id="0yoao"><tr id="0yoao"></tr></div>
  • 福彩3d独胆王 山西快乐十分奖金规则 广西快乐十分破解 看足球直播用什么app 黑龙江时时彩最快开奖 上海快3即时行情 013期二肖中特 百度可以买彩票 河南22选5开奖走势 广东快乐十分开奖号码记录 打牌九游戏下载 开奖网 捕鱼达人2破解版 山东群英会选号任4技巧 黑龙江十一选五任五遗漏一定牛