第四周

20135103王海宁

《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000

程序员编程不可能很健壮,会出bug,假如写的程序可以任意控制计算机的资源会很危险,所以产生了OS内核态和

用户态两个概念。我们这周的实验就是关于操作系统的用户态、内核态切换以及中断。

先谈几点理解:

1)OS采用系统调用实现用户态进程与I/O进行交互,用户态下调用系统资源须采用系统调用。

2)从用户态进入内核态有2种方式:系统调用(trap陷入)、中断。

3)状态切换时会保存寄存器上下文,如用户态堆栈顶地址、当时的状态字、当时的cs:eip值。

4)system_ call是linux中所有系统调用的入口点,系统调用的参数由eax传递。

实验过程:
下面分别用两种不同的c代码,实现0x20号系统调用getpid来获取当前内核名称。

1.直接调用库函数API

2.使用内嵌汇编的c代码

分析:
    API函数getpid()中将系统调用封装好,执行int 0x80语句后即进入内核态中的System_call()。

System_call()中会执行中断服务程序sys_getpid(),中断服务完成后如没有进程间调度,则执行iret返回用户

态继续执行,如有进程间调度,则执行进程间调度。

 

总结:
    通过本周的学习,了解了系统调用与中断的关系,即系统调用的三层皮:xyz( API )、system_call( 中断

向量 )和sys_xyz( 服务程序 )。系统调用是一种特殊的中断,用eax放调用号码,ebx、ecx等放参数,eax放

返回值,int 0x80进入中断处理程序,此时进入内核态。

时间: 2024-12-12 05:22:50

第四周的相关文章

第四周作业

第四周作业 1.复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限. (1)复制/etc/skel目录为/home/tuser1 [[email protected] ~]# cp -r /etc/skel/ /home [[email protected] ~]# mv /home/skel /home/tuser1 [[email protected] ~]# ll -a /home/tuser1/ total 2

#51CTO学院四周年#详解JWT的结构与应用

1. JWT是什么? JWT,全称JSON WEB TOKEN, 是WEB客户端与服务器之间相互进行安全通信的规范.通信双方的对象本身通过JSON传递数据是不安全的,但是由于有了数字签名的存在,这些信息变的可信的. 2. JWT特点 简洁(Compact): 可以通过URL,POST参数或者在HTTP header发送,因为数据量小,传输速度也很快 自包含(Self-contained):负载中包含了所有用户所需要的信息,避免了多次查询数据库 3. JWT的应用场景 身份认证:当用户在客户端完成

51CTO四周年——米的感悟

不知不觉,我已经来到这里一年多了,2016年4月4号,我偶然发现了这个网站,当时刚学完思科的四门基础课程,对网络很感兴趣,想要一直从事这个行业,于是我找到老师,说明了自己的想法,老师鼓励我去考CCNA认证,我觉得是一个很好的锻炼机会和学习机会,就四下寻找资源. 在找到这个网站,准确的说,是找到晁海江老师的课程之后,我内心狂喜,仔细研究了一遍课程大纲后,试听下来,觉得晁老师讲的很不错,我也喜欢听他的声音,所以就购买了全套课程.从那以后,我冲着考CCNA这个目标,十分刻苦努力地学习起来,每一天都有期

第十四周学习进度

时间 十四周 学习时间 78小时 代码量 1623行 所学知识 临近期末,学习任务越来越重,用在专业技术学习上的时间相对减少了很多.不过这周还是有些收获的.首先是数据结构作业的完成,我头一次使用Qt写了一个图形界面.以前我学习Qt是总觉得它晦涩难懂,但是这次我只是看了看学习视频,觉得容易多了.虽然当下图形界面不是很热门,但是学了两年的计算机,连一个图形界面都写不出来还是很尴尬的,所以以后若是有时间还是应该好好学学.

20140256985《嵌入式程序设计》第三、四周学习总结

1.第三四周学习情况 上课能跟上,而且新的虚拟机非常好使,编辑代码的时候很是方便,没有上一个虚拟机那么复杂,非常好用! 2实验楼学习内容    (1).安装并解压arm-linux-gcc交叉编译工具 (2).测试arm-linux-gcc是否可运行 (3).解决64位系统下安装32位软件的问题和 (4).将arm-linxu-gcc加入环境变量PATH中 (5).bootboader的配置,移植和编译 解压文件 建立板级支持包 修改eduk2410文件 修改Makefile文件 编译U-Boo

每周学习进度--第四周

  第四周 所花时间(包括上课) 270min 代码量 324 博客量 1 了解到的知识点 Java编写简单工厂模式和工厂方法模式

每周总结(第十一至第十四周)

   第十一周(5.9-5.15) 第十二周(5.16-5.22) 第十三周(5.23-5.29) 第十四周(5.30-6.9)  所花时间   没有记录   没有记录  没有记录   没有记录  代码量  50行  136行  126行  60行(团队计划的项目)  博客量 四篇  两篇  一篇  一篇  了解到的知识点 界面上按钮跟下一界面的链接 主要页面布局以及按钮 databasehelper数据库调用 图片背景插入,背景的修改(未实现)

学习进度条(十四周)

本周主要是继续完成第二次冲刺周期,期间完成了一个计算购买书籍的最低费用的小程序.   第十四周 所花时间(包括上课) 上课2小时,课后9小时 代码量(行) 200+ 博客量 8 了解到的知识点 团队绩效管理

学习进度第十四周

  第十四周 所花时间(包括上课) 16h(4h上课,12课下) 代码量(行) 400 博客量(篇) 10 了解到的知识点 1.这个星期进行了一次求最优惠价格的课堂练习编程,在老师的引导下,才有了思路. 明白了在没有规律的情况下,我们不能因为没有思路就停滞不前,哪怕穷举也应进行下去,说不定就发现规律了呢. 2.完成了软件工程团队开发的第二阶段的冲刺,对蓝牙通信的实现有了一定的经验

周记,第十四周

周数 专业学习目标 专业学习时间 新增代码量 博客发表量(总计) 人文方面的学习/知识技能   第十四周 计算机网络基础:完成学习任务,复习一部分: Web技术基础:学习调用外部css文件,学习背景的美化: 数据结构与算法:了解最小生成树.最短路径.以及图的应用. 6.5h 200左右 16 初步完成个人主页的模块