- 博客(4)
- 问答 (4)
- 收藏
- 关注
原创 Linux操作系统分析课程总结报告
通过对Linux操作系统分析课程的学习,我了解了Linux的基本使用,如一些基本的命令(ls、ps、find、grep),接着又深入了解了Linux内核的执行过程,比如系统调用、进程调用、中断等,对Linux系统有了更加深刻的认识。在阅读Linux源码的过程中,我学会了使用VScode和gdb工具辅助学习,其中遇到了许多问题,通过网上查询和询问同学的方式,最终得到解决。在前几节课时,老师通过讲解汇编代码和手动模拟栈,使我对函数的调用和系统调用有了更加深刻的认识。
2023-05-15 20:27:09 112 1
原创 深入理解进程切换
(4)__switch_to_asm将prev进程的寄存器状态压栈,其中RIP寄存器是在调用__switch_to_asm时(即使用了call指令)压栈的,__switch_to将寄存器状态转化为next进程的状态,并通过return(即ret指令),将next原来栈顶地址sp存入RIP寄存器。(2)进行进程切换时,首先要通过int 0x80触发系统调用,这时候会调用schedule()函数切换到内核线程,内核线程再次调用schedule()函数从原来的进程切换到新的进程。进程切换就是变更进程上下文。
2023-04-27 20:48:26 141 1
原创 以time/gettimeofday系统调用为例分析ARM64 Linux 5.4.34
在ARM64系统环境下是通过X8寄存器传递系统调用号,在基于华为鲲鹏处理器的openEuler操作系统云主机环境下分析静态编译反汇编代码可以发现C库函数time内部封装的是gettimeofday系统调用,系统调用号为0xa9(169),通过查阅Linux内核源代码中的include\uapi\asm-generic\unistd.h可以找到169号gettimeofday系统调用对应的内核处理函数为sys_gettimeofday。原因是在配置.config时,选项被覆盖了,将选项添加到文件尾部。
2023-04-24 22:22:15 176 1
原创 基于VS Code的Linux内核调试环境搭建及start_kernel跟踪分析
电脑加电启动首先由bootloader加载内核,内核紧接着需要挂载内存根文件系统,其中包含必要的设备驱动和工具,bootloader加载根文件系统到内存中,内核会将其挂载到根目录/下,然后运行根文件系统中init脚本执行一些启动任务,最后才挂载真正的磁盘根文件系统。(5)新建init脚本文件,并放到根文件系统根目录下(rootfs/init),init内容如下。(3)安装curses库(之后会基于curses库的文本窗口界面配置Linux)(1)从浏览器中下载.deb文件,执行如下命令安装。
2023-03-23 21:53:06 140
空空如也
ping: baidu.com: 未知的名称或服务
2023-03-07
nginx访问网页不存在
2022-11-21
无法访问nginx网页
2022-11-16
virtualbox ubuntu20.04 无法ping成功
2022-11-12
使用FileReader读取文件出现了这样的问题
2022-11-04
抢占式优先级调度算法如何实现
2022-05-05
华硕笔记本电脑插入耳机没有声音,但外放有声音
2022-03-20
vscode运行c/c++程序 在调用堆栈区 出现 因exception已暂停
2022-03-01
TA创建的收藏夹 TA关注的收藏夹
TA关注的人