- 博客(7)
- 收藏
- 关注
原创 Linux课程总结报告
一般分为四个阶段: BIOS启动引导阶段;GRUB启动引导阶段;内核阶段;init初始化阶段。BIOS启动引导阶段:计算机加电后,首先运行的是BIOS程序,BIOS程序会检测计算机硬件设备并进行初始化,然后将控制权交给下一级的启动引导程序。GRUB启动引导阶段:GRUB是GNU开源组织开发的多操作系统引导程序,它可以在多个操作系统之间进行切换。GRUB启动后会显示一个菜单,让用户选择要启动的操作系统。内核阶段:内核是操作系统的核心部分,它负责管理计算机硬件设备和软件资源。
2023-05-20 10:12:38 85 1
原创 深入理解进程切换
context_switch是 Linux 内核中用于进行进程上下文切换的函数,其源码位于kernel/sched/core.c文件中。context_switch()一共有三个传入参数,其中rq表示当前就绪队列,struct rq是一个成员非常多的结构体,描述了此CPU上所运行的所有进程,prev与next分别指向了是前序、后序进程的描述符。
2023-04-29 16:11:14 103
原创 以time/gettimeofday系统调用为例分析ARM64 Linux 5.4.34
ARM64 架构的 CPU 中的 系统调用和其他异常的处理过程大致相同。异常发生时,CPU 首先把异常的原因,这里是比如执行 svc 指令触发系统调用放在 ESR_EL1 寄存器里,然后把当前的处理器状态PSTATE放入 SPSR_EL1 寄存器里,把当前程序指针寄存器 PC 的值存入 ELR_EL1 寄存器里来保存断点,然后 CPU 通过异常向量表基地址和异常的类型计算出异常处理程序的入口地址,即 VBAR_EL1 寄存器加上偏移量取得异常处理的入口地址,接着开始执行异常处理入口的第一行代码。
2023-04-25 20:52:50 265
原创 跟踪分析Linux内核启动过程
这里首先运行“/sbin/init”,如果失败再运行“/etc/init”,然后是 “/bin/init”,然后是“/bin/sh”(也就是说,init可执行文件可以放在上面代码中寻找的4个目录中都可以),如果都失败,则可以通过在系统启动时再添加的启动参数来指定init,比如init=/home/rootfs/init。init进程是Linux系统的第一个用户态进程,为1号进程,没有父进程,由Linux内核直接启动,接下来还创建了一个kthreadd内核线程,来管理系统的资源。打包成内存根文件系统镜像。
2023-03-23 10:53:25 137
原创 学习获得(1)
结构体数组的创建与其他类型无区别;两个相同结构体类型的变量可以直接赋值;多看看排序算法https://blog.csdn.net/qq_22080999/article/details/81060103
2019-09-17 18:58:48 173
原创 随便
这里写自义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Mar...
2019-09-17 18:55:48 218
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人