冯诺依曼和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之后使用也能达到打印的效果

程序结束会自动刷新缓冲区