摘要:
缓冲区溢出漏洞实验 缓冲区溢出漏洞:缓冲区溢出是指程序试图向缓冲区写入超出预分配固定长度数据的情况。这一漏洞可以被恶意用户利用来改变程序的流控制,甚至执行代码的任意片段。这一漏洞的出现是由于数据缓冲器和返回地址的暂时关闭,溢出会引起返回地址被重写。 输入命令安装一些用于编译32位C程序的东西: 输入 阅读全文
摘要:
云课堂回顾学习 1. 进程调度的时机 中断处理过程(包括时钟中断、I/O中断、系统调用和异常)中,直接调用schedule(),或者返回用户态时根据need_resched标记调用schedule(); 内核线程可以直接调用schedule()进行进程切换,也可以在中断处理过程中进行调度,也就是说内 阅读全文
摘要:
可执行程序的装载 一、预处理、编译、链接和目标文件的格式 1. 可执行程序是怎么来的?通过以下这个图来呈现过程: 以我们常写的helloworld为例。我们编写了一个helloworld的.c文件,我们来把它进行预处理,预处理就是gcc –e –o hello.cpp(预处理的中间命令)hello. 阅读全文
摘要:
理论 1. task_struct的结构关系 非常庞大的数据结构,400多行代码。包括对进程链表的管理,控制台,文件系统描述,文件描述符,内存管理描述,信号描述等。 2. 创建一个新进程在内核中的执行过程 fork、vfork和clone三个系统调用都可以创建一个新进程,而且都是通过调用do_for 阅读全文
摘要:
实验 给MenuOS增加time和time asm命令的方法: 1. 更新menu代码到最新版 2. 再main()函数中增加MenuConfig 3. 增加对应的Time函数和TimeAsm函数(这里的函数要换成我们自己编写的使用系统调用的函数,比如mkdir和mkdirAsm) 4. make 阅读全文
摘要:
视频学习 一、用户态、内核态和中断 1. 内核态:处于高的执行级别下,代码可以执行特权指令,访问任意的物理地址,这时的CPU就对应内核态 2. 用户态:处于低的执行级别下,代码只能在级别允许的特定范围内活动。在日常操作下,执行系统调用的方式是通过库函数,库函数封装系统调用,为用户提供接口以便直接使用 阅读全文
摘要:
关于linux内核源码 两个很关键的目录,一个是arch(architecture),支持不同cpu体系架构的源代码,其中最重要的就是x86(一般把x86留下,其他的目录删掉),另一个是init(其中的main.c是整个linux内核启动的起点,不过这里面不是main()函数,而是一个叫start_ 阅读全文
摘要:
Linux第四周作业 == 1. 堆栈知识 首先回顾了下堆栈相关的知识,堆栈机制是高级语言可以运行的一个基础,这一块需要重点掌握。函数发生调用时,如图 call指令:将eip的按顺序执行的下一条指令(因为在执行call的时候,eip保存的是call语句下一条指令的地址)的地址保存在当前栈顶,然后设置 阅读全文
摘要:
最近,深入的阅读了《Linux内核设计与实现》这本书,以下是碰到的一些问题,在此和大家进行交流学习。 碰到的问题 1.为什么不要在linux内核中使用浮点数(这个问题由于书上讲的不够明白,所以导致自己不能理解,去参考别的资料才弄懂) 浮点的编码跟整数编码是不一样的,计算时需要专门的寄存器和浮点计算单 阅读全文
摘要:
《Linux内核原理与分析》第二周作业 === 这一周学习了MOOC "Linux内核分析" 的第一讲,计算机是如何工作的?由于本科对相关知识的不熟悉,所以感觉有的知识理解起来了有一定的难度,不过多查查资料,看看别人的解答,慢慢的也就理解了,最终形成自己的知识脉络。 实验分析 先创建文件,通过vim 阅读全文