操作系统【引论】
操作系统(Operating System, OS)是配置在计算机硬件上的第一层软件,是对硬件系统的首次扩充。主要作用是管理好这些设备,提高它们的利用率和系统的吞吐量,并未用户和应用程序提供一个简单的接口,便于用户使用。OS是现代计算机系统中最基本和最重要的系统软件,而其它的诸如编译程序、数据库管理系统等系统软件,以及大量的应用软件,都直接依赖于操作系统的支持,取得它所提供的服务。事实上OS已成为现代计算机系统、多处理机系统、计算机网络中都必须配置的系统软件。
操作系统的目的和作用
目的:
1.方便性:使用编译命令将用户采用高级语言书写的程序翻译成机器代码。
2.有效性:第一层含义是提高系统资源的利用率;另一层含义是提高系统的吞吐量。
3.可扩充性
4.开放性:指系统能遵循世界标准规范,特别是遵循对OS的开放性系统互连OSI国际标准。
作用:
1.OS作为用户与计算机硬件系统之间的接口
2.OS作为计算机系统资源的管理者
3.OS实现了对计算机资源的抽象
发展过程:
1.人工操作方式:用户独占全机,CPU等待人工操作。
2.脱机输入输出方式:事先将装有用户程序和数据的纸带装入纸带输入机,在外围机的控制下,把纸带上的数据输入到磁带上(类似于磁盘)。当CPU需要时,从磁带将其高速地调入内存。反之类同。
优点:减少了CPU的空闲时间,提高了I/O速度。
3.单道批处理系统:首先监督程序将磁带第一个作业装入内存,运行控制权在该作业,该作业处理完成时,控制权交回到监督程序,再由监督程序把磁带上的第二个作业调入内存。系统自动对作业成批处理。(内存始终只保持一道作业—单道批处理)。
缺点:内存浪费,不能充分利用系统资源。
4.多道批处理系统:用户所提交的作业先存放在外存,排成一个“后备队列”,再由作业调度程序按一定的算法从队列选择若干作业调入内存,使他们共享CPU和系统中的各种资源。
缺点:资源利用率提高,系统吞吐量大,平均周转时间长,无交互能力。
5.分时系统:在一台主机上连接了多个带有显示器和键盘的终端,同时允许多个用户通过自己的终端,以交互方式使用计算机,共享主机中的资源。因此,作业直接进入内存,采用轮转运行方式,系统配置一个多路卡(实现分时多路复用),及时接收用户终端命令(数据)。
特征:多路性、独立性、及时性、交互性。
6.实时系统:系统能及时响应外部事件的请求,在规定的时间内完成对该事件的处理,并控制所有实时任务的协调一致的运行。
特征:多路性(周期性信息采集,多个对象或执行机构进行控制)、独立性、及时性、交互性、可靠性(多级容错措施)。
基本特征:
1.并发性:
引入进程:提高了系统资源的利用率和系统吞吐量,并改善了系统的性能
引入线程:对它的调度所付出的开销比进程小的多,能更高效地提高系统内多个程序间并发执行的cheng程度。
2.共享性:
互斥共享方式:在一段时间内只允许一个进程访问的资源称为临界资源或独占资源。
同时访问方式:允许在一段时间内由多个进程同时对它们进行访问。
3.虚拟技术:通过技术把一个物理实体变为若干个逻辑上的对应物
1)时分复用技术:利用处理机的空闲时间运行其他程序,提高处理机的利用率
2)空分复用技术:利用存储器的空闲时间存放其他程序,提高内存的利用率
4.异步性:进程以不可预知的速度向前推进
主要功能:
1.处理机管理功能:
1)进程控制:创建和撤销进程,分配资源、资源回放、控制进程运行过程中的状态转换
2)进程同步:为多个进程运行协调
进程互斥:为每个临界资源配置一把锁、进程同步
3)进程通信:实现相互合作之间的进程之间的信息交换
4)调度:作业调度,进程调度
2.存储器管理功能:
存储器管理的主要任务:为多道程序的运行提供良好的环境,方便用户使用存储器,提高存储器的利用率,并能从逻辑上扩充内存。
1)内存分配:静态分配、动态分配
2)内存保护:确保每道用户程序都只在自己的内存空间内运行,彼此互不干扰。一种简单的内存保护机制是设置两个界限寄存器
3)地址映射:将地址空间中的逻辑地址转换为内存空间中与之对应的物理地址
4)内存扩充:借助于虚拟存储技术,逻辑上扩充内存容量
3.设备管理功能:
设备管理的主要任务:完成用户进程提出的I/O请求,为其分配所需的I/O设备;提高CPU和I/O设备的利用率,提高I/O速度,方便用户使用I/O设备
1)缓存管理:缓和CPU和I/O设备速度不匹配的矛盾
2)设备分配:根据用户进程I/O请求、系统现有资源情况以及按照某种设备的分配策略,为之分配其所需的设备
3)设备处理:用于实现CPU和设备控制器之间的通信
4.文件管理功能:
文件管理的主要任务:对用户文件和系统文件进行管理,方便用户使用,并保证文件的安全性
1)文件存储空间的管理:为每个文件分配必要的外存空间,提高外存的利用率,并能有助于提高文件系统的存、取速度
2)目录管理:为每个文件建立其目录项,并对众多的目录项加以有效的组织,以实现方便按名存取,即用户之须提供文件名便可对该文件进行存取
3)文件的读/写管理和保护
5.操作系统与用户之间的接口:
1)用户接口
2)程序接口
系统调用:
如果一个进程在用户态需要使用内核态的功能,就进行系统调用从而陷入内核,由操作系统代为完成。Linux的系统调用主要有以下这些:
进程控制:fork(); exit(); wait();
进程通信:pipe(); shmget(); mmap();
文件操作:open(); read(); write();
设备操作:ioctl(); read(); write();
信息维护:getpid(); alarm(); sleep();
安全:chmod(); umask(); chown();
OS结果设计:
传统的操作系统结构:
无结构操作系统 ——> 模块化结构OS ——> 分层式结构OS
1.大内核:
大内核实将操作系统功能作为一个紧密结合的整体放到内核。由于各模块共享信息,因此有很高的性能。
2.微内核:
由于操作系统不断复杂,因此将一部分操作系统功能移出内核,从而降低内核的复杂性。移出的部分根据分层的原则划分成若干服务,相互独立。在微内核结构下,操作系统被划分成小的、定义良好的模块,只有微内核这一个模块运行在内核态,其余模块运行在用户态
微内核OS机构:
1)足够小的内核
2)基于客户/服务器模式
3)应用”机制与策略分离“原理
4)采用面向对象技术
微内核的基本功能:
1)进程(线程)管理
2)低级存储器管理
3)中断和陷入处理
微内核操作系统存在的问题:运行效率低
微内核OS的效率降低的最主要原因:
频繁的在用户态和核心态之间进行切换。即在完成一次客户对OS提出的服务请求时,需要利用消息实现多次交互和进行用户/内核模式以及上下文的多次切换
中断分类:
外中断:
由CPU执行指令以外的事件引起,如I/O完成中断,表示设备输入/输出处理已经完成,处理器能够发送下一个输入/输出请求。此外还有时钟中断、控制台中断等。异常由CPU执行指令的内部事件引起,如非法操作码、地址越界、算术溢出等。陷入在用户程序中使用系统调用。