南昌网站设计有限公司,seo短视频网页入口引流动漫,医疗信息化软件公司排名,南京微信网站开发二#xff0c;操作系统是如何工作的 1、函数调用堆栈 三大法宝#xff1a;存储程序计算机 函数调用堆栈 中断机制 堆栈#xff1a;是C语言程序运行时必须的一个记录调用路径和参数的空间。是计算机内部现成的东西#xff0c;我们直接使用。 包括函数调用框架、传递参数、保…二操作系统是如何工作的 1、函数调用堆栈 三大法宝存储程序计算机 函数调用堆栈 中断机制 堆栈是C语言程序运行时必须的一个记录调用路径和参数的空间。是计算机内部现成的东西我们直接使用。 包括函数调用框架、传递参数、保存返回地址、提供局部变量的空间等等。 堆栈相关寄存器esp堆栈指针栈顶、ebp基址指针栈底 * ebp在C语言中用作记录当前函数调用基址。 堆栈操作push栈顶地址减少四个字节、pop栈顶地址增加四个字节32位 其他关键寄存器cseip总是指向下一条指令的地址。call、ret //建立被调用函数的堆栈框架 pushl %ebp movl %esp,%ebp //被调用者函数体 //do sth //拆除被调用者函数的堆栈框架 movl %ebp,%esp popl %ebp ret call指令是将eip中下一条指令的地址保存在栈顶设置eip指向被调用程序的代码开始处。 ret将该地址恢复到eip中 * 举例应用首先使用gcc -g 生成test.c的可执行文件test然后再使用objdump -s获得test的反汇编文件。 有压栈必有出栈有生必有死。 函数的返回值通过eax寄存器传递。 2借助Linux内核部分源代码模拟存储程序计算机工作模型及时钟中断 中断机制如何工作CPU和内核代码共同实现保存现场和恢复现场。 mykernel的实验诸如下图 3在mykernel基础上构造一个简单的操作系统内核 C语言代码中嵌入汇编代码 asm(statements : output_regs :inout_regs :clobbered_regs); 输入、输出、破会描述、编译器优化、不允许编译器优化等等。 mysceh的具体内容 两个正在运行的进程之间做进程上下文转换 * 操作系统的两把剑中断上下文和进程上下文的切换 时间片轮转的例子时间片可以改小一点。 4学习心得体会 基本了解了函数调用堆栈的过程和原理中断机制的工作原理以及mykernel的一些相关知识最后学习了一下时间片轮转的实验举例。总的来说内容不多也不算少还是需要一些时间来消化和理解的。很不错的一次自学。转载于:https://www.cnblogs.com/KG35/p/5247310.html