【Linux】进程概念I --操作系统概念与冯诺依曼体系结构

Halo,这里是Ppeua。平时主要更新C语言,C++,数据结构算法...感兴趣就关注我吧!你定不会失望。

本篇导航

计算机是由两部分组成的:硬件+软件 .与硬件相关的为冯诺依曼体系结构 ,与软件相关的为:操作系统.

1. 冯诺依曼体系结构

如今大多数计算机(笔记本,服务器等)大多数都遵守冯诺依曼体系结构.实际中的模型细节较为复杂.这是抽象后的简单模型.其结构模型为:

在这张图中,红色为数据传输信号,而黑色则为控制信号

其中输入设备为:键盘,鼠标,硬盘等设备

输出设备为:显示器,打印机,硬盘等设备

运算器与控制器我们统称为CPU

这里的存储器是指内存,而不是硬盘.

为什么这样设计?

输入设备,输出设备的速度远远慢于CPU的速度.而存储器的速度在这二者之间.

由木桶效应可知.性能往往由短板决定.

若直接由CPU对接输入输出设备,则会造成CPU大多时候都在等待IO设备,CPU并不能被很有效的利用起来.

而加入了存储器这个介质,可以较大程度上解决这个问题.提高CPU的利用率.

那么为什么不选择最快的cache呢?

根据存储金字塔来看,越往上的价格越高,且速度越快.若全部采用最快的cache.计算机就会因为造价昂贵而无法普及了

一句话说:所有的设备都只能跟内存打交道

关于冯诺依曼体系结构,我们可以试着从以下这两个例子来理解

  1. 你登上qq后跟你的朋友进行聊天.(不涉及网络传输层面)

    首先键盘作为输入设备,我们输入数据,接着这些数据被放入到内存当中由CPU进行处理.处理完后被放入到输出设备,此时为 网卡.

    发送给你的朋友的电脑.

    同样,他的电脑也满足这个体系结构.网卡作为输入设备,收到消息后将消息放到内存中,cpu对消息进行处理后,显示在输出设备 屏幕

  1. 通过qq来传输文件

    首先硬盘作为输入设备,我们输入数据,接着这些数据被放入到内存当中由CPU进行处理.处理完后被放入到输出设备,此时为 网卡.

    发送给你的朋友的电脑.

    同样,他的电脑也满足这个体系结构.网卡作为输入设备,收到文件数据后将文件数据放到内存中,cpu对文件数据进行处理后,存储在输出设备 硬盘

2. 操作系统概念

操作系统是一款管理的软件,上面的冯诺依曼体系结构展现的是硬件层面.但一个个硬件如何进行协同工作的呢?这就是操作系统的意义所在.

为什么我们需要操作系统呢?

  1. 帮助用户管理好软硬件资源
  2. 为了给用户提供一个高效的运行环境.使用电脑的可以粗略的分为两类人,一类是普通用户,一类是程序员.前者使用的大多为程序员开发的软甲.而程序员才是真正使用操作系统的那一部分人.

因为操作系统不相信用户,对自己进行了封装,我们大多时候无法看见它的细节.为了能维护自身安全,也能给用户提供服务,用户只能通过其提供的接口去访问.也就是 系统调用接口

也就是说:**任何访问操作系统的行为,都只能通过系统调用去完成.**这样保证了系统的安全稳定.

操作系统怎么进行管理?

我们先设想一个场景:

在学校中,校长如何管理每一个学生呢?

首先,先描述 数据,将每一个学生的信息按照某种特定的格式记录,之后组织数据,将其放入excel表方便管理.之后想要找到某位学生,只要按照特定属性进行寻找即可.

在操作系统中也是一样的,将每一个需要管理的对象先按照特定的格式进行 描述数据 ,之后通过数据结构在进行组织即可.

所以**,在操作系统中,管理任何对象都可以将其转换为对某类数据结构的增删查改.**

具体怎么做的我们之后再说.

我们之前写过的通讯录不就是,先将每个人描述,在组织起来的过程嘛.其在某种方面上,与操作系统是相同的

cpp 复制代码
//描述
struct Person{
  int age;
  int tel;
  string address;
};
//组织
struct Contact
{
  Person p[100];  
};

当我们在调用printf()函数的时候,在做什么呢?

每一个调用硬件的函数,其内部封装了系统调用的接口,所以也是通过系统调用的接口去访问驱动程序,硬件,最终显示在屏幕上.

相关推荐
JJ1M813 分钟前
用 Python 快速搭建一个支持 HTTPS、CORS 和断点续传的文件服务器
服务器·python·https
西风未眠1 小时前
高效编辑之vi/vim常用快捷键汇总
linux·编辑器·vim
_Stellar1 小时前
Linux 服务器管理 根目录文件夹权限设置 基于用户组实现安全共享
linux·服务器·安全
LUCIFER1 小时前
驱动开发:详细分析 DTB、DTS、DTSI、DTBO 的区别、用途及它们之间的关系
linux·服务器·驱动开发
BullSmall3 小时前
Test Matrix:测试矩阵(IT 领域定义 + 设计实践 + 华为场景应用)
运维·服务器
liuyao_xianhui3 小时前
版本控制器git--gdb/cgdb
linux·运维·服务器·git
CS_浮鱼3 小时前
【Linux进阶】mmap实战:文件映射、进程通信与LRU缓存
linux·运维·c++·缓存
chuxinweihui3 小时前
应用层协议 HTTP
linux·服务器·网络·网络协议·http
xu_yule3 小时前
Linux_16(多线程)信号量+基于环形队列的生成消费模型+自选锁+读写锁
linux·运维·服务器
行初心4 小时前
uos基础 systemctl 查看unit的详细配置
运维