2019-2020-1 20199301《Linux内核原理与分析》第二周作业
第二周Linux学习笔记
文件打包与解压缩
- tar工具打包
tar的解压和压缩都是同一个命令,只需参数不同,使用较方便。
创建一个包时文件名必须紧跟在 -f 之后,解包一个文件(-x参数)到指定路径的已存在目录(-c参数)。
###各内容及代码:
- 只查看不解包文件(-t参数):
```
tar -tf shiyanlou.tar
```
- 使用tar备份文件,保留文件的属性(-p参数),备份链接指向的源文件而不是链接本身(-h参数):
```
tar -cphf etc.tar /etc
```
- tar可以只需要换一个参数创建不同格式的压缩文件(在创建tar文件的基础上添加一个参数 -z)。
使用gzip压缩文件:
```
tar -czf shiyanlou.tar.gz/home/shiyanlou/Desktop
```
- 解压(*.tar.gz)
```
tar -xzf shiyanlou.tar.gz
```
-###各参数及格式:
总结
- zip:
- 打包 :zip something.zip something (目录请加-r参数)
- 解包:unzip something.zip
- 指定路径:-d 参数
- tar:
- 打包:tar -cf something.tar something
- 解包:tar -xf something.tar
- 指定路径:-c参数
##文件系统操作与磁盘管理
- 使用 df 命令查看磁盘的容量出现如下图所示:

图中/dev/sda2 是对应着主机硬盘的分区,后面的数字表示分区号,数字前面的字母 a 表示第几块硬盘(也可能是可移动磁盘),1k一块表示以磁盘块大小的方式显示容量,后面为相应的以块大小表示的已用和可用容量
- 使用 du 命令查看目录的容量:

代码中-d 参数指定查看目录的深度。**注:du(estimate file space usage)命令与df(report file system disk space usage)命令只有一字之差,容易记混。**
- 磁盘管理:用dd命令从标准输入读入用户的输入到标准输出,如截图所示:

