自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 问答 (5)
  • 收藏
  • 关注

原创 学习软件工程(C编码实践篇)的心得

对软件工程的理解我很认同软件工程 = 程序(程序 = 算法 + 数据结构) + 工程化编码,这其中缺一不可。每个程序员掌握了这些规则,这个团队才能各司其职,共同完成一个软件的开发。这好比一个团队去开黑,连游戏规则都不知道,技术再好,也是白搭。心得体会这门课给我最大的感受就是,学,想,做,这三方面缺一不可,因为每周的作业都要求自己练习,否则没法

2017-09-28 19:59:12 242

原创 Linux内核学习总结

对Linux系统的理解:之前学过一些操作系统和数据结构,计算机组成等相关课程,对于linux系统,有了更加深入的理解。在我看来,linux系统是这样的:硬件上电以后执行汇编代码,之后运行my_kernel,这是执行的第一条c语言指令。my_kernel会根据静态创造的0号进程,陷入中断,进入内核态,调用fork复制0号进程成为1号进程,1号进程是所有用户态进程的祖先,然后返回用户态。之

2017-09-05 20:37:03 181

原创 理解进程调度时机跟踪分析进程调度与进程切换的过程

理解Linux系统中进程调度的时机,可以在内核代码中搜索schedule()函数,看都是哪里调用了schedule(),判断我们课程内容中的总结是否准确;使用gdb跟踪分析一个schedule()函数 ,验证您对Linux系统进程调度与进程切换过程的理解;推荐在实验楼Linux虚拟机环境下完成实验。特别关注并仔细分析switch_to中的汇编代码,理解进程上下文的切换机

2017-09-03 16:04:35 242

原创 Linux内核如何装载和启动一个可执行程序

理解编译链接的过程和ELF可执行文件格式,详细内容参考本周第一节;编程使用exec*库函数加载一个可执行文件,动态链接分为可执行程序装载时动态链接和运行时动态链接,编程练习动态链接库的这两种使用方式,详细内容参考本周第二节;使用gdb跟踪分析一个execve系统调用内核处理函数sys_execve ,验证您对Linux系统加载可执行程序所需处理过程的理解,详细内容参考本周第三节

2017-09-01 17:02:52 301

原创 分析Linux内核创建一个新进程的过程

阅读理解task_struct数据结构http://codelab.shiyanlou.com/xref/linux-3.18.6/include/linux/sched.h#1235这个也就是我们操作系统所学的进程pcb,它的结构非常庞大,具体代码是从第1235行到第1664行。这里选几个重要的结构说明state进程状态(就绪态和运行状态都是TASK_RUNNING,它们的区别在

2017-08-30 15:28:44 471

原创 扒开系统调用三层皮(二)

这次的实验是使用gdb跟踪分析一个系统调用内核函数,这里使用上一篇文章中的1号系统调用exit先在实验楼的虚拟机中MenuOs增加exit和exit-asm指令。具体实现如下:1、准备工作(自己的linux环境直接git clone即可) 2、进入test.c,添加代码(完整代码见上一篇博客)  3. 编译执行接下来gdb分析system_call代码的

2017-08-28 14:35:35 410

原创 扒开系统调用的三层皮(一)

题目自拟,内容围绕系统调用的工作机制进行;博客中需要使用实验截图博客内容中需要仔细分析汇编代码调用系统调用的工作过程,特别是参数的传递的方式等。总结部分需要阐明自己对“系统调用的工作机制”的理解。相关概念系统调用:操作系统为用户态进程与硬件设备进行交互提供的一组接口。内核态: CPU可以访问内存所有数据, 包括外围设备, 例如硬盘,

2017-08-26 11:25:04 388

原创 跟踪分析Linux内核的启动过程

首先我们要搭建一个MenuOS,本次的实验指导:使用实验楼的虚拟机(https://www.shiyanlou.com/courses/195)打开shellcd LinuxKernel/qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img使用自己的linux操作系统

2017-08-24 14:33:03 207

原创 简单的时间片轮转多道程序内核代码浅析(二)

在简单的时间片轮转多道程序内核代码浅析(一),跟大家演示了一个最简单的操作系统内核大概是个什么样子,这篇文章我将修改内核代码,使之成为一个简单的时间片轮转多道程序内核,然后重新编译运行。从https://github.com/mengning/mykernel上下载mypcb.h;mymain.c;myinterrupt.c;将原来home/shiyanlou/LinuxKerne

2017-08-21 17:49:12 339

原创 简单的时间片轮转多道程序内核代码浅析(一)

本实验是在linux环境下进行的,大家可以在实验楼的实验二来看到一个简单的时间片轮转多道程序内核代码https://www.shiyanlou.com/courses/195运行效果图完成mykernel的运行以后,在其同名目录下,会有myinterrupt和mymain 两个c程序文件首先打开mymain.c里面只有一个函数,其他都是相关头文件,完成的工作就是初始化。

2017-08-18 23:25:53 241

原创 浅谈X86汇编指令

大家好,这是我人生第一次写博客,许多不足之处还请多多包含。分析X86汇编指令,我们需要一些基础知识X86X86是由Intel推出的一种复杂指令集,用于控制芯片的运行的程序,现在X86已经广泛运用到了家用PC领域。现在基本上用来指代32位操作系统。相关寄存器与计算机组成原理中的相关寄存器类似,只不过多出的E是Extended的缩写,代表是32位的寄存器。

2017-08-17 17:28:08 1013

空空如也

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

TA关注的人

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