2018年2月21日

计算机科学基础知识(六)理解栈帧

摘要: 一、前言 本文以一个简单的例子来描述ARM linux下的stack frame。 本文也是对tigger网友问题的回复。 二、源代码 #include <stdio.h> static int static_interface_leaf( int x, int y ) { int tmp0 = 0 阅读全文

posted @ 2018-02-21 22:15 AlanTu 阅读(1927) 评论(0) 推荐(0)

傅立叶级数(Fourier Series)和周期现象

摘要: 一、前言 如果你仔细观察,工作和生活中充满了周期现象:旁边linux driver工程师在调试audio driver的时候播放的1kHz的正弦信号,周末去公园游玩,游船推开水面的波纹,硬件工程师调试硬件电路的时候,示波器显示出来的晶振方波信号…… 所谓周期现象具体包括时间上的周期现象和空间上的周期 阅读全文

posted @ 2018-02-21 22:07 AlanTu 阅读(2515) 评论(0) 推荐(0)

计算机科学基础知识(一)The Memory Hierarchy

摘要: 一、前言 最近一个问题经常萦绕在我的脑海:一个学习电子工程的机械师如何称为优秀的程序员?(注:本文作者本科学习机械设计,研究生转到电子工程系学习,毕业后却选择了系统程序员这样的职业)。经过思考,我认为阻挡我称为一个优秀程序员的障碍是计算机科学的理论知识。自然辩证法告诉我们:理论源于实践,又指导实践, 阅读全文

posted @ 2018-02-21 22:06 AlanTu 阅读(962) 评论(0) 推荐(0)

基本电路概念(二)什么是电容?

摘要: 一、前言 我儿子对电路板有一种近乎疯狂的痴迷,每次周末加班的时候,他总是恳求我带他一起到公司,就是为了能够看一看电路板、看一看电路焊接过程。为了不影响工作,我只能是找一些废旧的电路板,加上从蜗窝同学那里搜刮来的电烙铁给小朋友进行电路焊接演示。废旧电路板上有不少的器件,于是问题少年的问题就来了,芯片里 阅读全文

posted @ 2018-02-21 22:05 AlanTu 阅读(3562) 评论(0) 推荐(0)

基本电路概念(一)什么是电压?

摘要: 基本电路概念之(一):什么是电压? 作者:linuxer 发布于:2014-5-16 10:40 分类:基础学科 一、前言 我有一个奇葩儿子(4岁),经常问一些奇葩的问题。比如:为什么电子带负电?什么是电压?电路板是怎么生产的?发动机的内部结构是什么?……总之,各种问题层出不穷。有一天回家,他正和他 阅读全文

posted @ 2018-02-21 22:04 AlanTu 阅读(1364) 评论(0) 推荐(0)

Concurrency Managed Workqueue(四)workqueue如何处理work

