【Linux】进程概念的铺垫

news2024/11/14 16:33:39

进程概念的铺垫

  • 先谈硬件——冯诺依曼体系结构
    • 冯诺依曼体系结构的5大部件
      • 输入输出设备
      • 存储器
      • 中央处理器(CPU)
    • 冯诺依曼体系结构示意图
  • 再谈软件——操作系统
    • 操作系统的 目的 和 定位
    • 如何理解 "管理"
    • 总结
    • 系统调用 - system call

先谈硬件——冯诺依曼体系结构

我们常见的计算机(PC)、不常见的计算机(工作站、服务器等),大部分都遵守冯诺依曼体系。

冯诺依曼体系结构的5大部件

冯诺依曼体系将计算机的硬件分成了主要的三部分:

1. 输入、输出设备
2. 中央处理器(CPU,由运算器和控制器组成)
3. 存储器

不考虑缓存情况,CPU能且只能对内存进行读写,不能访问外设
一句话,所有设备都只能直接和内存打交

输入输出设备

  • 输入设备 向计算机输入数据和信息的设备。例如:鼠标、键盘、摄像头、话筒、磁盘网卡

  • 输入设备 是计算机硬件系统的终端设备,用于接收计算机数据的输出。例如:显示器,打印机、声卡、磁盘、网卡…

→ 输入设备 和 输出设备 统称为外围设备(外设)
有的设备是纯的输入/输出设备,也有的既是输入设备又是输出设备(例如磁盘、网卡等)。

存储器

“存储器” 指的是内存。而外存(软盘、硬盘、光盘、U盘、移动固态硬盘(SSD) 和移动硬盘(HDD)等 )对应的是输入输出设备

  • 内存: 计算机中的主要存储区域,用于存放当前正在执行的程序和数据。处理器可以快速访问内存中的数据。由于其高速读写的特点,内存通常用于临时存储那些需要快速访问的数据,比如操作系统内核、正在运行的应用程序及其数据等。断电后会丢失,容量小,速度快

  • 外存:用于长期存储数据的设备,断电后数据也不会丢失,容量比较大,但存取速度慢。外存主要用于存储操作系统、应用程序、用户文件(如文档、图片、视频等)和备份数据。外存的成本相对较低,特别是在大容量存储需求下更具性价比。常见的外存设备包括硬盘驱动器(HDD)、固态硬盘(SSD)、光盘、U盘等。

内存是为了适配外设和CPU速度不均的问题

中央处理器(CPU)

中央处理器(Central Processing Unit,简称CPU)是计算机的核心组件,被誉为计算机的“大脑”。它负责执行计算机中的指令并处理数据,是所有计算机系统的控制中心。
广义上我们把CPU分为两个模块:运算器 + 控制器。二者涵盖了CPU的基本功能

  • 运算器的作用:对数据进行计算。分为算术运算 和 逻辑运算。

  • 控制器的作用:控制计算硬件的流程。

当对CPU的组成进行的更细致的描述,我们可以划分为:

  • 算术逻辑单元(ALU):负责执行所有算术和逻辑运算,如加减乘除、与或非等操作
  • 控制单元(CU):负责从内存中取指令,解释并执行指令。CU控制着整个计算机系统的操作流程,指挥数据如何在CPU和其他部件之间移动。
  • 寄存器(Registers):CPU内部的高速存储单元,用于临时存储指令、数据和地址等信息。寄存器的数量和类型直接影响CPU的处理能力。
  • 缓存(Cache):位于CPU内部或与其紧密耦合的存储器,用于存储频繁使用的数据和指令。缓存的存在大大加快了CPU对数据的访问速度。

冯诺依曼体系结构示意图

图中这五大部件都是独立的个体,要组成计算机,各个硬件单元就必须用 “线” 连接起来,这个 “线” 就是总线
总线分为 系统总线 和 IO总线

系统总线:存储器(内存)和CPU之间交互的 “线”
I/O总线:存储器(内存)和输入输出设备之间交互的 “线”
在这里插入图片描述

再谈软件——操作系统

