- 博客(18)
- 收藏
- 关注
原创 编译链接装载
一、使用GCC编译代码的时候,可以分解为4个步骤:预处理编译:编译的过程就是把预处理完成的文件进行一系列词法分析、语法分析、语义分析以及优化后生产相应的汇编代码文件。汇编:汇编器是将汇编代码转变成机器可以执行的指令。链接:链接的主要内容就是把各个模块之间相互引用的部分都处理好,使得各个模块之间能够正确的衔接。链接的过程主要包括了地址和空间分配、符号决议(符号绑定)、重定位等步骤。...
2022-05-09 17:31:05 524
原创 学习路线(一)
1、代码C语言pythonMakefileCmake2、硬件ahb总线spii2cusbuart串口gpioflash3、操作系统linuxrtosBootLoaderkernelrootfs中断驱动程序4、armriscv5、书嵌入式Linux应用开发完全手册Linux设备驱动============================================================一、计算机原理微机原理二、程序员的自我修养三
2021-05-26 09:13:37 127 1
原创 qsort面对大数如何处理
leetcode 260/**Note: The returned array must be malloced, assume caller calls free()./int cmpfunc (const void * a, const void * b){if ((long long int*)a > 0 && (long long int)b < 0) {return 1;}else if ((long long int)a < 0 &&
2021-05-14 10:51:50 90
原创 操作系统555
3.9 内核内存分配当用户态进程需要额外内存时,可以从内核所维护的空闲帧链表中获取页。该链表通常由页替换算法(例如上面页面置换介绍的算法)来更新,且如前所述,这些页帧通常分散在物理内存中。另外,如果用户进程只需要一个字节的内存,那么会产生内部碎片,这是因为进程会得到整个页帧。但是,内核内存的分配通常是从空闲内存池中获取的,而并不是从满足普通用户模式进程的内存链表中获取的。这主要有两个原因:(1)内核需要为不同大小的数据结构分配内存,其中有的不到一页。因此,内核必须谨慎使用内存,并试图减低碎片浪费。(
2021-04-06 09:46:25 71
原创 操作系统444
3.8 用户空间内存分配3.8.1 按需分配一个执行程序从磁盘载入内存的时候有两种方法。选择在程序执行时,将整个程序载入到内存中。不过这种方法的问题是可能开始并不需要整个程序在内存中。如有的程序开始时带有一组用户可选的选项。载入整个程序,也就将所有选项的执行代码都载入到内存中,而不管这些选项是否使用。另一种选择是在需要时才调入相应的页。这种技术称为按需调页(demand paging),常为虚拟内存系统所采用。按需调页系统看类似于使用交换的分页系统,进程驻留在第二级存储器上(通常为磁盘)。当
2021-04-06 09:43:20 225
原创 操作系统333
3.7 用户空间与内核空间3.7.1 说明Linux 简化了分段机制,使得虚拟地址与线性地址总是一致,因此,Linux 的虚拟地址空间也为0~4G 字节(32bit)。Linux 内核将这4G 字节的空间分为两部分。将最高的1G 字节(从虚拟地址0xC0000000 到0xFFFFFFFF),供内核使用,称为“内核空间”。而将较低的3G 字节(从虚拟地址0x00000000 到0xBFFFFFFF),供各个进程使用,称为“用户空间”。因为每个进程可以通过系统调用进入内核,因此,Linux 内核由系统内的
2021-04-06 09:34:17 152
原创 操作系统222
3 内存管理3.1 背景CPU所能直接访问的存储器只有内存和处理器内部的寄存器。CPU只能从内存和处理器内的寄存器中读取指令或数据,如果数据不在内存或缓存中,那么CPU必须先通过指令将数据从外存中转移到内存中。首先确保每个进程都有独立的内存空间。需要确定进程可以访问的合法地址的范围,并确保进程只访问其合法地址。基地址寄存器界限地址寄存器使用基地址寄存器保存用户进程合法的最小物理地址,使用界限地址寄存器保存用户进程的地址的范围大小3.2 地址绑定输入队列:进程在执行时可以在磁盘和内存之间移动
2021-04-02 20:23:11 363
翻译 【操作系统】操作系统概念
用户态/内核态动态链接/静态连接1 进程管理1.1 进程状态:新的:进程正在被创建运行:指令正在被执行等待:进程等待某个事件的发生(如I/O完成或收到信号)就绪:进程等待分配处理器终止:进程完成执行1.2 进程控制块(PCB):每个进程在操作系统中用进程控制块来表示,PCB一般包括:进程状态、程序计数器、CPU寄存器、CPU调度信息、内存管理信息、记账信息、I/O状态1.3 进程调度调度队列就绪队列:通常用链表实现,其中头结点指向链表的第一个和最后一个PCB块的指针。每个PCB包括
2020-07-30 11:02:07 403
原创 【知识点】存储器
MAR(Memory Address Register,存储地址寄存器)MDR(memory data register,存储数据寄存器)现代计算机,图中的驱动器、译码器和读写电路都在主存中,而MAR、MDR都在cpu中。
2020-07-06 11:42:32 154
原创 几个网站
https://wizardforcel.gitbooks.io/the-art-of-programming-by-july/content/06.07.htmlhttps://www.kancloud.cn/kancloud/the-art-of-programming/41618
2019-09-16 09:42:01 157
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人