【Linux】操作系统的基本概念 {冯诺依曼体系结构,操作系统的基本概念,系统调用及用户操作接口,shell程序}

news2024/10/6 10:25:50

在这里插入图片描述

一、冯诺依曼体系结构

现代计算机设计大都遵守冯·诺依曼体系结构:

在这里插入图片描述

截至目前,我们所认识的计算机,都是由一个个的硬件组件组成

  • 输入单元:包括键盘, 鼠标,扫描仪, 磁盘,网卡等

  • 存储器:内存(提高数据读写速度,降低硬件成本)

  • 中央处理器(CPU):含有运算器(算数运算,逻辑运算)和控制器(分析指令并发出相应的控制信号)等

  • 输出单元:显示器,打印机, 磁盘,网卡等

关于冯诺依曼,必须强调几点:

  • 不考虑缓存情况,这里的CPU能且只能对内存进行读写,不能直接访问外设(输入或输出设备)
  • 外设(输入或输出设备)要输入或者输出数据,也只能写入内存或者从内存中读取。
  • 一句话,所有设备都只能直接和内存打交道

二、操作系统(Operating System)

2.1 基本概念

任何计算机系统都包含一个基本的程序集合,称为操作系统(OS)。广义上,操作系统包括:

  • 内核(进程管理,内存管理,文件管理,驱动管理)

  • 其他程序(例如函数库,shell程序等等)

设计OS的目的

  1. 硬件交互,管理所有的软硬件资源
  2. 为用户程序(应用程序)提供一个良好的执行环境

操作系统如何管理软硬件

  1. 先描述:用struct结构体收录其所有的属性。(Linux内核是用C语言写的)
  2. 再组织:用链表或其他高效的数据结构将这些结构体组织起来,通过增删查改算法对软硬件进行管理。

定位
在整个计算机软硬件架构中,操作系统的定位是:一款纯正的“搞管理”的软件


2.2 系统调用及用户操作接口

在这里插入图片描述

系统调用

  • 在开发角度,操作系统对外会表现为一个整体,但是会暴露自己的部分接口,供上层开发使用,这部分由操作系统提供的接口,叫做系统调用(system call)
  • 系统调用在使用上功能比较基础,对用户的要求相对也比较高,所以,有心的开发者可以对部分系统调用进行适度封装,从而形成库和shell程序。

提示:Linux内核是使用C语言写的,system call实际上就是用C语言写的函数。

用户调用接口

  • 为了方便基本操作,将部分系统调用封装成shell程序或图形用户界面,使用户通过简单的指令或动作就可以对计算机的软硬件进行操作。
  • 为了方便编程开发对部分系统调用进行适度封装,从而形成,有了库,就很有利于更上层用户或者开发者进行二次开发。

2.3 shell——命令行解释器

外壳程序

  • Linux严格意义上说的是一个操作系统,我们称之为“核心(kernel)“ ,但我们一般用户,不能直接使用kernel。而是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。
  • Windows系统也同样由 内核 + 外壳程序(Windows GUI) 构成。对比windows GUI,我们操作windows 不是直接操作windows内核,而是通过图形接口(GUI),进行移动鼠标点击等动作,从而完成我们的操作(比如进入D盘的操作,我们通常是双击D盘盘符.或者运行起来一个应用程序)。
  • shell 对于Linux,有相同的作用,主要是对我们的指令进行解析,解析指令给Linux内核。内核运行出结果再通过shell解析给用户。

广义上,Linux系统 = Linux内核(kernel)+外壳程序(shell)
狭义上,Linux系统 = Linux内核(kernel)

命令行解释器:shell
在这里插入图片描述

在Linux系统中接受用户输入并显示运行结果的程序是shell。shell即命令行解释器是Linux操作系统的外壳程序,他的功能如下:

  1. 传递请求,让内核执行命令;将内核处理的结果翻译给使用者。
  2. 保护内核
  3. 创建子进程来执行具有风险的事情。

centos系统中的命令行解释器:bash

  1. shell是命令行解释器的统称,而bash只是其中之一。
  2. bash本身在系统中就是一个进程。

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

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

相关文章

cuda 安装(windows)简单

除了在linux上用,部分初学者也会在windows上用 需要在linux上安装的参考这篇:cuda linux安装 有的教程讲的很复杂,起始很简单 1.下载Cuda Toolkit(全家桶) cuda-toolkit官方页面 找到需要的版本 2.安装 双击然后下…

MySQL MHA高可用集群部署及故障切换

MySQL MHA高可用集群部署及故障切换 一、MHA概述二、MHA的组成三、MHA的特点四、MHA的原理五、搭建MySQLMHA1、所有服务器,关闭系统防火墙和安全机制2、修改 master(192.168.92.11)、Slave1(192.168.92.12)、Slave2&am…

使用Gradio创建交互式复选框组件

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️ 👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…

Web (27号培训)

Get_POST Upload1 最后蚁剑链接寻找文件即可 简单的登录 用给好的字典爆破就好了 这仅仅只是爆破吗? 账户hacker 密码123456 1.爆破hacker帐号的密码 2.登录hacker帐号 3.抓包后将user改成vvvlllll,放包 4.即得flag

今日份分享:转换音频格式的软件有哪些

曾经有一位音乐爱好者,名叫张丽。她热爱收集高质量的音乐,尤其钟爱flac这种无损音频格式。然而,有一天,她遇到了一个问题:她的音乐播放器不支持flac格式,因此她迫切需要找到一种软件来转换flac音频格式。那…

