20135130王川东

一、给MenuOS增加time和time-asm命令

命令:1、强制删除:rm menu -rf

   2、克隆:git clone (后跟需要克隆数据所在的位置)

   3、自动编译,自动生成根文件系统,并自动启动:make rootfs

给MenuOS增加time和time-asm命令步骤:

1、更新menu代码到最新版

2、在main函数中增加MenuCongfig

3、增加对应的time和time-asm函数

4、make  rootfs

二、使用gdb跟踪调用内核函数sys-time

跟踪方法和上次所学内容一样:

注:sys_time返回后进入汇编代码处理,gdb无法继续进行追踪

执行int 0x80之后执行system_call对应的代码

三、系统调用在内核代码中的处理过程

1、系统调用机制的初始化

\init\main.c start_kernel

      trap_init()

\arch\x86\kernel\traps.c

      #fdef CONFIG_x86_32

      set_system_trap_gate(SYSTALL_VECTOR,&system_call)(SYSTALL_VECTOR:系统调用的工作向量,&system_call:汇编代码的入口,系统执行int 0x80就跳转到该处执行)

      set_bit(SYSCALL_VECTOR,used_vectors)

#endif

2、system_call伪代码:

system_call位置:/ arch/x86/kernel/entry_32.S中

系统调用是特殊的中断:存在保存现场和恢复现场

SAVE_ALL保存现场

restore_all恢复现场
call *sys_call_table(,%eax,4)调用系统调用函数:eax存的是系统调用号,根据系统调用号去找sys_call_table中的中断处理。
INTERRUPT_RETURN,就是iret。

更新 menu 代码到最新版:

在main 函数中增加 MenuConfig:

增加对应的Getuid函数和Getuidasm函数

流程图:

总结:

发生中断时,CPU暂停执行当前程序,产生中断响应。中断响应主要工作是:
(1)中止当前程序的执行;
(2)保存原程断点现场  
(3)转到相应的处理程序。
接着中断处理程序进行相应处理:
(1)保存中断程序现场
(2)分析中断原因,转入相应处理程序
(3)调用中断处理程序
(4)中断返回。

《Linux内核与分析》第五周的更多相关文章

  1. LINUX内核分析第五周学习总结——扒开系统调用的“三层皮”(下)

    LINUX内核分析第五周学习总结--扒开系统调用的"三层皮"(下) 标签(空格分隔): 20135321余佳源 余佳源 原创作品转载请注明出处 <Linux内核分析>M ...

  2. LINUX内核分析第五周学习总结——扒开应用系统的三层皮(下)

    LINUX内核分析第五周学习总结——扒开应用系统的三层皮(下) 张忻(原创作品转载请注明出处) <Linux内核分析>MOOC课程http://mooc.study.163.com/cou ...

  3. 20135327郭皓--Linux内核分析第五周 扒开系统调用的三层皮(下)

    Linux内核分析第五周 扒开系统调用的三层皮(下) 郭皓 原创作品转载请注明出处 <Linux内核分析>MOOC课程 http://mooc.study.163.com/course/U ...

  4. linux内核分析第五周学习笔记

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

  5. Linux内核分析第五周——扒开系统调用的“三层皮”(下)

    Linux内核分析第五周--扒开系统调用的"三层皮"(下) 李雪琦+原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.1 ...

  6. Linux内核分析第五周学习总结——分析system_call中断处理过程

    Linux内核分析第五周学习总结--分析system_call中断处理过程 zl + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/U ...

  7. Linux内核分析——第五周学习笔记

    第五周 扒开系统调用的“三层皮”(下) 一.知识点总结 (一)给MenuOS增加time和time-asm命令 在实验楼中,首先 强制删除menu (rm menu -rf) 重新克隆一个新版本的me ...

  8. Linux内核分析第五周学习总结:扒开系统调用的三层皮(下)

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

  9. linux内核分析 第五周

    一.实验相关 1.下载老师最新的menu文件,并在其中添加上周所编写的代码,并运行 下载 添加 运行 2.gdb调试跟踪 gdb设置跟踪文件(先进入linux-3.18.6所在的文件) gdb设置断点 ...

  10. “Linux内核分析”第五周报告

    张文俊+ 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 学习总结 1.给M ...

随机推荐

  1. 第五章 C程序结构

    一.数值类型 1.实数常量的表示:3.5(双精度),3.5f(单精度),3.5L(长双精度) 2.整数常量:char字符常量(‘a’,‘b’,‘0’)当做一个整型常量参加运算 3.数字字符与英文字母字 ...

  2. 可编辑div中包含子元素时获取光标位置不准确的问题

    前言: 高亮显示输入框中的关键字符,这就必须得用到可编辑div(或其他标签)元素了,这时我们需要获取光标的位置,以便插入字符. 正文: 正常情况下获取光标位置,代码如下: function getPo ...

  3. day 35初识数据库

    一.数据库概述 1.什么是数据库?先来看看百度怎么说的. 数据库,简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据运行新增.截取.更新.删除等操作.     所谓“数据库”系 ...

  4. Error: JAVA_HOME is incorrectly set. Please update F:\hadoop\conf\hadoop-env.cmd解决方法

    啥都不说!直接上干货! 打开对应路径下的hadoop-env.cmd 将 set JAVA_HOME=%JAVA_HOME% 更换为绝对路径↓ set JAVA_HOME="E:\Devel ...

  5. linux-2.6.22.6内核启动分析之head.S引导段代码

    学习目标: 了解arch/arm/kernel/head.S作为内核启动的第一个文件所实现的功能! 前面通过对内核Makefile的分析,可以知道arch/arm/kernel/head.S是内核启动 ...

  6. helpera64开机bootlogo-BUG

    环境: HelperA64开发板 Linux3.10内核 时间:2019.01.12 目标:修改开机bootlogo的BUG 问题: 1.24bit深度的bootlogo.bmp图片会导致Qt5有色差 ...

  7. 20190313-时间和日期-Time

    概述 在Python中,与时间处理相关的模块有:time.datetime以及calendar,Python中通常有这几种方式表示时间:时间戳.格式化的时间字符串.时间元组(struct_time 共 ...

  8. sourcetree的安装及使用

    sourcetree下载地址:https://www.sourcetreeapp.com/ 点击安装包安装 此前需要跳转到bitbucket登录,我没有账号,所以我直接跳转到到https://bitb ...

  9. 以太坊入门-solidity环境搭建

    本地remix-ide安装教程 一 开始安装前 准备以下软件 vs2015(主要会用到vc++的工具以及Windows sdk  ||vs2017没试过,不过应该可以) vs下载安装以及解压地址: h ...

  10. rcosfir函数的用法

    B = rcosfir(R, N_T, RATE, T, FILTER_TYPE) designs and returns a square root raised cosine filter if ...