说说什么是进程?什么是线程?区别?
进程是系统进行资源分配和调度的基本单位。
线程是是进程划分的任务,是一个进程内可调度的实体,是CPU调度的基本单位,用于保证程序的实时性,实现进程内部的并发。线程是操作系统可识别的最小执行和调度单位。每个线程都独自占用一个虚拟处理器:独自的寄存器组,指令计数器和处理器状态。
区别:
1.一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。线程依赖于进程而存在。
2.进程在执行过程中拥有独立的地址空间,而多个线程共享进程的地址空间。(资源分配给进程,同一进程的所有线程共享该进程的所有资源。同一进程中的多个线程共享代码段(代码和常量),数据段(全局变量和静态变量),扩展段(堆存储)。但是每个线程拥有自己的栈段,栈段又叫运行时段,用来存放所有局部变量和临时变量。)
3.进程是资源分配的最小单位,线程是CPU调度的最小单位。
4.通信:由于同一进程中的多个线程具有相同的地址空间,使它们之间的同步和通信的实现,也变得比较容易。进程间通信IPC,线程间可以直接读写进程数据段(如全局变量)来进行通信(需要一些同步方法,以保证数据的一致性)。
5.进程编程调试简单可靠性高,但是创建销毁开销大;线程正相反,开销小,切换速度快,但是编程调试相对复杂。
6.进程间不会相互影响;一个进程内某个线程挂掉将导致整个进程挂掉。
7.进程适应于多核、多机分布;线程适用于多核
说说 linux 系统下 文本编辑常用的命令有哪些?
有命令模式、输入模式、底线命令模式
面试官:说说 linux 系统下 文本编辑常用的命令有哪些? | web前端面试 - 面试官系列 (vue3js.cn)
说说你对 linux 用户管理的理解?相关的命令有哪些?
linux是一个多用户的系统,允许不同的用户同时登陆主机并使用主机的资源。涉及到权限问题。
用户与用户组
Linux以 “用户与用户组” 的概念,建立用户与文件权限之间的联系,保证系统能够充分考虑每个用户的隐私保护,很大程度上保障了 Linux 作为多用户系统的可行性
从文件权限的角度出发,“用户与用户组” 引申为三个具体的对象:
文件所有者:文件的创造者
用户组成员:将 “其他用户” 区分为用户组成员和其他人后,若文件所有者希望对部分用户开放权限,而对其他人继续保持私有,则只需要将这部分用户与文件所有者划入一个用户组。这样,这部分用户就成了与文件所有者同组的用户组成员。用户可以对用户组成员开放文件权限,用户组成员则具备了查看、修改文件的权限,而对其他无关用户保持私有
其他人:与文件所有者没有任何联系的其他用户
用户操作:
新增用户
设置密码
修改用户
删除用户
新增用户组
修改用户组
删除用户组
说说你对输入输出重定向和管道的理解?应用场景?
linux中有三种标准输入输出,分别是STDIN,STDOUT,STDERR,对应的数字是0、1、2:
STDIN 是标准输入,默认从键盘读取信息
STDOUT 是标准输出,默认将输出结果输出至终端
STDERR 是标准错误,默认将输出结果输出至终端
重定向就是把本来要显示在终端的命令结果,输送到别的地方,分成:
输入重定向:流出到屏幕如果命令所需的输入不是来自键盘,而是来自指定的文件
输出重定向:命令的输出可以不显示在屏幕,而是写在指定的文件中
管道就是把两个命令连接起来使用,一个命令的输出作为另一个命令的输入
两者的区别在于:
管道触发两个子进程,执行 | 两边的程序;而重定向是在一个进程内执行。
管道两边都是shell命令
重定向符号的右边只能是Linux文件
重定向符号的优先级大于管道
#二、命令