zoukankan      html  css  js  c++  java
  • 20135316王剑桥Linux内核学习笔记

    20135316王剑桥
    《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000
    一、计算机是如何工作的?(总结)——三个法宝
    存储程序计算机工作模型,计算机系统最最基础性的逻辑结构;
    函数调用堆栈,高级语言得以运行的基础,只有机器语言和汇编语言的时候堆栈机制对于计算机来说并不那么重要,但有了高级语言及函数,堆栈成为了计算机的基础功能;
    enter 
    pushl %ebp
     movl %esp,%ebp
    leave 
    movl %ebp,%esp
    popl %ebp
    函数参数传递机制和局部变量存储
    中断,多道程序操作系统的基点,没有中断机制程序只能从头一直运行结束才有可能开始运行其他程序。
    二、堆栈是C语言程序运行时必须的一个记录调用路径和参数的空间
    三、堆栈相关寄存器:esp(栈顶指针)ebp(栈底指针)
    ebp在C语言中用作记录当前函数调用基址
    cs:eip:总是指向下一条的指令地址(顺序执行)
    跳转/分支:call,将当前cs:eip的值压入栈顶,cs:eip指向被调用函数的入口地址
    Ret,将保存在栈顶的cs:eip的值弹出,放入cs:eip中
    四、堆栈相关操作:push(压栈,栈顶减少四个字节)pop(出栈,栈顶增加四个字节)
    五、call指令执行时,cs:eip指向原来call下一条指令,该值被保存到栈顶,然后cs:eip指向被调用函数的入口;进入被调用函数,pushl ebp;movl esp ebp;退出被调用函数,movl ebp esp;popl ebp;ret。
    六、由CPU和内核代码共同实现了保存现场和恢复现场
    七、C代码中嵌入汇编代码的写法:
    asm(汇编语句模板:输出部分:输入部分:破坏描述部分)
    如:asm(“statements”:output-regs:input-regs:clobbered-regs)
    asm可以用“-asm-”来代替。

    九、内嵌汇编常用限定符

    $1f:接下来标号1:的位置
    十、进程切换的汇编代码:

    十一、操作系统两把剑:中断上下文和进程上下文切换。
    十二、切换到一个新进程

    十三、实验截图


    总结:从我对这节课所学内容以及实验分析的理解,我认为操作系统是通过中断处理和进程切换来调度执行每一个进程的。在这个过程中CPU和内核代码起到了关键性作用。当一个进程出现中断时cpu会访问中断处理代码,然后进行处理之后重新返回进程,当一个进程执行结束时,cpu会切换到下一个即将被执行的进程。

  • 相关阅读:
    pytest入门 及allure2报告生成
    java 常用集合list与Set、Map区别及适用场景总结
    通俗地解释脏读、不可重复读、幻读
    Serializable接口的意义和用法
    maven基础
    Class.forName()用法详解
    关于getClass(),Object.class,getClassLoader的理解
    maven(一) maven到底是个啥玩意~
    TCP/IP协议族体系结构:死也不能忘记的四个层
    HTML表单常用标签
  • 原文地址:https://www.cnblogs.com/20135316wjq/p/5245035.html
Copyright © 2011-2022 走看看