冯诺依曼和OS
冯诺依曼 和 OS
冯诺依曼体系结构
CPU = 运算器 + 控制器
运算器:算术运算、逻辑运算
存储器:内存
磁盘:外存
读文件:磁盘->内存
写文件:内存->磁盘
读写的操作叫做IO,input和output是相对于内存的概念
软件运行为什么需要先加载?
体系结构规定,CPU的获取写入只能从内存中进行
IO操作
- 数据从一个设备“拷贝”到另一个设备
- 因此,体系结构的效率 由 设备的“拷贝”效率决定
CPU在数据层面,只和内存打交道,外设只和内存打交道
操作系统
层次结构
[用户]-[用户操作接口]-[system call]-[操作系统]-[驱动程序]-[底层硬件]
详细概述
一个基本的程序集合,被称为操作系统(OS)
操作系统是一款进行软硬件管理的软件
操作系统包含
- 内核(例如进程、内存、文件、驱动管理) (狭义的操作系统)
- 其他程序(例如函数库,shell)
软硬件体系结构是层状结构,遵循高内聚,低耦合
访问操作系统,必须使用系统调用,也就是函数,不过是系统提供的
程序只要访问了硬件,必定贯穿整个软硬件体系结构
库可能在底层封装了系统调用
系统调用
- 操作系统要向上提供服务,但是不相信任何用户,因此将自己封装并且提供系统调用
- 本质上是系统提供的函数调用
缓冲区
回车换行和缓冲区
回车和换行是两个操作,分别对应的 \r 和 \n,在vs编译下 \n 会被优化成 \r\n
使用 **printf **写入字符串,字符串会进入缓冲区,\n会进行行刷新,因此字符串才会直接被打印
使用 fprintf(stdout,"string") 可以直接向显示器文件写入字符串,达到输出的效果
同样的,使用 fflush(stdout) 可以刷新显示器文件,在printf之后使用也能达到打印的效果
程序结束会自动刷新缓冲区