命令中bs用于指定块大小,count用于指定块数量。
- 使用 mkfs 命令格式化磁盘,简单的使用mkfs命令来虚拟磁盘镜像格式化为ext4文件系统代码如下:
```
sudo mkfs.ext4 virtual.img
```
##Linux下的帮助命令
- 什么是内建命令,什么是外部命令呢?
- **内建命令**:实际上是 shell 程序的一部分,其中包含的是一些比较简单的 Linux 系统命令,这些命令是写在bash源码的builtins里面的,由 shell 程序识别并在 shell 程序内部完成运行,通常在 Linux 系统加载运行时 shell 就被加载并驻留在系统内存中。而且解析内部命令 shell 不需要创建子进程,因此其执行速度比外部命令快。
- **外部命令**:是 Linux 系统中的实用程序部分,因为实用程序的功能通常都比较强大,所以其包含的程序量也会很大,在系统加载时并不随系统一起被加载到内存中,而是在需要时才将其调入内存。虽然其不包含在 shell 中,但是其命令执行过程是由 shell 程序控制的。外部命令是在 Bash 之外额外安装的,通常放在/bin,/usr/bin,/sbin,/usr/sbin等等。
- help命令:用于显示 shell 内建命令的简要帮助信息。
- man 命令:是显示系统手册页中的内容。
- info 命令:是来自自由软件基金会的 GNU 项目,是 GNU 的超文本帮助系统,能够更完整的显示出 GNU 信息。
##Linux任务计划crontab
- crontab 命令从输入设备读取指令,并将其存放于 crontab 文件中,以供之后读取和执行。
计算机工作原理学习笔记
**重点介绍:**
- 计算机的工作原理,涉及存储程序计算机工作模型,基本的汇编语言,C语言程序汇编出来的汇编代码如何在存储程序计算机上工作模型上一步步地执行。
**重点分析:**
- 函数调用堆栈相关汇编指令。
##1.1 存储程序计算机的工作模型
- 冯·诺依曼体系结构:
- 冯诺依曼指出程序和数据在逻辑上是一样的,程序也可以存储在存储器中。
- 冯诺依曼体系结构的要点包括:
- 运算器、存储器、控制器、输入设备和输出设备组成计算机硬件。
- 计算机内部采用二进制表示指令和数据。
- 存储程序的基本含义,
**冯诺依曼体系接够的核心是存储程序计算机。**
##1.2 x86-32汇编基础
###x86-32CPU的存储器
####8086CPU总共有14个16位的寄存器分别是:
- 通用寄存器
- 数据寄存器
- AX:累加寄存器,也成为累加器
- BX:基地址寄存器
- CX:计数器寄存器
- DX:数据寄存器(可分可和的特性:分为两个独立的8位寄存器)
- 指针寄存器
- SP:堆栈指针寄存器
- BP:基指针寄存器
- 变址寄存器
- SI:源变址寄存器
- DI:目的变址寄存器
- 控制寄存器
- IP:指令指针寄存器
- FLAG:标志寄存器
- 段寄存器
- CS:代码段寄存器
- DS:数据段寄存器
- SS:堆栈段寄存器
- ES:附加段寄存器
####32位的寄存器(更具通用性):
- 4个数据寄存器(EAX、EBX、ECX、EDX)
- 2个变址和指针寄存器(ESI、EDI)
- 2个指针寄存器(ESP、EBP)
- 6个段寄存器(ES、CS、SS、DS、FS、GS)
- 1个指令指针寄存器(EIP)
- 1个标志寄存器(EFlags):可以保存当前的一些状态
所有开头为E的寄存器,一般都是32位的。
- EBP是堆栈基址指针,比较重要
-ESP也比较重要,它是堆栈栈顶寄存器
####64位寄存器
- 前面带个“R”的都是64位寄存器
- Flags改为了RFLAGS,EIP改为了RIP
###数据格式
- Intel规范用语中**字*表示16位数据类型。
- 在TA32中**双字**表示32位数据类型。
- 在86-64中64位数称为**四字**。
####寻址方式
- 汇编指令
- 操作码
- 操作数
- 立即数常数
- 寄存器数
- 存储器引用
- 最常见的汇编指令是mov指令,movl中的l是指32位,movb中的b是指8位,movw中的w是指16位,movq中的q是指64位。
- 寄存器寻址:不和内存打交道如%eax,其中%开头后面跟一个寄存器名称。
- 立即寻址:使用$开头后面跟一个数值。
- 直接寻址:是直接用一个数值,开头没有$符号。
- 间接寻址:就是寄存器加个小括号。加个小括号表示这个内存地址所存储的数据。
- 变址寻址:在原地址上加上一个数字4,就是把寄存器存储的数值加4。
####常用汇编指令
- 全是大写字母的一般都是Intel汇编,全是小写字母的一般都是AT&T汇编
- 几个重要的指令:pushl、popl和call/ret.
```
pushl %eax
```
就是把EAX寄存器的值压倒堆栈栈顶。
```
popl %eax
```
就是从堆栈的栈顶去一个存储单元,从堆栈栈顶的位置放到EAX寄存器里,称为出栈。
```
call 0x12345
```
call指令是函数调用,调用一个地址。处于安全方面的原因EIP寄存器不能被直接使用和修改。
与call对应的是ret指令,ret指令是函数返回。call指令是C语言里我们调用一个函数,ret指令是调用函数时压栈的EIP寄存器的值还原到EIP寄存器里。带个“(*)”的指令表示这些指令都是不能被程序员直接使用的,是伪指令。
#实验中的问题及解决方法:
- 实验过程中出现在进行编译成汇编代码的过程中指令输入错误的问题如图:

- 在进行正确的大小写更正以及空格号的规范后得以解决,按照指定操作最终如图

