【Linux】进程概念(一):冯诺依曼体系结构 + 操作系统
📝前言:
在理解进程概念之前,我们先简单了解一下冯诺依曼体系结构和操作系统。
🎬个人简介:努力学习ing
📋个人专栏:Linux
🎀CSDN主页 愚润求学
🌄其他专栏:C++学习笔记,C语言入门基础,python入门基础,C++刷题专栏
目录
- 一,冯诺依曼体系结构
- 1 简单了解基本构成
- 2 了解数据流动过程
- 二,操作系统
- 1 基本概念
- 2 设计OS的目的
- 3 管理概念
- 4 系统调用和库函数概念
一,冯诺依曼体系结构
1 简单了解基本构成
我们所见的计算机,服务器,大多数都遵守冯诺依曼体系结构。
- 输入设备:键盘,鼠标
- 存储器:内存
- 中央处理器:CPU,(运算器:ALU,控制器:CU)
- 输出设备:显示器,打印机,网卡(也可做输入设备)…
红色箭头:代表数据信号处理时,经过的硬件顺序。同时也反映了每个硬件所能交互的硬件对象。比如:CPU就只能和内存打交道(对内存进行读写),不能直接访问外设。如果要访问输出设备,也是先把数据给内存,然后由内存给输出设备。
也就是说:程序,要先加载(Input)到内存,才能被CPU执行
数据的流动就是:从一个设备“拷贝”到另一个设备。体系结构的效率就是由设备的"拷贝"效率决定的
2 了解数据流动过程
我们来思考一下,假如小红将一个文件通过qq传给了小兰。那这个过程,数据是怎样在这些硬件中流动的呢?
- 小红的文件首先储存在磁盘上
- 打开QQ软件,这时候QQ软件被加载到内存里
- 从磁盘(输入设备)读取文件到QQ(内存)
- 然后,CPU对内存里面的文件进行加密等一系列操作,操作完后再输出回内存
- 文件再从内存输出到网卡(输出设备)
- 然后通过网络,到小兰的网卡上
- 网卡上(输入设备)的文件,又被加载到小兰的QQ上(内存)
- 然后通过CPU对文件解密等一系列操作,再输出回给内存
- 最后存入小兰的磁盘(输出设备)
二,操作系统
1 基本概念
OS大体上由两部分组成:
- 内核:负责管理系统的硬件资源,如 CPU、内存、磁盘、网络等,同时还提供了进程管理、内存管理、文件系统管理、设备驱动等基础功能。
- 内核外的其他程序:如,外壳she11、glibc、原生库、预装系统级软件等
2 设计OS的目的
- 对上,为用户程序(应⽤程序)提供⼀个良好的执行环境(目的)
- 对下,与硬件交互,管理所有的软硬件资源(手段)
通过软硬件的管理,达到为用户提供良好执行环境的目的。
如下图,软硬件体系结构(高内聚,低耦合):
如,我们用户在VS上写代码的时候,进行的是开发操作,无法直接访问操作系统。必须通过库函数(如,glibc),然后进行系统调用,才能访问到。只不过,在库函数里面一般帮我们封装好了系统调用这一步。
只要我们的程序访问了底层硬件,那么它的执行必然贯穿整个软硬件体系结构!
3 管理概念
上面说到,操作系统通过对下的管理来达成对上的目的。在整个计算机软硬件体系中,操作系统的定位就是:一款“管理”软件
那什么是管理?
假如我是一个手机厂商的老板,我生产了1w台手机,我怎么管理这些手机呢?
我需要每天带着1w台手机吗?不需要,我只需要知道手机的“数据”就可以了
- 先描述手机,提取手机的特征与属性(比如:手机型号,处理器,内存…)
- 因为每个手机都有这样的特点,所以这时候我可以创建一个
class Phone
类里面包含这些属性成员,来代表手机这一物件。并且,在这个类中额外添加一个指针变量,用来指向下一个手机对象 - 然后使用数据结构 链表,对1w个手机进行组织
- 后续的各种行为,如:新造了手机,卖出了手机,查询某手机的版本号,更换某手机的处理器,无非就是对这个链表进行:增、删、查、改
上面整个过程,无非就是:先描述,再组织
先抽象出手机的属性,然后用合适的数据结构,完成了对手机的组织,后续为这个数据结构设置一系列操作,也就完成了同一管理。
操作系统就是管理者,硬件就是被管理者。操作系统对硬件的管理分两步:
- 用
struct
结构体描述硬件 - ⽤链表或其他高效的数据结构组织起来
4 系统调用和库函数概念
- 系统调用:是操作系统内核提供给用户程序访问底层硬件和核心服务的接口。
- 库函数:是对系统调用的封装或独立功能的实现,通常由高级语言的标准库(如C的glibc)或第三方库提供。它们运行在用户态,隐藏了系统调用的复杂性,为开发者提供更便捷、可移植的接口。
🌈我的分享也就到此结束啦🌈
要是我的分享也能对你的学习起到帮助,那简直是太酷啦!
若有不足,还请大家多多指正,我们一起学习交流!
📢公主,王子:点赞👍→收藏⭐→关注🔍
感谢大家的观看和支持!祝大家都能得偿所愿,天天开心!!!