Linux内核
文章平均质量分 80
huohunri2013
喜欢探索新技术。
展开
-
Linux内核--第九篇博客--物理内存组织结构
一、系统调用mmap 系统调用mmap用来创建内存映射,把创建内存映射主要工作委托给do_mmap函数, 内核源码文件处理:mm/mmap.c 进程对虚拟内存空间进行管理是通过两种数据结构:红黑树和链表。 众所周知,虚拟内存区域使用起始地址和结束地址描述,链表按起始地址递增排序,链表的 红黑树是平衡二叉查找树,它按照起始地址排序,使用红黑树的好处是:1、在红黑树种查找一个内存虚拟地址的速度很快,增加一个新区域到红黑树,刚好新增的区域会落在最前面。像...原创 2021-09-20 13:30:27 · 161 阅读 · 0 评论 -
Linux内核--第八篇博客--内存映射原理及系统调用
一、内存映射原理内存映射即在进程的虚拟地址空间中创建一个映射,分为两种:(1)文件映射:文件支持的内存映射,把文件的一个区间映射到进程的虚拟地址空间,数据源是存储设备上的文件。(2)匿名映射:没有文件支持的内存映射,把物理内存映射到进程的虚拟地址空间,没有数据源。【内存映射的原理】 创建内存映射时,在进程得用户虚拟地址空间中分配一个虚拟内存区域。内核采用延迟分配物理内存得策略,在进程第一次访问虚拟页得时候,产生缺页异常。如果是文件映射,那么分配物理页,把文件指定区间的数据读到物理页..原创 2021-06-04 22:01:03 · 473 阅读 · 1 评论 -
Linux内核--第七篇博客--内核内存布局和堆管理
一、内存管理架构内存管理子系统架构可以分为:用户空间、内核空间及硬件部分3个层面,具体结构如 下图所示:1、用户空间:应用程序使用malloc()申请内存资源/free()释放内存资源。 2、内核空间:内核总是驻留在内存中,是操作系统的一部分。内核空间为内核保留, 不允许应用程序读写该区域的内容或直接调用内核代码定义的函数。 3、硬件:处理器包含一个内存管理单元(Memory Management Uint,MMU)的部 件,负责把虚拟地址转换为物理地址。二.原创 2021-05-23 22:45:24 · 211 阅读 · 2 评论 -
2021-05-21
关于UCS万国码,本来想自己写的,发现了一篇好文,转载之Unicode - UCS - 万国码通用字符集 - UCS(Universal Character Set)首先要说明的是Unicode和UCS并不是完全相同的概念Unicode的实现方式不同于编码方式。一个字符的Unicode编码是确定的。它只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储。Unicode符号需要字节数不等,从1个字节到4个字节,甚至更多。这里就有个严重的问题,计算机怎么知道三个字节表示一个符号,而不是分别转载 2021-05-21 11:07:52 · 94 阅读 · 0 评论 -
Linux内核--第六篇博客--内核内存布局和堆管理
一、内核内存布局 64位Linux一般使用48位来表示虚拟地址空间,42位表示物理地址,通过命令:cat /proc/cpuinfo。ARM64架构处理器采用48位物理寻址机制,最大可寻找256TB的物理地址空间。对于 目前应用完全足够,不需要扩展到64位的物理寻址。虚拟地址也同样最大支持48位寻址,所以在处理器架构设计上,把虚拟地址空间划分为两个空间,每个空间最大支持256TB,linux内核 在大多数体系结构上都把两个地址划分为:用户空间和内核空间。用户空间:0x0000_...原创 2021-05-20 23:58:21 · 394 阅读 · 0 评论 -
Linux内核--第五篇博客--RCU机制及内存优化屏蔽
一、RCU机制RCU英文全称为Read-Copy-Update,顾名思义就是 “读 - 拷贝-更新”,是内核中重要 的同步机制。Linux内核已有原子操作、读写信号量等等锁机制,为何会单独设计一个比较复杂的新机制?1、RCU原理RCU记录所有指向共享数据的指针的使用者,当要修改该共享数据时,首先创建一个 副本,在副本中修改。所有读访问线程都离开读临界区之后 ,指针指向新的修改后副本的指针,并且删除旧数据。2、链表操作RCU能保护的不仅仅是一般的指针。内核也提供标准函数,使得能通过R原创 2021-05-15 23:53:08 · 330 阅读 · 0 评论 -
Linux内核--第四篇博客--实时调度类即SMP
一、实时调度类源分析 1、实时调度实体sched_rt_entity数据结构linux内核源码目录:include/linux/sched.h。linux内核源码目录:/kernel/sched/rt.c。2、实时调度类rt_sched_class数据结构3、实时调度操作核心详解进程插入enqueue_task_rtlinux内核源码目录:/kernel/sched/rt.c。进程选择pick_next_task_rt实时调度会选择最高优先级的实时进.原创 2021-04-11 17:56:20 · 392 阅读 · 0 评论 -
Linux内核--第一篇博客--Linux内核源码结构组成
一、Linux内核的特征 1.linux内核组织形式为整体式结构 linux内核是面向过程的,每一个模块单独编译,最后链接成一个独立的目标程序。这种结构最大的特点是内部结构简单,子系统容易进行访问,因此内核的工作效率比较高。基于过程的结构有助于不同业务的成员进行基于不同业务的开发,基于这种角度,linux内核又是开放式的开发,它允许任何人对其不同模块进行完善和再次开发。 2.进程调度方式简单而有效。 可以说linux追求效率方面领先,体现在调度方式上也是别具一格,对...原创 2021-03-08 20:57:20 · 449 阅读 · 0 评论 -
Linux内核--第三篇博客--调度器分析及完全公平调度器CFS
一、调度器分析1、调度器及其功能 内核中用来安排进程执行的模块称为调度器(scheduler),它可以切换进程状态(processstate)。例如执行、可中断睡眠、不可中断睡眠、退出、暂停等。调度器是CPU中央处理器的管理员,专门用来管理时间的,主要负责完成做两件事情:一、选择某些就绪进程来执行,二、是打断某些执行的进程让它们变为就绪状态。调度器分配CPU时间的基本依据就是进程的优先级。上下文切换(contextswitch):将进程在CPU中切换执行的过程,内核承担此..原创 2021-04-04 00:30:49 · 232 阅读 · 2 评论 -
Linux内核--第二篇博客--进程表示及系统调用
一、什么是进程 操作系统作为硬件的使用层,提供使用硬件资源的能力,进程作为操作系统使用层,提供使用操作系统抽象出的资源层的能力。 进程:是指计算机中已运行的程序。进程本身不是基本的运行单位,而是线程的容器。程序本身只是指令、数据及其组织形式的描述,进程才是程序(那些指令和数据)的真正运行实例。 进程的四要素 1、有一段程序代其执行; 2、有进程专用的系统堆栈空间。 3、在内核有task_struct数据结构; 4、进程有独立的存储空间,拥...原创 2021-03-09 18:31:27 · 222 阅读 · 0 评论