当前位置: 首页 > news >正文

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

文章目录

  • 概念总览
  • 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。那么为什么外壳要创建子进程呢?是为了预防用户的一些风险操作。

相关文章:

  • 【语音识别】- 几个主流模型
  • LeetCode198.打家劫舍
  • Java项目layui分页中文乱码
  • YOLOv6、YOLOv7、YOLOv8网络结构图(清晰版)
  • 基于Rust语言,和WebAssembly技术,与JavaScript结合,的具体应用场景
  • Flutter异常上报及性能监控实现
  • 【Redis | 第三篇】Springboot整合Redis
  • [HackMyVM]靶场 VivifyTech
  • InnoDB备份与恢复篇(4)-InnoDB的故障恢复与日志分析
  • 【技巧】SpringCloud Gateway实现多子域(单个应用开放多个端口)
  • Shell输入输出重定向
  • 实用工具:实时监控服务器CPU负载状态并邮件通知并启用开机自启
  • 14-Linux部署Hadoop集群
  • 高中数学:函数的单调性
  • 使用npm i命令时一直idealTree:npm: sill idealTree buildDeps卡住不动
  • ----------
  • 2018一半小结一波
  • 230. Kth Smallest Element in a BST
  • Dubbo 整合 Pinpoint 做分布式服务请求跟踪
  • ECMAScript入门(七)--Module语法
  • Git学习与使用心得(1)—— 初始化
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • tensorflow学习笔记3——MNIST应用篇
  • 基于组件的设计工作流与界面抽象
  • 快速体验 Sentinel 集群限流功能,只需简单几步
  • 前端
  • 前端攻城师
  • 前端相关框架总和
  • 数组大概知多少
  • 我这样减少了26.5M Java内存!
  • ​LeetCode解法汇总2182. 构造限制重复的字符串
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • #传输# #传输数据判断#
  • $refs 、$nextTic、动态组件、name的使用
  • (04)Hive的相关概念——order by 、sort by、distribute by 、cluster by
  • (C语言)深入理解指针2之野指针与传值与传址与assert断言
  • (附源码)springboot人体健康检测微信小程序 毕业设计 012142
  • (附源码)ssm学生管理系统 毕业设计 141543
  • (过滤器)Filter和(监听器)listener
  • (黑客游戏)HackTheGame1.21 过关攻略
  • ./include/caffe/util/cudnn.hpp: In function ‘const char* cudnnGetErrorString(cudnnStatus_t)’: ./incl
  • .NET Compact Framework 3.5 支持 WCF 的子集
  • .net 程序发生了一个不可捕获的异常
  • .net 调用php,php 调用.net com组件 --
  • .NET 中使用 Mutex 进行跨越进程边界的同步
  • .Net6支持的操作系统版本(.net8已来,你还在用.netframework4.5吗)
  • .NET开发不可不知、不可不用的辅助类(一)
  • @EventListener注解使用说明
  • @RequestMapping用法详解
  • [ 常用工具篇 ] POC-bomber 漏洞检测工具安装及使用详解
  • []T 还是 []*T, 这是一个问题
  • [Android Studio 权威教程]断点调试和高级调试
  • [Angular 基础] - 表单:响应式表单
  • [BZOJ5250][九省联考2018]秘密袭击(DP)
  • [C#]无法获取源 https://api.nuge t.org/v3-index存储签名信息解决方法