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


    img

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


    在这里插入图片描述

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

    1. 冯诺依曼体系结构

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

    bf9b4e7ba426b5cf8416ca9e992684c

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

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

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

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

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

    为什么这样设计?

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

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

    image-20230826170459034

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

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

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

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

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

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

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

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

      发送给你的朋友的电脑.

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

    7bdcc5af99426bfbb2949a57573a0c9

    1. 通过qq来传输文件

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

      发送给你的朋友的电脑.

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

    1aa497326af28e1501e009b51e52fa5

    2. 操作系统概念

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

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

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

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

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

    操作系统怎么进行管理?

    我们先设想一个场景:

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

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

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

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

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

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

    //描述
    struct Person{
      int age;
      int tel;
      string address;
    };
    //组织
    struct Contact
    {
      Person p[100];  
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    6bb2ef0104c16313701e6047fb28c4b

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

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

  • 相关阅读:
    github pages 部署单页面
    Linux高可用集群搭建
    【强化学习论文合集】十.2018智能体和多智能体系统国际联合会议论文(AAMAS2018)
    多线程知识点总结之温故而知新
    《凤凰架构》读书笔记 —— 本地事务如何实现原子性和持久性?
    收藏||电商数据采集流程||电商数据采集API接口
    什么是零日攻击?
    Codeforces Round 905 (Div. 3)ABCDEF
    C语言每日一题(13) 单身狗1,2
    2023年9月 青少年软件编程等级考试Scratch二级真题
  • 原文地址:https://blog.csdn.net/qq_62839589/article/details/132792583