重学Linux原理之二

硬件:

-总线

连接主板上不同部件的通道,   分为数据总线,地址总线和控制总线,  逻辑同其名名字。

-外设

难怪有人说Linux操作硬件就像I/O读写, CPU都是通过读写外设寄存器来操作它们的, 而且Linux的虚拟文件系统将所有的硬件表现为文件形式,   操作它们简单说就是操作这些文件,读写对应的数据结构数据。

-地址空间

系统总线连接内存和CPU ,  CPU不能直接访问硬件外设的总线, 只能控制它们对应的寄存器, 也就是说CPU不能直接读写显卡和显示器之间的数据线,而是通过系统总线访问对象的IO空间的方式(显卡应该有对应的存储空间) ,  说到这里,我觉得这些硬件控制器真的好像一个个小CPU, 而且它们的寄存器就好像一个小内存, 小CPU以它们自有的频率运算, 大CPU想跟硬件进行通信时,就往小内存里面存数据, 小CPU自然就知道它们了(这点如同不同线程之前通过Queue进行协作的酱紫)

-内存管理

说到内存管理,就得说linux虚拟内存技术, 它为了我们在程序开发中提供了巨大的内存空间(远远大于实际内存,虚拟内存=实际内存+硬盘)。它相当于在存储空间和进程之间增加了抽象层,所以它是进程级别的,它屏蔽了不同存储空间之间的差异, 让每个进程拥有自己的虚拟空间。比如让一个数据文件映射到虚拟空间里,进程不需要特别区分这些空间。

既然每个进程各自有自己的虚拟空间, 如果多个进程都访问同一个资源(程序或者内存) 就需要有一种进程共享的机制,在linux 提供了 IPC 和 动态链接库的方式。

虚拟地址到物理地址的虚拟内存模型


猜你喜欢

转载自mudiyouyou.iteye.com/blog/1638872