助你丝滑过度到 Vue3 初识 ②②

作者 : SYFStrive 博客首页 : HomePage 📜: VUE3~TS 📌:个人社区(欢迎大佬们加入) 👉:社区链接🔗 📌:觉得文章不错可以点点关注 👉…

读发布!设计与部署稳定的分布式系统(第2版)笔记15_快速失败和替换

1. 快速失败而非缓慢响应 1.1. 如果响应缓慢比没有响应更糟,那么最坏的情况肯定是缓慢的失败响应 1.2. 如果系统能够预先确定某次调用会失败,那么最好快速失败 2. 快速失败模式通过避免响应缓慢来提高整个系统的稳定性 2.1. 当系统由于部分失效而面临…

【pytorch,onnx,bug解决】pytorch的op:pixel unshuffle转到onnx的op:SpaceToDepth

文章目录 问题1, 转换失败问题1解决问题2,精度对不上问题2解决训练时转换时 问题1, 转换失败 pytorch训练好的模型想要在onnx上部署,但是发现算子F.pixel_unshuffle 不能直接转到onnx 的 SpaceToDepth, 发生以下报错&…

Android——基本控件(下)(十六)

1. 随笔提示文本:AutoCompleteTextView 1.1 知识点 (1)了解随笔提示功能的应用; (2)可以使用AutoCompleteTextView类完成随笔提示功能的实现。 1.2 具体内容 这个组件就是提供了一个文本输入的功能&…

YOLO改进教程:6.添加NAM-Net注意力机制

论文地址:https://arxiv.org/abs/2111.12419Github:https://github.com/Christian-lyc/NAM如果你是深度学习小白,阅读本文前建议先学习一下 📖《新手入门深度学习》如果你有一定基础,但是缺乏实战经验,可通过 📖《深度学习100例》 补齐基础另外,我们正在通过 🔥365…

window11系统打开VMware虚拟机,导致主机直接重启

问题描述: window11系统打开VMware虚拟机,直接导致主机直接重启 原因: 未开启“虚拟机平台”选项。 解决方式: 打开电脑“控制面板”,选择“程序”,在再选择程序中的“启用或关闭windows功能” 控制面板➡…

MyBatis 执行流程详解及示例代码

导言: MyBatis 是一个优秀的持久层框架,它简化了数据库操作的开发过程。本文将详细介绍 MyBatis 的执行流程,并提供相应的示例代码,帮助读者更好地理解和应用 MyBatis。 1. 创建 SqlSessionFactoryBuilder 对象 在 MyBatis 中&…

基于redis的bitmap实现签到功能(后端)

项目环境 MacOS springboot: 2.7.12 JDK 11 maven 3.8.6 redis 7.0.11 StringRedisTemplate 的key和value默认都是String类型 可以避免不用写配置类,定义key和value的序列化。 实现逻辑: 获取用户登录信息 根据日期获取当天是多少号 构建…

【服务器数据恢复】热备盘同步失败导致服务器崩溃的数据恢复案例

服务器数据恢复环境: 两组分别由4块SAS硬盘组建的raid5磁盘阵列,ext3文件系统,通过LVM管理磁盘存储。 服务器故障: 一组raid5磁盘阵列中的1块硬盘故障离线,热备盘成功启用并开始同步数据,在同步还没有完成…

互联网保险驶入发展快车道,元保保险加速数字化突围

随着90后、00后这一群体逐渐进入婚育高峰期,加之相较60后、70后群体,这群互联网原住民已经成为保险消费的主力人群,互联网保险行业迎来了新的发展机遇,互联网平台恰似曾经辉煌的大卖场、集市、商场,成为汇聚流量的新平台,只不过,能量的漩涡更大,更聚焦。对此,元保集团创始人兼C…

记录一个Masonry 添加约束导致的label 文案展示不全的问题

问题如图,蓝色label 中的文字没有展示完全,后面还有“情。” 原因,我们使用masonry 布局的时候,宽度会有细微的误差,导致我们实际 添加的约束比我们期望的要小,就导致横向无法容下期望的文字宽度&#xf…

如何使用MySQL统计当月每日收益金额

如果要实现上图这个效果,这个SQL应该怎么写呢? 目录 1、实现思路 2、SQL实现 1、实现思路 首先,我们先实现查询当月每日的日期 。然后将查询结果与需要统计的表进行左连接即可。 SELECT DATE(DATE_SUB(CURRENT_DATE(), INTERVAL (DAY(CURRE…

微服务springcloud 10.config配置中心框架和rabbitmq的安装

config配置中心的作用:项目的yml 配置文件保存到 git 服务器,例如 github.com 或 gitee.com 微服务启动时,从服务器获取配置文件 1.新建 “Project”,命名为 config。注意这里的不是maven项目,而是project 2.将sp02,sp03,sp04,s…

git常用命令之Fetch

4. Fetch 命令-----------------------------------------------------------------------------作用延展阅读git fetch1. 拉取「远程仓库」的所有远程分支的最新Commit-ID 记录在 .git/FETCH_HEAD 文件中.若有多个分支则 FETCH_HEAD 内会有多行数据,该文件首行对应…

dbca添加实例时无法发现对方主机

有个12.2集群环境,需要添加一个实例,直接图形化启动dbca,第四步时只能发现本机,无法识别到另外一个节点,如下图 通过排查发现是oracle用户的密码过期了,细节如下 [roothydb1 ~]# su - grid Last login: W…