一.冯.诺依曼结构体系
我们常见的计算机,如笔记本。我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系,如下图展示了体系结构。
冯.诺依曼体系结构是由五个部分组成的分别是:输入设备,存储器,输出设备,运算器,控制器。这五个部分都是由硬件组成的,其中先来了解一下输入还有输出设备。
输入输出设备
输入设备:键盘,磁盘,网卡,显卡,话筒,摄像头等
输出设备:显示器,磁盘,网卡,显卡,音响等
其中值得注意的是,磁盘,显卡,网卡都可以作为输入输出设备同时使用,键盘和显示器是典型的输入设备和输出设备。是的,输入设备可以用简称"I"表示,输出设备可以用简称"O"表示。在计算机领域,这些术语通常指代与计算机交互的硬件设备。那么IO就是可以代指输入和输出了,I就是in,O就是out。
存储器
了解完输入输出后,接着了解一下计算机中的存储器。这里必须得声明一下,存储器就是指计算机的物理内存,通常大小在4到16G直接与CPU进行交互。
上面是内存示意图,其中Memory内存就是主存,主存一般在4到16G,寄存器,L1,L2,L3都离CPU很近访问速度很快,同时大小依次递增,从几KB到几MB不等,能提高运行效率,值得注意的是,CPU只和内存进行交互,不会直接与外设交互。
运算器
一般来说运算器是CPU中的一个重要组成部分。主要负责执行算术和逻辑运算。
运算器包括算术逻辑单元(ALU)和状态寄存器。ALU能够执行加、减、乘、除、与、或、非等基本算术和逻辑运算而状态寄存器则用于存储运算结果的状态信息,如进位标志、溢出标志等。
CPU的运行速度是非常快的通常用纳秒来计算,我们通常说的芯片就是指的CPU。CPU(中央处理器),是计算机的核心部件,负责执行指令、控制计算机的各种操作和数据处理等任务。
控制器
同样的控制器是CPU的一个重要组成部分,它主要负责控制计算机的各种操作,包括指令的执行、数据的读写、中断的处理、时序的控制等。
当CPU需要执行某个指令时,控制器会从内存中读取指令,将指令送到指令寄存器(如上图金字塔)中,并将下一条指令的地址存储到程序计数器中。然后,指令译码器会将指令翻译成控制信号,控制各个模块的工作,完成指令的执行。
因此,可以说控制器是CPU的重要组成部分之一,它负责控制CPU的各种操作,保证计算机的正常运行。
二.操作系统的理解
在理解操作系统之前我们得知道操作系统是一款软件,英文简写为OS(operation system)。
首先OS是什么?
答:一款专门针对软硬件资源进行管理工作的软件。(人话就是:搞管理用的软件)
其次OS为什么?
答:对下:管理好软硬件资源 。 对上:给用户提供高效的,稳定的,安全的运行环境。
注意:只有启动的操作系统才有意义。
最后OS怎么办?
那么OS是怎么做的呢?OS是怎么管理的呢?其实可以简单总结为六个字:先描述,再组织。
先说明前三个字"先描述",就是先描述一下被管理的对象。
那么如何进行描述呢?打个比方,如果操作系统是校长,现在考评一个学生就是先聚合一个学生的数据,这里就涉及到了C语言中结构体和C++中的类,一个学生会有不同的属性,如学分绩点成绩等等,聚合所有属性就能完成对一个学生的描述。
再说明后三个字"再组织",就是对被管理对象完成描述之后进行组织的行为。要想进行组织排名,看看哪个学生绩点高哪个绩点底,可以有不同的组织方式,例如用双向循环链表的增删查改,这时对学生的管理工作就变成了对数据的增删查改,这里又涉及到了数据结构的知识,数据结构里面的树,队列,栈,图,链表等等都是操作系统的一种组织方式,从这里也能看出数据结构的重要性。
但是操作系统作为一名管理者并不会与被管理者(就是上面提到的那些硬件设备)进行直接的接触,而是通过各种驱动程序进行间接管理和接触这些被管理者。这里可以把这些驱动程序看成是辅导员。
三.实现一个流程条
首先代码如下:
1 #include <stdio.h>
2 #include <unistd.h>
3 #include <string.h>
4 int main()
5 {
6 #define NUM 100
7 char bar[NUM+1];
8 memset(bar,'\0',sizeof(bar));
9 const char *lable="|/-\\";
10 int i=0;
11 while(i<=100)
12 {
13 printf("[%-100s][%d%%][%c]\r",bar,i,lable[i%4]);//两个%起到一个%作用
14 fflush(stdout);//起到立即显示的作用
15 bar[i]='#';
16 i++;
17 usleep(50000);
18 }
19 printf("\n");
20 }
实验结果:
总结:
本次博客总结学习了冯.诺依曼的结构体系,学习了操作系统是什么?为什么?怎么做?这三个方面,顺便实现了shell里面的一个流程表的小程序。
2023年6月3日