冯·诺依曼体系 一切皆文件
基本组成和概念理解
基本组成
这里的存储器指的是内存。
不考虑缓存情况,这里的CPU能且只能对内存进行读写,不能访问外设。(输入或输出设备)
外设(输入或输出设备)要输入或者输出数据,也只能写入内存或者从内存中读取。
设备之间都是独立的个体。
联系
所有的设备通过数据交互,而数据通过线
传递的高(1)低(0)电平来传递。即充电放电的过程。
对于32
位计算机,它具有32
根地址总线和数据总线。每根总线只有0
和1
。
地址总线:可以访问的地址空间宽度。例如:在32位机器中,地址总线排列组合形成的地址范围是
[0,2^32byte]
,共4GB,给他安装4G以上内存是没有意义的数据总线:主要用于在CPU 和内存之间往返传输需要处理或存储的数据。
定义
- 操作系统 ——一款进行管理(硬件,软件)的软件。
- 与硬件交互,管理所有的软硬件资源
- 为用户程序(应用程序)提供一个良好的执行环境
Linux中,一切皆文件怎么理解?
我们在linux中几乎所有的操作都是进程。
冯·诺依曼体系,我们使用的设备绝大多数都是外设,例如键盘和显示器。
操作系统需要把硬件资源管理起来,并且要支持和硬件进行交互(即需要有对应的方法)。所以Linux内核提供了一种数据结构
——struct operation_func{}
(也像文件一样被封装在struct_file
中)将每一个硬件设备的方法都以函数指针的形式保存在struct operation_func{}
当中。
因此,一个设备想要被系统访问,需要向系统的文件对象(struct_file
)中的operation_func{}
提供一个函数指针集。
VFS——虚拟文件系统
由于struct_file
用这样的方式达到我们使用类似访问文件的方式访问了外设,因此我们把这种技术称为虚拟文件系统。
一些情况
外设可以向
CPU
发送中断
信号,来通知自己有数据到达。- 例如:键盘可以向
CPU
发送中断号——通过针脚(并且不同设备之间的中断号
不同。)
- 例如:键盘可以向
键盘组合键 | 发送的信号 | 描述 |
---|---|---|
Ctrl+C |
SIGINT |
中断(Interrupt)信号,通常用于终止一个前台进程。 |
Ctrl+Z |
SIGTSTP |
暂停(Stop)信号,通常用于将前台进程挂起。 |
Ctrl+\ |
SIGQUIT |
退出(Quit)信号,导致进程终止并生成核心转储。 |
Ctrl+D |
EOF |
结束文件(End-of-File)信号,通常用于终止输入。 |
Ctrl+S |
XOFF |
停止(Stop)信号,暂停终端输出。 |
Ctrl+Q |
XON |
启动(Start)信号,恢复终端输出。 |
CPU通过可以通过
中断号
为索引,去中断向量表
当中查找并执行对应的中断服务程序(ISR)。中断向量表由操作系统维护,主要包含指向中断服务程序(ISR)的指针,这些程序负责处理特定的中断请求。
键盘和显示器交互,当用户在键盘上输入数据时,键盘将输入的数据通过中断信号发送给操作系统。操作系统将数据存储在其输入缓冲区中,并将其传递给应用程序。应用程序或操作系统将数据发送到显示器的输出缓冲区,实现回显功能。
当执行了除以零的指令时,CPU会产生一个异常(状态标志位会进行标记),然后发送SIGFPE(浮点异常)信号给进程。并且我们这时虽然修改的是
CPU内核的状态寄存器
,但它属于进程的上下文,会在进程被切换时由操作系统现场保护,并在新进程被调度时被恢复。这样保证了不会对其他进程造成影响,从硬件和软件层面上确保了进程的独立性。