摘要: 一、前言 本文主要讲述下面两部分的内容: 1、将work挂入workqueue的处理过程 2、如何处理挂入workqueue的work 二、用户将一个work挂入workqueue 1、queue_work_on函数 使用workqueue机制的模块可以调用queue_work_on(有其他变种的接 阅读全文

posted @ 2018-02-21 21:57 AlanTu 阅读(718) 评论(0) 推荐(0)

Concurrency Managed Workqueue(三)创建workqueue代码分析

摘要: 一、前言 本文主要以__alloc_workqueue_key函数为主线,描述CMWQ中的创建一个workqueue实例的代码过程。 二、WQ_POWER_EFFICIENT的处理 __alloc_workqueue_key函数的一开始有如下的代码: if ((flags & WQ_POWER_EF 阅读全文

posted @ 2018-02-21 21:56 AlanTu 阅读(855) 评论(0) 推荐(0)

Concurrency Managed Workqueue(二)CMWQ概述

摘要: 一、前言 一种新的机制出现的原因往往是为了解决实际的问题,虽然linux kernel中已经提供了workqueue的机制,那么为何还要引入cmwq呢?也就是说:旧的workqueue机制存在什么样的问题?在新的cmwq又是如何解决这些问题的呢?它接口是如何呈现的呢(驱动工程师最关心这个了)?如何兼 阅读全文

posted @ 2018-02-21 21:55 AlanTu 阅读(641) 评论(0) 推荐(0)

Concurrency Managed Workqueue(一)workqueue基本概念

摘要: 一、前言 workqueue是一个驱动工程师常用的工具,在旧的内核中(指2.6.36之前的内核版本)workqueue代码比较简单(大概800行),在2.6.36内核版本中引入了CMWQ(Concurrency Managed Workqueue),workqueue.c的代码膨胀到5000多行,为 阅读全文

posted @ 2018-02-21 21:54 AlanTu 阅读(654) 评论(0) 推荐(0)

Linux调度器 - deadline调度器

摘要: 一、概述 实时系统是这样的一种计算系统:当事件发生后,它必须在确定的时间范围内做出响应。在实时系统中,产生正确的结果不仅依赖于系统正确的逻辑动作,而且依赖于逻辑动作的时序。换句话说,当系统收到某个请求,会做出相应的动作以响应该请求,想要保证正确地响应该请求,一方面逻辑结果要正确,更重要的是需要在最后 阅读全文

posted @ 2018-02-21 21:42 AlanTu 阅读(4580) 评论(0) 推荐(0)

CFS调度器

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

posted @ 2018-02-21 21:40 AlanTu 阅读(1094) 评论(0) 推荐(0)

进程管理和终端驱动基本概念

摘要: 一、前言 对于任何一种OS,终端部分的内容总是令人非常的痛苦和沮丧,GNU/linux也是如此。究其原因主要有两个,一是终端驱动和终端相关的系统软件承载了太多的内容:各种虚拟终端、 伪终端、串口通信、modem、printer等。其次可能是终端和信号处理、进程关系等耦合在一起加大了理解终端驱动的难度 阅读全文

posted @ 2018-02-21 21:33 AlanTu 阅读(845) 评论(0) 推荐(0)

Linux进程概述

摘要: 一、介绍 当linux系统中的一个进程运行起来的时候,总是要访问系统的资源,访问文件或者向其他的进程发送信号。系统是否允许其进行这些操作?系统是根据什么来判断该进程的权限?这些问题是和进程信任状(process credentials)相关。 process credentials包括一系列的ID, 阅读全文

posted @ 2018-02-21 21:27 AlanTu 阅读(806) 评论(0) 推荐(0)

KASAN实现原理

摘要: 1. 前言 KASAN是一个动态检测内存错误的工具。KASAN可以检测全局变量、栈、堆分配的内存发生越界访问等问题。功能比SLUB DEBUG功能齐全并且支持实时检测。越界访问的严重性和危害性通过我之前的文章(SLUB DEBUG技术)应该有所了解。正是由于SLUB DEBUG缺陷,因此我们需要一种 阅读全文

posted @ 2018-02-21 21:09 AlanTu 阅读(8596) 评论(0) 推荐(1)

Linux内核scatterlist API介绍

摘要: 1. 前言 我们在那些需要和用户空间交互大量数据的子系统(例如MMC[1]、Video、Audio等)中,经常看到scatterlist的影子。对我们这些“非英语母语”的人来说,初见这个词汇,脑袋瞬间就蒙圈了。scatter可翻译成“散开、分散”,list是“列表”的意思,因而scatterlist 阅读全文

posted @ 2018-02-21 21:08 AlanTu 阅读(11942) 评论(0) 推荐(1)

CMA概述

摘要: 前言 本文是近期学习CMA模块的一个学习笔记,方便日后遗忘的时候,回来查询以便迅速恢复上下文。 学习的基本方法是这样的:一开始,我自己先提出了若干的问题,然后带着这些问题查看网上的资料,代码,最后整理形成这样以问题为导向的index,顺便也向笨叔叔致敬。笨叔叔写了一本书叫做《奔跑吧Linux内核》, 阅读全文

posted @ 2018-02-21 21:07 AlanTu 阅读(3628) 评论(0) 推荐(1)

导航