当前位置: 首页 > 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。那么为什么外壳要创建子进程呢?是为了预防用户的一些风险操作。

http://www.lryc.cn/news/312323.html

相关文章:

  • C++:Vector的使用
  • Redis之事务(详细解析)
  • Java项目:39 springboot007大学生租房平台的设计与实现
  • 安卓内存信息查看
  • Positional Encoding 位置编码
  • MySql、Navicat 软件安装 + Navicat简单操作(建数据库,表)
  • 逆向案例五、爬取b站评论,表单MD5加密
  • 010-原型链
  • Electron-builder打包安装包——编译篇
  • Red Hat系统升级内核版本
  • Java集合set之HashSet、LinkedHashSet、TreeSet的区别?
  • 全方位碾压chatGPT4的全球最强模型Claude 3发布!速通指南在此!保姆级教学拿脚都能学会!
  • upload-Labs靶场“11-15”关通关教程
  • linux-rpm命令
  • 如何利用python实现自己的modbus-tcp库
  • linux系统-----------搭建LNMP 架构
  • C++中boost库的安装及使用(Windows)
  • CPP编程-CPP11中的内存管理策略模型与名称空间管理探幽(时隔一年,再谈C++抽象内存模型)
  • springboot项目整合minio实现文件的分布式存储
  • 微信小程序开发学习笔记《19》uni-app框架-配置小程序分包与轮播图跳转
  • Python内置模块
  • WordPress建站入门教程:小皮面板phpstudy如何安装PHP和切换php版本?
  • 用友 NC saveDoc.ajax 任意文件上传漏洞复现
  • 如何使用达摩盘
  • 网络编程的学习
  • 【Mining Data】收集数据(使用 Python 挖掘 Twitter 数据)
  • 2024京津冀光伏展
  • 在C#中使用Linq
  • Swing程序设计(11)动作事件监听器,焦点事件监听器
  • Python 开发图形界面程序