冯 ? 诺依曼体系结构
一个程序在运行起来的第一件事情是将程序加载到内存当中。 笔记本、服务器等计算机,大部分都遵守冯诺依曼体系: 运算器:对数据进行算术/逻辑运算。 控制器:是计算机的指挥中心,负责决定执行程序的顺序,给出执行指令时机器各部件所需要的操作控制命令。进行非数据性的逻辑控制,比如什么时候将数据加载到内存。 运算器与控制器统称为中央处理器(CPU)。
常见的输入设备:键盘、鼠标、摄像头、麦克风、网卡、硬盘等。 常见的输出设备:显示器、声卡、喇叭、网卡、硬盘、打印机等。 同种设备在不同场景下可能属于输入设备,也可能属于输入设备。
输入输出设备也被称为外围设备,简称外设。
为什么需要存储器(内存)
内存属于掉电易失性存储介质,也就是关闭计算机或者突然性、意外性关闭计算机的时候,里面的数据会丢失。非易失性存储器在上面的情况下数据不会丢失,像硬盘等外存。
内存在计算机中的作用相当于一座桥梁,用以负责诸如硬盘、主板、显卡等硬件上的数据与处理器之间数据交换处理。
所有计算机数据传输到中央处理器(CPU)都是通过内存与中央处理器(CPU)进行传输处理的,由于外设的存储效率很低,所以CPU直接与外设进行数据交换速度很慢。而内存相比外设要快很多,但是比CPU又要慢。 并且由于局部性原理,即CPU访问存储器时,无论是存取指令还是存取数据,所访问的存储单元都趋于聚集在一个较小的连续区域中。所以内存可以对这一个连续的区域进行预加载,相当于数据的缓存区。而CPU处理数据和内存加载数据是可以同时进行的,这样下次CPU就可以直接从内存当中获取数据,速度会快很多。
同理输出数据的时候,CPU将处理完的数据预写入到内存,输出设备需要时再从内存当中获取,这就是缓冲区的概念。例如,缓冲区满了才将数据输出到显示器上,或者使用fflush 函数将缓冲区当中的数据直接输出到显示器上。
在数据层面上,CPU能且只能对内存进行读写,不能访问外设;外设要输入或者输出数据,也只能写入内存或者从内存中读取。 这也就是为什么一个程序在运行起来的第一件事情是将程序加载到内存当中,因为程序(文件)是在硬盘(外设)上的,而CPU只能从内存当中获取数据,所以必须先将程序加载到内存,然后再从内存加载到CPU。
操作系统
任何计算机系统都包含一个基本的程序集合,称为操作系统(OS)。笼统的理解,操作系统包括: 内核(进程管理,内存管理,文件管理,驱动管理)和其他程序(例如函数库,shell程序等等)。
设置操作系统有两个目的:
- 为用户程序(应用程序)提供一个良好的执行环境
- 做软硬件管理:
硬件:冯 ? 诺依曼体系中所有的设备 软件:1.安装、卸载软件,2.在系统层面:文件、进程、驱动
驱动程序就是为了控制特定的外设而编写的一个专用代码块。如果没有驱动程序,操作系统就必须要包含所有的控制命令以控制每一种可能安装到计算机的硬件设备。这样,不仅操作系统将会难以控制的增大,而且,当新的底层硬件推出的时候,原来的操作系统就会被淘汰。
操作系统相当于管理者,驱动程序可以帮操作系统拿到底层硬件的数据。同时传达操作系统的指令,单独去控制底层硬件。 所以,操作系统不需要亲自管理底层硬件,它只需要把命令传达给驱动程序,由驱动程序管理就可以。 操作系统主要进行以下四项管理:
内存管理:内存分配、内存共享、内存保护以及内存扩张等等。 驱动管理:对计算机设备驱动驱动程序的分类、更新、删除等操作。 文件管理:文件存储空间的管理、目录管理、文件操作管理以及文件保护等等。 进程管理:其工作主要是进程的调度。
至于如何管理,则是先描述,再组织: 将需要管理的信息用结构体描述出来,然后再用对应的数据结构(链表等)组织起来。此时只需要对这个数据结构进行增删改查即可实现管理。
至于操作系统和用户层之间的系统调用接口则是操作系统为了保护自己,对上只暴露了一些接口,而不会让用户直接访问操作系统,这一系列接口被称为系统调用接口。用户操作接口是为了降低用户使用的难度,因为用户直接使用系统调用接口的学习成本太高。实际上在语言级别上使用的各种库,就是封装了系统调用接口的,我们就是通过调用这些库当中的各种函数(例如printf和scanf)进行各种程序的编写。
|