linux 之 操作系统

冯若依曼体系
体系结构
要理解进程首先就需要了解操作系统!!!

五大组件:
○ 输入设备 如:键盘,鼠标,话筒,摄像头,...网卡,磁盘
○ 输出设备 如:显示器,磁盘,网卡,打印机...
○ CPU=运算器+控制器
○ 存储器 如:内存
○ 磁盘 如:外存
读文件写文件 : I/O
CPU,内存与外设的核心关系 :
软件运行,必须先加载到内存。在没有运行之前,文件是存储在磁盘上的,CPU获取,写入,只从内存中来进行!软件运行CPU访问代码访问数据! 这就是体系结构规定!!!
CPU数据获取核心:CPU是不能直接把数据输入到外设的,要通过缓冲区来进行刷新。这就是为什么有缓冲去的原因。这也是体系结构规定的。本质上就是从一个设备拷贝到另一个设备所以体系结构的效率:由设备的拷贝效率决定。加载数据的本质就是I/O操作
结论:在数据层面CPU只和内存大交道。反之外设只和我们的内存打交道
为什么这个结构要有内存呢 ?我们可以直接用CPU 不就行了嘛??
1:输入输出设备运算效率与CPU的运算效率不匹配 CPU是纳秒级别。这时候就会发生CPU进行等待,外设进行获取信息返回大大降低了效率
2:为了平衡这个效率,那么引入内存,进行对CPU与输入输出设备进行一个效率适配的问题也就是缓冲的过程
理解数据流动
数据流动图

如果是文件:
上传磁盘文件,本质就是把文件搬到内存中,然后执行程序代码、、
操作系统
什么是操作系统??
狭义上的操作系统:
内核(进程管理,内存管理,文件管理,驱动管理)
广义上要加上
其他程序(如:库函数,shell程序...)

设计OS目的:

宏观理解:
在硬件层面上,我们的设备要安装驱动才能进行操作。
再驱动程序之上有操作系统:所以向下可以进行对硬件进行管理起来,不是目的是手段。主要是给用户提供良好的运行环境。对上提供稳定的运行环境。给用户提供的途径。
总结:软硬件体系结构(狭义芯片结构)
1.层状结构:硬件-操作系统-软件层状结构(高内聚--把相同功能相同逻辑的代码放到一起,低耦合--层跟层之间,这本质就是调用接口来实现低耦合 如:改了硬件,但是操作系统和软件都不用变,这个操作就叫做高内聚低耦合)
2.访问操作系统,必须要使用系统调用---其实就是函数,只不过是操作系统不允许我们进行直接访问内存,必须要使用操作系统封装的C语言代码来进行访问。
3.我们程序,只要你判断它访问了硬件,那么它必须贯穿整个软硬件体系结构!!!如printf实现打印到显示器上,那么它的底层坑定封装了系统调用,然后操作系统进行访问对应的硬件驱动,再打印到显示器上的。
4.库可能在低层封装了系统调用
○ 是什么?
在整个软硬件中是一个承上启下的作用,就是管理软硬件的系统。
如何理解"管理"
角色:
管理者 校长
中间者 辅导员
被管理者 学生
事情:
1.决策
2.执行
场景上:
管理者拥有决策权 操作系统
中间者 执行 驱动程序
被管理者 实现决策 底层硬件
管理:
根据 "数据"进行管理! 如获取这个被管理者的数据,然后获取特征来进行决策
通俗理解:操作系统获取数据进行决策,数据通过中间层驱动获取,然后被管理者执行操作
那么在计算机中怎么进行管理所有数据呢?
这时候就需要用到结构体 了,这个结构提包含了所有被管理者的特征信息。
然后可以在结构体中存储指针struct stu* next 指针 进行构成链表

划时代的操作:
这时候我们管理数据就可以转变成链表的增删查改!!!

这时候管理者管理的操作->建模的过程->先描述(struct),在组织(所有数据结构)!这样管理者就可以进行对任何场景进行管理!!
所以操作系统怎么对进程进程进行管理:
先描述:对进程struct进行属性设置,在通过组织:不同数据结构
理解操作系统的调用
系统调用的接口:
操作系统不会把自己的内容随便交给别人,不相信用户或者人,但是又要对用户提供服务
系统调用: fork waitpid ...
系统调用的本质,其实就是系统与用户的交互
我们访问系统的时候,是什么都不知道的,需要了解各种参数信息。所以系统给我们封装了库函数,外壳,图形化界面,指令等一系列操作帮助我们进行对操作系统的操作
结论:系统调用是我们操作系统提供的一些接口,帮助我们上层开发使用系统调用使用上,功能比较基础,对于用户的要求相对也比较高,所以开发者基于系统调用进行封装为库,从用库来方便我们二次开发
库函数---------------------------------上层
系统调用------------------------------下层
操作系统概念就先介绍到这里之后会进行对进程概念更新!!!