自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 《代码中的软件工程》学习总结

我认为软件工程是所有程序员的必修课,通过这门课的学习,我掌握了常用开发工具的使用,能够有意识地去追求代码的高质量。同时学习了需求分析、用例建模的过程,能够有效整理出高质量的需求。此外,设计模式以及MVC、MVVM的软件架构使我深刻地认识到软件科学的奥义。最后,由软件危机引出来讲述的软件过程模型和一些新型的软件开发模式以及团队合作模式更是给我们打开了开发团队合作、管理的大门。总之,这门课使我获益良多,为我们将来的职业发展提供了有力的理论和实践支撑。

2023-07-09 21:17:31 59

原创 作业4:从需求分析到软件设计

通过本节课的学习以及本次实验中对VS Code Remote Development相关功能的需求分析和逆向工程,我认识到了需求分析对于产品开发的重要意义和作用,帮助开发者在项目开发初期就明确具体需求和方向,同时明白了逆向分析和研究的意义,从VS Code Remote Development这一产品出发,演绎并得出该产品的处理流程、组织结构等设计要素,获益匪浅。学号:134。

2023-05-30 22:58:14 50

原创 Linux课程总结报告

本课程基于Linux 5.4.34系统内核,让我们深入理解了Linux系统的系统调用、进程切换、可执行程序工作原理等。带我们制作内存根文件系统,配置VSCode调试Linux内核,从start_kernel始跟踪linux内核的启动;以 time/gettimeofday 系统调用为例分析ARM64 Linux 5.4.34;深入理解了进程切换的原理,了解了__schedule()、context_switch()等关键函数的作用;了解了虚拟化技术,以及虚拟化技术下 Linux 系统的一般执行过程。

2023-05-15 18:19:20 260

原创 以timegettimeofday系统调用为例分析ARM64 Linux 5.4.34

这一过程是 CPU 硬件自动完成的,不需要程序干预。随后,以 svc 指令对应的 el0_sync 为例,el0_sync 处的内核汇编代码首先做的就是保存异常发生时程序的执行现场(保存现场,即用户栈、通用寄存器等),然后根据异常发生的原因(ESR_EL1 寄存器中的内容)跳转到 el0_svc,el0_svc 会调用 el0_svc_handler、el0_svc_common 函数,将 X8 寄存器(regs->regs[8])中存放的系统调用号传递给 invoke_syscall 函数。

2023-05-15 11:08:21 87

原创 深入理解进程切换

之后,检查next如果和prev进程不一样,调用context_switch()函数进行上下文切换,next进程进入CPU运行。首先从CPU任务队列中取出当前进程的标识符记为prev进程。然后通过进程调度算法确定下一个要被换上的进程,记为next进程。跟踪分析进程切换的过程,总结进程切换的工作机制以及sp和ip在不同体系结构下汇编代码的切换方法,深入理解进程切换。(在kernel/sched/core.c中) 完成主要的硬件、寄存器等实际的切换工作。

2023-04-25 22:56:37 107 1

原创 作业3:深入理解Callback函数

回调函数就是一个被作为参数传递的函数。/**/这里的 SearchLinkTableNode 函数接收的参数中的Condition就是一个函数,这个函数就是回调函数。

2023-04-03 01:27:33 149 1

原创 基于VSCode的Linux内核调试环境搭建及start_kernel跟踪分析

用以上命令先启动,然后可以看到虚拟机一启动就暂停了。我们从start_kernel始跟踪linux内核的启动,可以看到Linux内核创建了0号进程(init_task),set_task_stack_end_magic()将0号进程设置为内核的初始进程,后续进程都由它创建。可以看到rest_init()函数创建了kernel_init()和kthreadd两个线程,后者负责对其他内核线程管理调度。然后单步调试,看到start_kernel了一些系统资源,比如物理内存管理器、虚拟内存管理器,中断程序等。

2023-03-24 23:55:55 196

空空如也

空空如也

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

TA关注的人

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