CPU(计算器和控制器) + 存储设备 + 输入输出设备,是计算机硬件的最基本的组成元素
一、CPU
cpu工作流程:
取指令 -- 解码 -- 执行,如此为一个进程,然后再取指令 -- 解码 -- 执行,通过这种不断循环,来完成计算任务。CPU有一套自身的指令集,从内存中调取软件的代码需要先转化为cpu的指令集,再去执行。
进程和线程的理解:
进程是资源单位,线程为执行单位,可以作这样的类比,北京的地铁为一个进程,具体的线路如2#、13#为线程。我们常说的双核四线程,相当于2个进程,每个进程有4个线程,总共有8个。
二、存储设备
CPU的处理速度是极快的,为了解决存储设备的读取性能瓶颈,由上至下,将存储类别分成寄存器(一级缓存L1)—— 二级缓存L2 —— 内存 —— 硬盘,越往后,速度越慢。
- 寄存器(也叫高速缓存L1),位于CPU的内部,速度极快,CPU访问它无延迟,分类:
- 通用寄存器,用来保存变量和临时处理结果;
- 程序计数器,保存要取出的下一条指令的内存地址,一旦指令被取出,程序计数机就更新;
- 堆栈指针;
- 程序状态字寄存器(program status word, PSW),通过0和1这两个状态,实现在用户态和内核态之间的切换。用户态,即用户运行的程序,是不能操作底层硬件,而内核态可以操作CPU的指令集,从而实现直接对操作底层硬件的控制。程序通过发起系统调用来切换内核态。
- 内存:易失性存储,断电数据消失,容量大,也是计算机运行时的主力存储。如果内存不够用,可以在硬盘上开辟一块儿区域作为虚拟内存,在linux中,称为swap
- ROM (read only memory),是一种非易失性的存储,一般在出厂时写入BIOS
- 还有一类CMOS,也是易失性存储,通常位于计算机的主板上,由一小块电池供电,用于保持日期时间,保存配置参数,启动信息等,BIOS运行于此。
- 硬盘:磁道,扇区,块,柱面:
- 扇区是磁盘级别的最小读写单位,512byte
- 块(block)为操作系统的最小读写单位,相当于8个扇区,512 * 8 = 4096byte, 即4KB
- 柱面,两个柱面之间的区域对应磁盘分区,如C盘、D盘
- 平均寻道时间
- 平均延迟时间
三、操作系统
操作系统位于硬件和用户软件之间。
- 操作系统除了要管理CPU和存储器,还要管理I\O设备(如硬盘,声卡,显卡,网卡等)。I\O设备包含设备控制器和设备本身,OS并不直接控制设备,因为那是非常复杂和具体的,而是通过设备控制器。每一类设备的设备控制器都是统一而标准的,人们只需为设备控制器编写驱动程序,并把驱动接口提供给操作系统。通过驱动程序,操作系统只需发出命令, 就可实现对设备的简单有效控制。因此,操作系统为应用提供良好的操作硬件的接口。
- 所有的软件共享一套硬件,操作系统让软件对硬件的请求变得有序:试想,如果所有的文档都不受控制的访问打印机,那么打出来的内容一定是串的
四、系统启动流程
- 通电后,BIOS检测硬件
- BIOS读取CMOS中的参数,选择启动设备,如硬盘,U盘等
- 找到硬盘中的MBR(主引导记录,为硬盘中的第一个扇区512KB,记录了引导和分区信息)
- 读入bootloader,启动操作系统
- 操作系统检测硬件设备及其驱动,并将他们调入内核