linux shell执行原理
shell简介
Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。
运行背景
a 一个基本的linux系统结构
b.由上图可以看出,shell 在系统中是处于中间层次的。他为用户和kernel的交互提供了一种方式,方案。
c.关于分层结构的众多优势:
1、开发人员可以只关注整个结构中的其中某一层;
2、可以很容易的用新的实现来替换原有层次的实现;
3、可以降低层与层之间的依赖;
4、有利于标准化;
5、利于各层逻辑的复用。
缺点:
1、降低了系统的性能。
2、有时会导致级联的修改
shell命令执行原理
表层理解 我们一般做法就是:打开终端,输入命令,敲回车,等待命令运行,得到结果
那么,对于这个过程进行细致的解析,又包含了哪些东西呢?
打开终端,输入命令,敲回车----IO中断
等待过程:
shell分析命令及参数----shell(一个终端位置的解释性程序)
fork拷贝附近成pcb相关资源,为命令执行做准备----系统调用
exec在fork得到的子进程中执行命令
执行完成,返回结果----堆栈保护,栈帧注:当执行命令如 ls &
&符号表示该命令在后台执行,而当命令执行过程中,我们是无法仅需输入命令的,这是因为父进程在fork执行shell命令的同时,回执行wait等待子进程结束,除非用户主动Ctrl+C中止命令执行或者Ctrl+z置入后台执行。