Linux操作系统体系结构 ( 3 ) -【Linux通信架构系列 】

news2024/11/24 5:06:45

系列文章目录

C++技能系列
Linux通信架构系列
C++高性能优化编程系列
深入理解软件架构设计系列
高级C++并发线程编程

期待你的关注哦!!!
在这里插入图片描述

现在的一切都是为将来的梦想编织翅膀,让梦想在现实中展翅高飞。
Now everything is for the future of dream weaving wings, let the dream fly in reality.

Linux操作系统体系结构

  • 系列文章目录
  • 1、`操作系统/内核` - 软件
  • 2、`系统调用`其实就是一些库函数,写代码时调用即可
  • 3、`shell`是一个命令行解释器,是Linux系统中用户与操作系统内核交互的主要方式之一
  • 4 、`用户态`和`内核态`之间的切换

要想把程序编好,必须对Linux操作系统体系结构有所了解,一般来说传统的Linux操作系统体系结构如图:
在这里插入图片描述

图1 传统Linux操作系统体系结构图

一般情况下,Linux操作系统的结构体系分为用户态和内核态。

1、操作系统/内核 - 软件

用于控制计算机的硬件资源,提供应用程序运行的环境。之所以称为内核,是因为比较小,且位于整个体系结构的核心。

我们编写的程序,要么运行在用户态,要么运行在内核态,一般情况下运行在用户态,当程序要执行一些特殊代码时,程序就可能切换到内核态。这种切换有操作系统控制,不需要认为介入

换一个角度理解用户态和内核态,用户态可以理解为图1中最外圈应用程序的活动空间。但是,我们所开发的应用程序的运行,往往需要访问一些资源(如读写文件要访问磁盘,调用malloc要申请内存,程序中可能还要访问传真机、打印机等外部设备),为了让应用程序能够访问这些资源,内核必须提供供应用程序访问的接口,也就是图1中的系统调用(内核对外接口)。

2、系统调用其实就是一些库函数,写代码时调用即可

一般情况,操作系统会提供200~300个库函数供我们调用,这些库函数在系统内部高度封装,我们无需关心细节,只需调用即可。

3、shell是一个命令行解释器,是Linux系统中用户与操作系统内核交互的主要方式之一

