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

【Linux】进程概念(一):冯诺依曼体系结构 + 操作系统

📝前言:
在理解进程概念之前,我们先简单了解一下冯诺依曼体系结构操作系统

🎬个人简介:努力学习ing
📋个人专栏:Linux
🎀CSDN主页 愚润求学
🌄其他专栏:C++学习笔记,C语言入门基础,python入门基础,C++刷题专栏


目录

  • 一,冯诺依曼体系结构
    • 1 简单了解基本构成
    • 2 了解数据流动过程
  • 二,操作系统
    • 1 基本概念
    • 2 设计OS的目的
    • 3 管理概念
    • 4 系统调用和库函数概念

一,冯诺依曼体系结构

1 简单了解基本构成

我们所见的计算机,服务器,大多数都遵守冯诺依曼体系结构。

在这里插入图片描述

  • 输入设备:键盘,鼠标
  • 存储器:内存
  • 中央处理器:CPU,(运算器:ALU,控制器:CU)
  • 输出设备:显示器,打印机,网卡(也可做输入设备)…

红色箭头:代表数据信号处理时,经过的硬件顺序。同时也反映了每个硬件所能交互的硬件对象。比如:CPU就只能和内存打交道(对内存进行读写),不能直接访问外设。如果要访问输出设备,也是先把数据给内存,然后由内存给输出设备。
也就是说:程序,要先加载(Input)到内存,才能被CPU执行
数据的流动就是:从一个设备“拷贝”到另一个设备。体系结构的效率就是由设备的"拷贝"效率决定的

2 了解数据流动过程

我们来思考一下,假如小红将一个文件通过qq传给了小兰。那这个过程,数据是怎样在这些硬件中流动的呢?

  1. 小红的文件首先储存在磁盘上
  2. 打开QQ软件,这时候QQ软件被加载到内存
  3. 从磁盘(输入设备)读取文件到QQ(内存)
  4. 然后,CPU对内存里面的文件进行加密等一系列操作,操作完后再输出回内存
  5. 文件再从内存输出到网卡(输出设备)
  6. 然后通过网络,到小兰的网卡上
  7. 网卡上(输入设备)的文件,又被加载到小兰的QQ上(内存)
  8. 然后通过CPU对文件解密等一系列操作,再输出回给内存
  9. 最后存入小兰的磁盘(输出设备)

二,操作系统

1 基本概念

OS大体上由两部分组成:

  • 内核:负责管理系统的硬件资源,如 CPU、内存、磁盘、网络等,同时还提供了进程管理、内存管理、文件系统管理、设备驱动等基础功能。
  • 内核外的其他程序:如,外壳she11、glibc、原生库、预装系统级软件等
    在这里插入图片描述

2 设计OS的目的

  • 对上,为用户程序(应⽤程序)提供⼀个良好的执行环境(目的)
  • 对下,与硬件交互,管理所有的软硬件资源(手段)

通过软硬件的管理,达到为用户提供良好执行环境的目的。

如下图,软硬件体系结构(高内聚,低耦合):
在这里插入图片描述
如,我们用户在VS上写代码的时候,进行的是开发操作,无法直接访问操作系统。必须通过库函数(如,glibc),然后进行系统调用,才能访问到。只不过,在库函数里面一般帮我们封装好了系统调用这一步。

只要我们的程序访问了底层硬件,那么它的执行必然贯穿整个软硬件体系结构!

3 管理概念

上面说到,操作系统通过对下的管理来达成对上的目的。在整个计算机软硬件体系中,操作系统的定位就是:一款“管理”软件

那什么是管理

假如我是一个手机厂商的老板,我生产了1w台手机,我怎么管理这些手机呢?
我需要每天带着1w台手机吗?不需要,我只需要知道手机的“数据”就可以了

  1. 先描述手机,提取手机的特征与属性(比如:手机型号,处理器,内存…)
  2. 因为每个手机都有这样的特点,所以这时候我可以创建一个class Phone类里面包含这些属性成员,来代表手机这一物件。并且,在这个类中额外添加一个指针变量,用来指向下一个手机对象
  3. 然后使用数据结构 链表,对1w个手机进行组织
  4. 后续的各种行为,如:新造了手机,卖出了手机,查询某手机的版本号,更换某手机的处理器,无非就是对这个链表进行:增、删、查、改

上面整个过程,无非就是:先描述,再组织
先抽象出手机的属性,然后用合适的数据结构,完成了对手机的组织,后续为这个数据结构设置一系列操作,也就完成了同一管理。

操作系统就是管理者,硬件就是被管理者。操作系统对硬件的管理分两步:

  1. struct结构体描述硬件
  2. ⽤链表或其他高效的数据结构组织起来

4 系统调用和库函数概念

  • 系统调用:是操作系统内核提供给用户程序访问底层硬件和核心服务的接口
  • 库函数:是对系统调用的封装或独立功能的实现,通常由高级语言的标准库(如C的glibc)或第三方库提供。它们运行在用户态,隐藏了系统调用的复杂性,为开发者提供更便捷、可移植的接口

🌈我的分享也就到此结束啦🌈
要是我的分享也能对你的学习起到帮助,那简直是太酷啦!
若有不足,还请大家多多指正,我们一起学习交流!
📢公主,王子:点赞👍→收藏⭐→关注🔍
感谢大家的观看和支持!祝大家都能得偿所愿,天天开心!!!

相关文章:

  • ElementNotInteractableException原因及解决办法
  • 基于大模型的轻症急性胰腺炎全流程预测与诊疗方案研究报告
  • java操作redis库,开箱即用
  • 【C++】map与set
  • Vue 技术解析:从核心概念到实战应用
  • ArrayList 和 数组 的区别
  • Vue 3 + TypeScript 实现一个多语言国际化组件(支持语言切换与内容加载)
  • 【Linux系统】进程概念
  • qt designer 创建窗体选择哪种屏幕大小
  • Golang|抽奖相关
  • 路由器端口映射的意思、使用场景、及内网ip让公网访问常见问题和解决方法
  • 项目部署-(二)Linux下SpringBoot项目自动部署
  • MySQL流程控制
  • 如何管理“灰色时间”导致的成本漏洞
  • SOLID原则详解:提升软件设计质量的关键
  • 【DDR 内存学习专栏 1.3.1 -- DDR 的 Bank 及 burst 访问】
  • 空间信息可视化——WebGIS前端实例(一)
  • 基于Nacos+动态线程池的分布式系统弹性设计:投行交易与风控场景实战
  • 安当TDE透明加密技术:企业机密文件和数据库加密解决方案
  • 大数据学习栈记——Redis安装及其使用
  • 安徽两位新任地级市政府党组书记亮相
  • 人民日报钟声:国际社会应共同维护科学溯源的正确方向
  • 夜读丨春天要去动物园
  • 新型算法助力听障人士听得更清晰
  • 锦江酒店:第一季度营业收入约29.42亿元,境内酒店出租率同比增长
  • 澎湃读报丨解放日报9个版聚焦:上海,加快建成具有全球影响力的科技创新高地