一、为什么要有操作系统
操作系统是安装在一堆硬件之上,给应用程序提供底层环境,帮助应用程序操作硬件的软件系统,更简化了程序员的工作;工作在用户态的应用程序是不能抛开操作系统运行的。
二、操作系统的组成
操作系统位于计算机硬件和应用软件之间,从本质上说他也是一种软件系统,操作系统是有内核程序(运行于内核态)、各种接口组成(运行于用户态,给应用程序提供系统调用)。
三、操作系统的发展史
1、真空管和穿卡打孔无操作系统:1946年第一台计算机诞生--20世纪50年代中期,还未出现操作系统,计算机工作采用手工操作方式。程序员将对应于程序和数据的已穿孔的纸带(或卡片)装入输入机,然后启动输入机把程序和数据输入计算机内存,接着通过控制台开关启动程序针对数据运行;计算完毕,打印机输出计算结果;用户取走结果并卸下纸带(或卡片)后,才让下一个用户上机。
手工操作方式两个特点:
(1)用户独占全机。不会出现因资源已被其他用户占用而等待的现象,但资源的利用率低。
(2)CPU 等待手工操作。CPU的利用不充分。
20世纪50年代后期,出现人机矛盾:手工操作的慢速度和计算机的高速度之间形成了尖锐矛盾,手工操作方式已严重损害了系统资源的利用率(使资源利用率降为百分之几,甚至更低),不能容忍。唯一的解决办法:只有摆脱人的手工操作,实现作业的自动过渡。这样就出现了成批处理。
2、晶体管和批处理系统
批处理系统:加载在计算机上的一个系统软件,在它的控制下,计算机能够自动地、成批地处理一个或多个用户的作业(这作业包括程序、数据和命令)。
联机批处理系统: 首先出现的是联机批处理系统,即作业的输入/输出由CPU来处理。 主机与输入机之间增加一个存储设备——磁带,在运行于主机上的监督程序的自动控制下,计算机可自动完成:成批地把输入机上的用户作业读入磁带,依次把磁带上的用户作业读入主机内存并执行并把计算结果向输出机输出。完成了上一批作业后,监督程序又从输入机上输入另一批作业,保存在磁带上,并按上述步骤重复处理。 监督程序不停地处理各个作业,从而实现了作业到作业的自动转接,减少了作业建立时间和手工操作时间,有效克服了人机矛盾,提高了计算机的利用率。 但是,在作业输入和结果输出时,主机的高速CPU仍处于空闲状态,等待慢速的输入/输出设备完成工作: 主机处于“忙等”状态。
脱机批处理系统: 为克服与缓解:高速主机与慢速外设的矛盾,提高CPU的利用率,又引入了脱机批处理系统,即输入/输出脱离主机控制。 这种方式的显著特征是:增加一台不与主机直接相连而专门用于与输入/输出设备打交道的卫星机。 其功能是: (1)从输入机上读取用户作业并放到输入磁带上。 (2)从输出磁带上读取执行结果并传给输出机。 这样,主机不是直接与慢速的输入/输出设备打交道,而是与速度相对较快的磁带机发生关系,有效缓解了主机与设备的矛盾。主机与卫星机可并行工作,二者分工明确,可以充分发挥主机的高速计算能力。 脱机批处理系统:20世纪60年代应用十分广泛,它极大缓解了人机矛盾及主机与外设的矛盾。IBM-7090/7094:配备的监督程序就是脱机批处理系统,是现代操作系统的原型。 不足:每次主机内存中仅存放一道作业,每当它运行期间发出输入/输出(I/O)请求后,高速的CPU便处于等待低速的I/O完成状态,致使CPU空闲。 为改善CPU的利用率,又引入了多道程序系统。
3、集成电路芯片和多道处理系统
就是指允许多个程序同时进入内存并运行。即同时把多个程序放入内存,并允许它们交替在CPU中运行,它们共享系统中的各种硬、软件资源。当一道程序因I/O请求而暂停运行时,CPU便立即转去运行另一道程序。单道程序的运行过程:
在A程序计算时,I/O空闲, A程序I/O操作时,CPU空闲(B程序也是同样);必须A工作完成后,B才能进入内存中开始工作,两者是串行的,全部完成共需时间=T1+T2。
多道程序的运行过程:
将A、B两道程序同时存放在内存中,它们在系统的控制下,可相互穿插、交替地在CPU上运行:当A程序因请求I/O操作而放弃CPU时,B程序就可占用CPU运行,这样 CPU不再空闲,而正进行A I/O操作的I/O设备也 不空闲,显然,CPU和I/O设备都处于“忙”状态,大大提高了资源的利用率,从而也提高了系统的效率,A、B全部完成所需时间<<T1+T2。
多道程序设计技术不仅使CPU得到充分利用,同时改善I/O设备和内存的利用率,从而提高了整个系统的资源利用率和系统吞吐量(单位时间内处理作业(程序)的个数),最终提高了整个系统的效率。
单处理机系统中多道程序运行时的特点:
(1)多道:计算机内存中同时存放几道相互独立的程序;
(2)宏观上并行:同时进入系统的几道程序都处于运行过程中,即它们先后开始了各自的运行,但都未运行完毕;
(3)微观上串行:实际上,各道程序轮流地用CPU,并交替运行。
多道程序系统的出现,标志着操作系统渐趋成熟的阶段,先后出现了作业调度管理、处理机管理、存储器管理、外部设备管理、文件系统管理等功能。
4、分时系统
由于CPU速度不断提高和采用分时技术,一台计算机可同时连接多个用户终端,而每个用户可在自己的终端上联机使用计算机,好象自己独占机器一样。
分时技术:把处理机的运行时间分成很短的时间片,按时间片轮流把处理机分配给各联机作业使用。
若某个作业在分配给它的时间片内不能完成其计算,则该作业暂时中断,把处理机让给另一作业使用,等待下一轮时再继续其运行。由于计算机速度很快,作业运行轮转得很快,给每个用户的印象是,好象他独占了一台计算机。而每个用户可以通过自己的终端向系统发出各种操作控制命令,在充分的人机交互情况下,完成作业的运行。
具有上述特征的计算机系统称为分时系统,它允许多个用户同时联机使用计算机。
特点:
(1)多路性。若干个用户同时使用一台计算机。微观上看是各用户轮流使用计算机;宏观上看是各用户并行工作。
(2)交互性。用户可根据系统对请求的响应结果,进一步向系统提出新的请求。这种能使用户与系统进行人机对话的工作方式,明显地有别于批处理系统,因而,分时系统又被称为交互式系统。
(3)独立性。用户之间可以相互独立操作,互不干扰。系统保证各用户程序运行的完整性,不会发生相互混淆或破坏现象。
(4)及时性。系统可对用户的输入及时作出响应。分时系统性能的主要指标之一是响应时间,它是指:从终端发出命令到系统予以应答所需的时间。
分时系统的主要目标:对用户响应的及时性,即不至于用户等待每一个命令的处理时间过长。
分时系统可以同时接纳数十个甚至上百个用户,由于内存空间有限,往往采用对换(又称交换)方式的存储方法。即将未“轮到”的作业放入磁盘,一旦“轮到”,再将其调入内存;而时间片用完后,又将作业存回磁盘(俗称“滚进”、“滚出“法),使同一存储区域轮流为多个用户服务。
多用户分时系统是当今计算机操作系统中最普遍使用的一类操作系统。
三、操作系统网络基础
1、应用层:为操作系统或网络应用程序提供访问网络服务的接口
2、传输层:第四层的数据单元为数据段,这一层为上层的应用程序提供端口号,主要是TCP/UDP协议;
3、网络层:IP协议,网络层的任务就是选择合适的网间路由和交换结点, 确保数据及时传送。网络层将数据链路层提供的帧组成数据包,包中封装有网络层包头,其中含有逻辑地址信息- -源站点和目的站点地址的网络地址。
4、数据链路层:数据链路层 (DataLinkLayer):在物理层提供比特流服务的基础上,建立相邻结点之间的数据链路,通过差错控制提供数据帧(Frame)在信道上无差错的 传输,并进行各电路上的动作系列。
数据链路层在不可靠的物理介质上提供可靠的传输。该层的作用包括:物理地址寻址、数据的成帧、流量控制、数 据的检错、重发等。在这一层,数据的单位称为帧(frame)。
5、物理层:规定通信设备的机械的、电气的、功能的和过程 的特性,用以建立、维护和拆除物理链路连接。
四、网络通信流程:首先,网络上的计算机要想实现和网络上的其他机器完成通信,必须有一块物理网卡,网卡上必须配置有IP地址。
1、有了IP地址和MAC地址后,通过物理链路链接;
2、五层的应用程序发出数据,首先在应用层加上应用首部,也就是APP首部;
3、经过传输层时,封装上TCP首部,也就是源端口(通常是随机)与目的端口(接收端服务的端口),此时是数据段;
4、经过网络层时,又封装上IP首部,也就是源IP地址和目的端IP地址,这时时数据包;
5、经过数据链路层时,封装上以太网首部,也就是源MAC地址和目标MAC地址,这时时数据帧;
6、到达物理层时,将数据转化为比特流,传输给目的端;这是分为两种情况;
1)物理层会通过计算,得出自己的网络地址(IP地址和子网掩码做与运算),再计算目的端的网络地址,看两个地址是否相同;
2)相同时会通过ARP广播的形式在局域网内部传播,局域网内部的所有机器都能接收到数据,接收到数据后解包,查看目的MAC地址是自己时,接受,不是自己时丢弃
3)当计算的网络地址不相同时,将数据传输给默认网关,通过路由的方式传递到目的端。
五、DNS解析流程
1、客户端在浏览器输入链接(或者在命令行通过命令请求);
2、操作系统首先会查看本地hosts文件,如果有相应的域名和IP地址对应关系,则直接把请求发到对应的IP地址,如果没有,则查找本地DNS服务器;
3、本地DNS服务器上如果有相应的解析记录,DNS服务器将把IP地址返回给应用程序,应用程序直接发送请求;
4、本地DNS服务器上如果没有相应记录,DNS服务器将请求根域名服务器(全球一共13台),根域名服务器将返回相应的顶级域服务器IP地址;DNS服务器再到相应的顶级域服务器上查找二级域名,顶级域服务器返回相应的二级域名服务器的IP,以此类推,直到查询到最终的A记录IP地址。(DNS查询的方式递归加迭代的方式);