| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> shell命令背后的执行过程 -> 正文阅读 |
|
[系统运维]shell命令背后的执行过程 |
在命令行中敲入一个mkdir命令,背后发生了些什么? ? 这个是Linux中经常被问到的一个问题,看似简单的一个问题,其实背后包含的知识十分多,我了解的也不是很多,以我自己的理解来回答一下这个问题,如果有错误,欢迎指正! 首先,我们需要了解我们平常在xshell中敲的命令,叫做shell命令(是严格区分大小写的),shell是一个解释器,人们敲的命令通过解释器的翻译,机器才会执行(虚拟机并不能直接读懂我们敲的命令),背后的过程可以简单理解为:人-->命令-->shell解释器-->机器执行 一些基本概念:
在这里再科普一下Linux和unix的区别:
了解shell解释器还需要了解Linux系统是由哪些组成的呢?主要包括以下五个方面 ????????1.内核:是Linux系统内部最核心的软件 kernel 内核是开源免费的,并且是使用c语言编写的 ????????2.系统调用:system call 是内核给外面的程序的接口,也是程序 ????????3.应用程序:实现某个功能的程序,例如mkdir cd ls useradd ????????4.shell解释器:实现人机交互的,给人使用的,来操作操作系统的程序 ????????5.库函数:实现某个功能的程序,给别的程序使用的——》某个库函数就是一个轮子,其他的程序可以直接调用,不需要重复造轮子了 Linux内核有什么作用? ????????1.对CPU进行调度——》CPU ????????2.对进程进行管理,例如创建一个进程、杀死一个进程、运行进程等 ????????3.对内存进行管理,例如给那个进程分配内存空间,回收内存空间等——》内存 memory ????????4.对磁盘里的文件系统进行管理,例如:创建文件,删除一个文件等——》disk 磁盘 ????????5.对网络进行管理——》网卡 ????????6.其他硬件的管理 ?接下来我们就可以正式的回答文章开始的那个问题了:在命令行中敲入一个mkdir命令,背后发生了些什么?例如:mkdir -p /xieshan 1.首先,shell解释器会对我们敲入的命令进行语法解析,分解成一个一个的token(token是最基本的单元):mkdir 是命令,-p是选项,/xieshan是参数; 语法解析的具体过程如下:
2.shell解释器会到磁盘的PATH变量中查找mkdir命令的路径,经过查找发现mkdir命令存放在磁盘的/usr/bin/mkdir 3.磁盘会告诉Linux内核mkdir命令的位置,加载mkdir命令的二进制可执行程序到内存里 4.Linux内核首先会查看内存里是否有足够的空间,如果有,就会创建进程,加载代码,整个进程进入就绪队列 5.内存执行mkdir命令,在这个过程中由于时间片等原因,内存会和CPU发生上下文切换(也就是不断在就绪、执行、阻塞过程中环绕) 6.内存将执行结果返回给shell解释器,shell解释器再通过标准输出将命令的执行结果返回给用户 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/29 10:09:42- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |