操作系统是计算机科学的基础课程,是理解计算机工作原理的重要基石。学习操作系统不仅可以使程序员理解计算机操作的逻辑,还有助于培养软实力编程。如果你真的想在编程的道路上走下去,那么操作系统将是一个重要的加速器。本系列将进入操作系统课程,学习计算机世界的规则。
一、什么是操作系统?
说到操作系统,很多人会瞬间想到微软 Windows系列,有经验的程序员可能会想到unix,Linux等。但是我恐怕很多人都能不要说任何关于操作系统的定义。事实上,在计算机科学领域还没有形成统一规范的定义。出现这个问题,一方面是因为操作系统实现了两个相对独立的功能——扩展机器和管理资源,另一方面也取决于从什么角度看待操作系统——用户的观点或体系的观点。
1、操作系统作为分机
操作系统可以将硬件细节与程序员隔离开来。用户可以直接打开文件,读写文件,更改目录等。通过使用操作系统提供的各种命令。在做这些事情的时候,他们只需要关心自己的目标,不需要考虑硬件如何动作,从而隐藏了底层硬件的特性。通过操作系统的处理,呈现给用户的机器功能更强大,使用更方便。通常,功能更强大的机器通过在逻辑之上覆盖各种软件而被称为扩展机器或虚拟机。
2、操作系统作为资源管理器
操作系统可以用来管理数据、程序等硬件资源和软件资源,控制和协调各种程序对这些资源的利用,尽可能充分发挥各种资源的作用。作为资源管理器,操作系统主要做以下工作:
随时监控各种资源并记录其状态。
实施某种策略来决定谁获得资源,如何获得,获得多少。
分配资源给需求者使用。
回收资源进行再分配。
3、用户操作系统的观点
操作系统应该介于用户和计算机硬件系统之间,为用户提供使用计算机系统的接口。
4、从系统角度看操作系统
操作系统是硬件之上的第一层软件。它管理计算机系统中各种硬件资源和软件资源的分配,解决大量的资源请求冲突,决定谁、什么时候、分配多少资源,使资源得到高效、公平的利用。此外,操作系统还应控制IO设备和用户程序,以确保设备的正常运行,防止非法操作,并及时诊断设备的故障。
综上所述,我们可以得到:
操作系统是软件,而且是系统软件,即操作系统由一套程序组成。
操作系统的基本功能是控制和管理系统中的各种资源,有效地组织多个程序的运行。
操作系统提供了很多服务,方便了用户,扩展了硬件功能。
简而言之,操作系统通常可以定义为控制和管理计算机系统中各种硬件和软件资源,有效组织多个程序运行的系统软件,是用户和计算机之间的接口。
二、操作系统的主要功能
操作系统的主要功能如下:存储管理、作业和进程管理、设备管理、文件管理和用户界面服务。
1、存储管理
存储管理的主要功能包括内存分配、地址映射、内存保护和内存扩展。
1.1内存分配
内存分配的主要任务是为每个程序分配一定的内存空间。为此,操作系统必须记录整个内存的使用情况,处理用户提出的应用,按照一定的策略实现分配,接收系统或用户释放的内存空间。由于内存是一种宝贵的系统资源,如何提高内存的利用率,减少内存的浪费是makin时应该考虑的问题
当CPU执行用户程序时,它从内存中取出指令或数据,因此需要将所用的相对地址(或逻辑地址)转换成内存的物理地址。
1.3内存保护
不同的用户程序都放在同一个内存里,所以要保证它们在各自的内存空间里移动,互不干扰,也不侵占操作系统空间。因此,需要建立内存保护机制。
1.4内存扩展
一个系统的内存容量是有限的,所以它可以不要随意扩大。但是,当内存供不应求时,就需要采用虚拟存储技术。将程序当前使用的部分放在内存中,其余的放在磁盘上,然后根据程序执行的要求和当时内存使用的情况,将需要的部分随机调入内存;如有必要,应该为其他程序回收分配的内存(内存替换)。
2、作业和流程管理
操作系统中有两个重要的概念,即作业和进程。简而言之,用户的计算任务称为作业,程序的执行过程称为进程(进程是分配资源和在处理器上运行的基本单位)。众所周知,计算机系统中最重要的资源是CPU,其管理的好坏直接影响整个系统的性能。因此,作业和进程管理的基本功能包括作业和进程调度、进程控制和进程通信。
2.1作业和流程调度
一个作业通常可以通过两级调度在CPU上执行。首先是作业调度,将选定的一批作业放入内存,并分配其他必要的资源为这些作业建立相应的进程。然后,进程调度根据一定的算法从准备好的进程中选择一个合适的进程在CPU上运行。
2.2过程控制
进程是操作系统中的活动实体。过程控制包括创建过程、取消过程、阻塞过程、唤醒过程等。
2.3过程沟通
许多过程在活动中会相互依赖或相互制约。为了保证系统中的所有进程都能正常运行,需要建立一个进程同步机制,它可以分为同步模式和互斥模式。相互协作的进程经常需要交换信息,因此操作系统需要提供一种通信机制。
3、设备管理
设备的分配和驱动是操作系统的责任,即设备管理的主要功能包括:缓冲区管理、设备分配、设备驱动和设备独立性。
3.1缓冲管理
缓冲区管理的目的是解决CPU和外设速度不匹配的矛盾,使它们充分并行工作,提高各自的利用率。
3.2设备配置
根据用户 IO请求和相应的分配策略、外部设备、通道、控制器等。被分配给用户。
3.3设备驱动程序
实现了CPU、通道和外设之间的通信,CPU向通道发送IO指令,驱动相应的设备进行IO操作。当IO任务完成时,通道向CPU发送一个中断信号,由相应的中断处理程序处理。
3.4设备独立性
设备无关也叫设备无关,即用户编写的程序与实际使用的物理设备无关,操作系统将用户程序中使用的逻辑设备映射到物理设备上。
4、文件管理
文件管理功能包括:文件存储空间管理、一般文件操作管理、目录管理、文件读写管理和访问控制。
4.1文件存储空间的管理
系统文件和用户文件都应该放在磁盘上。因此,文件系统应该统一管理所有文件及其存储空间:为新文件分配必要的外部存储空间,回收释放的文件空间,提高外部存储的利用率。
4.2文件操作的一般管理
文件操作的一般管理包括:文件的创建、删除、打开和关闭等。
4.3目录管理
目录管理包括目录文件的组织,用户的实现"按名称访问到文件,以及目录的快速查询和文件共享。
4.4文件的读写管理和访问控制
根据用户的要求,读或写
用户在使用计算机时可以直接使用操作系统提供的用户界面,操作系统对外提供多种服务,使用户可以方便有效地使用计算机硬件和运行自己的程序,使软件开发变得简单高效。现代操作系统提供了三种用户界面:程序界面、命令行界面和图形用户界面。
5.1程序接口
系统调用又称系统调用接口,是操作系统内核、用户程序和应用程序之间的接口,它位于操作系统核心层的最外层。所有内核之外的程序都必须被系统调用,才能获得操作系统的服务。系统调用只能在程序中使用,不能在终端上作为命令直接输入和执行。因为系统调用可以改变处理器的执行状态,从用户状态变成内核状态,直接进入内核执行,执行效率非常高。用户在自己的程序中使用系统调用来获得系统提供的许多基本服务,
5.2命令行界面
提示后,用户从键盘输入命令,命令解释器接收并解释这些命令,然后传递给操作系统的内部程序,执行相应的功能。命令行界面不属于操作系统的内核,相应的程序运行在用户空间。
5.3图形用户界面
使用图形用户界面工具,如鼠标、窗口、菜单、图标等。用户可以直观、方便、有效地使用系统服务和各种应用程序和实用程序。图形用户界面不属于操作系统的内核,相应的程序运行在用户空间。
三、操作系统的类型
操作系统有五种基本类型:批处理系统、分时系统、实时系统、网络系统和分布式系统。
1、批处理系统
大多数早期的计算机操作系统是批处理系统,用户计算任务作为乔布斯。工作流程通常如下:
将操作员提交的作业卡放在读卡器上,通过假脱机输入程序将这些作业及时发送到可直接访问的备份内存(如磁盘)中。
作业调度程序根据系统的当前情况和每个后台作业的特点,按照一定的调度原则选择一个或几个适当匹配的作业加载到内存中运行。
在内存中,多个作业交替执行。当一个作业完成后,系统将该作业的计算结果交给假脱机输出程序输出,并回收该作业的所有资源。
以上步骤会一直重复,让每个作业一个一个流入系统,直到没有作业为止。每个作业处理完毕后,它将依次退出系统,形成一个连续的作业流。
可以看出,批处理系统有两个特点-多通道和批处理
"多频道意味着多个作业存储在内存中,大量备份作业存储在外部内存中。因此,该系统的调用原理相当灵活,很容易选择一批合理匹配的作业转移到内存中进行操作,从而充分发挥系统资源的利用率,增加系统的吞吐量。
"批处理意味着在系统运行期间不允许用户和机器之间的交互,也就是说,一旦用户向系统提交了一个作业,他就可以不要直接干预工作的运作。
批处理操作系统的优点:
系统资源利用率高。
系统吞吐量很大。
批处理操作系统的缺点:
工作的等待时间很长。
没有交互能力
2、分时系统
针对批处理操作系统的缺点,人们提出了分时系统,它允许用户通过终端设备在线使用计算机。
在单CPU系统中,不可能实现多个程序的并行(两个或两个以上的事件或活动同时发生,称为并行)。为了提高多程序环境下的资源利用率,往往采用多程序分时共享软硬件资源的技术,分时就是时间的共享。在分时系统中,分时主要是指多个程序共享CPU时间。共享时间的单位叫做时间片,它往往很短,比如几十毫秒。这种分时的实现需要中断机制和时钟系统的支持。CPU时间由时钟系统划分成时间片,每个时间片由操作系统依次分配给每个程序,每个程序一次只能运行一个时间片。当时间片计数完毕时,会产生一个时间中断,并将控制权移交给操作系统。操作系统选择另一个程序,给它一个时间片让它运行。在给定的时间,再次中断,重新选择程序(或作业)运行,以此类推。
当两个或多个程序在一段时间内在同一个CPU上执行时,称为并发。在分时系统中,一个物理CPU(或多个物理CPU)在几个程序之间的复用是通过使用并发机制来实现的。
分时系统的基本特征:
同时,几个用户可以同时使用计算机系统。
交互性,用户可以很容易地与系统进行交互。
独立性,系统中每个用户可以批量独立操作,互不干扰,互不破坏。
时效性,用户可以在很短的时间内得到系统响应。
分时系统的优点:
为用户提供一个友好的界面,即用户能在短时间内得到响应,并能通过对话完成编程、调试、修改、运算和计算结果。
为了促进计算机的普及和应用,分时系统可以带多个终端,由远近的多个用户同时使用。
它便于资源共享和信息交流,为软件开发和工程设计提供了良好的环境。
常用的通用操作系统是分时系统和批处理系统的结合,其原理是:分时第一,批处理第二。前景对需要频繁互动的工作做出反应,而背景处理对时间不敏感的作业。
3、实时系统
在计算机的许多应用领域中,要求对实时采样的数据进行及时处理并做出相应的响应。如果超过限定时间,信息可能会丢失或影响下一批信息的处理。实时系统是指计算机能够及时响应外部事件的请求,在规定的时间内完成对事件的处理,并控制所有设备和任务协调工作的操作系统。实时系统的目标是在严格的时间框架内以高可靠性和完整性响应外部请求。其主要特点是:资源的分配和调度首先要考虑实时性,然后才是效率。此外,实时系统应该具有很强的容错能力。实时系统现在有三种典型的应用形式:过程控制系统、信息查询系统和事务处理系统。
实时系统和分时系统的区别:
交互性:分时系统提供了一个可供多个用户随时使用的计算机系统,用户与系统之间具有很强的交互操作或对话能力,而实时系统的交互能力相对较差。
实时性:分时系统响应时间的要求是人们可以接受的等待时间,数量级通常是秒;但是,实时系统对响应时间的要求很高,可以达到毫秒级甚至微秒级。
可靠性:虽然分时系统也要求系统可靠性,但实时系统要求更高的可靠性。
4、网络操作系统
由于单台计算机的资源毕竟是有限的,为了实现异地计算机之间的数据通信和资源共享,可以通过数据通信系统将分布在异地的计算机和终端设备连接在一起,形成一个系统,这就是计算机网络,而计算机网络需要两大支柱——计算机技术和通信技术。
计算机的特征:
分布:网络节点计算机可以位于不同的
互联:利用互联网络将不同地方的资源(包括硬件资源和软件资源)在物理上和逻辑上连接在一起,在统一的网络操作系统的控制下,实现网络通信和资源共享。
可见性:计算机网络中的资源对用户是可见的,并且用户任务通常在本地机器上运行。网络操作系统提供的服务可以共享其他主机上的资源。
网络操作系统一般基于各主机的本地操作系统,其功能是实现网络通信、资源共享和保护,提供网络服务和网络接口。在网络操作系统的作用下,屏蔽了用户对各主机相同资源的不同访问方式。
网络操作系统的特点:
一致性:网络操作系统应该为共享资源提供一致的接口,无论内部采取什么方法。
资源透明性:网络操作系统可以实现资源的最优选择,它知道整个网络系统中共享资源的状态和使用情况,可以根据用户的要求自动做出选择。
可靠性:网络操作系统利用硬件和软件资源的物理分散性来实现可靠的运行。
处理自治:网络操作系统中的每台主机都有独立的处理能力,每台主机上的资源都被认为是本地拥有的。
并行性:计算机网络中的任何工作站或通信计算机都称为节点。网络操作系统不仅在自己的计算机上实现多个程序的并发执行,而且在网络系统的各个节点上实现进程的真正并行执行。
5、分布式操作系统
分布式操作系统将大量的计算机组织在一起,通过高速网络连接起来。该分布式系统有效地解决了多个广泛分布的计算机系统之间的资源共享、并行工作、信息传输和数据保护问题。
分布式操作系统的特点:
灵活性:根据用户根据用户的需求和使用情况,可以方便地对系统进行修改或扩展。
可靠性:如果系统中的一台机器能够如果一台机器不能工作,另一台机器会做它的工作。包括可靠性、安全性和容错性。
高性能:分布式系统具有执行速度快、响应及时、资源利用率高、网络通信能力强等优点。
可扩展性:分布式系统可以根据使用环境和应用的需要方便地扩展或缩减。
分布式系统是网络操作系统的更高形式,它保留了网络操作系统的所有功能,还具有可靠性和高性能。虽然网络操作系统和分布式操作系统都管理分布在不同地理位置的计算机,但最大的区别是网络操作系统知道计算机的确切地址,而分布式系统不知道。分布式操作系统负责整个资源的分配,可以将实现细节隐藏在系统内部,比如对象的物理位置,对用户是透明的。
四、计算机硬件结构
从硬件的角度来看,现代通用计算机系统是由CPU、内存和若干IO设备组成,它们通过系统总线链接在一起,相互通信。在功能上,它由五个功能部件组成,即运算器、控制器、存储器、输入设备和输出设备。这五个功能组件相互配合,共同工作。其中,运算单元和控制器集成在一个或几个大规模或超大规模集成电路中,称为中央处理器(CPU)。
1、处理器
CPU是大脑它从内存中提取指令并执行它们。CPU的基本周期的工作是:提取指令,解码分析,执行指令。以下指令以类似的方式处理。CPU包含许多寄存器,其中一个是通用寄存器,用于存储关键变量和中间结果。另一类是特殊寄存器,如程序计数器(PC)、堆栈指针寄存器和程序状态字(PSW)。同时,通用操作系统提供了两种处理器执行状态:核心状态和用户状态。其目的是保护操作系统程序(尤其是内核部分)不被用户程序破坏。当操作系统程序被执行时,处理器处于核心状态。此时,它拥有高特权,可以执行所有指令,包括普通用户程序中不能使用的特权指令,从而可以访问所有寄存器和存储器,启动IO操作。用户程序在用户模式下执行,权限较低,只能执行指令集中的非特权指令。
2、内存
在任何计算机中,内存都是最重要的组件之一。根据速度、容量和成本的划分,内存系统形成了一个层次结构,如下图所示:
都是CPU的顶级内部寄存器,和CPU一样快,所以访问起来没有延迟。但其成本高,容量小,通常小于1KB。典型访问时间为1ns
下层是缓存,大部分由硬件控制。高速缓存非常快,它们被放置在CPU内部或非常靠近CPU的地方。当一个程序需要读取特定的信息时,缓存硬件首先检查是否在缓存中,如果在,就可以直接使用。如果没有,则从内存中获取信息,并将其放在缓存中以备将来使用。但是缓存的成本很高,容量很小,一般小于4MB。典型访问时间为2ns
中间层是内存或主内存,是内存系统的主干,也称为RAM(随机存取存储器)。CPU可以直接访问内存、寄存器和缓存中的信息,但不能不要直接访问磁盘上的数据。因此,机器执行的指令和使用的数据必须预先存储在内存、缓存和寄存器中。然而,存储在存储器中的信息很容易丢失。当机器电源关闭时,存储器中的所有信息都会丢失。
下一层是磁盘,叫辅助内存,是内存的扩展。磁盘可以永久保存数据,容量极大。现在常用的磁盘容量是250GB~2TB。磁头可以移动。因为是机械设备,所以对磁盘上数据的访问速度低于内存。
最下面一层是磁带,记录的数据可以永久保存,还可以根据情况更换磁带,所以容量大。但由于其访问速度较慢,不适合随机访问。因此,磁带设备不能作为辅助存储,其主要用途是作为文件系统的备份,存储一些不常用的信息或作为系统间传递信息的媒介。
3、IO设备
IO是人机交互的工具,通常由控制器和设备本身组成。控制器是IO设备的电子部分,协调和控制一个或多个IO设备的运行,实现设备运行与整个系统运行的同步。控制器本身有一些缓冲区和一组专用寄存器,负责在外部设备和本地缓冲区之间移动数据。设备实际上是隐藏在控制器后面的,所以操作系统总是和控制器打交道,而不是直接和设备打交道。因为设备的种类很多,设备控制器也有很多种,需要不同的软件来控制。向控制器发出命令并接收其响应信息的软件是设备驱动程序。不同操作系统上的不同控制器对应不同的设备驱动程序。理论上,驱动程序可以运行在内核之外,但目前的系统都将其放在操作系统中,并使其运行在内核模式下。
4、总线
根据总线上传输信息的功能,系统总线基本上可以分为以下三个部分:
总线:用于在计算机组件之间传输数据的通道,其宽度取决于字节。应该有32条32位结构的数据总线和64条64位结构的数据总线。总线是双向总线,即数据可以双向传输。
总线:从CPU发送地址的地址线。它可以是存储器的地址,也可以是IO设备控制器中的控制寄存器或数据寄存器的地址。地址决定了CPU可以访问的最大内存空间。
总线:这条线上出现的信号都是模块间数据传输所需的控制信号。
本文引用了孟的著作《操作系统》。
标签:系统用户计算机