Linux及安全期中总结
Chapter1 往期博客传送门
Linux内核分析——第一周学习笔记
Linux内核分析——第二周学习笔记
Linux内核分析——第三周学习笔记
《Linux内核设计与实现》学习记录一
Linux内核分析——第四周学习笔记
Linux内核实验作业四
《Linux内核设计与实现》第五章读书笔记
Linux内核分析——第五周学习笔记
实验作业:使gdb跟踪分析一个系统调用内核函数
《Linux内核设计与实现》第十八章读书笔记
Linux内核实验作业五
Linux内核分析——第六周学习笔记
《Linux内核设计与实现》第三章读书笔记
《深入理解计算机系统》第七章读书笔记
Linux内核实验作业六
《Linux内核设计与实现》第四章读书笔记
Linux内核分析——第八周学习笔记
chapter2 知识点梳理
1. 计算机是如何工作的?
存储程序计算机工作模型:冯诺依曼体系结构
X86汇编基础:CPU的寄存器(通用寄存器、段寄存器、标志寄存器)、常见汇编指令、堆栈
汇编一个简单的C程序分析其汇编指令执行过程
2. 操作系统是如何工作的?
函数调用堆栈
借助Linux内核部分源代码模拟存储程序计算机工作模型及时钟中断
在mykernel基础上构造一个简单的操作系统内核
三个法宝:
- 存储程序计算机:所有计算机基础性的逻辑框架
- 堆栈:高级语言的起点,函数调用需要堆栈机制
- 中断机制:多道系统的基础,是计算机效率提升的关键
3. 构造一个简单的Linux系统MenuOS
Linux内核源代码简介
•arch:支持不同的CPU的源代码,其中的关键目录包括:Documentation、drivers、firewall、fs、include等
•documentation:文档目录
•fs:文件系统
•init:内核启动相关的代码main.c、Makefile等基本都在该目录中。(main.c中的start_ kernel函数是Linux内核启动的起点,即初始化内核的起点)
•kernel:Linux内核核心代码在kernel目录中。
•lib:公用的库文件
•mm:内存管理的代码
•scripts:与脚本相关的代码
•security:与安全相关的代码
•sound目录:与声音相关的代码
•tools目录:与工具相关的代码
•net:与网络相关的代码
•readme:介绍了什么是Linux,Linux能够在哪些硬件上运行,如何安装内核源代码等
构造一个简单的Linux系统
cd LinuxKernel/
qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img
qemu命令是模拟内核启动虚拟机,启动Linux内核需要三个参数(kernel、initrd、root所在的分区和目录),执行的第一个文件是init。
-kernel指明内核文件名
-initrd指明根文件系统,启动其中的init文件。(menuOS源代码编译->init->rootfs.img)其中rootfs.img 为根文件系统,目前只支持help、version、quit功能。
启动过程为:启动内核->启动init->启动进程
跟踪调试Linux内核的启动过程
qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img -s -S
4. 扒开系统调用的三层皮(上)
(一)用户态、内核态和中断处理过程
内核态:一般现代CPU有几种指令执行级别。在高执行级别下,代码可以执行特权指令,访问任意的物理地址,这种CPU执行级别对应着内核态
用户态:在相应的低级别执行状态下,代码的掌控范围有限,只能在对应级别允许的范围内活动
中断处理是从用户态进入内核态的主要方式,中断/int指令会在堆栈上保存一些寄存器的值:如用户态栈顶地址、当前的状态字、当时cs:eip的值(当前中断程序的入口)
(二)系统调用概述
系统调用是操作系统为用户态进程与硬件设备进行交互提供的一组接口
系统调用概述和系统调用的三层皮:xyz(API)、system_ call(中断向量)、sys_xyz(中断向量对应的中断服务程序)
(三)使用库函数API和C代码中嵌入汇编代码触发同一个系统调用
使用库函数API获取系统当前时间
C代码中嵌入汇编代码的方法
使用C代码中嵌入汇编代码触发系统调用获取系统当前时间
5. 扒开应用系统的三层皮(下)
rm menu -rf //强制删除当前menu
git clone http://github.com/mengning/menu.git //重新克隆新版本的menu
cd menu
ls
make rootfs //rootfs是事先写好的一个脚本,自动编译自动生成根文件系统,同时自动启动MenuOS
vi test.c //进入test.c文件
MenuConfig("getpid","Show Pid",Getpid);
MenuConfig("getpid_asm","Show Pid(asm)",GetpidAsm); //在main函数中增加MenuConfig()
int Getpid(int argc,char *argv[]);
int GetpidAsm(int argc,char *argv[]); //增加对应的Getpid和GetpidAsm两个函数
make rootfs //编译
chapter 3 重点问题
传送门:http://www.cnblogs.com/paperfish/p/5293913.html
Linux及安全期中总结的更多相关文章
- Linux内核设计期中总结
Linux内核设计期中总结 ● 知识点 一.计算机是如何工作的 计算机是按照冯·诺依曼存储程序的原理. 在执行程序时须先将要执行的相关程序和数据放入内存储器中,在执行程序时CPU根据当前程序指针寄存器 ...
- Linux内核分析期中知识点总结
Linux内核分析期中知识点总结 1. 计算机是如何工作的 存储程序计算机工作模型:冯诺依曼体系结构 X86汇编基础 会变一个简单的C程序分析其汇编指令执行过程 2. 操作系统是如何工作的 函数调用堆 ...
- linux及安全期中总结——20135227黄晓妍
Linux及安全期中总结 黄晓妍 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ...
- Linux内核分析——期中总结
期中总结 一.MOOC课程 (一)计算机是如何工作的 1.冯诺依曼体系结构的核心思想是存储程序计算机. 2.CPU在实际取指令时根据cs:eip来准确定位一个指令. 3.寄存器模式,以%开头的寄存器标 ...
- 20135239 Linux内核分析 期中总结
期中总结 链接 网易云课堂 MOOC 摘录与实验内容 第一周: http://www.cnblogs.com/20135239-yxlm/p/5216842.html 第二周: http://www. ...
- linux内核分析 期中总结
LINUX内核分析 链接汇总 LINUX内核分析第一周学习总结——计算机是如何工作的 LINUX内核分析第二周学习总结——操作系统是如何工作的 LINUX内核分析第三周学习总结——构造一个简单的Lin ...
- Linux运维期中架构(50台集群)
一.期中架构 二.期中架构-前端部分 三.第三阶段作业-期中架构
- Linux内核分析期中总结
目录: “Linux内核分析”实验一报告 “Linux内核分析”实验二报告 “Linux内核分析”实验三报告 Linux实验四报告 “Linux内核分析”第五周报告 "Linux内核分析&q ...
- 老男孩Linux运维期中架构
随机推荐
- 原生JS获取各种高度宽度、浏览器窗口滚动条的位置、元素的几何尺寸名
1)关于 pageX, clienX,offsetX,layerX pageX:鼠标在页面上的位置,从页面左上角开始,即是以页面为参考点,不随滑动条移动而变化 clientX:鼠标在页面上可视区域的位 ...
- ip_forward
查看 cat /proc/sys/net/ipv4/ip_forward 如果是0表示没开启,1表示开启了 临时修改 echo "1" > /proc/sys/net/ ...
- Hibernate学习笔记整理系列-------一、Hibernate简介
Hibernate的官网:http://hibernate.org/ 1.1 Hibernate框架的作用 Hibernate框架是一个数据访问框架(也叫持久层框架,可将实体对象变成持久对象).通过H ...
- JSON实战案例--使用JSON进行数据交换实例
内容: 1.访问javaScript对象的属性 2.访问Javacript对象数组 3.JSON字符串转换成JavaScript对象 4 .Java对象转换成JSON字符串 5 .使用JSON完成级联 ...
- 烂泥:KVM虚拟机随KVM服务器的启动而启动
本文由秀依林枫提供友情赞助,首发于烂泥行天下. 要使KVM虚拟机随KVM服务器的启动而启动,我们所需要做的工作很少.只需要把KVM虚拟机的XML配置文件做一个软连接到/etc/libvirt/qemu ...
- APACHE重写去除入口文件index.php
下面我说下 apache 下 ,如何 去掉URL 里面的 index.php 例如: 你原来的路径是: localhost/index.php/index 改变后的路径是: localhost/ind ...
- POJ 2513 Colored Sticks(欧拉回路,字典树,并查集)
题意:给定一些木棒,木棒两端都涂上颜色,求是否能将木棒首尾相接,连成一条直线,要求不同木棒相接的一边必须是相同颜色的. 无向图存在欧拉路的充要条件为: ① 图是连通的: ② 所有节 ...
- Hive Experiment 2(表动态分区和IDE)
1.使用oracle sql developer 4.0.3作为hive query的IDE. 下载hive-jdbc driver http://www.cloudera.com/content/c ...
- [转]通过AngularJS directive对bootstrap日期控件的的简单包装
本文转自:http://www.cnblogs.com/Benoly/p/4109460.html 最近项目上了AngularJS,而原来使用的日期控件的使用方式也需要改变,于是开始了倒腾,看了官方的 ...
- java 字节流和字符流的区别 转载
转载自:http://blog.csdn.net/cynhafa/article/details/6882061 java 字节流和字符流的区别 字节流与和字符流的使用非常相似,两者除了操作代码上的不 ...