Linux 第十章
🐶博主主页:@ᰔᩚ. 一怀明月ꦿ
❤️🔥专栏系列:线性代数,C初学者入门训练,题解C,C的使用文章,「初学」C++,linux
🔥座右铭:“不要等到什么都没有了,才下定决心去做”
🚀🚀🚀大家觉不错的话,就恳求大家点点关注,点点小爱心,指点指点🚀🚀🚀
目录
冯诺依曼体系结构
在我们数据层面,cpu一般是不和外设直接交互的,会导致整个计算机效率太低
在数据层面上,cpu优先和内存打交道
内存:内存就是一个硬件级别的大的缓存!!
总结:冯诺依曼体系结构的计算机,本质:用更少钱,做出效率不错的计算机
应用程序的运行
当磁盘上的应用程序需要在CPU上运行时,以下是一般的运行过程:
加载:首先,操作系统将应用程序从磁盘中加载到内存中。这个过程涉及将应用程序的二进制代码和相关数据读取到RAM(随机存储器)中,以便CPU能够访问和执行。
解析和链接:在加载应用程序后,操作系统会对二进制代码进行解析和链接。这包括将代码的不同部分组合在一起,并解析引用其他文件或库的指令。
内存分配:在链接过程之后,操作系统为应用程序分配所需的内存空间。这包括为代码、全局变量、堆内存和栈内存分配适当的空间。
执行:一旦应用程序位于内存中且相关资源准备就绪,CPU可以开始执行应用程序的指令。CPU会按照程序计数器(Program Counter)中的指令地址顺序依次执行每条指令,这些指令编码了特定的操作,如算术运算、条件判断和函数调用等。
资源管理:在应用程序执行过程中,操作系统负责管理和调度CPU、内存、I/O设备等系统资源的使用。它确保应用程序获得足够的计算资源以及与其他应用程序或系统组件的适当交互。
程序在运行之前,必须先加载到内存?为什么?
程序=代码+数据,最终都要cpu来执行处理,cpu需要先读取这些代码和数据而cpu只和内存有“数据(二进制)”层面的交互,但是形成了一个exe,本质就是一个文件,只能在磁盘(外设)中保存
事例
今天你和你朋友,一个在西安,一个在北京,都登上了qq这个软件,打开各自的对话框,你发了一个“你好”,解释一下这信息在设备的数据流动
你发送这个“你好”这个信息之前,磁盘qq需要在cpu上运行(也是需要将qq应用程序加载到内存中,再由内存传递给cpu),首先通过键盘输入设备将“你好”传递给内存,内存将“你好”这个数据传给cpu,cpu将“你好”这个信息进行打包加密,然后传递给内存,内存再将处理的“你好”这个数据传递给输出设备网卡,这时你朋友的输入设备网卡收到了这个“你好”的数据,将这个“你好”的数据传递给内存,内存将“你好”交给cpu进行解密,解密之后传递给内存,内存在传递给输出设备设备显示器。
你的电脑:“你好”->输入设备(键盘)->内存->cpu->内存->输出设备(网卡)->网络
你朋友的电脑:网络->“你好”->输入设备(网卡)->->内存->cpu->内存->输出设备(显示器)
操作系统
是什么?
是一款软件,进行软硬件资源管理的软件!开机后,加载的第一个软件
为什么?
操作系统将软硬件资源管理好(手段),需要给用户提供一个良好(稳定、高效、安全)的使用环境(目的)
怎么办?
怎么做到将资源管理好的
注意:操作系统通过驱动程序调用硬件,每一个硬件都需要一个驱动程序
操作系统管理的核心:
1.进程管理
2.内存管理
3.文件/IO管理
4.驱动管理
思想:
先描述,再组织
操作系统的存储位置
操作系统的存储位置通常是计算机的硬盘或固态硬盘(SSD)中的一个分区,在安装操作系统时,必须将其安装到计算机的硬盘或固态硬盘中。在电脑启动时,BIOS会首先加载操作系统存储位置中的引导程序,然后引导程序再从该位置加载操作系统的核心代码和其他必要文件,最终将操作系统加载到内存中运行。
总之,不同的计算机设备和操作系统有不同的存储位置,但无论位置如何,操作系统都需要初始的存储位置才能正常运行。
操作系统具有防备
1)只能通过系统调用才能访问操作系统
2)只要存在操作系统,用户是不可能直接访问硬件
总结:
1)一个用户想访问非常底层OS数据或者硬件,必须贯穿整个层状结构!!
2)系统调用,使用起来比较麻烦
3)通过外壳程序(shell、图形化界面)去调用系统调用就很简单了
4)站在开发者的角度:可以直接调用系统接口,将系统接口封装成各种各样的好用的函数,打包形成库(C/C++标准库)!所有的开发者使用很多功能时,不需要自己去直接调用系统调用,而是直接调用库函数!!
6)linux内核:操作系统+系统调用
7)库函数在系统调用之上的
cpu和操作系统的关系
CPU(中央处理器)和操作系统是计算机系统中两个重要的组成部分,它们之间有密切的联系和相互依赖的关系。
1)执行指令:CPU是负责执行计算机程序指令的核心组件。操作系统通过将程序指令加载到内存中并调度CPU来执行这些指令。CPU根据操作系统的调度算法,按照一定的优先级和顺序执行指令,从而实现程序的运行。操作系统通过管理CPU资源,确保不同程序之间的公平共享和高效利用。
2)提供硬件接口:操作系统作为软件层面的抽象,负责管理计算机硬件资源的访问。它为应用程序提供了统一的硬件接口,使得开发人员可以通过操作系统提供的API(应用程序接口)访问和操作底层硬件设备,如磁盘、网络、显示器等。CPU则扮演着操作系统与硬件之间的桥梁,执行操作系统提供的指令,将应用程序的请求转化为对硬件的实际操作。
3)进程调度和管理:操作系统负责对计算机中运行的多个程序进行管理和调度。它将程序划分为多个进程,并根据调度算法分配CPU时间片给每个进程,使得它们能够交替执行。CPU则根据操作系统的调度算法,选择下一个执行的进程,并从内存中加载其指令交给CPU执行。这样,操作系统和CPU的协作使得多个程序能够在同一台机器上并发执行。
4)异常处理和中断处理:CPU具有处理异常和中断的能力。当发生硬件故障、程序错误或特定事件发生时,CPU会产生异常或中断信号。操作系统负责对这些异常和中断进行处理,例如错误检测、恢复现场、中断处理等。通过操作系统与CPU的协作,可以保证系统的稳定性和安全性。
总之,CPU和操作系统之间存在着紧密的联系。操作系统利用CPU的计算能力来完成各种管理和调度任务,而CPU依赖操作系统提供的指令来获取任务并执行。操作系统和CPU的协作使得计算机能够高效地管理硬件资源、执行程序,并实现复杂的功能。
🌸🌸🌸如果大家还有不懂或者建议都可以发在评论区,我们共同探讨,共同学习,共同进步。谢谢大家! 🌸🌸🌸
原文地址:https://blog.csdn.net/m0_67846057/article/details/138257819
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!