操作系统是如何工作的?

一、总结:三大法宝

1.存储程序计算机 + 函数调用堆栈 + 中断机制

2.堆栈:C语言程序运行时候必须的一个记录调用路径和参数的空间(函数调用框架/提供局部变量/传递参数/保存返回地址)

不同指令可能实现相同的功能

3.堆栈相关:esp ebp ;操作: push pop;

ebp在C语言中用作记录当前函数调用的基址

cs:eip总是指向下一条的指令地址:顺序;跳转/分支

//建立被调用者函数的堆栈框架

pushl %ebp

movl %esp %ebp

//拆除被调用者函数的堆栈框架

movl %ebp %esp

popl %ebp

ret

二、借助linux内核部分源代码模拟存储程序计算机工作模型及时钟中断

1.由CPU和内核代码共同实现了保存现场和危险现场

2.实验楼虚拟机,打开shell

实验截图:

三、在mykernel基础上构造一个简单的操作系统内核

1. C语言中嵌入汇编代码的写法

  限定符 “m”内存变量 “=”只写“+”读写

2.简单的内核源代码

thread(存ip sp)

pcb(定义进程管理相关的数据结构)

my_schedule(调度器)

内核初始化 0号调度

初始化0号进程

创建更多的进程

启动0号进程

ret之后0号进程启动

循环1000万次,才有机会判断一下是否需要调度

设置时间片大小,时间片用完时设置一下调度标志。

两个正在运行的进程进行上下文切换

pushl %%ebp

movl %esp

movl $1f %1\n\t

1f表示接下来标号1的位置

Linux内核分析(第二周)的更多相关文章

  1. linux内核分析第二周

    网易云课堂linux内核分析第二周 20135103                王海宁 <Linux内核分析>MOOC课程http://mooc.study.163.com/cours ...

  2. LINUX内核分析第二周学习总结——操作系统是如何工作的

    LINUX内核分析第二周学习总结——操作系统是如何工作的 张忻(原创作品转载请注明出处) <Linux内核分析>MOOC课程http://mooc.study.163.com/course ...

  3. Linux内核分析第二周学习笔记

    linux内核分析第二周学习笔记 标签(空格分隔): 20135328陈都 陈都 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.co ...

  4. Linux内核分析第二周--操作系统是如何工作的

    Linux内核分析第二周--操作系统是如何工作的 李雪琦 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course ...

  5. Linux内核分析第二周学习博客——完成一个简单的时间片轮转多道程序内核代码

    Linux内核分析第二周学习博客 本周,通过实现一个简单的操作系统内核,我大致了解了操作系统运行的过程. 实验主要步骤如下: 代码分析: void my_process(void) { int i = ...

  6. linux内核分析第二周-完成一个简单的时间片轮转多道程序内核代码

    中断时计算机运行的一个非常重要的功能.之所以重要,是因为由于种种原因,计算机不能将一个程序从头执行到尾不间断,而是可能会出现很多像等待输入设备输出设备的过程,如果没有中断系统,CPU只能等待,造成资源 ...

  7. Linux内核分析第二周学习总结:操作系统是如何工作的?

    韩玉琪 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.函数调用堆栈 ...

  8. Linux内核分析第二周:操作系统是如何工作的

    第一讲 函数调用堆栈 计算机是如何工作的? (总结)——三个法宝 1,存储程序计算机工作模型,计算机系统最最基础性的逻辑结构: 2,函数调用堆栈,高级语言得以运行的基础,只有机器语言和汇编语言的时候堆 ...

  9. linux内核分析 第二周 操作系统是如何工作的

    银雪纯 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.计算机是如何工作的 ...

  10. Linux内核分析 第二周

    Linux内核分析——完成一个简单的时间片轮转多道程序内核代码 张潇月+<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-100 ...

随机推荐

  1. Dijkstra(最短路求解)

    Dijkstra(最短路求解) 模板: #include<iostream> #include<cstdio> #include<cstring> #include ...

  2. js判断360浏览器 兼容模式IE版本

    var ms_ie = false; var ua = window.navigator.userAgent.toLowerCase(); var old_ie = ua.indexOf('MSIE' ...

  3. H5页面meta标签小结:

    <meta name="viewport" content="width=device-width,user-scalable=no"> <m ...

  4. HTML常用标签大全

  5. python 爬取全量百度POI

    在网上找了很多关于爬取百度POI的文章,但是对“全量”的做法并没有得到最终的解决方案,自己写了一个,但还是不能实现全量POI抓取,能够达到至少50%的信息抓取.注意:这里所指“全量”是能够达到100% ...

  6. 重复子串(string)

    从\(ckw\)博客上看来的题目,可能是正睿oj上的,但我想我这样没有氪金的自然是写不了的,就口胡一波吧 题意:给定一个字符串,多组询问,每次询问一个子串的权值:一个字符串的权值定义为这个字符串里出现 ...

  7. Oracle 12C Data Gurad RAC TO RAC

    Oracle 12C RAC TO RAC Data Guard on RHEL7 0.环境说明   primary db physical standby 操作系统 rhel7 x86_64 rhe ...

  8. 离线安装Cloudera Manager 5和CDH5(最新版5.9.3) 完全教程(一)环境说明

    关于CDH和Cloudera Manager CDH (Cloudera's Distribution, including Apache Hadoop),是Hadoop众多分支中的一种,由Cloud ...

  9. docker构建Java环境

    FROM java:7 COPY . /usr/src/javaapp WORKDIR /usr/src/javaapp RUN javac HelloWorld.java CMD ["ja ...

  10. shiro实战系列(九)之Web

    一.Configuration(配置) 将 Shiro 集成到任何 Web 应用程序的最简单的方法是在 web.xml 中配置 ContextListener 和 Filter,理解如何读取 Shir ...