Linux(9)操作系统

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 ...

系统调用的本质,其实就是系统与用户的交互

我们访问系统的时候,是什么都不知道的,需要了解各种参数信息。所以系统给我们封装了库函数,外壳,图形化界面,指令等一系列操作帮助我们进行对操作系统的操作

结论:系统调用是我们操作系统提供的一些接口,帮助我们上层开发使用系统调用使用上,功能比较基础,对于用户的要求相对也比较高,所以开发者基于系统调用进行封装为库,从用库来方便我们二次开发

库函数---------------------------------上层

系统调用------------------------------下层

操作系统概念就先介绍到这里之后会进行对进程概念更新!!!

相关推荐
Lueeee.2 小时前
Linux驱动中为什么既有 sysfs,又有字符设备?以 DHT11 驱动为例彻底讲透
linux·驱动开发
东离与糖宝2 小时前
金三银四Java校招面经:从双非到大厂Offer,我只准备了这些
java·面试
禾小西2 小时前
Spring AI :Spring AI的介绍
java·人工智能·spring
yige452 小时前
【MySQL】MySQL内置函数--日期函数字符串函数数学函数其他相关函数
android·mysql·adb
愤豆2 小时前
05-Java语言核心-语法特性--模块化系统详解
java·开发语言·python
bksczm2 小时前
文件流(fstream)
java·开发语言
NGC_66112 小时前
Java 线程池阻塞队列与拒绝策略
java·开发语言
xlp666hub2 小时前
深度剖析Linux Input子系统(2):驱动开发流程与现代 Multi-touch 协议
linux
小碗羊肉2 小时前
【从零开始学Java | 第二十二篇】List集合
java·开发语言