操作系统的作用
操作系统作为用户和硬件资源之间交互的媒介,向上提供的是抽象的系统调用的接口,给用户提供方便易用的服务;向下作为硬件资源的管理者,方便管理使用各种硬件软件资源。常见的操作系统由苹果,windows,linux,symbian。
用书上的标准话语来讲就是操作系统是配置在计算机硬件上的第一层软件,是对硬件系统的首次扩充,其主要作用的管理硬件设备,提高他们的利用率和系统的吞吐量;并为用户和应用程序提供一个简单的接口,以便于用户和应用程序使用硬件设备。于是,在人机交互,资源管理和资源抽象等不同方面有着举足轻重的作用。举一个例子:用微信与朋友进行视频聊天,打开微信,逐层打开文件夹找到可执行文件的存放位置(文件管理),双击可执行文件打开应用程序(内存管理),程序正常运行需要处理机(处理机管理),视频聊天需要分配摄像头(设备管理)。
总结来说:操作系统是资源的管理者,包括硬件和软件资源;要提供给用户和其他软件方便的接口和服务;是计算机系统中最基本的系统软件。
向上层提供的方便易用的服务的理解:最底层的硬件只能执行二进制指令,安装操作系统之后,我们不必直接与底层这种只听得懂二进制指令的硬件打交道,我们将需求告诉操作系统,将命令翻译成二进制指令是操作系统帮忙完成的。操作系统屏蔽了底层硬件的实现细节之后向上层提供了哪些方便易用的服务呢?用户与操作系统交互的方式1.GUI2.联机命令接口(交互式接口):类似于命令解释器中time命令。3.脱机命令接口:类似于一个程序的执行,用户将命令罗列于一个清单中,操作系统执行用户一堆的请求。4.程序接口:只能通过程序代码间接使用程序接口,在程序中通过系统调用来使用程序接口。类似于我们在程序代码中使用printf函数,这个库函数的底层实现就是一系列的系统调用。应用程序请求操作系统服务的唯一方式就是系统调用方式。
操作系统的主要发展历程
未配置操作系统的计算机系统
人工操作阶段,用户手工输入计算机要处理的数据,程序员通过在纸带上打孔来写好自己的程序,再把纸带放到纸带机上(耗时),计算机从纸带机上来读取用户要运行的程序(也是一个比较耗时的操作),有人机矛盾。计算机处理纸带上数据就是一个快速的过程,
单道批处理系统
通过外围机将多个纸带上的程序提前放入磁带(读写速度要比纸带要快的多)上,引入脱机输入输出技术之后计算机的资源利用率提高了,但是同一时刻只能有一道进程运行,
多道批处理系统
产生了操作系统,用于支持多道程序并发运行,每一次往内存中读入多道程序。多道程序并发运行,共享计算机资源,但是程序一旦开始运行,用户只能等着程序完成,不能调试程序(在程序的运行过程中输入一些参数)。
分时系统: 以时间片为单位轮流的为多个用户服务,各个用户可以通过键盘,鼠标等终端与计算机进行交互,(实现了人机交互还有多个用户同时使用一台计算机)但是不能优先处理紧急事务。
实时系统:要在严格的时限中处理完事件。
微机操作系统;嵌入式操作系统;网络操作系统;分布式操作系统比如说网络分布式系统,就是将一个大的任务拆解成许多小的任务,由处在同一个网络中的多台计算机合作完成。
操作系统的基本特征
并发:操作系统的并发性是系统中同时运行着多个程序,这些程序宏观上同时,微观上交替。对于单核CPU来说,同一时刻只能执行一个程序。易于混淆的一个概念,并行是同一时刻发生。
共享:系统中的资源可以供内存中并发执行的进程共同使用。互斥共享方式和同时共享方式。互斥:一段时间内只能允许一个进程访问该资源。比如:摄像头资源QQ微信同时视频,只能分配给其中的一个进程;同时共享:微信和QQ同时发送文件,宏观上就像是两个进程同时访问硬盘资源,从中读取数据。
并发共享是操作系统最基本的特征。
虚拟:物理上的实体变为若干逻辑上的对应物。空分复用技术:虚拟存储器;时分复用技术:虚拟处理器,既然一个程序要被分配CPU之后才能运行,那么为什么单核CPU的电脑中也能同时运行多个程序呢?
异步:操作系统的异步性是指操作系统中的一些任务或事件并非按照严格的顺序依赖于其他任务或事件的完成,而是可以独立执行的。换句话说,操作系统中的一些操作可以在等待其他任务完成时,不阻塞当前任务的执行,从而提高系统的效率和响应能力。
操作系统的运行机制
程序是怎么在CPU上运行的,CPU执行一条一条机器指令的过程。CPU拿到一条指令的时候是可以区分出这条指令是特权指令还是非特权指令。当CPU处于内核态的时候执行的是内核程序,可以执行特权指令,psw标志CPU状态。
应用程序:跑在操作系统之上的程序。里面不应该包含特权指令
内核程序:负责实现操作系统的那一批人写的内核程序。操作系统内核当中包含了操作系统的功能,并不是所有的操作系统的功能都在内核中,比如GUI。内核程序组成了操作系统内核。
特权指令:运行之后可能会影响到其他程序的运行,就只允许系统的管理者使用。
讲一个故事来理解操作系统的运行机制
一台笔记本电脑开机之后,CPU首先处于内核态,启动BIOS系统,运行内核程序,执行特权指令;然后用户想要运行某一个应用程序,CPU中的psw位会主动改变标志为用户态,运行应用程序,执行非特权指令,某一天一位黑客在这个应用程序中植入了一条特权指令,CPU可以区分出这是特权指令(之前已经提到过),而此时CPU是处于用户态的,不能执行特权指令,就会触发中断(就是操作系统强行夺回CPU的使用权,CPU强行变为内核态),执行中断处理程序(内核程序)来响应这个中断。
中断与异常
操作系统内核程序是整个系统的管理者。中断存在的意义,假设没有中断,一个程序上CPU运行之后就会一直运行下去。
内中断:与CPU当前执行的指令有关,中断信号来源于CPU内部,当前指令是非法的,或者指令的某些参数是非法的,都会引发内中断。如果应用程序想要请求操作系统内核提供服务,就会执行一条陷入指令(系统调用),引发内部中断信号。1.陷入:主动请求操作系统服务2.故障(缺页故障):某一些错误条件引起,可以被操作系统内核程序修复,之后会把CPU使用权还给应用程序3.终止:一些致命错误,一般不再把使用权还给引发终止的程序(整数除于零,非法使用特权指令)。
外中断:与CPU当前执行的指令无关,中断信号来源于CPU外部,时钟中断:计算机时钟部件发出的(就像分时系统)。IO设备中断信号,打印完成等。
系统调用
什么是系统调用?可以用汇编语言的方式来直接请求系统调用服务,由操作系统内核对共享资源进行统一的管理,用户不是直接操纵硬件,都要经过操作系统的统一分配策略,内核会对各个请求协调处理。凡是和共享资源有关的操作都需要系统调用。
系统调用的整个过程总结起来就是传递系统调用参数,执行陷入指令(此时处于用户态),执行相应的内核处理程序处理系统调用(根据寄存器的参数来判断用户需要哪种系统调用服务)(核心态),返回应用程序。