#总结
- 在输入指令时容易在细节方面犯错如字母的大小写、中间的空格键时常忘记。
- 在本章的学习过程中遇到的最大困难在于编译成汇编代码后对每一行代码的解读和堆栈空间的熟悉度以及堆栈空间在每行代码的执行下怎么产生变化等问题。
- 书中解释的执行每行代码后寄存器的数据如何变化、寄存器什么时候开始执行下一行代码等问题需要反复去熟悉,一遍一遍从头开始读代码才能慢慢适应变化的规律。
2019-2020-1 20199301《Linux内核原理与分析》第二周作业的更多相关文章
- 2019-2020-1 20199303<Linux内核原理与分析>第二周作业
2019-2020-1 20199303第二周作业 1.汇编与寄存器的学习 寄存器是中央处理器内的组成部份.寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令.数据和位址.在中央处理器的控制部件中 ...
- 20169219 linux内核原理与分析第二周作业
"linux内核分析"的第一讲主要讲了计算机的体系结构,和各寄存器之间对数据的处理过程. 通用寄存器 AX:累加器 BX:基地址寄存器 CX:计数寄存器 DX:数据寄存器 BP:堆 ...
- 2019-2020-1 20199314 <Linux内核原理与分析>第二周作业
1.基础学习内容 1.1 冯诺依曼体系结构 计算机由控制器.运算器.存储器.输入设备.输出设备五部分组成. 1.1.1 冯诺依曼计算机特点 (1)采用存储程序方式,指令和数据不加区别混合存储在同一个存 ...
- Linux内核原理与分析-第二周作业
写之前回看了一遍秒速五厘米:如果
- Linux内核原理与分析-第一周作业
本科期间,学校开设过linux相关的课程,当时的学习方式主要以课堂听授为主.虽然老师也提供了相关的学习教材跟参考材料,但是整体学下来感觉收获并不是太大,现在回想起来,主要还是由于自己课下没有及时动手实 ...
- 2019-2020-1 20199314 <Linux内核原理与分析>第一周作业
前言 本周对实验楼的Linux基础入门进行了学习,目前学习到实验九完成到挑战二. 学习和实验内容 快速学习了Linux系统的发展历程及其简介,学习了下的变量.用户权限管理.文件打包及压缩.常用命令的和 ...
- 2018-2019-1 20189221《Linux内核原理与分析》第一周作业
Linux内核原理与分析 - 第一周作业 实验1 Linux系统简介 Linux历史 1991 年 10 月,Linus Torvalds想在自己的电脑上运行UNIX,可是 UNIX 的商业版本非常昂 ...
- 2020-2021-1 20209307 《Linux内核原理与分析》第九周作业
这个作业属于哪个课程 <2020-2021-1Linux内核原理与分析)> 这个作业要求在哪里 <2020-2021-1Linux内核原理与分析第九周作业> 这个作业的目标 & ...
- 2019-2020-1 20199329《Linux内核原理与分析》第十三周作业
<Linux内核原理与分析>第十三周作业 一.本周内容概述 通过重现缓冲区溢出攻击来理解漏洞 二.本周学习内容 1.实验简介 注意:实验中命令在 xfce 终端中输入,前面有 $ 的内容为 ...
- 2019-2020-1 20199329《Linux内核原理与分析》第十二周作业
<Linux内核原理与分析>第十二周作业 一.本周内容概述: 通过编程理解 Set-UID 的运行机制与安全问题 完成实验楼上的<SET-UID程序漏洞实验> 二.本周学习内容 ...
随机推荐
- linux ubuntu 网卡配置---固定IP
需要修改/etc/network/interfaces和/etc/resolvconf/resolv.conf.d/base两个文件. 1) /etc/network/interfaces文件: 首先 ...
- hexo 个人博客搭建
Hexo 小插曲介绍 虽然标题是第一次写博客. 但是我这个困难户至少挣扎了1年多了, 一直下不去手.今天可算是开了个头. 贵在坚持吧 抽时间介绍我的hexo安装历程吧,今天实在是有点困了,要睡觉了. ...
- ESP32 - GPIO中断触发与事件回调
最近为项目增加了GPIO外部触发中断功能,原理是为GPIO32注册了上升沿触发事件,事件触发后,会向RTOS队列写入数据.在RTOS事件中检测到该队列中有新加入的事件,就读出,并执行相应代码. #de ...
- teamviewer远程控制程序免费版百度云下载
TeamViewer是一个远程共享桌面软件,使远程传输变得简单快速,远程访问安全可靠,能在任何防火墙后台进行远程控制.只需用户在两台计算机上同时运行这个软件就可以开始工作.使用时关闭杀毒软件,防止误报 ...
- Comet OJ Contest 4
A:签到. #include<bits/stdc++.h> using namespace std; #define ll long long #define inf 1000000010 ...
- centos7上使用git clone出现问题
centos 7 git clone时出现不支持协议版本的问题 unable to access 'https://github.com/baloonwj/TeamTalk.git/': Peer ...
- ffmpeg 播放器原理
1 播放器过程 线程1 : readPackets-------> audio_packets队列 video packets 队列 线程2: decodeAudio && ...
- ribbon的理解
什么是ribbon? Ribbo是一个基于HTTP和TCP的客户端负载均衡器 什么是客户端负载均衡? 客户端负载均衡和服务端负载均衡最大的区别在于服务清单所存储的位置. 在客户端负载均衡中,所有的客户 ...
- Axios使用拦截器全局处理请求重试
Axios拦截器 Axios提供了拦截器的接口,让我们能够全局处理请求和响应.Axios拦截器会在Promise的then和catch调用前拦截到. 请求拦截示例 axios.interceptors ...
- Jmeter学习笔记(六)——使用badboy录制脚本
1.下载安装 可以去badboy官网下载地址:http://www.badboy.com.au,如果官网打不开也可以去网上搜索下载. 下载之后点击BadboyInstaller-2.2.5.exe普通 ...