蜗窝科技

蜗窝科技

蜗窝科技 —— 嵌入式 Linux 内核技术笔记与讨论存档

共 373 篇技术笔记(2014–2026)· 讨论区存档(163 个主题) · 数据下载

CFS调度器(1)-基本原理

作者:smcdef · 发布于 2018-10-07 17:36 · 进程管理

前言 首先需要思考的问题是:什么是调度器(scheduler)?调度器的作用是什么?调度器是一个操作系统的核心部分。可以比作是CPU时间的管理员。调度器主要负责选择某些就绪的进程来执行。不同的调度器根据不同的方法挑选出最适合运行的进程。目前Linux支持的调度器就有RT scheduler、Deadline scheduler、CFS scheduler及Idle scheduler等。我想用一系

阅读全文 » · 标签 CFS · 评论 40 · 浏览 52499

per-entity load tracking

作者:linuxer · 发布于 2018-08-18 10:27 · 进程管理

本文分三个部分描述了3.8内核引入的PELT(per-entity load tracking)机制。第一章主要描述了PELT比per-runqueue load tracking的好处在哪里,这也是引入PELT的原因。第二章描述了具体PELT的算法,有兴趣的同学可以自行根据代码进行分析。第三章主要给出几个PELT的应用场景,在这些场景中,其他的内核子系统可以通过PELT进行更精准的控制。 本文是

阅读全文 » · 标签 PELTper-entityloadtracking · 评论 1 · 浏览 19884

Linux中常见同步机制设计原理

作者:smcdef · 发布于 2018-06-09 16:19 · 内核同步机制

引言 今天谈谈linux中常见并发访问的保护机制设计原理。为什么要写这篇文章呢?其实想帮助自己及读者更深入的了解背后的原理(据可靠消息,锁的实现经常出现在笔试环节。既可以考察面试者对锁的原理的理解,又可以考察面试者编程技能)。我们抛开linux中汇编代码。用C语言为大家呈现背后实现的原理。同时,文章中的代码都没有考虑并发情况(例如某些操作需要原子性,或者数据需要保护等)。

阅读全文 » · 标签 spinlockmutexrw_lock · 评论 25 · 浏览 28510

KASLR

作者:smcdef · 发布于 2018-05-06 10:00 · 内存管理

引言 什么是KASLR?KASLR是kernel address space layout randomization的缩写,直译过来就是内核地址空间布局随机化。KASLR技术允许kernel image加载到VMALLOC区域的任何位置。当KASLR关闭的时候,kernel image都会映射到一个固定的链接地址。对于黑客来说是透明的,因此安全性得不到保证。KASLR技术可以让kernel im

阅读全文 » · 标签 kaslr · 评论 29 · 浏览 40492

fixmap addresses原理

作者:smcdef · 发布于 2018-04-29 20:35 · 内存管理

引言 fixmap是一段固定地址映射。kernel预留一段虚拟地址空间。因此虚拟地址是在编译的时候确定。fixmap可以用来做什么?kernel启动初期,由于此时的kernel已经运行在虚拟地址上。因此我们访问具体的物理地址是不行的,必须建立虚拟地址和物理地址的映射,然后通过虚拟地址访问才可以。例如:dtb中包含bootloader传递过来的内存信息,我们需要解析dtb,但是我们得到的是dtb的物

阅读全文 » · 评论 9 · 浏览 17842

文件系统和裸块设备的page cache问题

作者:阿克曼 · 发布于 2018-04-28 10:16 · 文件系统

普通文件的数据可以保存在它的地址空间中,同时直接访问块设备中此文件的块,也会将这个文件的数据保存在块设备的地址空间中。这两份缓存相互独立,kernel并不会为这种非正常访问同步两份缓存,从而避免了同步的开销。 注:本文代码基于linux-3.18.31,此版本中块缓存已经合入页缓存。

阅读全文 » · 评论 9 · 浏览 16306

一次触摸屏中断调试引发的深入探究

作者:heaven · 发布于 2018-04-23 16:01 · Linux内核分析

大家好,我叫张昺华,中间那个字念“饼”,首先非常感谢陈莉君老师的指点,题目名字也是陈老师起的,也很荣幸此文章能在蜗窝上发表一次,感谢郭大侠给的机会 如下为本人原创,在解决问题的过程中的一点心得,如果有描述不准确的地方还请各位指出,非常感谢 Linux 内核版本: linux-4.9.18 曾有一次调试触摸屏的时候遇到如下的问题

阅读全文 » · 标签 中断 · 评论 12 · 浏览 19126

ARM64 Kernel Image Mapping的变化

作者:smcdef · 发布于 2018-04-21 20:25 · 内存管理

随着linux的代码更新,阅读linux-4.15代码,从中发现很多与众不同的地方。之所以与众不同,就是因为和我之前从网上博客或者书籍中看到的内容有所差异。当然了,并不是为了表明书上或者博客的观点是错误的。而是因为linux代码更新的太快,网上的博客和书籍跟不上linux的步伐而已。究竟是哪些发生了差异了?例如:kernel image映射区域从原来的linear mapping region(线

阅读全文 » · 评论 19 · 浏览 45339

tty驱动分析

作者:callme_friend · 发布于 2018-04-20 18:02 · TTY子系统

分析背景: xilinx_uartps.c (drivers\tty\serial)----linux-4.9 内核 以具体驱动为例,描述了驱动的注册、打开和读写过程;梳理了相关数据结构间的关系。最后给出了一个模拟tty驱动实例。

阅读全文 » · 标签 Linuxtty模拟串口 · 评论 26 · 浏览 34980

ftrace时间精度issue修复

作者:linuxer · 发布于 2018-04-16 19:07 · Linux内核分析

在调试ATMEL SAMA5D3 上的ftrace功能的时候,发现了一个时间精度的问题,本文主要记录这个issue修复的过程,方便后续查阅。linux内核版本是4.4.19,当然,最新的内核中仍然存在这个issue。

阅读全文 » · 标签 ftracesched_clock · 浏览 20095