[Linux]如何理解kernel、shell、bash

文章目录

概念总览

内核(kernel)外壳(shell)bash

  1. kernel

    kernel是指操作系统中的核心部分,用户一般是不能直接使用kernel的。它主要负责管理硬件资源和提供系统服务,如内存管理、进程管理、文件系统管理等。kernel是操作系统与硬件之间的接口,所有的软件应用程序都必须通过kernel来访问硬件资源。

  2. shell

    shell是一种概念,他的最简单定义是:命令行解释器(command Interpreter)。其作用是将用户的指令翻译给kernel进行处理,以及将kernel的处理结果翻译返还给用户。

  3. bash

    bash是shell的一种具体解释器,Linux下常用的就是bash。

kernel

为什么不能直接使用kernel?

  1. 因为用户不全都是编程经验丰富的程序员,所以OS需要对其本身进行保护,所以一般情况下拒绝直接对内核的操作
  2. 由于直接对kernel操作晦涩难懂,为了提高OS的易用程度,所以不直接使用kernel,而是提供了shell外壳。如:windowsGUI就是通过图形化界面的点击来进行访问,Linux就是通过bash命令行进行访问

shell&bash

bash是最常见的shell工具之一,任何与内核的交互都要通过shell

外壳如何工作(以Linux下的bash为例)

  1. 外壳其实也是一个进程。 每当启动一个命令行时(复制了会话窗口),都会创建一个bash进程(下图可以看出,对于每一个bash进程,他们的父进程的pid相等,说明bash是同一个进程创建的子进程)

  2. 外壳对用户的指令做操作时,其实时派生(创建)子进程来操作。 从上图中的grep指令(最后一行)中可以看出,每一次进行查找指令时,都会创建一个进程来执行查找操作,而这个进程的父进程就是bash。那么为什么外壳要创建子进程呢?是为了预防用户的一些风险操作。

相关推荐
lcreek2 小时前
Linux信号机制详解:阻塞信号集与未决信号集
linux·操作系统·系统编程
shandianchengzi2 小时前
【记录】Tailscale|部署 Tailscale 到 linux 主机或 Docker 上
linux·运维·docker·tailscale
John Song3 小时前
Linux机器怎么查看进程内存占用情况
linux·运维·chrome
sichuanwuyi3 小时前
Wydevops工具的价值分析
linux·微服务·架构·kubernetes·jenkins
持戒波罗蜜3 小时前
ubuntu20解决intel wifi 驱动问题
linux·驱动开发·嵌入式硬件·ubuntu
不做无法实现的梦~3 小时前
使用ros2来跑通mid360的驱动包
linux·嵌入式硬件·机器人·自动驾驶
点云SLAM4 小时前
C++内存泄漏检测之Windows 专用工具(CRT Debug、Dr.Memory)和Linux 专业工具(ASan 、heaptrack)
linux·c++·windows·asan·dr.memory·c++内存泄漏检测·c++内存管理
LuiChun4 小时前
Docker Compose 容器服务查询与文件查看操作指南(Windows Docker Desktop 版)【一】
linux·运维·windows·docker·容器
${王小剑}4 小时前
在离线ubuntu上布置深度学习环境
linux·运维·ubuntu
Java程序之猿5 小时前
Linux使用U盘安装centos及报错You might want to saue “/run/initramfs/rdsosreport.txt“ 处理
linux·运维·服务器