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

相关文章:

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

文章目录 概念总览kernelshell&bash 概念总览 内核(kernel) ,外壳(shell) ,bash kernel kernel是指操作系统中的核心部分,用户一般是不能直接使用kernel的。它主要负责管理硬件资源和提供系统服务,如内存管理、进程管理、文件…...

C++:Vector的使用

一、vector的介绍 vector的文档介绍 1. vector是表示可变大小数组的序列容器。 2. 就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以…...

Redis之事务(详细解析)

请直接看原文:不能回滚的Redis事务还能用吗 - 知乎 (zhihu.com) ------------------------------------------------------------------------------------------------------------------------------ 1、Redis事务的概念: Redis 事务的本质是一组命令的集合。…...

Java项目:39 springboot007大学生租房平台的设计与实现

作者主页:源码空间codegym 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 系统有管理员、房东和用户 【主要功能】 1、后台:房源管理、信息审批管理、订单信息管理、房东管理、用户管理 2、前台&#xff1…...

安卓内存信息查看

目录 前言一、Android查看内存相关信息的方法1.1 通过 adb shell 获取内存信息1.2 通过编程方式获取内存信息1.3 adb shell 获取应用程序内存使用情况1.4 free指令 二、总结 前言 一、Android查看内存相关信息的方法 1.1 通过 adb shell 获取内存信息 C:\Users\henry.xue>…...

Positional Encoding 位置编码

Positional Encoding 位置编码 flyfish Transformer模型没有使用循环神经网络,无法从序列中学习到位置信息,并且它是并行结构,不是按位置来处理序列的,所以为输入序列加入了位置编码,将每个词的位置加入到了词向量中…...

MySql、Navicat 软件安装 + Navicat简单操作(建数据库,表)

一、MySql、Navicat 软件安装 及正常使用 MySql下载+安装: 检查安装情况: 配置环境变量: 搞定了!!! 可以登陆试哈哈哈 连接navicat 开始创建数据库 二、 商品种类表 - commoditytype int …...

逆向案例五、爬取b站评论,表单MD5加密

1.便捷写爬虫网站: Convert curl commands to code 使用流程:又点击想要抓的包,复制URL(base)格式复制 在上面链接中粘贴即可 2.找到含有评论的包(即main?oid):观察表单发现两处参数在变化&…...

010-原型链

原型链 1、概念2、原理3、new 操作符原理4、应用 1、概念 原型链:javascript的继承机制,是指获取JavaScript对象的属性会顺着其_proto_的指向寻找,直至找到Object.prototype上。 2、原理 💡 Tips:构造函数 Fn&#…...

Electron-builder打包安装包——编译篇

突然有一天想打包个桌面程序,没有打包过,经过九牛二虎之力终于打包出来,在此感谢那些热于分享的前辈! 本篇只讲打包运行和出现的问题 一、准备工作:提前下载相关资源包,否则在国内环境下可能因为网络问题…...

Red Hat系统升级内核版本

查看当前内核版本 uneme -r yum list kernel升级内核 yum update -y kernel检查升级后的内核版本 uneme -r yum list kernel升级系统中已安装的软件包到最新版本(过程时间较长) 目前只升级了系统内核,系统相关的安装包还是老的&#xff0…...

Java集合set之HashSet、LinkedHashSet、TreeSet的区别?

Java的集合中主要由List,Set,Queue,Map构成,Set特点:存取无序,不可以存放重复的元素,不可以用下标对元素进行操作。 HashSet 作为Set容器的代表子类,HashSet经常被用到&#xff0c…...

全方位碾压chatGPT4的全球最强模型Claude 3发布!速通指南在此!保姆级教学拿脚都能学会!

🎉🎉欢迎光临,终于等到你啦🎉🎉 🏅我是苏泽,一位对技术充满热情的探索者和分享者。🚀🚀 🌟持续更新的专栏《Spring 狂野之旅:从入门到入魔》 &a…...

upload-Labs靶场“11-15”关通关教程

君衍. 一、第十一关 %00截断GET上传1、源码分析2、%00截断GET上传 二、第十二关 %00截断POST上传1、源码分析2、%00截断POST上传 三、第十三关 文件头检测绕过1、源码分析2、文件头检测绕过 四、第十四关 图片检测绕过上传1、源码分析2、图片马绕过上传 五、第十五关 图片检测绕…...

linux-rpm命令

rpm命令管理程序包:安装、升级、卸载、查询和校验 1、忽略依赖关系安装/卸载包 安装:rpm -Uvh 软件包名 --nodeps 卸载:rpm -e 软件包名 --nodes!!!!慎用!!&#xff01…...

如何利用python实现自己的modbus-tcp库

如果你想使用纯Socket编程来实现Modbus TCP通讯,而不是依赖于Modbus库,你需要理解Modbus TCP协议的细节,并能够手动构建和解析Modbus消息。以下是一个简单的示例,展示了如何使用Python的socket库来实现Modbus TCP通讯: 了解Modbus TCP协议: Modbus TCP协议使用TCP作为底层…...

linux系统-----------搭建LNMP 架构

PHP(Hypertext Preprocessor 超文本预处理器)是通用服务器端脚本编程语言,主要用于web开发实现动态web页面,也是最早实现将脚本嵌入HTML源码文档中的服务器端脚本语言之一。同时,php还提供了一个命令行接口,因此,其也可…...

C++中boost库的安装及使用(Windows)