当用Xshell链接Ubuntu Linux虚拟机的时候,使用ps命令查看,就能看到一个bash进程(这个bash进程是自动开启的,用Xshell链接虚拟机时,系统就启动了一个bash。这个bash是被login/sshd用fork函数开启的。

bash是borne again shell (重新装配的shell)的缩写,是shell的一种,Linux默认采用bash这种shell。

通俗地说,bash也是一个可执行程序,这种可执行程序的主要作用是:把用户输入的命令翻译给操作系统,所以bash相当于一个命令解释器。

bash也可以手动创建,因为它是一个可执行程序。

尝试用whereis找到bash的位置,直接执行,然后使用exit退出当前的bash,如图:
在这里插入图片描述

图2 手动执行bash并使用exit退出该bashs

如果第二次输入exit,则会从当前使用的bash中退出Xshell会与Ubuntu Linux虚拟机断开连接(因为第一次突退出的是自己执行的bash,第二次退exit退出的是login/sshd进程用函数fork创建的bash进程)。

观察图1中shell的位置,它正好夹在系统调用和应用程序之间,起分隔系统调用和应用程序的作用,同时也有胶水(将系统调用和应用程序黏在一起)的感觉。

操作系统的内核部分,有进程管理,文件系统、设备驱动、网络等各种资源的管理。在内核和用户空间之间,通过系统调用(system call)接口实现对各种资源功能的调用。

4 、用户态内核态之间的切换

(1)用户态权限小,内核态权限大,权限大意味着能做一些危险的事。
(2)这些调用接口是系统提供并统一管理的。操作系统资源有限,如果许多程序同时访问这些资源,一旦产生访问冲突,或资源耗尽,就可能导致系统崩溃。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/668692.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

FTP服务器

文章目录 FTP服务器FTP的数据传输原理FTP的功能简介不同等级的用户身份命令记录与日志文件记录限制用户活动的目录 FTP的工作流程与使用到的端口FTP主动式连接FTP被动式连接 vsftpd服务器基础设置为什么使用vsftpd所需要的软件以及软件结构vsftpd.conf 配置值说明与服务器环境比…

【入门向】CV 小白如何入门?人脸识别教程带你学习计算机视觉

导言 计算机视觉作为人工智能领域的一个重要分支,旨在让计算机能够理解和解释图像和视频数据。而OpenCV作为一款开源的计算机视觉库,为开发者提供了丰富的工具和函数,用于处理图像、视频、对象检测、特征提取等任务。对于初学者来说&#xf…

chatgpt赋能python:如何在Python中捕获kill信号

如何在Python中捕获kill信号 在编写Python代码时,我们可能需要处理一些长时间运行的进程。有时候,我们会在运行这些进程时使用kill命令杀死它们。然而,Python进程是否可以捕获kill信号呢?答案是肯定的。 在本文中,我…

基于pyqt5、mysql、yolov7、chatgpt的小麦病害检测系统v1.0

基于pyqt5、mysql、yolov7、chatgpt的小麦病害检测系统设计与实现 一、界面设计1.1安装pyqt51.2创建用户子窗体1.3创建管理员主窗体1.4创建管理员子窗体1.5创建系统登陆界面 二、环境搭建2.1pyqt5工具配置2.2mysql5.7安装 三、编程实现3.1初始化数据库3.2创建用户数据库sdk文件…

chatgpt赋能python:Python如何快速提取指定行和列的数据?

Python如何快速提取指定行和列的数据? 在进行数据分析和处理时,常常需要从海量数据中筛选出所需的数据。这时,Python是一款非常强大的工具,可以方便地进行大规模数据清洗和筛选。本文将介绍如何使用Python快速提取指定行和列的数…

【JVM篇】手撸上万字带你吃透“垃圾回收”

前言:大家好,我是TwosJel,一名21级的本科生(*^▽^*),最近二刷了《深入理解Java虚拟机》,因此想写一篇关于垃圾回收的随笔,于是便有了这篇文章❥(^_-)。 个人主页:TwosJel 个人介绍&#xff1a…

JWT --- 入门学习

1.常见的认证机制 basic auth : 每次请求都会携带用户的username,password,易被黑客拦截。 Cookie auth : 我们请求服务器,创建一个session对象,客户端创建cookie对象。客户端每次访问,携带cookie对象。 (在当今&…

chatgpt赋能python:Python排队:提高效率、优化流程的神器

Python排队:提高效率、优化流程的神器 随着科技的不断进步,排队已经成为了现代生活中不可避免的一部分。在各个行业中,排队都是必须考虑的问题,包括餐馆、医院、机场和银行等等。针对排队问题,我们可以使用Python编程…

使用Vue + FormData + axios实现图片上传功能实战

前言 上节回顾 上一小节中,我们添加了Vue-router的路有数据,这些数据都将是后续实战课程中的真实路由数据了。同时引入了ElementUI的el-menu做为左侧菜单的组件,但本专栏的特点就是遇到第三方功能和组件,自己尽量也要实现一遍&a…

蓝牙ATT协议介绍

介绍 ATT,Attribute Protocol,用于发现、读、写对端设备的协议(针对BLE设备) ATT允许蓝牙远程设备(比如遥控器)作为服务端提供拥有关联值的属性集,让作为客户端的设备(比如手机、电视)来发现、…

【软件工程】软件工程期末考试试卷

瀑布模型把软件生命周期划分为八个阶段:问题的定义、可行性研究、软件需求分析、系统总体设计、详细设计、编码、测试和运行、维护。八个阶段又可归纳为三个大的阶段:计划阶段、开发阶段和( C)。 A、详细计划 B、可行性分析 C、 运行阶段 D、 测试与排…

JavaScript中的CRUD操作指南示例 - 用DHTMLX创建医院管理系统!

创建、读取、更新和删除(CRUD)是现代web和移动应用程序执行的四个基本功能。然而这些函数是如何产生的,它们到底是做什么的? 在本文中,我们将简要介绍CRUD的含义以及它何时被引入编程的。文中我们还将使用用于医院管理的JavaScript演示应用程…

图文并茂spring-boot3 热部署配置(IntelliJ IDEA 2023.1)

文章目录 🥚 版本情况🧂 前言(踩坑)🍗 四步完成spring-boot热部署🥗 1、下载热部署模块🥗 2、application.yml 或者application.properties添加dev-tools配置🥗 3、settings中勾选条…

设计服务要考虑的7个维度

我在《软件设计的核心方法及实例解析》里提到软件设计的核心方法是分解和组合。分解粒度上,不同的架构师想法不一样,但是却有一点共性:设计一定要把不稳定的部分做封装,对外暴露稳定的部分,这也是有接口隔离这一原则的…

VS code 可以做什么?

编写 markdown VS code 真的是非常好用的Markdown编写工具,我用他来编写Markdown的时间甚至比写代码还要多。比如,我每周写的公众号文章。 相关插件: MarkdownMarkdown Preview EnhancedMarkdown All in One 编写python 大多数同学写pyth…

LLM - 基于 ChatGLM-6B 的工程配置搭建私有 ChatGPT 中文在线聊天

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://blog.csdn.net/caroline_wendy/article/details/131104546 Paper:GLM: General Language Model Pretraining with Autoregressive Blank Infilling 一篇于2022年发表在ACL会…

脑机接口科普0021——黑门01

本文禁止转载!!!! 我会在接下来的一段时间内,花一些章节,专门科普介绍一下《黑门》这部国产动漫。 科普《黑门》,源自网友看了我的脑机接口科普文章后,介绍我看黑门这个脑机接口科…

盘点那些 IT 技术面试官常用的 10 个挂人套路

最近几个朋友找我聊天,给我讲述了面试过程中遇到的一些不太理解的事情。作为一个技术面试官,今天来分享 10 个面试相关的套路。 1.自我介绍 自我介绍是一个重要的开始,好的开始是成功的一半。不需要太多花里胡哨的东西,简单、清…

86墙插双联明装新款:蓝奥声智能用电设备安全防护有多强

物理绝缘和智能数据分析安全技术重塑了墙壁插座的安全标准,极大可能规避日常生活中的意外,只有做到意外情况下也不会触电,这样的墙壁插座才能真正叫安全墙壁插座,“不触电且足够安全”应该成为墙壁插座的安全标配标准。 智能物理…

检测 ARP 欺骗

地址解析协议 (ARP) 是网络通信的基本推动因素。作为网络互联网层和网络链路层之间的桥梁,此网络协议将网络地址 (IP) 转换为物理层地址(MAC 地址)。ARP协议支持的地址转换在促进同一LAN中不同网…