操作系统是一款用来管理硬件和软件的软件。

任何计算机系统都包含一个基本的程序集合→操作系统(OS,operating system)。

广义来讲操作系统包括:
① 内核(进程管理,内存管理,文件管理,驱动管理)
② 其他程序(例如函数库,shell程序等等)

操作系统的 目的 和 定位

操作系统可以帮助用户管理好所有的软硬件资源(手段)

为用户提供良好的运行环境(目的)
这个“良好”指的是什么呢?→稳定、高效、安全是最基本的!

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

总结来说,操作系统通过管理好底层的软硬件资源,以达到为用户提供良好的运行环境的目的

如何理解 “管理”

在学校中,校长作为管理者,通常不需要与每个学生直接见面。校长在不直接接触学生的情况下,如何有效地进行管理?
①获取信息: 校长通过各种渠道(如教师报告、学生成绩、出勤记录等)获取学生的数据信息。这些信息能够帮助校长了解学生的整体情况。
②分析数据: 校长分析收集到的数据,以识别学校和学生的发展趋势、问题以及需要改进的地方。
③制定决策: 基于数据分析,校长可以制定适当的政策和决策,以促进学生的学习和成长。这些决策可能包括调整课程设置、改善教学方法、提供额外的支持和资源等。
④间接管理: 通过管理教师和学校的其他资源,校长间接地对学生进行管理和影响。教师在课堂上直接与学生互动,但校长通过对教师的指导,实现了对学生的管理。

类比的看,我们可以得出如下结论

  • 1、管理者和被管理者是不需要见面的

  • 2、管理者在不见被管理者的情况下,如何做好 “管理” ?

    • 只要能得到被管理者的数据信息,就可以在未来进行管理和决策
    • 因此管理的本质是通过对数据的管理,达到对人的管理
  • 3、管理者和被管理者面都没见过,被管理者的数据是如何拿到的?

    • 通过 “执行者” —— 驱动程序

管理者管理任何对象时,遵从“先描述,再组织”的原则。
因此在操作系统中,管理任何对象,最终都可以转化成对某种数据结构的增删查改。

总结

计算机管理硬件,首先要把硬件描述起来,由于Linux内核是用C语言写的(C语言没有容器),就注定了要管理计算机资源就只能用struct结构体来描述;结构体描述好之后,要把描述的结构体组织起来,就需要用到链表或其他高效的数据结构(具体要结合场景)

系统调用 - system call

在开发角度,操作系统对外会表现为一个整体向用户提供服务,但是为了保护数据安全,不会把自己完全地暴露给用户(操作系统不相信任何用户),但为了保证给用户能够提供服务,操作系统以接口的方式给用户提供调用的入口,来获取操作系统内部的数据,供上层开发使用。对这些接口的调用,叫做系统调用。

所谓 “接口” ,实际上就是操作系统设计的函数。(接口是操作系统提供的,用C语言实现的)

(换句话说,操作系统存在的最大价值不在于它把软硬件资源管理的有多么好,而在于它能够给用户提供良好、稳定的运行环境。因此操作系统在不相信任何用户的情况下,它也必须给用户提供安全稳定的运行环境,所以,操作系统就必须要给用户提供让用户访问操作系统内数据的接口)

→ 所有访问操作系统的行为,都只能通过 系统调用 完成

对于所有的语言,若要进行任何间接访问硬件的操作,必须要经过操作系统,而要经过操作系统,就必须通过系统调用

系统调用在使用上,功能比较基础,对用户的要求相对也比较高,所以,有心的开发者可以对部分系统调用进行适度封装,从而形成库,有了库,就更有利于更上层用户或开发者进行二次开发。

→ 库函数也就是对系统调用的封装的产物。

在这里插入图片描述
例如C语言的printf()函数,打印的结果能否直接写道硬件上?不能!
——因为硬件是被管理的,要操作硬件,就需要让管理者知道你要访问这个硬件。因为硬件的管理者是上层的操作系统或者驱动,所以printf()函数若想访问底层的硬件资源,不能直接访问,只能“贯穿”操作系统。

