前言
部分朋友可能对底层较为感兴趣,希望多了解一些操作系统,该文为这些朋友提供一些方便。操作系统博大精深,本文只能简要介绍一二,皆为操作系统基本知识,多数只能就就原理概念作扼要论述,具体细节有依赖于专门的教材予以论述。若想对部分细节较感兴趣,也可与笔者交流。本文重于原理,不涉及具体系统,语言可能枯燥无味,望朋友们谅解。考虑到严谨性,本文参考教材上概念。由于笔者能力有限,疏忽之处在所难免,还望各位朋友指正。
引论
1.1 操作系统的目标和作用
目前存在多种类型的OS,诸如多道批处理系统,分时系统,实时系统和早期曾存在的人工操作方式和单道批处理系统(已淘汰),目标各有侧重。多道批处理系统重在提高资源利用率和吞吐量,分时系统重在人机交互,实时系统则要求能及时响应外部事件的请求。此外,微机操作系统还有单用户单任务操作系统,例如CP/M和MS-DOS,单用户多任务操作系统,例如Windows,和多用户多任务操作系统,例如UNIX OS和它的两个有名的变种Solaries和Linux OS.
操作系统的目标一般有四个(1)有效性,有效性有两个含义,提高系统资源利用率和吞吐量(2)方便性(3)可扩充性(4)开放性
1.2 操作系统的作用
从一般用户的观点看,OS是用户与硬件系统的接口。从资源管理的观点看,OS是系统资源的管理者。
1.OS作为用户与计算机硬件系统的接口
用户在OS的帮助下,能够方便、快捷、安全、可靠地操纵计算机硬件和运行自己的程序。用户可通过三种方式使用计算机:(1)命令方式(2)系统调用方式(3)图形、窗口方式
2.OS作为计算机系统资源的管理者
在计算机中资源可分为四类:处理器、存储器、I/O设备以及信息。当计算机供多个用户使用时,用户对系统中共享的资源可能发生冲突,操作系统必须协调各资源的使用。
3.OS实现对计算机硬件资源的抽象
OS是铺设在硬件上的多层软件,不仅增加系统功能还隐藏了对硬件操作的细节。
1.3 操作系统的基本特性
1.3.1 并发性
1.并行与并发
并行是指两个或者多个事件在同一时刻发生,而并发是两个或多个事件在同一时间间隔内发生。
2.引入进程
进程是指在系统中能独立运行并作为资源分配的基本单位,它是由一组机器指令、数据和堆栈等组成,是一个能独立运行的活动实体。
3.进入线程
在引入线程的OS中,通常把进程作为分配资源的基本单位,线程作为独立运行和调度的单位。线程比进程更小,基本不拥有资源,调度开销很小,引入线程可以提高系统的并发性。
1.3.2共享性
在操作系统环境下,共享是指资源可供内存多个并发执行的进程(线程)共同使用。共享有两种:互斥共享和同时访问。
1.3.3虚拟技术
操作系统有两种虚拟技术,时分复用和空分复用。时分复用主要有虚拟处理机技术和虚拟设备技术,空分复用主要有虚拟磁盘和虚拟存储器技术。
1.3.4异步性
进程是以不可预知的方式向前推进,但只要操作系统进程管理机制完善且运行环境不变,作业的运行将获得完整的结果。
1.4操作系统的主要功能
操作系统的主要任务是为多道程序的运行提供良好的环境,以保证多道程序高效的运行,并最大限度的提高各种资源利用率和方便用户使用。为此,操作系统必须具备处理机管理,存储器管理,设备管理和文件管理。
1.4.1处理机管理
1.进程控制
程序段、相关的数据段和PCB构成进程实体。进程有三种基本状态(1)就绪,拥有除CPU以外的资源(2)执行(3)阻塞,发生某事件无法执行。此外还有挂起,创建和终止状态。
2.进程同步
进程同步的主要任务是协调多个进程的次序,使进程共享资源和相互合作,从而便程序的执行具有可再现性。进程有两种制约关系:间接和直接。间接是竞争,直接是合作。进程同步的规则:(1)空闲让进(2)忙则等待(3)有限等待(4)让权等待
3.进程通信
通常采用直接通信方式,由源进程利用发送命令将消息挂到目标进程的消息队列上,再由目标进程利用接收命令取出消息。此外还有共享存储器和管道。
4.进程调度
高级调度,主要是作业调度,算法FCFS、SJF 高优先权
中级调度,将暂时不能运行的进程调度到外存上等待。
低级调度,进程调度,算法FCFS、SPF、时间片、多级反馈队列
5.死锁
条件:(1)互斥(2)请求与保持(3)不剥夺(4)环路等待
处理死锁:预防、避免、检测、解除
检测主要使用银行家算法。
1.4.2存储器管理
存储器管理的主要任务提供多道程序运行的环境,方便用户使用,提高内存利用率和从逻辑上扩充内存,程序员可用内存远大于实际内存,运行时使用请求段页式分配内存,只需少量段即可运行。
程序装入:绝对、可重定位和动态运行时。绝对需要熟悉内存使用情况,可重定位目标模块从0开始,装入后重定位,不可移动。动态运行时可移动,目前主流。三者编译都产生逻辑地址,绝对方式可以指定物理地址,但不能运行多道程序。
1.内存分配
连续方式;单一连续分配、固定分区分配、动态分区分配、可重定位分区分配、对换
离散方式:基本分页、基本分段、段页式,请求分页,请求分段,请求段页式
现在主流操作系统使用的是段页式也就是虚拟存储器技术。
2.内存保护(硬件)
一种比较简单的保护机制是设置两个界限寄存器,访问时检查,由硬件实现。
3.地址映射
分页是将进程的逻辑地址空间分成若干大小相等的片,内存物理块作同样的划分,分配内存时以页为单位。分段管理是将作业的地址空间划分若干段,每段定义一组信息,方便编程和共享以及动态增长和链接。段页式是两者的结合,先分段再分页,请求式则是只调入少量段运行,等到缺页(段)时再调入。页面置换算法:OPT、FIFO、LR、CLOCK、LFU PBA
分页地址变换(硬件):页表的功能由一组专门寄存器实现,系统设置一个PTR,页表常驻内存,当进程访问某个逻辑地址时,分页地址变换机构将有效地址分为页号和页内地址,以页号检索页表,当页号大于页表长度时越界中断,否则将页表始址与页号和页表项长度的乘积相加,得到物理地址。分段与此类似,只不过段长不等,地址变换时兼顾段长与段内地址。
4内存扩充
(1)请求调入
(2)置换,将暂时不能运行的进程调换到外存上,外存通常分为文件区和对换区。
1.4..3设备管理
设备管理用于管理外围设备,完成I/O请求,分配设备,提高设备利用率。主要有缓冲管理、设备分配和设备处理,比较简单,目前较多使用SPOOLing技术,设备的中断由操作系统和硬件共同实现。I/O控制方式:程序I/O方式、中断方式、DMA方式、I/O通道、I/O处理机。
1.4.4文件管理
文件管理的主要任务是对用户文件和系统文件进行管理,方便用户使用,保证文件安全性。
1.文件的逻辑结构
文件其它方面较为简单,,操作系统建立文件时会建立FCB,记录文件必备信息,基本操作通过FCB进行。逻辑结构有两种:(1)有结构文件,又称记录式文件,有顺序、索引和索引顺序三种(2)无结构文件,又称流式文件。UINX系统中,所有文件都视为流式,系统不进行格式处理。
此外还有直接文件和哈希文件。
2.外存分配
(1)连续分配
(2)链接分配:隐式和显式
(3)索引分配:单级、多级和混合
混合索引分配在UNIX采用,分为直接、一次间接和多次间接地址。最大可支持4TB文件。
3.目录结构
(1)单级目录
(2)两级目录
(3)多级目录 相对两级而言,层次结构清晰,查询速度更快,能有效的进行文件管理和保护。UNIX、Linux、Windows都采用了该结构。
4.文件存储空间管理
(1)空闲表法,类似于连续分配方式,建立空闲表,记录空间盘块号
(2)空闲链表法
(3)位示图法,利用二进制的一位表示空闲盘块使用情况
(4)成组链接法,UNIX常用,将空闲盘块分成组,每一组的盘块总数记入前一组的空闲块中,第一组计入空闲盘块号栈中。
5 文件共享与保护
(1)基于索引结点
(2)利用符号链接
保护主要依靠ACL实现,此外有用户的口令和密码。
1.5 OS结构设计
1.5.1传统的操作系统结构
1.无结构操作系统
早期的操作系统只注重功能的实现和获得高的效率,没有一致的设计思想,内部结构混乱,可以任意调用,调试困难且难以维护。
2.模块化结构OS
该技术使用分解和模块化来控制大型软件的复杂度,按其功能划分为若干个具有一定独立结构的模块,并规定之间的接口。设计中每一个决定必须建立在另一个的基础上,但各模块设计并进,造成决定的冲突性。
3.分层式结构OS
每一步的设计都是可靠的,每一层仅能使用其底层所提供的功能和服务,可使系统的调试和验证变得更容易。但因此系统效率降低,增加许多不必要的开销。
1.5.2微内核OS结构
微内核能有效的支持多处理机运行,适用于分布式环境。当今流行的OS,几乎全部采用了微内核结构,如Mach OS和Windows。
1.微内核的基本概念(1)足够小的内核(2)基于客户/服务器模式(3)应用机制与策略分离(4)采用面向对象技术
2.微内核的基本功能(1)进程(线程)管理2)低级存储器管理3)中断和陷入管理
3.微内核的优点(1)提高可扩展性(2)增强可靠性(3)可移植性(4)提供对分布式系统的支持5)融入面向对象技术
4.存在的问题:运行效率低下,完成一次服务请求需要多次上下文切换。
后记:本文只是让读者对操作系统结构有个大致的概念,什么功能该操作系统实现,很多细节考虑到篇幅都省略了。此外,操作系统与计算机体系结构(CPU设计)、计算机网络、计算机组成原理有着密切的关系,若有志于改善操作系统的朋友可以去了解,会对操作系统的设计有更深的理解。