1
参考
《现代操作系统》
https://blog.csdn.net/csdn_blog_lcl/article/details/80391570
磁盘
Linux常用命令
命令的格式一般为 command [-options] param1 param2
1 | ls cat wc more less cd top cp mv rm pwd mkdir ps kill chmod grep sync |
ls
显示文件的文件名与相关属性,选项-al表示列出所有文件的详细权限与属性
1 | ls |
cat
查看文本文件的内容,后接要查看的文件名
1 | cat 1.txt |
wc
统计指定文件的字节数,字数,行数
1 | wc -c 1.txt #字节数 |
more
与cat类似,将整个文件的内容由上到下显示到屏幕上,会一页一页的显示,
按空格下显示下一页,按b显示上一页
1 | more 1.txt |
less
less也是显示文件内容
1 | less 1.txt |
cd
切换目录,可以是绝对路径或相对路径
1 | cd / #进入系统根目录 |
top
top是Linux常用的性能分析工具,能够实时显示系统中各个进程的资源占用
情况,类似于Windows的任务管理器
1 | top #显示当前系统正在执行的进程的相关信息,包括进程ID、内存占用率、CPU占用率等 |
cp
用于复制文件,copy之意,它还可以把多个文件一次性地复制到一个目录下
1 | -a :将文件的特性一起复制 |
mv
该命令用于移动文件、目录或更名
1 | # 该命令可以把一个文件或多个文件一次移动一个文件夹中,但是最后一个目标文件一定要是“目录” |
rm
删除文件或目录
1 | -f :就是force的意思,忽略不存在的文件,不会出现警告消息 |
pwd
显示当前目录的完整路径
1 | pwd |
mkdir
建立一个新目录,要求创建目录的用户在当前目录中具有写权限,并且指
定的目录名不能是当前目录中已有的目录
1 | mkdir gg |
ps
该命令用于将某个时间点的进程运行情况选取下来并输出
1 | -A :所有的进程均显示出来 |
kill
终止一个指定的进程
1 | kill 4395 #终止进程号为4395的进程 |
chmod
修改文件权限,在Linux中每一个文件都具有用户,所属群组及其他人三种身份
的个别权限
1 | chmod 777 1.txt # r4 w2 x1 |
grep
该命令常用于分析一行的信息,若当中有我们所需要的信息,就将该行显示出
来,该命令通常与管道命令一起使用,用于对一些命令的输出进行筛选加工
1 | grep [-acinv] [--color=auto] '查找字符串' filename |
sync
数据同步写入磁盘
1 | sync |
sed
利用脚本来处理文本文件,sed可按照脚本的指令来处理、编辑文本文件
1 | sed [-hnV][-e<script>][-f<script文件>][文本文件] |
awk
是一种处理文本文件的语言,是一个强大的文本分析工具
1 | awk [选项参数] 'script' var=value file(s) |
grep 更适合单纯的查找或匹配文本
sed 更适合编辑匹配到的文本
awk 更适合格式化文本,对文本进行较复杂格式处理
find
find是一个基于查找的功能非常强大的命令
1 | find [PATH] [option] [action] |
file
用于判断接在file命令后的文件的基本数据类型
1 | file filename |
tar
用于对文件进行打包,默认情况并不会压缩,如果指定了相应的参数,它还会调
用相应的压缩程序(如gzip和bzip等)进行压缩和解压
1 | 压缩:tar -jcv -f filename.tar.bz2 要被处理的文件或目录名称 |
gcc
它用于把C语言的源程序文件,编译成可执行程序
1 | # 把源文件test.c按照c99标准编译成可执行程序test |
time
用于测算一个命令(即程序)的执行时间
1 | time ./process |
常见问题总结
CPU管态和目态是什么?
CPU状态分为管态和目态,CPU的状态属于程序状态字PSW的一位,管态
又称特权状态、系统态或核心态。通常操作系统在管态下运行,CPU在管
态下可以执行指令系统的全集。目态又称常态或用户态。机器处于目态
时,程序只能执行非特权指令。用户程序只能在目态下运行
进程同步机制有哪些?
多进程虽然提高了系统资源利用率和吞吐量,但是由于进程的异步性可能造
成系统的混乱。进程同步的任务就是对多个相关进程在执行顺序上进行协调
,使并发执行的多个进程之间可以有效的共享资源和相互合作,保证程序
执行的可再现性
- 空闲让进:当没有进程处于临界区的时候,应该许可其他进程进入临界
区的申请 - 忙则等待:当前如果有进程处于临界区,如果有其他进程申请进入,则
必须等待,保证对临界区的互斥访问 - 有限等待:对要求访问临界资源的进程,需要在有限时间内进入临界区
,防止出现死等 - 让权等待:当进程因为无法及时获得临界资源而无法进入临界区的时候,
需要释放处理机,暂时退让
进程同步:信号量、管程、互斥
什么是用户态和内核态?
用户态和内核态的最大差别是权限不同,用户态下不能访问操作系统内核数据
结构和程序
- 内核态 内核从本质上看是一种软件——控制计算机的硬件资源,并提供上层
应用程序运行的环境。操作系统运行在内核态 - 用户态 即上层应用程序的活动空间,应用程序的执行必须依托于内核提供
的资源,包括CPU资源、存储资源、I/O资源等。普通软件运行在用户态
为什么要区分内核态和用户态?
- 内核态和用户态的概念,是操作系统为了有效实现CPU的权限分级和数据隔
离而提出的,用户态即上层应用程序的活动空间,应用程序的执行必须依托于
内核提供的资源,包括CPU资源、存储资源、I/O 资源等。为了使上层应用能
够访问到这些资源,内核必须为上层应用提供访问的接口:即系统调用 - 运行于用户态的进程可以执行的操作和访问的资源都会受到极大的限制,而
运行在内核态的进程则可以执行任何操作并且在资源的使用上没有限制。在用户
态运行的程序,在运行过程中,一些操作需要内核的权限才能执行,这是就会
涉及到一个从用户态切换到内核态的过程
用户态和内核态的区别?
- 当一个任务(进程)执行系统调用而陷入内核代码中执行时,我们就称
进程处于内核运行态(或简称为内核态)。此时处理器处于特权级最高的
(0级)内核代码中执行。当进程处于内核态时,执行的内核代码会使用
当前进程的内核栈。每个进程都有自己的内核栈 - 当进程在执行用户自己的代码时,则称其处于用户运行态(用户态)。即此
时处理器在特权级最低的(3级)用户代码中运行 - 内核空间中存放的是内核代码和数据,而进程的用户空间中存放的是用户
程序的代码和数据 - 操作系统运行在内核态,在这个模式中操作系统具有对所有硬件的访问
权限,可以执行机器能够执行的任何指令,软件的其余部分运行在用户态
,用户接口层(shell)运行在用户态的最低层次,允许用户运行其他程
序 - 内核态具有最高权限,可以访问所有资源,用户态只能访问受限资源,
想要访问物理设备需要陷入内核态中,在内核空间(Ring3)中,才可以访
问特权资源