目录
前言
一、冯诺依曼体系结构
1. 硬件方面
2. 数据流动
二、OS管理
1. 操作系统
2. 系统管理
总结
作为Linux操作系统的核心部分,进程管理是其最重要的。理解Linux进程管理对于系统管理员和开发人员来说至关重要,它不仅能够帮助他们更好地管理系统资源,还能够提高系统的稳定性和性能,为了便于大家更好的理解进程的管理,我们需要先理解操作系统是如何管理的。
在了解进程之前我们先来了解一些预备知识
我们常见的计算机,大部分都遵守冯诺依曼体系
cpu
:运算器&&控制器
输入设备:话筒、摄像头、键盘、磁盘、网卡等
输出设备:声卡、显卡、磁盘、网卡、显示器、打印机等
输入和输出设备分为三类:
只做输入
只做输出
既做输入,又做输出
存储器:就是内存
内存具有掉电易失的特性
这些设备都是相互独立的、要想让各各设备之间相互配合操作就需要物理用物理线路来连接进行数据传输,以达到设备之间数据流动的目的,这里的线我们一般称为:总线
这些线路我们一般也是看不到的,它们被集成在电脑的主板当中,所以主板也就是各种硬件之间进行集连的区域
设备与设备之间建立连接目的就是为了使设备间的数据流动,数据流动的本质也就是数据的来回拷贝
一个计算机进行操作时不就是一个输入、一个运算、一个输出,那应该只要三部分:输入设备、输出设备、CPU;那为什么还要有存储器呢?
这张图是一个存储金字塔
距离CPU越近的存储单元,存储效率越高。
距离CPU越远的存储单元,存储效率越低。
计算机发展至今,CPU的速度非常快,输入设备、输出设备距离CPU是比较远的,只有CPU、输入设备、输出设备它的整体性能就会因输入输出造成整体速度很慢(木桶原理),当输入数据计算较为复杂时,CPU计算时间较长,需要等CPU计算完之后,我们才可以再次输入数据进行计算,这就会导致CPU大部分时间处于闲置状态(等待外设),效率较低。
加入内存就是为了缓和CPU与外设之间访问速度的问题。
在CPU还在计算的过程中,我们输入设备输入的数据可以先缓存到内存当中,等到CPU计算结束,就可以立即从内存当作读取并计算,这样计算机就可以边输入边计算。并且CPU计算完的数据也可以很方便的缓存到内存当中,等待输出设备的访问,于是计算机的效率最终就转变成了内存效率为主,这样也极大提高了CPU的工作效率,并且使得计算机的价格也变得更加实惠便宜。
所以数据流动的速度也极大的影响着计算机的效率
程序在运行之前,必须要把程序先加载到内存,为什么?
有了前边的内容理解起来也会更加容易:
写程序是被写入到文件当中,而文件处于磁盘当中,所以程序是在外设中,程序要想被CPU执行就必须要将程序加载到内存当中,因为CPU只能从内存读取数据。这也是冯诺依曼体系的规定!
小结:在数据层面,CPU只会和内存打交道,而外设只会与内存打交道。
数据不仅仅只在计算机各硬件之间流动,还可以在计算机与计算机之间流动,那它们是怎么流动的呢?
比如:
你和你的朋友通过微信发送消息,你通过输入设备将消息输入到计算机当中,计算机先将你的消息通过存储器、运算器、控制器将消息加载到内存当中,然后加载到输出设备(网卡),通过网卡发送给你的朋友,而你的朋友通过他电脑上的网卡(输入设备)接收到消息,电脑经过一系列操作,将接收的消息加载到内存当中,最后被输出设备读取,显示在显示器上。
任何计算机系统都包含一个基本的程序集合,称为操作系统
操作系统包括:
内核(进程管理,内存管理,文件管理,驱动管理)
其他程序(例如函数库,shell程序等等)
设计OS的目的:
与硬件交互,管理所有的软硬件资源
为用户程序(应用程序)提供一个良好的执行环境
在我们电脑启动时,第一个被加载的软件就是操作系统。操作系统是一个对软硬件进行资源管理的软件。
以上为计算机的整体架构,在硬件之上是驱动程序,每一个硬件都有它对应的驱动程序,操作系统想要驱动硬件时,只需调用它对应驱动程序。并且驱动程序只做驱动硬件的工作比如:
我们使用摄像头时,操作系统需要调用它对应的驱动程序,但是驱动程序无法控制摄像头,什么时候读、什么时候打开、什么时候关闭;
操作系统是一个对软硬件进行资源管理的软件,那它是如何管理硬件的?
在回答这个问题之前,我们需要先理解什么是管理,管理的本质是什么;
什么是管理?管理就是做决策,操作系统就是起着做决策的作用(也就是管理者),硬件做执行(被管理者);操作系统并不能直接驱动硬件,它是怎么管理的?管理的本质其实就是对数据的管理;
管理者的核心工作是做决策,根据被管理者的数据做决策
而对于操作系统而言,需要管理的硬件很多,每个硬件也都有自己的功能,需要管理的数据也很多很杂,操作系统又是如何清晰的辨别,并做出管理的?
操作系统在做管理时都是先描述,再管理,把管理者对数据管理的场景,转换成对特定数据结构的增删查改,将具体的问题,转换成计算机能够认识的问题。
描述:将每个硬件的基本属性定义成一个struct结构体,比如:名称、状态、功能等。
组织:通过链表将一个个结构体链接起来,通过增删查改就可以完成对硬件的管理。
先描述就是一个面向对象的过程。我们学习的C++STL容器:string、vector、list、queue、stack、map……这些容器都是再组织的过程
所有面向对象的语言都遵循先描述再组织这个规律。
我们在对进程进行管理时,其实也是对每个进程对应的结构体进行管理,将进程的属性进行描述,定义为结构体,然后通过链表连接起来,这样也就将进程管理转变成了对特定数据结构的管理。
希望通过本文的介绍,读者们可以对冯诺依曼体系结构和操作系统的管理有了更清晰的认识。这对于进程的理解非常重要。好了以上便是本文的全部内容,最后感谢阅读!