文章目录
第一章 计算机系统概述
1.1 操作系统基本概念
1.1.1 操作系统概念
计算机系统自上而下可以分为4个部分:硬件,操作系统,应用程序和用户
在计算机系统的运行过程中,操作系统提供了正确使用这些硬件资源和软件资源的方式。
操作系统指的是控制和管理整个计算机系统的硬件和软件资源,合理的组织,调度计算机的工作与资源的分配,进而为用户和其他软件提供方便的接口与环境的程序集合。
操作系统是计算机系统中最基本的系统软件。
1.1.2 操作系统特征
操作系统的基本特征:并发,共享,虚拟和异步。
1.并发
指的是两个或者多个事件在同一时间间隔内发生。操作系统的并发性指的是计算机系统中同时存在多个运行的程序,因此它具有处理和调度多个程序同时执行的能力。
在操作系统中,引入进程的目的是使程序能够并发的执行。
并发是在在一段时间内,有多个程序同时执行,在每一个时刻,单处理机下其实仅有一道程序在执行。
微观上来说这些程序仍然是十分交替进行的。
操作系统的并发性是通过分时来实现的。
并行是指在同一时间段内执行多个程序。
2.共享
共享指的是资源共享,指的是系统中的资源可供内存中多个并发执行的进程共同使用,共享有两种方式:
(1)互斥共享
当进程A访问资源时,需要先提出请求,若此时资源空闲,则自动分配资源,否则就需要等待,其他进程访问完并释放该资源后,才允许其他进程使用该资源。
把一段时间内只允许一个进程访问的资源称为临界资源。
计算机系统中大多数物理设备及这些软件中所用的栈,变量个和表格都是临界资源,都要求被互斥共享。
(2)同时访问
系统中还有另外一类资源,这类资源允许在一段时间内由多个进程“同时”访问。
宏观上“同时”访问,微观上“分时共享”。
并发和共享是操作系统两个最基本的特征,两者之间互为存在条件:
①资源共享是以程序的并发为条件的,若系统不允许程序并发执行,则不存在资源共享的问题、
②若系统不能对资源共享实施有效的管理,则必将影响到程序的并发执行,甚至根本无法并发执行。
3.虚拟
虚拟是把一个物理上的实体变为若干逻辑上的对应物。物理实体(前者)是实的,是实际存在的。
操作系统利用了多种虚拟技术来实现虚拟处理器,虚拟内存和虚拟外部设备。
虚拟处理技术采用的是多道程序并发的方式。这个时候虽然只有一个处理器,但是能为多个用户进行服务,利用多道程序设计技术把物理上的CPU虚拟为多个逻辑上的CPU,成为虚拟处理器。
操作系统的虚拟技术可以归纳为:时分复用技术(处理器的十分共享),空分复用技术,如虚拟存储器。
4.异步
多道程序环境允许多个程序并发执行,进程的执行并不是一贯到底的,是走走停停的,这是进程的异步性。
只要运行环境相同,操作系统就会保证多次运行进程后都能获得相同的结果。
1.2.3 操作系统目标和功能
1.操作系统作为计算机资源的管理者
为了给多道程序提供良好的运行环境,操作系统应具有下面几个方面的功能:处理机管理,存储器管理,设备管理和文件管理。为了方便用户使用操作系统,还必须提供接口。
(1)处理机管理
在多道程序环境下,处理机的分配和运行都以该进程为基本单位,因为对处理机的管理可以理解为对进程的管理。
进程管理的主要功能包括进程控制,进程同步,进程通信,死锁处理,处理机调度。
(2)存储器管理
方便用户使用以及提高内存的使用率。
主要包括内存分配和回收,地址映射,内存保护,共享内存扩充等。
(3)文件管理
计算机中的信息都是以文件的形式存在的,操作系统中负责文件管理的部分称为文件系统。文件管理包括文件存储空间的管理,目录管理,以及文件的读写和保护。
(4)设备管理
设备管理的主要任务就是完成用户的I/O请求,方便用户使用各种设备,并提高设备的利用率,主要包括缓冲管理,设备分配,设备处理,虚拟设备等。
2.操作系统作为用户与计算机硬件系统之间的接口
操作系统提供了用户接口:一个是命令接口(用户利用这些操作命令来组织和控制作业的执行),另一个是程序接口(编程人员用来进行操作系统的请求)。
(1)命令接口
一个是联机控制和脱机控制,(联机接口命令和脱机接命令)
联机接口命令又称为交互式命令接口,适用于分时和实时系统的接口。
理解:“雇主”说一句话,”工人“就做一件事,并作出反馈,强调了交互性。
脱机接口命令又称为批处理命令接口,适用于批处理系统,由一组作业控制命令组成。脱机用户不能直接干预作业的运行。
“雇主”把工人要做的事写在清单上,“工人”按清单命令逐条完成这些事情,这就是批处理命令。
(2)程序接口
程序接口由一组系统调用又称为(广义指令)组成。
GUI(图形用户界面)图形接口。
3.操作系统实现了对计算机资源的扩充
没有任何软件支持的计算机称为裸机,仅仅构成计算机系统的物质基础。
通常把覆盖了软件的机器称为扩充机器或虚拟机。
裸机在最里面,外面是操作系统。
1.2 操作系统发展史
1.2.1 手工操作阶段(无操作系统)
手工阶段有两个突出的缺点:
①用户独占全机,资源利用率低
②CPU等待手动操作,CPU利用不充分
1.2.2 批处理阶段(操作系统开始出现)
为了解决人机矛盾以及CPU和I/O设备之间速度不匹配的矛盾,出现了批处理系统。按发展历程又分为单道批处理系统和多道批处理系统。
1.单道批处理系统
系统对作业的处理是成批进行的。
单道批处理的特点:
- 自动性
- 顺序性
- 单道性
2.多道批处理系统
允许多个程序同时进入内存并允许他们在CPU中交替运行。
多道批处理的特点:多道,宏观上并行,微观上是串行。
- 宏观上并行
- 多道
- 微观上串行,轮流占有CPU,交替执行。
多道程序需要解决的问题:
- 如何分配处理器
- 多道程序的内存分配问题
- I/O设备如何分配
- 如何组织和存放大量的程序和数据,方便用户使用并保证其安全性与一致性。
优点:资源利用率高,各类资源得到充分的利用。
1.2.3 分时操作系统
分时技术指的是把处理器的运行时间分成很短的时间片,按时间片把处理器分配给各联机作业使用。若某个作业在该时间片内完不成其计算,则该作业暂时停止,直到下一轮。
多道批处理系统是自动控制的,无须人工干扰。分时系统是实现人机交互的系统。
分时系统的特点:
- 同时性。运行多个用户同时使用一台计算机。
- 交互性。用户通过终端采用人机对话的方式直接控制程序运行,与同程序进行交互。
- 独立性。系统中有多个用户可以彼此独立的进行操作,互不干扰,单个用户感受不到别人在操作此计算机。
- 及时性。用户能够在很短的时间内获得响应。
Linux就属于分时操作系统。
1.2.4 实时操作系统
为了能够在某个特殊的时间限制内完成某些紧急任务而不需要时间时间篇排队。分为两种:硬实时系统和软实时系统
硬实时系统:必须保证绝对的安全。比如说飞行器的飞行自动控制系统
软实时系统:偶尔违反时间规定且不会引起 任何永久的损害。比如说飞机订票系统,银行管理系统。
实时操作系统的主要特点就是及时性和可靠性。
1.2.4 网络操作系统和分布式计算机系统
网络操作系统最主要特点就是网络中各种资源的共享及各台计算机之间的通信。
分布式计算机系统是由多台计算机组成并满足下列条件:
- 系统中任意两台计算机通过通信方式交换信息。
- 系统中的每台计算机都具有相同的地位,没有主从关系。
- 每台计算机上的资源为所有用户共享。
- 系统中的任意台计算机都可以构成子系统,并且能够进行重构。
- 任何工作都可以分布在几台计算机上,由他们进行工作。
该系统的主要特点是:
- 分布性和并行性。
1.2.5 个人计算机操作系统
个人计算机操作系统是目前使用最广泛的操作系统。
操作系统发展历史如下:
1.3 操作系统运行环境
1.3.1 处理器运行模式
特权指令,是指不允许用户直接使用的指令,I/O指令,置中断指令等。
非特权指令,允许用户直接使用的指令,不能直接访问系统中的硬件资源,仅用于访问用户的地址空间。
CPU的运行模式分为用户态(目态)和核心态(管态,内核态)
操作系统的内核包括4个方面:
1.时钟管理
在计算机的各种部件中,时钟是最关键的设备。通过时钟管理可以实现进程的切换。
2.中断机制
中断机制中,只有一小部分功能属于内核,负责保护和恢复中断现场的信息,转移控制权。
减少了中断的处理时间,提高系统的并行处理能力。
3.原语
特点:
- 操作系统的最底层,最接近硬件部分
- 系统的运行具有原子性,操作只能一气呵成
- 运行时间短,频繁调用
4.系统控制的数据结构及处理
系统中用来等级状态信息的数据结构有很多,比如作业控制块,进程控制块(PCB),设备控制块,各类链表,消息队列,缓冲区,空闲登记表,内存分配等。
(1)进程管理:进程状态管理,进程调度和分派,创建撤销进程控制块等。
(2)存储器管理:存储器的空间分配和回收,内存信息保护程序,代码对换程序等。
(3)设备管理:缓冲区管理,设备分配和回收。
1.3.2 中断和异常的概念
1.中断和异常的定义
中断又称为外中断,指的是CPU执行指令外部的事件。指的是来自CPU执行指令外部的事件,通常用于信息的输入输出。
异常又称为内中断,指的是来自CPU执行指令内部的事件,如程序的非法操作码,地址越界,运算溢出等。异常不能被屏蔽,一旦出现就必须立刻处理。
2.中断和异常的分类
外中断可以分为屏蔽中断和不可屏蔽中断,可屏蔽中断是指通过INTR线发出的中断请求,通过改变屏蔽字可以实现多重中断,从而使得中断处理得更加灵活。 不可屏蔽中断通常是紧急的硬件故障。
异常是不能被屏蔽的。
异常分为故障,自陷和终止。故障通常是由指令执行引起的异常,如非法操作码,除数为0等。
自陷是一种事先安排的“异常”事件,用于在用户态下调用操,作系统内核的程序,如条件陷阱指令。
终止是指出现了使得CPU无法继续执行的故障,如控制器出错,存储器校验等。
故障异常和自陷异常属于软件中断(程序性异常),终止异常和外部中断属于硬件中断。
3.中断和异常的处理过程
当CPU在执行第i条指令时候检测到异常或发送一个中断事件。CPU打断用户程序,转到相应的异常或中断处理程序中去执行,若中断或异常处理程序能够决定相应的问题,则在中断或异常处理程序的最后,CPU通过执行中断或异常返回指令,回到程序执行的第i或者第i+1条指令继续执行。若中断或异常处理发现程序是不可控的致命错误,则会终止用户程序。
1.3.3 系统调用
系统调用是指用户在程序中调用OS中所提供的一些子功能,系统调用可视为特殊的公共子程序。
系统调用按功能大致分为一下几类:
- 设备管理。完成设备的请求和释放,以及设备启动等功能。
- 文件管理。完成文件的读写,创建以及删除等功能。
- 进程控制。完成进程的创建,撤销,阻塞和唤醒等功能。
- 进程通信。完成进程之间消息传递和信号传递的功能。
- 内存管理。完成内存的分配,回收以及获取作业占用内存区大小以及始址等功能。
系统调用的处理运行在核心态。用户程序执行trap指令来发起系统的调用。
用户态转向核心态的一些例子:
(1)用户程序要求操作系统的服务,系统调用。
(2)发生中断
(3)用户程序中产生了一个错误状态。
(4)用户程序需要执行特权指令
(5)从核心态转向用户态也是一条特权指令,一般是中断返回指令。
从用户态转向核心态需要执行trap指令,因此trap指令是在用户态使用的。所以他不是特权指令
1.4 操作系统结构
1.分层法
分层法的优点:
- 便于系统的调试和验证,简化了系统的设计和实现。
- 易扩充和易维护。在系统中增加,修改或替换一层中的模块或整层时,只要不改变相应层的接口就不会影响其他层。
分层法的问题:
- 合理定义各层比较困难,依赖关系一旦确定,就会显得不是很灵活。
- 效率差。需要进行层级调用,增大的系统资源的开销。
2.模块化
在划分模块的时候要充分考虑模块的独立性问题,模块独立性越高,各模块之间的交互就越少。系统结构就会越清晰。
衡量模块独立性有两个标准:
- 内聚性:模块内部各部分间联系的紧密程度。内聚性越高,模块独立性越好。
- 耦合性 :模块间相互联系和相互影响的程度。耦合性越低,模块独立性越好。
模块化的优点:
- 提高了OS的设计的正确性,可理解性和可维护性
- 增强了操作系统的可适应性
- 加速了操作系统的开发过程
模块化的缺点:
- 模块间的接口规定很难满足对接口的实际需求
- 各模块的设计者齐头并进,无法找到一个可靠的决定顺序。
3.宏内核
从OS内核架构来划分,可以分为宏内核和微内核。
宏内核,称为单内核或大内核。将整个系统的主要功能模块都作为一个紧密联系的整体运行在核心态。
4.微内核
(1)微内核基本概念
微内核架构指的是将内核中的最基本功能保留在内核,将那些不需要在核心态执行的功能转移到用户态执行,从而降低内核设计的复杂性。
微内核结构将OS分为两大部分,微内核和多个服务器。
微内核通常包括:
- 与硬件处理紧密相关的部分
- 一些较为基本的功能
- 客户和服务器之间的通信
在微内核结构中,为了实现高可靠性,只有微内核运行在内核态。其余模块都运行在用户态。一个模块的错误只会使这个模块崩溃,不会使整个系统崩溃。
(2)微内核基本功能(“机制与策略”原理)
- 进程(线程)管理。进程(线程)之间的通信功能是微内核OS最基本的功能。(进程优先级,进程调度)
- 低级存储器管理。(页面置换算法,内存分配和回收的策略)
- 中断和陷入处理。(中断和响应处理)
(3)微内核的特点
优点:
- 扩展性和灵活性
- 可靠性和安全性。(一个模块的错误只会使这个模块崩溃,不会使整个系统崩溃。)
- 可移植性
- 分布式计算
微内核结构的主要问题是性能问题。需要频繁的切换核心态和用户态,开销大。
5.外核
外核的任务就是为虚拟机分配资源,并检查使用这些资源的企图,以确保没有机器会使用他人的资源。
优点是解决了映射问题,保持多个虚拟机彼此不发生冲突。他将多道程序与用户操作系统代码(在用户空间)加以分离。
1.5 操作系统引导
…
1.6 虚拟机
1.6.1 虚拟机的概念
1.第一类虚拟机管理程序
虚拟机作为用户态的一个进程,不允许执行敏感指令。虚拟机上的操作系统运行在虚拟内核态。虚拟机上中的用户进程认为自己运行在用户态。(确实是)
2.第二类虚拟机管理程序
依赖OS分配和调度资源的程序,更像一个普通的程序。
VMware
虚拟机上的OS称为客户OS
)
- 可移植性
- 分布式计算
微内核结构的主要问题是性能问题。需要频繁的切换核心态和用户态,开销大。
5.外核
外核的任务就是为虚拟机分配资源,并检查使用这些资源的企图,以确保没有机器会使用他人的资源。
优点是解决了映射问题,保持多个虚拟机彼此不发生冲突。他将多道程序与用户操作系统代码(在用户空间)加以分离。
1.5 操作系统引导
…
1.6 虚拟机
1.6.1 虚拟机的概念
1.第一类虚拟机管理程序
虚拟机作为用户态的一个进程,不允许执行敏感指令。虚拟机上的操作系统运行在虚拟内核态。虚拟机上中的用户进程认为自己运行在用户态。(确实是)
2.第二类虚拟机管理程序
依赖OS分配和调度资源的程序,更像一个普通的程序。
VMware
虚拟机上的OS称为客户OS