深入理解计算机系统 Chapter01 | 计算机系统漫游-下

简介: 深入理解计算机系统 Chapter01 | 计算机系统漫游-下

1.操作系统管理硬件


真正操纵硬件的是操作系统,操作系统可以看成是应用程序和硬件之间的中间层。所有的应用程序对硬件的操作必须通过操作系统来完成,这样做的目的是:首先,防止硬件被失控的应用程序所滥用;其次,操作系统提供统一的机制来控制这些复杂的底层硬件。

57.jpg

操作系统管理硬件


为了实现操作系统对硬件的操纵,操作系统引入了几个抽象的概念。文件是对IO设备的抽象、虚拟内存是对内存和磁盘IO的抽象、进程是对处理器、内存及IO设备的抽象


56.jpg

                                           操作系统的抽象机制

2.进程的解释


(1).以shell命令行中执行./hello命令为例进行说明,最开始的时候只有shell进程在运行,即shell在等待命令行的输入。


55.jpg

                                                           命令输入

(2).当通过shell进程加载hello进程时,shell进程通过系统调用来执行我们的请求。系统调用会将控制权从shell进程传递给操作系统,操作系统保存shell进程的上下文。然后,创建一个新的hello进程及其上下文。接着,将控制权转交给新的hello进程。hello进程执行完成后,操作系统会恢复shell进程的上下文,并且将控制权交给shell进程,之后shell进程继续等待下一个命令的输入。


54.jpg

                                                进程上下文切换


上下文:操作系统会跟踪进程运行中所需要的所有状态信息,这种状态(例如:当前PC和寄存器的值、内存中的内容等)称为上下文。


3.线程的解释


现代操作系统中一个进程由多个线程组成,每个线程都运行在进程的上下文中,共享代码和数据。


52.jpg

                                                          线程


4.虚拟内存


操作系统为每个进程提供了一个假象,即每个进程都在独自占用整个内存空间。每个进程看到的内存都是一样的,称之为虚拟地址空间。


51.jpg

                                                进程的虚拟地址空间

进程的虚拟地址空间:从下往上,地址是增大的。


  • 第一个区域:用来存放程序的代码和数据的,这个区域的内容是从可执行目标文件中加载而来的。对所有进程来说,代码都是从固定的地址开始的;
  • 第二个区域:堆heap,函数malloc所申请的地址空间就在这个堆中的,堆可以在运行时动态的扩展和收缩;
  • 第三个区域:共享库的存放区域,这个区域存放C语言的标准库和数学库这类共享库的代码和数据;
  • 第四个区域:用户栈,函数调用的本质就是压栈;
  • 第五个区域:为内核保留的区域,应用程序的代码不能读写这个区域的数据,也不能直接调用内核中定义的函数,这个区域对应用程序不可见;


5.文件


Linux中一切皆文件,键盘、鼠标、磁盘、显示器,甚至网络这些都可以看成是文件,系统中所有的输入和输出都可以通过读写文件来完成。


50.jpg

                                                     "一切皆文件"


6.参考资料


[1].本文图片来源,侵权必删:https://www.bilibili.com/video/BV1cD4y1D7uR?p=3&spm_id_from=pageDriver

相关文章
|
人工智能 供应链 自动驾驶
对话SAP李瑞成:生成式AI如何重构ERP?
对话SAP李瑞成:生成式AI如何重构ERP?
243 0
|
8月前
|
消息中间件 Cloud Native 大数据
云原生 Kafka 问卷调研启动,你的声音很重要!参与赢精美礼品!
Apache Kafka 作为高吞吐的分布式消息系统,支持实时数据采集、传输、存储及处理,广泛应用于日志收集、监控数据聚合、流式数据处理、在线和离线分析等场景,是大数据生态的核心组件。然而,随着云计算的快速发展,传统 Kafka 架构在云环境中的局限性日益凸显。
184 18
|
Java
被final修饰的类的所有方法都不能被重写吗
在Java中,被`final`修饰的类不能被继承,因此其所有方法也不能被重写。`final`关键字确保了类的定义和行为不会被子类改变。
604 3
|
缓存 API PHP
PHP性能优化:从基础到高级策略####
深入探索PHP性能优化的多维度策略,本文旨在揭示通过代码优化、配置调整与现代最佳实践相结合的方式,显著提升PHP应用的响应速度和资源利用率。不涉及传统摘要细节,直接聚焦于技术深度与实用技巧,引领读者踏上PHP性能调优的高效之旅。 ####
|
人工智能 自然语言处理 安全
文生视频大模型
Sora 是由 OpenAI 发布的一款文本生成视频的人工智能模型,能够在理解文本的基础上生成高质量的视频内容。Sora 具备 3D 一致性、远程相干性和物体持久性等特性,但目前仍处于测试阶段,仅限特定专家使用,以确保其安全性。
|
存储 安全 编译器
[Eigen中文文档] 常见的陷阱
本文将介绍一些Eigen常见的陷阱
656 0
|
自然语言处理 算法 安全
Python实现贝叶斯算法疫情微博评论情感分析
Python实现贝叶斯算法疫情微博评论情感分析
Python实现贝叶斯算法疫情微博评论情感分析
|
监控 数据可视化 搜索推荐
ERP系统中的财务预测与成本分析解析
【7月更文挑战第25天】 ERP系统中的财务预测与成本分析解析
910 0
|
运维 中间件 调度
【Alibaba中间件技术系列】「Nacos技术专题」配置中心加载原理和配置实时更新原理分析(中)
【Alibaba中间件技术系列】「Nacos技术专题」配置中心加载原理和配置实时更新原理分析(中)
570 72
【Alibaba中间件技术系列】「Nacos技术专题」配置中心加载原理和配置实时更新原理分析(中)
|
Android开发
通过反射方式获取Android设备系统属性
通过反射方式获取Android设备系统属性 【5月更文挑战第1天】
299 2