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

Linux中shell(外壳)和内核(kernel)的关系

1.角色分工

内核(kernel)

系统核心:直接管理硬件资源(cpu、内存、磁盘、网络等),提供底层服务(进程调度、内存管理、设备驱动等)

抽象层:将硬件细节封装为系统调用接口(如open()、read()、write()),供上层程序使用。

特权模式:运行在最高权限(Ring 0),直接操作硬件。

shell(外壳)

用户接口:提供命令行界面(CLI)或图形界面(GUI),允许用户与系统交互。

命令解释器:解析用户输入的命令(如ls、grep),将其转换为系统调用或启动其他程序。

脚本环境:支持脚本(Bash等),实现自动化任务

普通用户模式:运行在较低权限(Ring 3),通过系统调用请求内核服务。

2.协作机制

用户输入——shell解析——系统调用——内核处理

用户在shell中输入命令(cat file.txt)

shell解析命令,找到对应的可执行文件(如/bin/cat)

shell通过fork()和exec()系统调用请求内核创建新进程并加载程序

内核调度进程 分配内存 并执行程序

程序通过系统调用(如open()、read())访问文件 内核处理请求返回结果

最终结果通过shell显示给用户

ls -l /home

shell解析ls命令 找到/bin/ls

调用fork()创建子进程 exec()加载ls程序

ls程序通过opendir()和readdir()系统调用遍历/home目录(由内核处理)

内核返回目录内容 ls格式化输出 shell显示结果

3.关键区别

特性shell内核
功能用户交互、命令解析、脚本执行硬件管理、进程调度、系统调用
权限用户态(Ring 3)内核态(Ring 0)
稳定性可重启(不影响内核)崩溃导致系统崩溃
扩展性通过脚本或新命令扩展通过模块或重新编译内核扩展

 4.注意

shell不是内核的一部分 shell是独立的用户程序(如Bash、Zsh),而内核是系统核心

shell可以调用内核功能 但必须通过系统调用(如fork()、exec()),不能直接操作硬件

内核不直接与用户进行交互 用户通过shell等接口间接使用内核服务

http://www.dtcms.com/a/270948.html

相关文章:

  • Claude Code:终端上的 AI 编码助手,潜力与挑战并存
  • 从零用java实现 小红书 springboot vue uniapp(13)模仿抖音视频切换
  • 华为数通HCIA vs HCIP:新手入门选哪个更合适?
  • 利用sCMOS科学相机测量激光散射强度
  • Rk3568驱动开发_阻塞IO_15
  • SQL Server通过存储过程实现飞书消息卡片推送
  • Live555-RTSP服务器
  • nl2sql的解药pipe syntax
  • 【工具变量】上市公司企业金融强监管数据、资管新规数据(2001-2024年)
  • 【YOLOv11-目标检测】目标检测数据格式(官方说明)
  • S7-200 SMART :通过以太网下载程序详细步骤
  • React、Vue、Angular的性能优化与源码解析概述
  • Qt6中模态与非模态对话框区别
  • 供应链管理-采购:谈判方式、理念、技巧
  • DolphinScheduler 3.2.0 Worker启动核心源码解析
  • 一天一道Sql题(day05)
  • IntelliJ IDEA 2025.1.3创建不了java8的项目
  • 初识MySQL(三)之主从配置与读写分离实战
  • Mac电脑,休眠以后,发现电量一直在减少,而且一个晚上,基本上是没了,开机都需要插电源的简单处理
  • Hive MetaStore的实现和优化
  • 在 macOS 上安装与自定义 Oh My Zsh:让终端美观又高效 [特殊字符]
  • 如何使用Pytest进行测试?
  • 基于大模型的窦性心动过速全周期预测与诊疗方案研究报告
  • 【linux】ssh使用-X参数后报错:X11 forwarding request failed on channel 0
  • [GICP] 点云预处理 | 近似最近邻搜索结构(ANN) | KdTree构建 vs 体素地图shi管理
  • 宇树 G1 部署(一)——综述
  • 6N70-ASEMI开关电源核心元件6N70
  • Go语言教程-环境搭建
  • [Vroom] 位置与矩阵 | 路由集成 | 抽象,解耦与通信
  • VScode SSH远程连接Ubuntu(通过SSH密钥对的方式)