一、计算机的体系和结构
1、冯﹒诺依曼体系
将程序指令和数据一起存储的计算机设计概念结构;
- 存储器(能够长期记忆程序、数据、中间结果以及最终运算结果的能力)
- 控制器(能够具备算术、逻辑运算和数据传送等数据加工处理的能力)
- 运算器(能够具备算术、逻辑运算和数据传送等数据加工处理的能力)
- 输入设备(能够把需要的程序和数据送至计算机中)
- 输出设备(能够按照要求将结果输出给用户)

缺点:(冯﹒诺依曼体系的瓶颈)

解决办法:
加入缓存解决CPU和数据传输速度不匹配的问题;(级别越小的缓存,越接近CPU, 意味着速度越快且容量越少)


二、计算机的层次和编程语言
1、程序翻译和程序解释


- 程序翻译:翻译过程中生成了新的L0程序,程序翻译指的是程序代码在编译阶段提前翻译成较低层次的编程语言逻辑,在运行时直接运行。例如C++、Object-C、Golang;
- 程序解析:解释过程不生成新的L0程序,解释过程由L0编写的解释器去解释L1程序,程序解释指的是程序代码在运行时,逐行翻译成较低层次的编程语言去执行;例如Python、PHP、Javascript;
注意:Java和C#严格来说是属于翻译+解释型语言;
编译型和解释型语言:
计算机不能直接理解高级语言,只能直接理解机器语言,所以必须要把高级语言翻译成机器语言,计算机才能执行高级语言编写的程序。
翻译的方式有两种,一个是编译,一个是解释。两种方式只是翻译的时间不同。
- 编译型语言写的程序执行之前,需要一个专门的编译过程,把程序编译成为机器语言的文件,比如exe文件,以后要运行的话就不用重新翻译了,直接使用编译的结果就行了(exe文件),因为翻译只做了一次,运行时不需要翻译,所以编译型语言的程序执行效率高。
- 解释则不同,解释性语言的程序不需要编译,省了道工序,解释性语言在运行程序的时候才翻译,比如解释性basic语言,专门有一个解释器能够直接执行basic程序,每个语句都是执行的时候才翻译。这样解释性语言每执行一次就要翻译一次,效率比较低。
java很特殊,java程序也需要编译,但是没有直接编译称为机器语言,而是编译称为字节码,然后用解释方式执行字节码。

2、计算机的层次和编程语言

三、计算机的单位
1、容量单位
在物理层面,计算机用高低电平来记录信息,理论上只认识 0/1 两种状态,而(0/1)称为 bit;
- 字节:1Byte = 8bit
- 1KB = 1024B,1MB = 1024KB,1GB = 1024MB,1TB = 1024GB,1PB = 1024TB,1EB = 1024TB
2、速度单位
⑴网络速度
网络常用单位:Mbps
网络带宽 100M 为和计算机测试峰值的时候12M每秒?
100Mbps = 100Mbit/s
100Mbit/s = (100/8)MB/s = 12.5MB/s
⑵CPU速度
CPU速度体现为CPU的时钟频率,单位Hz(即每秒钟高低电平变化的次数);
四、计算机的字符与编码集
1、ASCII码
使用7个bit位就可以完全表示ASCII码,包括95个可打印字符和33个不可打印字符(控制字符),33+95 = 128 = 2⁷,后来很多国家语言和应用都无法表示,于是出现了扩展的ADSCII码,即Extended ASCII码,占8个比特位,可以表示2⁸个字符;
2、Unicode
字符串编码集的国际化
随着计算机的不断发展,越来越多的国家加入到计算机互联网大家族,这个时候需要表示的字符就急剧增多,于是字符编码集的国际化便应运而生了;
- 中文的编码集:GB2312、GBK,我们的Windows默认的是GBK编码;
- 兼容全球的字符集:Unicode规范,UTF-8;
五、计算机的主存和辅存
1、主存储器——内存
- RAM(随机存取存储器);
- RAM通过电容存储数据,必须隔一段时间刷新一次;
- 如果掉电,那么一段时间后将丢失所有的数据;
32位系统:2³² = 4×2²⁰×2¹⁰ = 4GB,32位系统的支持的最大内存位 4 GB,因为对于32位的系统,它的地址总线的位数最多为32位,那么它的寻址范围最大就是 2³² = 4GB;
64位系统:2⁶⁴ = 2³⁴GB;
2、辅助存储器——磁盘


- 表面是可磁化的硬磁特性材料;
- 移动磁头径向运动读取磁道信息;
磁盘调度算法
- 先来先服务算法(FCFS)
- 最短寻道时间优先算法(SSTF)
- 扫描算法(电梯算法)(SCAN)
- 循环扫描算法(CSCAN)
Ⅰ 先来先服务算法(FCFS)
- 根据进程访问磁盘的先后次序进行调度。
该算法简单、公平,每个进程的请求都能依次得到处理,不会落下某些进程的请求。
- 但是当磁盘I/O阻塞队列中相邻进程访问磁道的跳跃性较大时,则寻道长度较大,寻道时间较长。
Ⅱ 最短寻道时间优先算法(SSTF)
- 选择与当前磁头所在磁道距离最近的进程I/O请求进行调度,使得每次的寻道长度与时间最短。
- 这种调度算法通常比先来先服务调度算法有较好的调度性能
- 但是当磁头所在磁道附近不断有新的I/O请求到达时,则距离磁头位置较远进程的I/O请求可能被落下,长时间得不到调度,以致被“饿死”。
Ⅲ 扫描算法(电梯算法)(SCAN)
- 扫描算法是当前磁头沿一个方向移动时,对所遇到的磁道上的I/O请求依次响应,直至该移动方向再无I/O请求时,磁臂换向;磁头向反方向移动时,再对所遇磁道上的I/O请求依次响应,往返交替。
- 这种调度算法可以防止最短寻道时间优先调度算法中某些进程被“饿死”的现象。
- 扫描算法有较好的寻道性能,但是当有进程的I/O请求到达刚被扫描过的磁道时,则这个请求会被推迟,直到磁头沿此方向扫描到头换向后,再次扫描到这个I/O请求所在磁道时才会被调度。下面的循环扫描算法有助于克服上述问题。
Ⅳ 循环扫描算法(CSCAN)
- 循环扫描算法中,假设磁头从里向外移动对遇到的磁道上的I/O请求依次响应,响应了最外道的磁道I/O请求后,磁头回到最内的I/O请求磁道上。
浙公网安备 33010602011771号