操作系统原理之概述
标签:操作系统原理
目录
什么是操作系统
操作系统是计算机用户和计算机硬件之间的中介。操作系统的目的是提供一个环境,使用户能够方便和有效地执行程序。
操作系统是一种管理计算机硬件的软件。硬件必须提供适当的机制,以确保计算机系统的正确运行,并防止用户程序干扰系统的正常运行。
操作系统的定义
- 操作系统是一个控制应用程序执行的程序,是计算机用户和计算机硬件之间的接口。
- 一个更常见的定义是,操作系统是在计算机上一直运行的一个程序(通常称为内核),其他都是应用程序。
- 操作系统关注的是资源和服务的分配,如内存、处理器、设备和信息。操作系统相应地包括管理这些资源的程序,如流量控制器、调度器、内存管理模块、I/O 程序和文件系统。
操作系统的特性
操作系统应该具有四种特性:
- 便利性。操作系统使计算机的使用更加方便。
- 效率。操作系统使计算机系统资源得到有效利用。
- 可扩展性。一个操作系统的构造应该允许有效地开发、测试和同时引入新的系统功能而不干扰服务。
- 吞吐量。一个操作系统的构造应使它能提供最大的吞吐量(每单位时间的任务数)。
操作系统的主要功能
- 资源管理:当操作系统中发生并行访问时,意味着当多个用户访问系统时,操作系统作为资源管理器工作,其职责是为用户提供硬件。它减少了系统中的负载。
- 进程管理:它包括各种任务,如进程的调度和终止。操作系统在同一时间管理各种任务。这里发生的 CPU 调度意味着所有的任务都将由诸多调度的算法来完成。
- 存储管理:文件系统机制用于存储的管理。NIFS、CFS、CIFS、NFS 等是一些文件系统。所有的数据都存储在硬盘的各个轨道上,都由存储管理器管理,包括硬盘。
- 内存管理:指的是主内存(primary memory)的管理。操作系统必须跟踪,有多少内存被使用,被谁使用。它必须决定哪个进程需要内存空间和多少。操作系统还必须分配和删除内存空间。
- 安全 / 隐私管理:隐私也是由操作系统通过密码来提供的,这样未经授权的应用程序就不能访问程序或数据。例如,Windows 使用 Kerberos 认证来防止未经授权的数据访问。
计算机系统的结构
用户界面(User Interface)的操作系统的组成包括:
- 用户
- 系统和应用程序
- 操作系统
- 硬件
每台通用计算机都由硬件、操作系统、系统程序和应用程序组成。硬件由内存、CPU、ALU 和 I/O 设备、外围设备和存储设备组成。系统程序由编译器、加载器、编辑器、操作系统等组成。应用程序由商业程序、数据库程序组成。
每台计算机都必须有一个操作系统来运行其他程序。操作系统协调各种系统程序和不同用户的应用程序之间的硬件使用。它只是提供了一个环境,其他程序可以在其中进行有用的工作。
操作系统是一组在计算机系统上运行的特殊程序,使计算机能够正常工作。它执行基本任务,如识别来自键盘的输入,跟踪磁盘上的文件和目录,向显示屏幕发送输出,并控制外围设备。
操作系统被设计为有两个基本目的:
- 它控制计算系统的资源在各种用户和任务之间的分配和使用。
- 它在计算机硬件和程序员之间提供了一个接口,简化了应用程序的编码、创建和调试,并使之成为可行。
操作系统必须支持以下任务。这些任务是:
- 提供使用编辑器创建、修改程序和数据文件的设施。
- 访问编译器,将用户程序从高级语言翻译成机器语言。
- 提供一个加载器程序,将编译后的程序代码移到计算机的内存中执行。
- 提供处理 I/O 编程细节的例程。
I/O 系统管理
追踪设备状态的模块被称为 I/O 流量控制器。每个 I/O 设备都有一个设备处理程序,它驻留在一个与该设备相关的独立进程中。
I/O 子系统包括:
- 一个内存管理组件,包括缓冲缓存和线程。
- 一个通用的设备驱动接口。
- 特定硬件设备的驱动程序。
汇编器(Assembler)
汇编器的输入是一个汇编语言程序。输出是一个对象程序,加上使加载器准备执行对象程序的信息。最开始时,计算机程序员拥有一台基本机器,通过硬件解释某些基本指令,通过编写一系列的一和零(机器语言)来为这台计算机编程,并将它们放入机器的存储器中。
编译器(Compiler)
高级语言,例如 FORTRAN、COBOL、ALGOL 和 PL/I 是由编译器和解释器处理的。编译器是一个接受 "高级语言" 的源程序并产生相应对象程序的程序。解释器是一个是执行机器语言的源程序的程序。同一名称(FORTRAN、COBOL 等)经常被用来指代编译器和其相关语言。
加载器(Loader)
加载器是一个加载对象程序并为其执行做准备的程序。有各种加载方案:加载、重定位和链接(direct-linking)。一般来说,加载器必须对对象程序进行加载(load)、重定位(relocate)和链接(link)。加载器是一个将程序放入内存并为其执行做准备的程序。在一个简单的加载方案中,汇编器在二级设备上输出程序的机器语言翻译,加载器将其放入核心(core)。装载器将用户程序的机器语言版本放入内存,并将控制权转移给它。由于加载器的程序比汇编器小得多,这使用户的程序有更多的核心可用。
操作系统的历史
操作系统多年来一直在不断发展。下表显示了操作系统的历史。
代号 | 年份 | 使用的电子装置 | OS 装置的类型 |
---|---|---|---|
第一代 | 1945-55 | 真空管 | 插头板(Plug Boards) |
第二代 | 1955-65 | 晶体管 | 批处理系统(Batch Systems) |
第三代 | 1965-80 | 集成电路(IC) | 多重编程 (Multiprogramming) |
第四代 | 1980 年以来 | 大规模集成 | PC |
操作系统的类型
操作系统执行所有的基本任务,如管理文件、进程和内存。因此,操作系统充当了所有资源的管理者,即资源管理器。因此,操作系统成为用户和机器之间的一个接口。
操作系统的类型。一些广泛使用的操作系统如下:
- 批处理操作系统(Batch Operating System):在计算机上对一个程序中的工作进行排序,无需人工干预。
- 时间共享(分时)操作系统(Time-sharing operating System):允许许多用户共享计算机资源。(资源的最大利用率)。
- 分布式操作系统(Distributed operating System):管理一组不同的计算机,使其看起来像一台计算机。
- 网络操作系统(Network operating system):运行在不同操作系统中的计算机可以参与到一个共同的网络中(它用于安全目的)。
- 实时操作系统(Real-time operating system):意味着应用程序固定的最后期限。
操作系统的例子有:
- Windows(基于 GUI,个人电脑)
- GNU/Linux (个人、工作站、ISP、文件和打印服务器、三层客户 / 服务器(Three-tier client/Server))
- macOS(Macintosh),用于苹果的个人电脑和工作站(MacBook,iMac)。
- Android(谷歌的操作系统,用于智能手机 / 平板电脑 / 智能手表)
- iOS (苹果公司用于 iPhone、iPad 和 iPod Touch 的操作系统)
批处理操作系统
这种类型的操作系统不与计算机直接互动。有一个操作者,他将具有相同参数的类似的工作分成批次。操作员的责任是对具有类似需求的工作进行分类。
批量作业系统的优势
- 要猜测或知道任何工作完成所需的时间是非常困难的。批处理系统的处理者知道工作在排队的时候会有多长时间。
- 多个用户可以共享批处理系统。
- 批处理系统的空闲时间非常少。
- 在批处理系统中很容易重复管理大型工作。
批量作业系统的缺点
- 计算机操作员应该对批处理系统非常了解
- 批量系统很难调试
- 有时成本很高
- 如果任何工作失败,其他工作将不得不等待一个未知的时间
基于批处理的操作系统的例子。薪资系统、银行报表等。
分时操作系统
每个任务都有一定的执行时间,以便所有的任务都能顺利地工作。每个用户在使用一个系统时都能得到 CPU 的时间。这些系统也被称为多任务系统(Multitasking Systems)。任务可以来自一个用户,也可以是不同的用户。每个任务得到的执行时间被称为量子(quantum)。在这个时间间隔结束后,操作系统就会切换到下一个任务。
分时操作系统的优势
- 每项任务都得到平等的机会
- 减少了软件重复的机会
- 可以减少 CPU 的闲置时间(idle time)
分时操作系统的劣势
- 可靠性问题
- 必须照顾到用户程序和数据的安全性和完整性
- 数据通信问题
时间共享操作系统的例子有。Multics、Unix 等。
分布式操作系统
这些类型的操作系统是计算机技术世界的最新进展,正在被全世界广泛接受,而且速度很快。各种自主的相互连接的计算机(autonomous interconnected computers)使用共享的通信网络相互通信。独立系统拥有自己的内存单元(memory unit)和 CPU。这些被称为松散耦合的系统(loosely coupled systems)或分布式系统。这些系统的处理器(processors)在大小和功能上有所不同。使用这些类型的操作系统的主要好处是,一个用户总是有可能访问实际上不存在于他的系统中的文件或软件,只要是在这个网络中连接的其他系统,即在该网络中连接的设备中启用远程访问(remote access)。
分布式操作系统的优势
- 一个系统的故障不会影响其他网络通信,因为所有系统都是相互独立的
- 电子邮件(Electronic mail)提高了数据交换的速度
- 由于资源是共享的,所以计算的速度和持久性都很高
- 对主机的负载减少
- 这些系统很容易扩展,因为许多系统可以很容易地添加到网络中。
- 数据处理的延迟减少
分布式操作系统的劣势
- 主网络(main network)的故障将停止整个通信。
- 要建立分布式系统,所使用的语言还没有很好的定义。
- 这些类型的系统并不容易获得,因为它们非常昂贵。不仅如此,底层软件也非常复杂,还没有被很好地理解。
分布式操作系统的例子有:LOCUS,等等。
网络操作系统
这些系统在服务器上运行,提供管理数据、用户、组、安全、应用和其他网络功能的能力。这些类型的操作系统允许在一个小型的私人网络上共享访问文件、打印机、安全、应用程序和其他网络功能。网络操作系统的一个更重要的方面是,所有的用户都清楚地知道底层配置,网络内所有其他用户,他们的个人连接等,这就是为什么这些计算机被普遍称为紧耦合系统(tightly coupled systems)。
网络操作系统的优势
- 高度稳定的集中式服务器(centralized servers)
- 通过服务器处理安全问题
- 新技术和硬件升级(up-gradation)很容易集成到系统中
- 可以从不同地点和不同类型的系统远程访问服务器
网络操作系统的劣势
- 服务器的成本很高
- 用户必须依赖一个中心位置(central location)来进行大部分操作
- 需要定期维护和更新
网络操作系统的例子有:微软 Windows Server 2003、微软 Windows Server 2008、UNIX、Linux、Mac OS X、Novell NetWare 和 BSD 等。
实时操作系统
这些类型的操作系统为实时系统服务。处理和响应输入所需的时间间隔非常小。这个时间间隔被称为响应时间(response time)。
当有非常严格的时间要求(time requirements)时,如导弹系统、空中交通管制系统、机器人等,就会使用实时系统。
两种类型的实时操作系统如下:
- 硬实时系统(Hard Real-Time Systems)。这些操作系统是为时间限制非常严格的应用而设计的,即使是最短的延迟也不能接受。这些系统是为拯救生命而建立的,就像自动降落伞或安全气囊一样,在发生任何事故时都需要随时可用。在这些系统中很少有虚拟内存(virtual memory)。
- 软实时系统(Soft Real-Time Systems)。这些操作系统适用于对时间限制不太严格的应用。
实时操作系统的优势
- 最大的消耗。最大限度地利用设备和系统,从而从所有的资源中获得更多的产出。
- 任务转移(Task Shifting)。在这些系统中,分配给转移任务的时间非常少。例如,在旧系统中,将一个任务转移到另一个任务需要大约 10 微秒的时间,而在最新的系统中,只需要 3 微秒。
- 专注于应用。关注正在运行的应用程序,而不太重视正在排队的应用程序。
- 嵌入式系统(embedded system)中的实时操作系统。由于程序的很小,实时操作系统也可以用于嵌入式系统,如运输和其他系统。
- 无错误:这些类型的系统是无错误的(error-free)。
- 内存分配。在这些类型的系统中,内存分配管理是最好的。
实时操作系统的劣势
- 有限的任务。很少有任务在同一时间运行,而且他们的注意力很少集中在少数应用上,以避免错误。
- 使用大量的系统资源。有时系统资源条件不是那么好,而且也很昂贵。
- 复杂的算法。算法非常复杂,对设计者来说很难编写。
- 设备驱动程序和中断信号。它需要特定的设备驱动程序和中断信号来最早响应中断。
- 线程优先级。设置线程优先级并不是好事,因为这些系统非常不容易切换任务。
实时操作系统的例子有:科学实验、医学成像系统、工业控制系统、武器系统、机器人、空中交通管制系统等。
操作系统的功能
操作系统作为用户和计算机硬件之间的通信桥梁(接口),目的是提供一个平台,用户可以在这个平台上方便、有效地执行程序。
操作系统是一个管理计算机硬件分配的软件。硬件的协调必须适当,以确保计算机系统的正确工作,防止用户程序干扰系统的正常工作。就像老板给他的雇员下命令一样,以类似的方式,我们向操作系统请求或传递我们的命令。操作系统的主要目标是使计算机环境使用起来更方便,第二目标是以最有效的方式使用资源。
什么是操作系统?
操作系统是一个程序,应用程序在其上执行,并作为用户和计算机硬件之间的通信桥梁(接口)。
操作系统执行的主要任务是分配资源和服务,如分配内存、设备、处理器和信息。操作系统还包括管理这些资源的程序,如流量控制器、调度器、内存管理模块、I/O 程序和文件系统。
操作系统的重要功能
- 安全:操作系统使用密码保护或者类似的其他技术来保护用户数据。它还可以防止对程序和用户数据的未授权访问(unauthorized access)。
- 对系统性能的控制:监控整个系统的健康状况,以帮助提高性能。记录服务请求和系统响应之间的响应时间,以对系统健康状况有一个完整的了解。这可以通过提供排查问题(troubleshoot)所需的重要信息来帮助提高性能。
- 作业核算(Job accounting):操作系统追踪各种任务和用户使用的时间和资源,这些信息可以用来追踪某个特定用户或用户组的资源使用。
- 错误检测辅助工具(Error detecting aids):操作系统不断监测系统,以检测错误,避免计算机系统出现故障(malfunctioning)。
- 其他软件和用户之间的协调:操作系统还协调和分配解释器、编译器、汇编器和其他软件给计算机系统的不同用户。
- 内存管理:操作系统管理主内存(Primary Memory)或主存储器(Main Memory)。主存储器是由一个大量的字节(bytes)或字(words)组成的,每个字节或字都被分配一个特定的地址。主存储器是快速存储(fast storage),它可以被 CPU 直接访问。要执行一个程序,首先应将其加载到主存储器中。操作系统为内存管理执行以下活动:它跟踪主内存,即哪些字节的内存被哪个用户程序使用。已经被分配的内存地址和尚未使用的内存地址。在多程序编程(multiprogramming)中,操作系统决定进程被授予访问内存的顺序,以及访问的时间。当进程提出要求时,它将内存分配给该进程,当进程终止或正在进行 I/O 操作时,它将内存取消分配。
- 处理器管理:在一个多程序环境中,操作系统决定进程访问处理器的顺序,以及每个进程有多少处理时间。操作系统的这一功能被称为进程调度(process scheduling)。一个操作系统为处理器管理执行以下活动:追踪进程的状态。执行这一任务的程序被称为流量控制器(traffic controller)。将 CPU 即处理器分配给进程,当一个进程不再需要时,取消分配处理器。
- 设备管理:操作系统通过它们各自的驱动程序(drivers)管理设备通信。它为设备管理执行以下活动:追踪所有连接到系统的设备,指定一个程序负责每个设备,称为输入 / 输出控制器。决定哪个进程可以访问某个设备以及访问多长时间,以有效和高效的方式分配设备,当设备不再需要时,将其取消分配。
- 文件管理:一个文件系统被组织成目录,以便有效或方便地导航和使用。这些目录可能包含其他目录和其他文件。操作系统进行以下的文件管理活动:它跟踪信息的存储位置、用户访问设置和每个文件的状态,以及更多...... 这些设施统称为文件系统(file system)。
此外,操作系统还以各种形式向计算机系统提供某些服务。操作系统为用户提供某些服务,这些服务可以如下:
- 程序执行。操作系统负责执行所有类型的程序,无论是用户程序还是系统程序。操作系统利用各种可用资源来有效地运行所有类型的功能。
- 处理输入 / 输出操作。操作系统负责处理各种输入,即来自键盘、鼠标、桌面等。操作系统以最适当的方式完成所有关于各种输入和输出的接口。例如,所有类型的外围设备(如鼠标或键盘)的性质是不同的,操作系统负责处理它们之间的数据。
- 对文件系统的操作。操作系统负责对所有类型的数据或文件的存储做出决定,即软盘(floppy disk)/ 硬盘 / 笔机(pen drive)等。操作系统决定应该如何操作和存储数据。
- 错误检测和处理。操作系统负责检测执行任何任务时可能发生的任何类型的错误或漏洞。安全性好的操作系统有时也作为一种对策(countermeasure),防止任何外部来源对计算机系统的任何形式的破坏,并可能处理它们。
- 资源分配。操作系统通过决定哪些资源由谁使用多少时间来确保所有可用资源的正确使用。所有的决定都是由操作系统作出的。
- 核算(Accounting)。操作系统对计算机系统中的所有功能进行跟踪记录。所有的细节,如发生的错误类型,都由操作系统记录。
- 信息和资源保护。操作系统负责以最安全的方式使用机器上的所有信息和资源。操作系统必须阻止来自任何外部资源破坏任何种类的数据或信息的企图。
所有这些服务都是由操作系统保证的,以方便用户,使编程任务更容易。所有不同种类的操作系统都或多或少地提供相同的服务。
操作系统的需求和功能
操作系统的目标
操作系统的基本目标是执行用户程序,使任务更容易完成。各种应用程序与硬件系统一起被用来执行这项工作。操作系统是管理和控制整套资源的软件,并有效地利用计算机的每个部分。图中显示了操作系统如何作为硬件单元和应用程序之间的媒介。
对操作系统的需求
- 操作系统是应用程序(Application)的平台。操作系统提供了一个平台,在这个平台上可以运行其他程序,称为应用程序。这些应用程序帮助用户轻松地执行特定的任务。它作为计算机和用户之间的一个接口。它的设计方式是在计算机上操作、控制和执行各种应用程序。
- 管理输入 / 输出单元(Input-Output unit)。操作系统还允许计算机管理自己的资源,如内存、显示器、键盘、打印机等。为了有效利用这些资源,需要对这些资源进行管理。操作系统控制各种系统输入、输出资源,并根据用户或程序的要求将其分配给他们。
- 一致的用户界面。操作系统为用户提供一个易于操作的用户界面,因此用户不必每次都学习不同的用户界面,可以专注于内容,尽快提高工作效率。操作系统提供了模板和用户界面组件,使计算机的工作对用户来说真正容易。
- 多任务处理。操作系统管理内存,允许多个程序在它们自己的空间里运行,甚至通过共享内存相互交流。多任务给用户带来了良好的体验,因为他们可以在一台电脑上同时执行多项任务。
操作系统的核心功能
操作系统有各种各样的功能要执行。操作系统的一些主要功能可以大致概述如下。
- 处理器管理。这涉及到中央处理单元(CPU)的管理。操作系统负责分配 CPU 的时间给不同的进程。当一个进程在执行完分配的时间段后完成其 CPU 处理,这被称为调度。操作系统使用的调度技术有多种类型。 - 最短作业优先(Shortest Job First,SJF)。需要最短的 CPU 时间的进程被安排在第一位。 - 圆周率调度(Round Robin Scheduling)。每个进程以循环的方式被分配一个固定的 CPU 执行时间。 - 基于优先级的调度(Priority Based Scheduling,非抢占式)。在这种调度中,进程是根据它们的优先级来调度的,也就是说,最高优先级的进程被安排在第一位。如果两个进程的优先级匹配,则根据到达时间进行调度。
- 上下文切换:在大多数多任务操作系统中,系统上的多个运行进程可能需要在执行中改变状态。即使在任何一个时间点上有多个进程在执行,也只有一个任务在前台执行,而其他任务则被放在后台。因此,处于前台的进程是由基于优先级的调度决定的,操作系统在切换到当前进程之前会保存前一个进程的执行状态。这就是所谓的上下文切换。
- 设备管理。操作系统与硬件和连接的设备进行沟通,并保持它们与 CPU 之间的平衡。这一点更为重要,因为 CPU 的处理速度比 I/O 设备的处理速度要高得多。为了优化 CPU 的时间,操作系统采用了两种技术 - 缓冲和线轴。 - 缓冲。在这种技术中,输入和输出数据被暂时储存在输入缓冲区(Input Buffer)和输出缓冲区(Output Buffer)。一旦输入或输出的信号分别发送到 CPU 或来自 CPU,操作系统通过设备控制器将数据从输入设备移动到输入缓冲区,并从输出缓冲区移动到输出设备。在输入的情况下,如果缓冲区满了,操作系统会向程序发送一个信号,由程序处理存储在缓冲区的数据。当缓冲区变空时,程序通知操作系统,操作系统重新加载缓冲区,输入操作继续进行。 - Spooling (Simultaneous Peripheral Operation On Line,同时在线的外设操作)。这是一种设备管理技术,用于处理同一输入 / 输出设备上的不同任务。当网络上有不同的用户共享同一资源时,那么就有可能有一个以上的用户在同一时间点给它下命令。因此,操作系统将每个用户的数据暂时储存在连接资源的计算机的硬盘上。个人用户不需要等待执行过程的完成。相反,操作系统将数据从硬盘上逐一发送到资源上。例如:打印机。
- 内存管理。在计算机中,CPU 和 I/O 设备都与内存互动。当一个程序需要执行时,它被加载到主内存中,直到执行完毕。此后,该内存空间被释放出来,可供其他程序使用。操作系统使用的常见内存管理技术是分区和虚拟内存。 - 分区。总的内存被分为相同大小或不同大小的各种分区。这有助于在内存中容纳一些程序。分区可以是固定的,即对内存中的所有程序保持不变,也可以是可变的,即当一个程序被加载到内存中时,内存被分配。后一种方法造成较少的内存浪费,但在适当的时候,它可能会变得支离破碎。 - 虚拟内存。这是操作系统使用的一种技术,允许用户加载大于计算机主内存的程序。在这种技术中,即使整个程序无法加载到主内存中,程序也会被执行,从而有效利用内存。
- 文件管理。操作系统管理计算机上的文件、文件夹和目录系统。计算机上的任何数据都是以文件的形式存储的,操作系统使用文件分配表(File Allocation Table,FAT)或 Linux 中称为 inode 的数据结构保存所有文件的信息。FAT 存储文件的一般信息,如文件名、类型(文本或二进制)、大小、起始地址和访问模式(顺序 / 索引顺序 / 直接 / 相对,sequential/indexed sequential/direct/relative)。操作系统的文件管理器帮助创建、编辑、复制、分配内存给文件,同时也更新 FAT。操作系统还负责以适当的访问权限打开文件,以读取或删除文件。
操作系统服务
操作系统的主要目的是为程序的执行提供环境。因此,操作系统为程序和这些程序的用户提供某些服务。
- 程序执行:操作系统提供了一个方便的环境,用户可以运行他们的程序。操作系统对程序进行内存分配,将它们加载到适当的位置,以便它们能够执行。用户不需要担心所有这些任务。
- I/O 操作:为了执行一个程序,它通常需要一个 I/O 操作。例如,它可能需要读取一个文件并打印输出。当所有这些 I/O 操作被执行时,用户无法直接控制 I/O 设备。所有的 I/O 都是在操作系统的控制下进行的。
- 通信:在一个系统上执行的各种进程可能需要通信,以交换数据或信息。操作系统通过使用消息传递(message passing)的设施来提供这种通信。在消息传递中,信息包由操作系统在进程之间移动。