Boost库的安装及使用 引言使用现有的boost库安装及使用引言 C++开发中经常会用到boost库,本文记录一下Windows上boost在visual studio2019上的使用。 Boost库是一个跨平台的C++库集合,旨在为C++开发者提供一系列高质量的通用功能。不同的Visual Studio(VS)版本并不要求安…...

CPP编程-CPP11中的内存管理策略模型与名称空间管理探幽(时隔一年,再谈C++抽象内存模型)

CPP编程-CPP11中的内存管理策略模型与名称空间管理探幽 CPP的四大内存分区模型 在 C 中,**内存分区是一种模型,用于描述程序运行时内存的逻辑组织方式,但在底层操作系统中,并不存在严格意义上的内存分区。**操作系统通常将内存分…...

springboot项目整合minio实现文件的分布式存储

minio是一款分布式存储系统&#xff0c;上一篇详细介绍了minio在windows环境下的搭建集群并通过nginx实现负载均衡&#xff0c;这里简单介绍下springboot项目整合minio并实现文件的上传下载删除等操作。 一、依赖的引入 1.1、maven项目 <dependency><groupId>io…...

AI行业的“伦理困境”:隐私保护、算法偏见与失业问题

在人工智能技术飞速发展的今天&#xff0c;软件测试行业正经历着前所未有的变革。AI测试工具的广泛应用&#xff0c;极大提升了测试效率&#xff0c;改变了传统测试流程。然而&#xff0c;技术进步的同时&#xff0c;一系列伦理困境也随之而来&#xff0c;隐私保护、算法偏见与…...

基于瑞萨RX63N与摇杆的模拟信号采集与上位机控制实践

1. 项目概述与核心思路最近在整理手头的开发板&#xff0c;翻出了这块瑞萨的Sakura板&#xff08;RX63N&#xff09;&#xff0c;想着不能让它吃灰&#xff0c;得做点有意思的东西。手头正好有个摇杆模块&#xff0c;灵机一动&#xff0c;不如用它来做个模拟输入控制视频播放的…...

企业私有代码仓库建设:高可用、备份恢复与灾备方案复盘

开篇 企业内网私有化代码仓库&#xff0c;是研发资产的核心单点。一旦出现仓库不可用、数据丢失、分支错乱、权限越权&#xff0c;会直接导致研发停摆、资产外泄、合规不通过。很多团队初期用单机Git/SVN、简单文件备份&#xff0c;看似低成本&#xff0c;在多团队、高并发、信…...

Spike Prime避坑指南:Python控制电机和传感器时,新手最常遇到的5个错误及解决方法

Spike Prime避坑指南&#xff1a;Python控制电机和传感器时新手最常遇到的5个错误 第一次用Python控制Spike Prime的电机和传感器时&#xff0c;那种期待和兴奋很快就会被各种报错消磨殆尽。明明照着官方文档写的代码&#xff0c;电机就是不转&#xff1b;传感器读数永远为零&a…...

[实战剖析] 从零构建CSRF攻击:GET与POST请求的攻防博弈

1. CSRF攻击的本质与危害 跨站请求伪造&#xff08;CSRF&#xff09;就像有人偷偷用你的手机给朋友发消息。想象你登录了社交网站没有退出&#xff0c;这时访问了恶意网页&#xff0c;它就能冒充你执行加好友、改资料等操作。这种攻击不需要窃取密码&#xff0c;只要浏览器保持…...

AArch64虚拟内存系统架构与地址转换详解

1. AArch64虚拟内存系统架构概述虚拟内存是现代计算机系统的核心机制&#xff0c;它通过地址转换技术将程序使用的虚拟地址(VA)映射到实际的物理地址(PA)。AArch64作为ARMv8-A和ARMv9-A架构的64位执行状态&#xff0c;其虚拟内存系统在设计上兼顾了灵活性和性能需求。在AArch64…...

GIS技巧100例23-ArcGIS像元统计实战:从月度栅格到年度气候指标

1. 像元统计基础与气候数据特点 刚接触GIS处理气候数据时&#xff0c;我经常被各种栅格格式和统计方法搞得晕头转向。直到有次用ArcGIS的像元统计工具批量处理了5年的月降水数据&#xff0c;才发现这个功能简直是隐藏的效率神器。像元统计&#xff08;Cell Statistics&#xff…...

CG-65 剖面细管式温度传感器 小巧便携 多层温度同监测

一、产品概述&#xff1a;小巧便携&#xff0c;功能集成在农业生产、环境监测等诸多领域&#xff0c;土壤温度是一项至关重要的参数。一款性能优异的土壤温度监测设备&#xff0c;能够为相关工作提供精准的数据支持。我们的多深度土壤温度监测仪&#xff0c;正是这样一款专为精…...

LeetCode 找到最终的安全状态题解

LeetCode 找到最终的安全状态题解 题目描述 给定一个有向图&#xff0c;找到所有安全节点。安全节点是永远不会走向环的节点。 示例&#xff1a; 输入&#xff1a;graph [[1,2],[2,3],[5],[0],[5],[],[]]输出&#xff1a;[2,4,5,6] 解题思路 方法&#xff1a;拓扑排序 思路&am…...

树莓派I2C保姆级教程:从命令行工具到Python脚本,一次搞定多个传感器(附避坑指南)

树莓派I2C实战指南&#xff1a;从硬件调试到Python自动化控制 第一次接触树莓派的I2C接口时&#xff0c;我对着密密麻麻的引脚和传感器数据手册发呆了半小时。直到成功读取到第一个温湿度数据&#xff0c;才意识到I2C这种看似复杂的通信协议&#xff0c;其实就像一位耐心的翻译…...