一.概述
操作系统的概念 --图:
- 控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配(中间往两边看)
- 提供给用户和其他软件方便的接口和环境。(从下往上)
- 是计算机系统中最基本的系统软件。(从上往下)
操作系统的功能--作为系统资源的管理者
1. 进程管理
进程控制、进程同步、进程通信、死锁处理、处理机调度等。
2. 内存管理
内存分配、地址映射、内存保护与共享、虚拟内存等。
3. 文件管理
文件存储空间的管理、目录管理、文件读写管理和保护等。
4. 设备管理
完成用户的 I/O 请求,方便用户使用各种设备,并提高设备的利用率。
主要包括缓冲管理、设备分配、设备处理、虛拟设备等
操作系统的功能--作为用户和计算机硬件之间的接口
1.命令接口(用户直接使用):
- 联机命令接口(指令):用户说一句,系统做一句
- 脱机命令接口(批处理命令):用户说一堆,系统做一堆
2.程序接口(用户通过程序间接使用)
由一组系统调用命令组成(程序接口=系统调用=广义指令)
用户通过在程序中使用这些系统调用命令来请求操作系统为其服务
程序接口:如c: \Windows\System32\user32. dll程序员在程序中调用user32. dll (该调用过程即为系统调用)即可实现创建窗口等功能。只能通过用户程序间接使用。
3.GUI:图形用户接口
操作系统的特征 --图
1.并发
并发:两个或多个事件在同一时间段发生。宏观看同时发生,微观看是交替发生
并行:两个或多个事件在同一时刻同时发生
并行需要硬件支持,如多流水线、多核处理器或者分布式计算系统。
操作系统通过引入进程和线程,使得程序能够并发运行
2.共享
共享:即资源共享,系统中资源可以被多个并发进程共同使用
二种资源共享方式:
- 互斥共享 系统中的某些资源,虽然可以供给多个进程使用,但一个时间段内只允许一个进程访问资源
- 同时共享 系统中的某些资源,允许一个时间段由多个进程 "同时" 对它们进行访问
所谓:同时,只是宏观上,微观上这些进程可能是交替的对该资源进行访问(分时共享)
实例:
互斥共享:QQ和微信视频,同一时间段内摄像头只能分配给其中一个进程(打印机)
互斥共享的资源称为临界资源,需要用同步机制来实现对临界资源的访问
同时共享:发送文件(同时对硬盘资源共享)
3. 虚拟
虚拟技术把一个物理实体转换为多个逻辑实体。
主要有两种虚拟技术:时分复用技术和空分复用技术。
应用:
虚拟处理器技术:多个进程能在同一个处理器上并发执行使用了时分复用技术,让每个进程轮流占有处理器,每次只执行一小个时间片并快速切换。(为什么单核CPU可以执行多个进程)
虚拟内存技术:虚拟内存使用了空分复用技术,它将物理内存抽象为地址空间,每个进程都有各自的地址空间。地址空间的页被映射到物理内存,地址空间的页并不需要全部在物理内存中,当使用到一个没有在物理内存的页时,执行页面置换算法,将该页置换到内存中。
虚拟和并发的关系:
显然,如果失去了并发性,则一个时间段只执行一个程序,那么就是去了虚拟的意义。因此没有并发,就谈不上虚拟
4. 异步
在多道程序环境下,允许多个程序并发执行,但是由于资源有限,进程不是一次性执行完毕,而是走走停停,以不可知的速度向前推进。这就是异步性
异步和并发关系:
显然,如果失去并发,系统只能串行执行各个进程,每个进程会贯彻到底。只有系统拥有并发,才可能导致异步性
补充:并发和共享的关系
使用QQ发送文件A,同时使用微信发送文件B:
1.两个进程并发执行(并发性)
如果失去并发,系统只有一个程序允许,则共享性失去意义
2.需要共同访问硬盘资源(共享性)
如果失去共性,QQ和微信不能同时访问硬盘资源,也就无法并发
并发和共享互为存在条件
没有并发和共享,就谈不上虚拟和异步,因此并发和共享是操作系统的最基本特征
OS发展和分类 --图
OS运行机制 --图
计算机系统中,通常CPU执行两种不同性质的程序:一种是操作系统内核程序,一种是用户程序。前者是后者的管理者,因此 “管理程序” 要执行一些特权命令,而 “被管理者程序” 出于安全考虑不能执行这些指令。所谓特权指令,是指计算机中不允许用户直接使用的指令,如I/O指令,置中断指令,存取用于内存保护的寄存器,送程序状态字到程序状态字寄存器等指令
二种指令:
- 特权指令:如内存清零指令(不允许用户程序使用)
- 非特权指令:如普通的运算指令
如何判断? 如果指令严重干扰其他程序的执行,则一定是特权指令
二种处理器状态:
- 用户态(目态):此时CPU执行非特权指令
- 核心态(管态):特权非特权都可以执行
用程序状态字寄存器(PSW)中的某个标志位来标识当前寄存器出去什么状态。如0为用户态,1核心态
两种程序:
- 内核程序:系统的管理者,特权和非特权指令都可以执行,运行在核心态
- 应用程序:保证程序正常运行,只能执行非特权指令,运行在用户态
OS的内核
内核是计算机上配置的底层软件,是OS最基本,最核心的部分,使计算机功能的延伸。不同系统对内核的定义稍有区别,大多数操作系统内核包括四个方面的内容。
1.时钟管理
时钟的第一功能是计时,向用户提供标准的系统时间。另外通过时钟中断的管理,实现进程的切换。诸如,在分时操作系统,采用时间片轮转的调度实现;在实时系统中,按截至时间控制运行的实现;在批处理,通过时钟管理来衡量一个作业的运行程度等。因此,系统管理的方方面面无不依赖时钟。
2.中断机制
引入中断技术的初衷是提高多道程序运行环境CPU的利用率。后来逐渐发展,形成多种类型,成为操作系统各项操作的基础。如键盘或鼠标信息输入,进程的管理和调度,系统功能的使用,设备驱动,文件访问等,无不依赖中断机制。考研说操作系统是靠中断驱动的软件
中断机制中,只有一小部分功能属于内核,负责保护和恢复中断现场的信息,转移控制权到相关的处理程序。这样可以减少中断的处理时间,提高系统的并行处理能力。
3.原语
1) 处于操作系统的最底层,是最接近硬件的部分
2)这些程序的运行具有原子性,其操作必须一气呵成
3)运行时间短,调用频繁
通常把具有这些特点的程序称为原语,所以说原语是一种特殊的程序
大内核和微内核
1. 大内核
大内核是将操作系统功能作为一个紧密结合的整体放到内核。
由于各模块共享信息,因此有很高的性能。
2. 微内核
由于操作系统不断复杂,因此将一部分操作系统功能移出内核,从而降低内核的复杂性。移出的部分根据分层的原则划分成若干服务,相互独立。
在微内核结构下,操作系统被划分成小的、定义良好的模块,只有微内核这一个模块运行在内核态,其余模块运行在用户态。
因为需要频繁地在用户态和核心态之间进行切换,所以会有一定的性能损失。
中断分类--图
在操作系统中引入核心态和用户态两种工作状态后,就要考虑到如何切换状态。操作系统内核工作在核心态,而用户程序工作在用户态。但操作系统不允许用户程序实现核心态的功能,但它们又必须使用这些功能。因此引入中断和异常,实现从用户态进入核心态。这是通过硬件实现的(例如,用程序状态字寄存器(PSW)中的某个标志位来标识当前寄存器出去什么状态。如0为用户态,1核心态。若要进入核心态,只需要将位置设为1即可)
1. 外中断
由 CPU 执行指令以外的事件引起,如 I/O 完成中断,表示设备输入/输出处理已经完成,处理器能够发送下一个输入/输出请求。此外还有时钟中断、控制台中断等。
2. 异常
由 CPU 执行指令的内部事件引起,如非法操作码、地址越界、算术溢出等。
3. 陷入
在用户程序中使用系统调用。
系统调用--图
什么是系统调用?
系统调用是OS提供给应用程序(程序员)使用内核功能的接口,可以理解为一种供应用程序调用的特殊函数,应用程序发出系统调用请求来获得OS的服务
什么作用?
操作系统掌管系统中各种共享资源,因此凡是与资源相关的操作(存储分配,I/O操作,文件管理),都必须通过系统调用的方式向操作系统提出服务请求,由操作系统代为完成。保证系统的稳定和安全性,防止用户非法操作
注意 :
1.陷入(陷阱)指令时在用户态执行的,执行后引发中断,CPU进入核心态
2.发出系统调用请求是在用户态,而对系统调用的相应处理在核心态下进行
3.陷入指令时唯一一个只能在用户态下下执行,而不可在核心态执行的指令
系统调用与库函数的区别:
库函数是高级语言中提供的与系统调用对应的函数(也有些库函数与系统调用无关),目的是隐藏 “访管” 指令的细节,使系统调用更为方便,抽象。但是库函数属于用户程序而非系统调用,是系统调用的上层
如果程序的运行由用户态转到核心态,会用到访管指令,访管指令是在用户态使用的,所以它不可能是特权指令
Linux 的系统调用主要有以下这些:
Task | Commands |
---|---|
进程控制 | fork(); exit(); wait(); |
进程通信 | pipe(); shmget(); mmap(); |
文件操作 | open(); read(); write(); |
设备操作 | ioctl(); read(); write(); |
信息维护 | getpid(); alarm(); sleep(); |
安全 | chmod(); umask(); chown(); |
题目:
1.下列选项中,操作系统提供给应用程序的接口是( ). [2010年计算机联考真题]
A.系统调用 B.中断 C.库函数 D.原语
2. 操作系统与用户通信接口通常不包括( )。
A. shell B.命令解释器C.广义指令 D.缓存管理指令
3. 计算机开机后,操作系统最终被加载到( ). [2013年计算机联考真题]
A. BIOS B. ROM C. EPROM D. RAM
1. A
操作系统接口主要有命令接口和程序接口(也称系统调用)。库函数是高级语言中提供的与系统调用兼应的函数(也有些库函数与系统调用无关),目的是隐藏“访管”指令的细节,使系统调用更为方便、抽象。但是,库函数属于用户程序而非系统调用,是系统调用的上层。
2. D
广义指令就是系统调用命令[而命令解释器属于命令接口shell 指命令解析器,也属于命令接口。系统中的缓存全部由操作系统管理,对用户是透明的,操作系统不提供管理系统缓存的系统调用。
3. D
系统开机后,操作系统的程序会被自动加载到内存中的系统区,这段区域是RAM部分未复习到组成原理的读者可能对此题的答案并不是太熟悉,但熟悉了组成原理中的各类存储介质之后,相信选对这道题并不难。