任晓蕊 2019-2020-1 20199302《Linux内核原理与分析》第四周作业
实验内容
在实验楼的环境中敲入命令
cd LinuxKernel/
qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img
效果截图:
一、补习第一周云班课视频
(一)文件系统
1、FHS:文件系统层次结构标准
Linux的正常运行是以目录结构为基础的。FHS定义了两层规范,第一层是,/下面的各个目录应该要放什么文件数据,例如/etc应该放置设置文件,/bin和/sbin则应放置可执行文件等。第二层则是针对、usr和/var这两个目录的子目录来定义。例如/var/log防止系统日志文件,/usr/share放置共享数据等等。
FHS将目录定义为四种交互作用的形态,如图:
以“.”开头的文件都是隐藏文件,~通常表示当前用户的home目录
使用pwd命令可以获取当前所在路径。
2、mkdir创建目录
mkdir -p /*同时创建父目录(如果不存在该父目录)*/
cp 被复制文件 复制到的位置 /*复制目录时,加上-r或者-R,表示递归复制*/
rm -f 文件名/*忽略提示,强制删除*/
rm -r 要删除的目录/*删除目录*/
mv 源目录文件 目的目录/*移动文件*、/
mv 就文件名 新文件名 /*重命名文件*/
rename /*批量重命名文件*/
3、使用cat,tac和nl命令查看文件
cat和tac都是打印文件到标准输出(终端),其中cat为正序显示,tac为倒序显示。
标准输入输出:当我们执行一个shell为、、命令行时,会自动打开三个标准文件,即标准输入文件(stdin),默认对应终端的键盘,标准输出文件(stdout)和标准错误输出文件(stderr),后两个文件都对应被重定向到终端的屏幕,以便我们能够看到输出内容。进程将从标准输入文件到输入数据,将正常输出数据输出到标准输出文件,而将错误信息送到标准错误文件中。
cat -n 文件名 :显示行号,与nl类似
-b : 指定添加行号的方式,主要有两种:
-b a:表示无论是否为空行,同样列出行号("cat -n"就是这种方式)
-b t:只列出非空行的编号并列出(默认为这种方式)
-n : 设置行号的样式,主要有三种:
-n ln:在行号字段最左端显示
-n rn:在行号字段最右边显示,且不加 0
-n rz:在行号字段最右边显示,且加 0
-w : 行号字段占用的位数(默认为 6 位)
4、more和less命令分页查看文件
man手册内容就是用less来显示内容more命令打开一个文件时,会默认显示一屏,底端显示阅读进入,按enter往下滚动一行,按space往下滚动一屏,h显示帮助,q退出
5、head和tail命令查看文件
/etc/passwd文件可以查看最近新增加的用户。
tail -n 数字 文件名:尾部查看n行
tail -f:可以实现不停地读取某个文件的内容并显示,可以用于日志动态监测。
file 文件名:可以用于查看文件类型。
(二)文件系统操作与磁盘管理
1、df查看磁盘
df:查看磁盘容量
df -h以更易懂的方式显示出来
挂载:Linux 系统中“一切皆文件”,所有文件都放置在以根目录为树根的树形目录结构中。在 Linux 看来,任何硬件设备也都是文件,它们各有自己的一套文件系统(文件目录结构).因此产生的问题是,当在 Linux 系统中使用这些硬件设备时,只有将Linux本身的文件目录与硬件设备的文件目录合二为一,硬件设备才能为我们所用。合二为一的过程称为“挂载”。
2、du查看目录的容量
du -h -d 0 ~:只查看1级目录的信息
du -h -d 1 ~:查看2级
du -a 显示目录中所有文件的大小
du -s仅显示总计,只列出最后加总的值
(三)Linux架构:
1、下图摘自链接
操作系统通过进程、虚拟内存和文件三个重要抽象管理计算机的CPU、内存、I/O设备,为用户提供shell,为程序员提供系统调用。
2、常用Linux快捷键
(1)ctrl+alt+t:打开终端
(2)ctrl+shift+t:新建标签页
(3)alt+数字N:终端中切换到第N个标签页
(4)tab终端命令补全
(5)上下键盘:切换命令历史
(6)crtl+c:中断程序运行
3、常用命令
(1)man命令:man 想要查看的命令,查看该命令的帮助
man -a:搜索并打开所有man中同名帮助,例如 man passwd ,你首先会进入一个PASSWD(1) section用户命令类的帮助手册,你再按q键退出当前正在显示的帮助手册,就会进入PASSWD(5) section文件格式类的帮助手册。
man -aw:显示所有手册文件的路径。例如man -aw passwd
/usr/share/man/man1/passwd.1.gz
/usr/share/man/man5/passwd.5.gz
man -M:指定手册文件的搜索路径,有的时候我们自己安装的软件是带有自己的帮助文件的,通常不在我们的MANPATH 里面,那么我们就可以手动指定man搜索的文件路径。如 man -M /home/mysql/man mysql 显示的就是你安装的mysql的帮助,而不是系统默认的旧版mysql的帮助。
man -k:根据关键字搜索联机帮助,是一种模糊搜索。例如要查找"passwd"相关的信息,使用man -k passwd会找到很多和passwd相关的帮助页。
man -f:关键字精确搜索,与-k不同,它只搜索与关键字完全匹配的帮助页。
(一)vim编辑器
1、vim是从vi发展出来的文件编辑器。
vim的设置
:set nu显示行号
:set ai 自动缩行
:set ts=4 设置一个TAB键等于几个空格
(1)vim的6种基本模式和5中派生模式
①普通模式:dd删除当前行,2dd执行两次删除行操作。dj删除当前和下一行,类似2dd。普通模式到插入模式可以用a或者i进行切换。普通模式下退出vim“shift+zz”
光标移动按键 | 说明 |
---|---|
h | 左 |
l | 右 |
j | 下 |
k | 上 |
w | 移动到下一个单词 |
b | 移动到上一个单词 |
删除命令 | 说明 |
---|---|
x | 删除游标所在字符 |
X | 删除游标所在前一个字符 |
Delete | 同x |
dd | 删除整行 |
dw | 删除一个单词 |
d$或者D | 删除至行尾 |
d^ | 删除至行首 |
dG | 删除到文档结尾处 |
dlG | 删除至文档首部 |
②插入模式:按esc键切换到普通模式。
命令 | 说明 |
---|---|
i | 在当前光标处进行编辑 |
I | 在行首插入 |
A | 在行末插入 |
a | 在光标后插入编辑 |
o | 在当前行后插入一个新行 |
O | 在当前行前插入一个新行 |
cw | 替换光标所在位置后到一个单词结尾的字符 |
③可视模式:与普通模式相似,但是移动命令会扩大高亮文本区域,高亮区域可以是字符、行或者是一块文本。当执行一个非移动命令时,命令会被执行到这块高亮区域上,Vim的文本对象也能和移动命令一样用在这个模式中。
④选择模式:和无模式编辑器的行为类似(windows标准文本控件的方式)。可以用鼠标或者键盘高亮选择文本,不过输入任何字符的话,vim会用这个字符替换选择的高亮文本框,并且自动进入插入模式。
⑤命令行模式:可以输入会被解释并执行的文本,例如执行命令键“:”,搜索“/”和“?”,或者过滤命令键“!”**在命令执行之后,vim返回到命令行模式之前的模式,通常是普通模式。
命令 | 说明 |
---|---|
:q! | 强制退出,不保存 |
:q | 退出 |
:wq! | 强制保存退出 |
:w<文件路径> | 另存为 |
:saveas 文件路径 | 另存为 |
:x | 保存并退出 |
:wq | 保存并退出 |
⑥Ex模式:与命令行模式类似,可以一次执行多条命令,离开Ex模式使用“:visuall”。
(三)makefile
1、makefile关系到整个工程的编译规则,一个工程中源文件不计其数,并且按照功能、类型、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行哪些复杂的功能操作,因为makefile像一个shell脚本一样,其中可以执行操作系统的命令。makefile带来的好处就是:“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大地提高了软件开发效率。
二、第三章 MenuOS的构造
(一)Linux内核源代码简介
1、操作系统两把宝剑
(1)中断上下文的切换——保存现场和回复现场。
(2)进程上下文的切换。
任晓蕊 2019-2020-1 20199302《Linux内核原理与分析》第四周作业的更多相关文章
- 2019-2020-1 20199303<Linux内核原理与分析>第二周作业
2019-2020-1 20199303第二周作业 1.汇编与寄存器的学习 寄存器是中央处理器内的组成部份.寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令.数据和位址.在中央处理器的控制部件中 ...
- 20169219 linux内核原理与分析第二周作业
"linux内核分析"的第一讲主要讲了计算机的体系结构,和各寄存器之间对数据的处理过程. 通用寄存器 AX:累加器 BX:基地址寄存器 CX:计数寄存器 DX:数据寄存器 BP:堆 ...
- Linux内核原理与分析-第一周作业
本科期间,学校开设过linux相关的课程,当时的学习方式主要以课堂听授为主.虽然老师也提供了相关的学习教材跟参考材料,但是整体学下来感觉收获并不是太大,现在回想起来,主要还是由于自己课下没有及时动手实 ...
- 2019-2020-1 20199314 <Linux内核原理与分析>第二周作业
1.基础学习内容 1.1 冯诺依曼体系结构 计算机由控制器.运算器.存储器.输入设备.输出设备五部分组成. 1.1.1 冯诺依曼计算机特点 (1)采用存储程序方式,指令和数据不加区别混合存储在同一个存 ...
- 2019-2020-1 20199314 <Linux内核原理与分析>第一周作业
前言 本周对实验楼的Linux基础入门进行了学习,目前学习到实验九完成到挑战二. 学习和实验内容 快速学习了Linux系统的发展历程及其简介,学习了下的变量.用户权限管理.文件打包及压缩.常用命令的和 ...
- Linux内核原理与分析-第二周作业
写之前回看了一遍秒速五厘米:如果
- 2018-2019-1 20189221《Linux内核原理与分析》第一周作业
Linux内核原理与分析 - 第一周作业 实验1 Linux系统简介 Linux历史 1991 年 10 月,Linus Torvalds想在自己的电脑上运行UNIX,可是 UNIX 的商业版本非常昂 ...
- 2019-2020-1 20199329《Linux内核原理与分析》第十三周作业
<Linux内核原理与分析>第十三周作业 一.本周内容概述 通过重现缓冲区溢出攻击来理解漏洞 二.本周学习内容 1.实验简介 注意:实验中命令在 xfce 终端中输入,前面有 $ 的内容为 ...
- 2019-2020-1 20199329《Linux内核原理与分析》第十二周作业
<Linux内核原理与分析>第十二周作业 一.本周内容概述: 通过编程理解 Set-UID 的运行机制与安全问题 完成实验楼上的<SET-UID程序漏洞实验> 二.本周学习内容 ...
- 2019-2020-1 20199329《Linux内核原理与分析》第十一周作业
<Linux内核原理与分析>第十一周作业 一.本周内容概述: 学习linux安全防护方面的知识 完成实验楼上的<ShellShock 攻击实验> 二.本周学习内容: 1.学习& ...
随机推荐
- xorm-Iterate/Count/Rows方法实例
package main import ( "fmt" _ "github.com/go-sql-driver/mysql" "github.com/ ...
- REST framework之URL控制
REST framework之URL控制 一 自定义路由 1.1 原始方式 from django.conf.urls import url from app01 import views urlpa ...
- golang 执行命令行(二)--修改进程启动用户
继续上文所述,有时候我们需要设置进程的启动用户,操作与设置进程组的方式类似,不多说直接上代码: // 修改进程的执行用户 func withUserAttr(cmd *exec.Cmd, name s ...
- Java集合对比
1.array和ArrayList 的区别?1.1:ArrayList是Array的复杂版本1.2:数组不能扩容集合可以扩容1.3:存储的数据类型:Array只能存储相同数据类型的数据,而ArrayL ...
- Spring Cloud Stream如何消费自己生产的消息
在上一篇<Spring Cloud Stream如何处理消息重复消费>中,我们通过消费组的配置解决了多实例部署情况下消息重复消费这一入门时的常见问题.本文将继续说说在另外一个被经常问到的问 ...
- fastjson反序列化使用不当导致内存泄露
分析一个线上内存告警的问题时,发现了造成内存告警的原因是使用fastjson不当导致的. 分析dump发现com.alibaba.fastjson.util.IdentityHashMap$Entry ...
- COCOeval接口使用
COCOeval类简介 class COCOeval: # Interface for evaluating detection on the Microsoft COCO dataset. # # ...
- 关于WPF中的XAML
XAML全称extensible application markup language(可扩展性标记语言) 可扩展应用程序标记语言(XAML)是一种声明性语言.概括来说,就是为应用程序构建UI.目前 ...
- asp.net mvc 使用bootstrap的模态框插件modal
编译器:vs2012 jquery版本:jquery-1.10.2.js bootstrap:bootstrap.js v3.0.0,包含modal插件 我们要实现一个使用模态框展示从服务器获取的数据 ...
- 5_PHP数组_3_数组处理函数及其应用_6_数组检索函数
以下为学习孔祥盛主编的<PHP编程基础与实例教程>(第二版)所做的笔记. 数组检索函数 1. array_keys() 函数 程序: <?php $interests[2] = &q ...