这也就意味着,我们使用C/C++语言,任何间接访问硬件的操作,都必须经过操作系统,而我们上面讲过,操作系统不相信任何用户,它只会给用户提供调用接口,这就注定上层的printf()是一个C标准库的函数,它的底层需要封装系统调用接口

因此,任何计算机语言库函数 和 系统调用 的关系是:(上下层的)调用和被调用的关系
(库函数是上层,系统调用是下层)

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

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

相关文章

LINUX原始机安装JDK

文章目录 下载 JDK压缩包创建jdk文件夹sftp 远程上传解压缩 tar -zxvf 包名配置环境变量刷新 环境变量验证是否安装成功安装JAVA 依赖yum更新及替换镜像curl 命令下载更新更新yum依赖判断repo文件是否存在生成缓存、启用阿里云镜像 重新下载java依赖再次验证hello world 下载 J…

Java | Leetcode Java题解之第341题扁平化嵌套列表迭代器

题目&#xff1a; 题解&#xff1a; public class NestedIterator implements Iterator<Integer> {private List<Integer> vals;private Iterator<Integer> cur;public NestedIterator(List<NestedInteger> nestedList) {vals new ArrayList<Inte…

用数据分析找到神奇公式-《股市稳赚》读后感

格林布拉特的这本书介绍了一种简单的方法&#xff0c;核心是用神奇公式寻找到高资本收益率和高股票收益率的最佳投资组合。作者对其背后原理的普遍性充满自信&#xff0c;神奇公式寻找经营良好且价格低于平均水平的公司&#xff0c;买进质优价低的公司&#xff0c;这个公式&…

C++ 设计模式——简单工厂模式

简单工厂模式 简单工厂模式主要组成部分代码实现简单工厂模式模式的 UML 图UML图解析类与方法优点和缺点适用场景 简单工厂模式 简单工厂模式是一种创建型设计模式&#xff0c;通过一个工厂类来负责对象的实例。这种模式将对象创建的细节封装在工厂类中&#xff0c;客户端无需…

掌握JavaScript中的Call和Apply,让你的代码更强大、更灵活

在学习JavaScript时&#xff0c;你可能会遇到call和apply这两个方法。它们的作用其实很相似&#xff0c;都是用来调用函数并设置函数内部的this值&#xff0c;但它们的使用方式稍有不同。 想象一下&#xff0c;你和朋友们一起拍照。call就像是你一一叫朋友们的名字&#xff0c;…

基于WEB的旅游推荐系统设计与实现

TOC springboot280基于WEB的旅游推荐系统设计与实现 第1章 绪论 1.1选题动因 当前的网络技术&#xff0c;软件技术等都具备成熟的理论基础&#xff0c;市场上也出现各种技术开发的软件&#xff0c;这些软件都被用于各个领域&#xff0c;包括生活和工作的领域。随着电脑和笔…

Linux tail -f 报错 No space left on device

问题&#xff1a; 执行tail -f my_file 时报错&#xff1a;No space left on device df -h 检查磁盘剩余空间&#xff0c;剩余空间都很充足&#xff1b; df -i 检测iNode使用情况&#xff0c;剩余iNode也很充足&#xff1b; 参考这篇文章解决了问题 tail: cannot watch /v…

黑马前端——days05_css

页面框架文件 <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><meta http-equiv"X-UA-Compatible"…

书籍推荐:凤凰架构

书籍推荐 本文的视频版&#xff1a;https://www.bilibili.com/video/BV1XQeueZEp4 周志明写的一本关于 Java 架构的书籍&#xff0c;内容都是关于 Java 架构中相关的技术&#xff0c;讲的知识比较广&#xff0c;大多都是概念相关的东西&#xff0c;适合有一定 Java 开发经验的…

从零开始搭建 LVS 高性能集群 (DR模式)

从零开始搭建 LVS 高性能集群 &#xff08;DR模式&#xff09; 架构 本设计方案采用三台服务器构建集群&#xff0c;使用Linux Virtual Server (LVS) 作为负载均衡器&#xff0c;运行在直接路由 (DR) 模式下。集群中的每一台服务器都将运行相同的服务&#xff0c;以实现 高可用…

