网卡
网卡都有一个唯一的地址,独一无二,格式如: 11:27:F5: 8A:79:54 ,我们又称作为MAC地址,对应着电脑上的物理地址
每一台电脑都需要IP地址,IP地址是由DHCP服务器来进行动态分配的
分配好的有网管路由地址、DNS服务器
上网的时候都需要域名解析,也就是把地址解析为IP地址
DNS服务器不在局域网内,所以只能通过APR地址解析协议查找到网关路由器,再由网管路由器发送给给DNS服务器进行域名的解 析工作
CPU
用来操作指令,其中CPU中有寄存器能够临时放置一些东西,时对寄存器中的数据进行运算操作的。最后在把计算后的数据放置到内存中去。和程序计数器,程序计数器放置下一条指令的地址
内存:用来放置东西,也就是指令
CPU---->内存:通过系统总线,I/O桥,存储总线才能够到达内存
![](https://img-blog.csdn.net/20160829142343071?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](https://img-blog.csdn.net/20160829142415126?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](https://img-blog.csdn.net/20160829142532705?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](https://img-blog.csdn.net/20160829142547870?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](https://img-blog.csdn.net/20160829142603002?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
硬盘--->CPU:可以通过直接内存的方式DMA,直接装在到内存中
局部性原理
CPU这块根据局部性原理,又设置了缓存的操作
针对一些批处理计算机系统,操作系统收集任务后,就会逐个装载到内存中,让cpu去运行,如果都是单纯的计算的话,没什么, CPU执行的非常的块,但是如果有IO相关的操作的话,CPU就会闲置下来,等待内存和硬盘疯狂的load数据。
CPU闲置了怎么充分利用
之前内存中都是装的是一个程序,所以IO操作的时候CPU可以闲置起来,那么接下来可以在内存中放置多个程序,有程序在进行IO操作的时候,CPU就开始执行下一个程序操作,但是也需要把内存的空间分配好
数据覆盖问题
如果CPU在执行程序时候,两个程序用到了相同的一段内存的话,就可能会导致内存中的数据被覆盖操作,因此这里采用了静态地址重定位,就是把每个地址都加上1000的操作,这样的话,在做内存紧缩的时候,就会有问题了。
那么运行时修改就没问题了,叫做地址的动态重定位,就是cpu在运行时,第一个程序的地址为0,第二个程序时就改为10000了
最后就有一个专有的名词叫做内存管理关于MMU来管理这个东西
虚拟内存
程序越来越大,如何让有限的内存装入更多的程序,对每个程序,不要全部装入内存,要分块装载,例如先把最重要的代码指令装载进来,在运行中按需要装载别的东西
利用的原理
时间局部性:如果程序中某条指令一旦执行,则不久之后该指令可能再次被执行;如果某数据被访问,则不久之后该数据可能再次被访问。
空间局部性:一旦程序访问了某个存储单元,则不就之后,它附近的存储单元也将被访问
进程也需要进行上下文的切换
每次上下文切换的时候,都需要把函数形成的栈帧和栈顶,在寄存器EBP和ESP中保存着,还有文件句柄、程序段和数据段的地址、使用CPU的时间、等待CPU的时间,这些保存的东西,统称为进程控制块(Processing Control Block)
进程之间也有状态的转换:就绪、阻塞、运行
进程之间是相互独立的、信息无法进行共享操作
出现了多线程的操作,共享地址空间、全局变量、文件资源等
进程也有属于自己私有的空间,比如函数调用堆栈、状态等
谁来管理线程
用户空间的进程可以创建线程(用户线程),内核也会创建线程(内核线程),用户线程映射到内核线程上
CPU和内存是计算机的核心,CPU从内存中取出指令后,做运算后,就再次写回到内存中。
磁盘的模型
CPU比内存快100倍,比硬盘快上1000倍
用缓存、直接内存访问、多进程/多线程切换等方法来满足CPU--内存--硬盘之间的速度不匹配问题
硬盘的内部结构
文件
操作系统中都是按照文件来存放过的,那么如何映射到磁盘上的文件区域块呢
第一种方式
连续放置:随机访问文件效率好,知道了开头和长度,就可以像数组一样可以随便访问,但是文件删除后,磁盘碎片比较的多,浪费了空间
第二种方式
链式:每一块空闲的磁盘都得到了充分的利用,效率极高,但是每次查找都得从头开始
第三种方式
找一个磁盘块专门存放索引属性,以及该文件所使用的磁盘块
唯一的缺点是使用额外的磁盘块单独存放inode