
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
前言偶然间,发现了一个很好用的仓,可以十分方便地进行 arm 架构的 linux 内核调试,该仓地址如下 https://github.com/cc-droid/v-kernel-qemu ,对应的解析视频在 《linux内核源码分析 【0-00】从零搭建分析调试环境》本篇笔记旨在记录一下对于该仓的使用流程,并且对其进行了一些小调整环境搭建Ubuntu安装VMware + Ubuntu20.04
前言前段时间根据《linux内核完全注释》一书,从linux0.12入手,逐渐了解了linux最本质的内核实现原理,并将相关笔记记录于《Linux内核学习系列(xx)》。进一步地,最近开始研读《Linux内核设计与实现》,本书以linux2.6.34进行讲解。在学习的过程中,部分实现以及结构发生了较大变动,为了更好地进行对比学习,故考虑将linux2.6.34与linux0.12的异同之处进行记录
前言进程休眠与唤醒也是内核管理的重要一部分。本是进程调度相关内容,笔者在此单拎出来进行梳理。同样的,主要对比 linux0.12 与 linux2.6 之间的差异。流程梳理自然地,让一个进程休眠,我们只需要将其状态更改为TASK_INTERRUPTIBLE或者TASK_UNINTERRUPTIBLE,接着再执行调度程序 schedule() 即可。由于调度程序只会调度状态为TASK_RUNNING
前言内存管理是内核设计十分重要的一环,0.12 版本的内存管理相对简单,理解比较容易。但 2.6 版本的内存管理使用了额外的很多数据结构,需要花些时间查资料进行理解。本篇内容主要对 2.6 版本内核的内存管理方法进行记录。内存管理简述内存管理主要指的物理内存的管理,与用户空间中内存分配无关。如何将物理内存高效且有序地分配是内存管理需要考虑的问题。对于一块物理内存地址,为了有序地进行分配,最先想到的
前言通过本系列前几篇文章的梳理,我们对linux0.12内核功能有了初步地了解。进一步地,我们看看linux如何在前述基础上执行用户自定义程序。其中的重点为execve与需求加载。样例在进入正题之间,我们可以在linux0.12中编译并执行下面一段程序#include <unistd.h>#include <stdlib.h>int main(){execl("/root/
前言最近给自己定了个小目标,把 erofs 整明白。在此之前,需要将 linux 内核关于文件系统的内容进行梳理。本篇博客主要记录一下自己对文件系统的理解,并对比 linux 0.12 与 2.6 版本之间关于文件系统的实现上有何不同简述文件管理流程尽管 2.6 版本的实现相较于 0.12 复杂很多,但不同实现的本质还是不变的。以块设备为例,主要围绕如何管理文件并存储与块设备中。总述每个进程的 t
前言linux0.12与linux2.6在进程调度的实现上有很大的不同,在此进行记录Linux 0.12该版本对于进程调度算法的实现十分简单,具体实现看schedule()即可,该函数为调度入口kernel/sched.cvoid schedule(void){int i,next,c;struct task_struct ** p;// ----------------省略检查相关代码-----
前言在《Linux内核对比学习系列(3)——进程调度》一文中,笔者对 Linux2.6 版本关于进程调度流程进行了梳理。其中提及,该版本通过调度器类实现调度,提升了内核关于调度算法的拓展性。本文对其中一种调度器类,CFS完全公平调度进行浅析CFS概念试想原先通过时间片控制进程调度会有什么问题场景 1 不考虑优先级A,B,C三个进程,均分60ms,每个进程获得20ms的时间片。60ms能够保证轮执该
前言上一篇文章,通过系统调用引出了中断以及分段机制和保护模式相关内容,并进行了简单说明。本篇将在中断基础上,从时间片轮转和任务切换的角度切入,进一步地探究linux内核。时间片轮转时间片轮转是操作系统实现并发的方式,简单地说,操作系统为每个进程分配一定的时间片,当前进程的时间片用尽,则切换到下一个就绪进程进行执行。实现时间片轮转的方式很容易想到,根据上一篇举例的时钟中断,我们可以设计实现如下设置定
前言本章记录一下个人对linux0.12内存管理的理解。主要涉及物理内存页分配与回收,页表复制等具体操作。同样的,笔记仍然由上而下地进行知识点梳理,而不是单纯介绍函数及其作用。内存管理linux内存管理是对什么进行管理内核中的内存管理,主要管理的是物理内存地址空间。而用户所谓的内存管理,指的是对其当前进程线性地址空间的管理为什么要进行内存管理内核中的内存管理,是为了在分页机制基础上,实现虚拟存储用