搭建网站与企业 ERP 融合,微信开放新机遇

#HTTP虚拟专线# VHTTP 用户都将分配一个专属的固定公网 IP 地址&#xff0c;不再受到动态 IP &#xff0c;您的网站、企业 ERP 系统等关键业务能够始终保持在线。 每位VHTTP用户分配一个专属的固定公网IP地址&#xff0c;支持 80/443访问。用户只需自行简单设置自己 域名 DNS 解…

【leetcode】删除链表的倒数第 N 个结点-25-5

方法&#xff1a;递归 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(nullptr) {}* ListNode(int x, ListNode *next) : val(x), ne…

企业级无线局域网(WLAN)架构:高效部署策略与技术指南

前言&#xff1a;无线网络直接影响整体网络性能&#xff0c;在当今企业网环境中&#xff0c;已有超过一半的数据流量通过无线信道传输&#xff0c;随着物联网技术的普及&#xff0c;无线网将承载更多的关键业务流量。企业/园区场景的无线网络值得考虑的关键因素有很多&#xff…

从商务到旅行,2024年不可或缺的翻译工具全攻略

随着全球化的不断深入&#xff0c;语言障碍已不再是横亘在人们交流之间的不可逾越之墙。随着科技的发展现在有不少类似百度翻译在线翻译这样的工具在造福我们。这次我们就来探讨一下大家都在用的翻译工具有哪些吧。 1.福晰在线翻译 链接直达>>https://fanyi.pdf365.cn/…

abc 290 d Marking (一个环上每隔d个给未标记的打标记,问第几个标记是什么)

题目&#xff1a; https://atcoder.jp/contests/abc290/tasks/abc290_d 题解&#xff1a; 代码&#xff1a; // Problem: D - Marking // Contest: AtCoder - Toyota Programming Contest 2023 Spring Qual B&#xff08;AtCoder Beginner Contest 290&#xff09; // URL: ht…

C++速览之智能指针

1、存在的问题 c 把内存的控制权对程序员开放&#xff0c;让程序显式的控制内存&#xff0c;这样能够快速的定位到占用的内存&#xff0c;完成释放的工作。但是此举经常会引发一些问题&#xff0c;比如忘记释放内存。由于内存没有得到及时的回收、重复利用&#xff0c;所以在一…

数字孪生智慧医院建设方案

2. 智慧医院背景与挑战 公立医院面临医疗保障能力、服务需求和DIP付费制度改革等变化&#xff0c;同时存在智慧医院建设中的“建多用不多”和系统间数据不互通等问题。 3. 解决方案与标准 通过“找方案”和“找标准”微信公众号&#xff0c;分享智慧城市、智慧医院等领域的解…

Flink程序部署与提交

前言 我们看门见山&#xff0c;生产环境一般用的是在YARN上面采用应用模式进行部署flink程序。实际生产中一般需要和资源管理平台&#xff08;如YARN&#xff09;结合起来&#xff0c;选择特定的模式来分配资源、部署应用。 部署模式 在一些应用场景中&#xff0c;对于集群资…

AIGC:clip-interrogator

文字生成图片是近年来多模态和大模型研究的热门方向&#xff0c;openai提出的CLIP提供了一个方法建立起了图片和文字的联系&#xff0c;但是只能做到给定一张图片选择给定文本语义最相近的那一个&#xff0c;实际项目开发中我们总是需要从一张图片获取描述&#xff0c;clip-int…

数据结构与算法概述(1/6)

目录 1. 引言 2. 数据结构的概念 2.1 什么是数据结构 2.2 数据结构的分类 2.3 数据存储结构 3. 算法的概念 3.1 什么是算法 3.2 算法的基本特性 3.3 算法的评价标准 3.4 算法的描述方法 4. 算法性能分析 4.1 时间复杂度的概念与分析 4.2 空间复杂度的概念与分析 4…