05 2023 档案
摘要:有一个元素为 0 到 100 之间随机数字组成的一维数组: 接下来,对这个数组做两个操作: 第一个操作,循环遍历数组,把小于 50 的数组元素置为 0; 第二个操作,将数组排序; 那么问题来了,你觉得先遍历再排序速度快,还是先排序再遍历速度快呢? 对于 if 条件语句,意味着此时至少可以选择跳转到两
阅读全文
摘要:内存管理的目标 外存是程序存储的地方,内存是进程运行的地方。 内存管理的目标除了实现进程之间的隔离、进程与内核之间的隔离、减少物理内存并发使用的数量之外,还有以下几个目标。 1、减少内存碎片,包括外部碎片和内部碎片。外部碎片是指还在内存分配器中的内存,但是由于比较分散,无法满足用户大块连续内存分配的
阅读全文
摘要:0、基本概念 MMU 用作虚拟地址和物理地址的相互转换,是为了能够给 OS 提供统一视角的虚拟地址空间; TLB 的作用是作为 MMU 的 Cache,以提高 MMU 的性能,他们之间的关系如下: 1、ARM 处理器发出地址访问(虚拟地址),首先过 MMU 地址翻译单元的 TLB,如果 TLB 命中
阅读全文
摘要:1、Memory Type ARMv7-A 处理器中,将 Memory定义为几种类型(Memory Type): 1、Strongly-ordered; 2、Normal; 3、Device; 它的定义如下所示: 注意:这里的 Memory 指的不是内存,可以翻译成储存器,是地址空间的概念; 普通的
阅读全文
摘要:ARMv7-A Cache Architecture cache以地址来进行查找 Cache 的,那么我们到底是用虚拟地址还是物理地址呢?三种方式: 1、早期的 ARM 处理器,如 ARM720T 或 ARM926EJ-S 处理器使用虚拟地址提供 Index 和 Tag。 这有一个优点,即 CPU
阅读全文
摘要:内存 要想理解cache,先理解内存。内存的简单表示如下图,内存里面的内容的查找是根据地址来进行的,也就是说内存包含两点①地址②内存的内容(存的数据),根据地址来找数据。 上图的0000~0008是地址,A~I是存的数据,cpu根据地址去寻找数据。图中的一个字母代表一个字节的数据。 CACHE ca
阅读全文
摘要:1、ARMv7-A 协处理器 ARMv7-A 处理器除了标准的 R0~R15,CPSR,SPSR 以外,由于引入了 MMU、TLB、Cache 等内容,ARMv7-A 使用协处理器来对这些扩展来进行管理,ARMv7-A 支持 16 个协处理器,编号从 CP0~CP15,其中的 CP15 协处理器称之
阅读全文
摘要:arm官方资料 ARM Architecture Reference Manual ARMv7-A and ARMv7-R edition.pdf 特权等级(Privilege level) ARMv7架构支持安全扩展,如果使能了安全扩展,ARMv7-A架构分为安全模式(Secure State)和
阅读全文
摘要:arm 虚拟地址空间划分 Documentation\arm\memory.rst Start End Use ffff8000 ffffffff copy_user_page / clear_user_page use. For SA11xx and Xscale, this is used to
阅读全文
摘要:进程调度含义 进程调度决定了将哪个进程进行执行,以及执行的时间。操作系统进行合理的进程调度,使得资源得到最大化的利用。 在单片机上,常常使用的方式是:系统初始化 >while(1){}。(当然,单片机也可以跑类似 FreeRTOS,也可以有进程切换) 在带操作系统的 CPU 上跑的逻辑是,允许多个进
阅读全文
摘要:Linux程序中,创建进程使用的是fork()函数,它会产生一个和父进程基本完全相同的子进程,这里先记住有相同的物理内存,区别仅仅在于pid、ppid和某些统计量。子进程后面基本都会执行exec系统调用,它会引起子进程另起内存拷贝一份,如果创建子进程都需要拷贝内存的话,辛苦拷贝的又完全放弃了,出于效
阅读全文
摘要:栈是什么?栈有什么作用?首先,栈 (stack) 是一种串列形式的 数据结构。这种数据结构的特点是后入先出 (LIFO, Last In First Out),数据只能在串列的一端 (称为:栈顶 top) 进行 推入 (push) 和 弹出 (pop) 操作。根据栈的特点,很容易地想到可以利用数组,
阅读全文
摘要:进程的管理与调度是所有操作系统的核心功能。从内核的角度来看,进程是内核分配资源(CPU,Memory)的重要单元,是计算机用来管理这些资源的一种抽象。 进程状态 1、TASK_RUNNING 表示进程要么正在执行,要么准备执行,等待cpu时间片的调度 2、TASK_INTERRUPTIBLE 表示进
阅读全文
摘要:简介 工作队列是将中断操作延期执行的另一种手段。因为它们是在内核线程进程执行,允许睡眠。 对每个工作队列来说,内核都会创建一个新的内核守护线程。新的工作队列通过调用 create_workqueue 或 create_singlethread_workqueue 函数来创建。前一个函数在所有CPU上
阅读全文