操作系统(Operating System, OS)是配置在计算机硬件上的第一层软件,是对硬件系统的首次扩充。
OS是现代计算机系统中最基本和最重要的系统软件,其他的系统软件还有:
1. OS作为用户与计算机硬件系统之间的接口
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-P4ySjD08-1600074074203)(en-resource://database/1216:1)]
2. OS作为计算机系统资源的管理者
计算机系统包含多种硬件和软件资源,可归纳为四类:
3. OS实现对计算机资源的抽象
覆盖了I/O设备管理软件的机器称为扩充机器或虚拟机
综上,OS是铺设在计算机硬件上的多层软件的集合,不仅增强系了统的功能,还隐藏了对硬件操作的具体细节。
进程和并发是现代操作系统中最重要的基本概念,也是操作系统运行的基础。
为了实现并发,故引入进程的概念
1. 什么是并行/并发:
并发是指多个事件在同一时间间隔内发生。
并行指多个事件在同一时刻发生(要求更苛刻)
2. 并发的背景:多道程序环境
多道程序环境下,并发性是指在一段时间内宏观上有多个程序在同时运行:
多个处理机才能实现程序的并行
3. 并发的实现:引入进程
4. 并发的好处:
极大地提高系统资源的利用率,增加系统的吞吐量。
在未引入进程的系统中,属于同一个应用程序的计算程序和I/O程序之间只能是顺序执行。
为计算程序和I/O程序分别建立一个进程(Process)后,这两个进程就可以并发执行。
进程指在系统中能独立运行并作为资源分配的基本单位,是一个能独立运行的活动实体。多个进程之间可以并发执行和交换信息。
OS下的资源共享或称为资源复用,指系统中的资源可供内存中多个并发执行的进程共同使用。 宏观上限定了同时(进程在内存期间),同地(内存)。
根据资源属性不同,进程对资源的复用(共享方式)主要有以下两种:
1. 互斥共享
在一段时间内只允许一个进程访问的资源,称为临界资源(或独占资源)。
系统中大多数物理设备,以及栈、变量和表格,都属于临界资源,临界资源只能被互斥共享。
2. 同时访问
系统中还有另一类资源,允许在一段时间内由多个进程“同时”对其进行访问。(典型的资源有磁盘设备)
在单处理机环境下, “同时”是宏观意义上的,微观上进程对资源的访问实际上是交替进行的。
并发和共享是多用户(多任务)OS系统最基本的特征。它们是互为存在的条件:一方面资源共享是以进程的并发执行为条件的;另一方面若系统不能对资源共享实施有效管理,必然会影响到进程间并发执行的程度,甚至无法并发。
虚拟: 通过某种技术,将一个物理实体变为若干个逻辑上的对应物的功能。
OS中有两种实现虚拟的技术:
由于资源等因素的限制,进程是以不可预知的速度向前推进的,此即进程的异步性。
但只要在OS中配置有完善的进程同步机制,且运行环境相同,则作业即便经过多次运行,也都会得到完全相同的结果。
异步的运行方式是允许的,且是操作系统的一个重要特征。
1. 进程控制
2. 进程同步
3. 进程通信
4. 调度:作业调度、进程调度
Client/Sever Model,可简称为C/S模式。
根据“抽象”和“隐蔽”原则来控制大型软件的复杂度
是在C/S架构上发展而来,非常适合分布式系统环境。
微内核操作系统往往采用的是C/S模式,它把操作系统分为微内核和多个服务器。
微内核:
服务器:
机制与策略分离:
①②③功能,在微内核和服务器端都负责,但微内核负责的是机制,服务端负责的是策略。
~客户与服务器之间借助微内核提供的消息传递机制来实现信息交互的。
由于微内核结构的存在,那么程序就运行在两种不同的地方,内核态和用户态,内核态与用户态是操作系统的两种运行级别,跟intel cpu没有必然的联系。
当一个任务(进程)执行系统调用而陷入内核代码中执行时,我们就称进程处于内核运行态(或简称为内核态)。其他的属于用户态。
用户程序运行在用户态, 操作系统运行在内核态.(操作系统内核运行在内核态,而服务器运行在用户态)。
用户态不能干扰内核态,所以CPU指令就有两种:
不同的状态对应不同的指令。所以:系统态(核心态、特态、管态):执行全部指令。用户态(常态、目态):执行非特权指令。
系统调用
这是用户态进程主动要求切换到内核态的一种方式,用户态进程通过系统调用申请使用操作系统提供的服务程序完成工作,比如前例中fork()实际上就是执行了一个创建新进程的系统调用。而系统调用的机制其核心还是使用了操作系统为用户特别开放的一个中断来实现,例如Linux的int 80h中断
异常
当CPU在执行运行在用户态下的程序时发生了某些事先不可知的异常,这时会触发由当前运行进程切换到处理此异常的内核相关程序中,也就转到了内核态,比如缺页异常。
外围设备的中断
当外围设备完成用户请求的操作后,会向CPU发出相应的中断信号这时CPU会暂停执行下一条即将要执行的指令转而去执行与中断信号对应的处理程序,如果先前执行的指令是用户态下的程序,那么这个转换的过程自然也就发生了由用户态到内核态的切换。比如硬盘读写操作完成,系统会切换到硬盘读写的中断处理程序中执行后续操作等。
1、用户在程序中试图读某文件的第100个逻辑块,使用操作系统提供的()接口
A:系统调用
B:图形用户接口
C:原语
D:键盘
命令解析:程序需要读取第100个逻辑块,这里发生了逻辑地址到物理地址的转换,必然要进入到内核态执行转换,所以必然要进入到内核态,在四个选型中,只有A系统调用才能进入到内核态。所以A入选。图形用户接口是用户接口,他是获得操作系统提供的服务一种方式,但是要想获得操作系统的服务,在底层仍然是使用的系统调用。
2、在中断发生后,进入中断处理的程序属于:()
A:用户程序
B:可能是应用程序,也可能是操作系统程序
C:操作系统程序
D:既不是是应用程序,也不是操作系统程序
解析:中断的处理是由操作系统内核来处理的,这是操作系统内核最基本的功能之一,所以只能是操作系统程序。
从这些题目中,可以看出,理解内核态和用户态的基本的概念,区分好他们不同的情景,并且掌握内核态的典型场景,就可以做好这一类的题目。
参考
计算机系统中,通常CPU执行两种不同性质的程序:
操作系统在具体实现上划分了用户态(目态)和核心态(管态),以严格区分两类程序。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TqZRCHb4-1600074074205)(en-resource://database/1898:1)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kifCua5E-1600074074206)(en-resource://database/1900:1)]