一、计算机的组成
1.计算机组成的五大部件
(1)运算器:也叫算术逻辑单元,完成对数据的各种常规运算,如加减乘除,也包括逻辑运算,位移,比较等。
(2)控制器:它是整个计算机系统的控制中心,它指挥计算机各部分协调地工作,保证计算机按照预先规定的目标和步骤有条不紊地进行操作及处理。
(3)存储器:存储程序和各种数据。
(4)输入设备:把人所熟悉的信息,如图片,声音,文字,转换为计算机能够识别的信息存储起来。
(5)输出设备:把计算机能识别的信息转换为人能识别的信息进行呈现。
一台计算机中CPU中包含控制器和运算器,内存就是存储器。I/O设备就是输入和输出设备。
CPU、内存、I/O这些设备通过总线链接起来,放到主板上。
2.系统总线
(1)数据总线:用来在各个功能部件中传输数据,是双向传输总线。
(2)地址总线:用来指出数据总线上的原数据或目的数据在主存单元的地址或I/O设备的地址。
(3)控制总线:由于各个连接在数据总线和地址总线的部件都是共享这两类总线的,那么在某一时刻由谁来用,就是控制总线负责完成的。
现在如果内存中有一个变量i=0,现在要给i++,这时候3条总线都要工作,控制总线做的事告诉其他部件都不要动,只操作内存,确定数据传递方向是内存将数据传给CPU,而不是从CPU写如内存;地址总线就打出所操作的内存的地址;数据总线把地址的四个字节的数据从内存中搬到CPU,先放到寄存器中,然后从寄存器中再拿i++进行计算,再把结果写到一个寄存器中,再把寄存器的内容要写回到内存中;这时候3条总线又要工作,但是方向变了,这时候是从CPU往内存中写数据,最后i的值就从0变成了1。
3.指令
(1)指令:是指计算机执行某种操作的命令。一条指令通常由两部分构成:地址码和操作码。
(2)程序:由一条一条的指令构成。
(3)指令周期:CPU每取出并执行一条指令所需的全部时间称为指令周期。
(4)指令系统:计算机能够执行的全部指令的集合称为该计算机的指令系统。
(5)RISC:精简指令系统计算机(手机)
(6)CISC:复杂指令系统计算机(电脑)
(7)程序与指令:高级语言 汇编助记符 机器指令
二、进程
1.进程
一个正在运行的程序
2.PBC
即进程控制块,是进程存在的唯一标准。用来描述进程的属性信息。每一个进程控制块都相当于一个结构体,里面存放了进程id等进程的属性信息。
3.进程的状态
就绪:一切资源都准备好了,只要CPU调度该进程去执行就可以执行。(买票排队中)
运行:在处理器执行该进程。(排到队正在买票)
阻塞:某一条件没有满足执行不了,就算有空闲的处理器也执行不了。(买票时发现钱不够,让朋友转钱,等待钱转过来才能买票,钱转来之后变成了就绪状态)
进程数永远多于处理器数,每个进程都分一点时间进行轮转。(这个时间非常短)。
4.并行和并发的区别
并发:有一个处理器空闲,有两个进程要执行的时候无法同时执行,一个进程在执行的时候另一个进程无法执行,只能在一段时间内两个进程交替执行。在一段时间内,两个进程都有执行。(时间片轮转)
并行:有两个处理器空闲,有两个进程要执行的时候可以同时一直在执行,在任意一刻两个进程都在执行。并行是一个特殊的并发。
三、内存管理
1.简单分页、逻辑页、物理页、页表
内存是被划分成一块一块的空间使用的。一块是4k,就是4096个字节。
一个格子就是4k或者8k,一般是4k
现在要使用4个格子的内存:
这个格子中的0,1,2,3是逻辑页,分别对应真实物理页的4,10,17,18。
如以下页表:
页表用来记录逻辑页和物理页的映射关系。
2.虚拟内存
虚拟内存是用来补充物理内存。
物理内存不够的时候在磁盘上划分的一块空间,当作内存去用,但是它不是真正的物理内存,速度没有物理内存的速度快。
虚拟内存提供3个重要的能力:
(1)它将主存看成是一个存储在磁盘上的地址空间的高速缓存,在主存中只保存活动区域,根据需要在磁盘和主存之间来回传送数据,使得能够运行比内存大的多的进程。
(2)它为每个进程提供了一致的地址空间,从而简化了存储器管理。
(3)它保护每个进程的地址空间不被其他进程破坏。
四、操作系统发展史
操作系统:管理计算机上的软硬件资源,为用户提供一个交互的接口。
1.串行处理
提交一个任务,处理完再提交下一个任务再去处理,那个时候操作系统非常简单。
2.批处理
一次提交多个任务A,B,C。A执行完自动加载B,B执行完自动加载C…,如果A发生阻塞,那么也不会加载B,只有A执行完才会加载B。这时候运行一个程序,一个程序运行完才能运行下一个,处理器性能提高。
3.多道程序设计
一次提交多个任务A,B,C。A,B,C三个程序同时执行,比如,A执行过程中发生阻塞了,换成B来执行…,哪一个能执行就换它来执行。比批处理更加灵活。
4.分时系统
一次提交多个任务A,B,C。让每一个任务真正去执行,给每一个任务一个很小的时间片,A,B,C每一个任务都执行一遍,然后再给每一个任务一个很小的时间片,A,B,C每一个任务执行一遍…一直给A,B,C每一个任务分配时间片。