自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(4)
  • 收藏
  • 关注

原创 Linux操作系统分析-课程总结报告

在学习 Linux 操作系统的过程中,我发现它的设计思路非常独特,采用了多用户、多任务、多线程等技术,使得系统具有非常高的可用性和可靠性。当进程执行时,如果发生任何错误,进程通常会被调度回内核态以便内核可以处理错误,此时,进程将无法访问新可执行文件中的代码和数据段,因为已经被内核态加载到了内存中。孟老师和李老师带领我们熟悉了linux操作系统,也让我对计算机系统的基本工作原理有了深层次的理解,通过阅读Linux源码,对其进行编译调试启动,在实验的过程中深入地了解了系统调用过程,以及不同处理器汇编的区别。

2023-05-15 21:35:37 361

原创 linux操作系统lab5_深入理解进程切换

对于内核线程而言,其 task_struct 的 mm 成员为 NULL,然而内核线程执行的时候,总是需要一个进程地址空间,而 active_mm 就是指向它借用的那个进程地址空间。swtich_to 函数会进一步调用__switch_to_asm,而 __switch_to_asm 的实现是和体系结构强相关的。中间的两条 movq 语句就是新旧进程的分界线,随着内核栈顶的切换,内核栈空间也就切换到了新进程,之后只需要弹出栈中保存的各个寄存器的值即可恢复寄存器状态。再接着,一段代码实现进程地址空间的切换。

2023-04-26 21:54:58 146 1

原创 Linux实验四-以time/gettimeofday系统调用为例分析ARM64 Linux 5.4.34

随后,以 svc 指令对应的 el0_sync 为例,el0_sync 处的内核汇编代码首先做的就是保存异常发生时程序的执行现场(保存现场,即用户栈、通用寄存器等),然后根据异常发生的原因(ESR_EL1 寄存器中的内容)跳转到 el0_svc,el0_svc 会调用 el0_svc_handler、el0_svc_common 函数,将 X8 寄存器(regs->regs[8])中存放的系统调用号传递给 invoke_syscall 函数。#编译,在busybox目录下生成_install目录。

2023-03-31 20:34:58 122

原创 Linux实验三——基于VS Code的Linux内核调试环境搭建及start_kernel跟踪分析

首先执行start_kernel:有一个关键目录是init目录,内核启动相关的代码都在这个目录下。init目录中的main.c源文件是整个Linux内核启动的起点,但它的起点不是main函数,而是main.c源文件中的start_kernel函数,start_kernel函数是初始化Linux内核启动的起点。继续执行,到kernel_init,即1号进程,由kernel_thread函数创建,kernel_thread函数创建一个新的内核线程,该线程的入口地址是kernel_init()函数。

2023-03-23 23:49:19 116 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除