Linux内核分析(第二周)
操作系统是如何工作的?
一、总结:三大法宝
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内核分析(第二周)的更多相关文章
- linux内核分析第二周
网易云课堂linux内核分析第二周 20135103 王海宁 <Linux内核分析>MOOC课程http://mooc.study.163.com/cours ...
- LINUX内核分析第二周学习总结——操作系统是如何工作的
LINUX内核分析第二周学习总结——操作系统是如何工作的 张忻(原创作品转载请注明出处) <Linux内核分析>MOOC课程http://mooc.study.163.com/course ...
- Linux内核分析第二周学习笔记
linux内核分析第二周学习笔记 标签(空格分隔): 20135328陈都 陈都 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.co ...
- Linux内核分析第二周--操作系统是如何工作的
Linux内核分析第二周--操作系统是如何工作的 李雪琦 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course ...
- Linux内核分析第二周学习博客——完成一个简单的时间片轮转多道程序内核代码
Linux内核分析第二周学习博客 本周,通过实现一个简单的操作系统内核,我大致了解了操作系统运行的过程. 实验主要步骤如下: 代码分析: void my_process(void) { int i = ...
- linux内核分析第二周-完成一个简单的时间片轮转多道程序内核代码
中断时计算机运行的一个非常重要的功能.之所以重要,是因为由于种种原因,计算机不能将一个程序从头执行到尾不间断,而是可能会出现很多像等待输入设备输出设备的过程,如果没有中断系统,CPU只能等待,造成资源 ...
- Linux内核分析第二周学习总结:操作系统是如何工作的?
韩玉琪 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.函数调用堆栈 ...
- Linux内核分析第二周:操作系统是如何工作的
第一讲 函数调用堆栈 计算机是如何工作的? (总结)——三个法宝 1,存储程序计算机工作模型,计算机系统最最基础性的逻辑结构: 2,函数调用堆栈,高级语言得以运行的基础,只有机器语言和汇编语言的时候堆 ...
- linux内核分析 第二周 操作系统是如何工作的
银雪纯 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.计算机是如何工作的 ...
- Linux内核分析 第二周
Linux内核分析——完成一个简单的时间片轮转多道程序内核代码 张潇月+<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-100 ...
随机推荐
- Google常用脚本
1.Tampermonkey 可下载常用脚本:https://greasyfork.org/zh-CN 2.常用FQSetupVPN 3.百度药丸屏蔽广告 4.百度文档可粘贴,下载 5.VIP视频可看
- 团队作业——Beta冲刺2
团队作业--Beta冲刺 冲刺任务安排 杨光海天 今日任务:根据冲刺内容,具体分配个人任务,对于冲刺内容做准备 明日任务:图片详情界面的开发 吴松青 今日任务:学习熟悉安卓开发,跟随组员快速了解其代码 ...
- MySql详解(四)
MySql详解(四) MySql的DML操作 插入: 一.方式一 语法: insert into 表名(字段名,...) values(值,...); 特点: 1.要求值的类型和字段的类型要一致或兼容 ...
- 随手练——DFS小练
1. 单词接龙 https://www.luogu.org/problemnew/show/P1019 题目描述 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头 ...
- haproxy安装及日志配置
1.yum安装 yum install haproxy -y 2.配置文件修改,经典配置 vim /etc/haproxy/haproxy.cfg #------------------------- ...
- js 正则表达式验证密码、邮箱格式.....
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- Android 调用手机上第三方百度地图并传值给地图
//移动APP调起Android百度地图方式举例 Intent intent = null; try { // intent = Intent.getIntent("intent://map ...
- 609E- Minimum spanning tree for each edge
Connected undirected weighted graph without self-loops and multiple edges is given. Graph contains n ...
- R链接hive/oracle/mysql
Linux:R连接hive用的Rhive 1,重要 1,sudo R CMD javareconf 2,sudo R 3, 1+1 是否为2 3.1,>install.packages(&quo ...
- Android Notification的使用 - z
http://blog.csdn.net/new_one_object/article/details/55511253 另,博主其它文章也很好