第十章 操作系统
10.1 操作系统的角色
1.应用软件(application software):帮助我们解决现实世界问题的程序。
2.系统软件(system software):管理计算机系统并与硬件进行交互的程序。
3.操作系统(operating system):管理计算机资源并为系统交互提供界面的系统软件。
一台计算机通常只有一个活动的操作系统,在系统运行中负责控制工作。
4.引导计算机:计算机硬件是靠电线连接的,初始时载入永久性存储器(ROM)中存储的一小组系统指令。这些指令将从二级存储器(通常是硬盘)中载入大部分系统软件。最终将载入操作系统软件的所有关键元素,执行启动程序。
术语“引导”来自于“靠自己的努力振作起来”这一思想,这也正是计算机开机后它所作的事情。
5.操作系统的各种角色通常都围绕着一个中心思想“良好的共享”。操作系统负责管理资源,而这些资源通常是由使用它们的程序共享的。多个并发执行的程序将共享内存,依次使用CPU,竞争使用输入/输出设备的机会。操作系统将担任现场监控,确保每个程序都能够得到执行的机会。
10.1.1 内存、进程与CPU管理
1.多道程序设计(multiprogramming):同时在主存中驻留多个程序,由它们竞争CPU的技术。
2.内存管理(memory management):了解主存中载有多少个程序以及它们的位置的动作。
3.进程(process):程序执行过程中的动态表示法。
4.进程管理(process management):了解活动进程的信息的动作。
5.CUP调度(CPU scheduling):确定主存中的哪个进程可以访问CPU以便执行的动作。
所有现代操作系统都采用多道程序设计技术,因此,操作系统必须执行内存管理,以明确内存中有哪些程序以及它们驻留在内存的什么位置。
6.操作系统自身也是必须执行的程序,所以在内存中也要和其他系统软件及应用程序一起管理和维护OS进程。执行OS的CPU就是执行其他程序的CPU,因此也要把OS进程排入竞争CPU的队列中。
10.1.2 批处理
1.20世纪60年代和70年代典型的计算机是放置在专用空调房中的大机器。它的处理是由操作员管理的。用户需要把自己的程序交付给操作员才能执行它,通常采用的是一叠穿孔卡片。然后用户再回来取打印出的结果。
2.在交付程序时,用户需要为执行程序所需的系统软件或其他资源提供一套单独的指令。程序和系统指令集合在一起,称为作业。
3.在早期计算机上,为执行程序做准备是个耗时的过程。为了更有效地执行这一过程,操作员会把来自多个用户的自由作业组织分批。一个分批包含一组需要相同或相似资源的作业,这样操作员就不必反复地载入和准备相同的资源。
4.现在术语“批”表示的是一个系统,在这个系统中,程序和系统资源的协作与执行不需用户和程序之间的交互。现代操作系统中的批处理概念允许用户把一组OS命令定义为一个批文件,以控制一个大型程序或一组交互程序的处理。
例如,MS Windows中具有.bat后缀的文件就源自于皮控制文件的想法,它们存放的是系统命令。
5.尽管目前使用的大多数计算机都是交互式的,但有些作业仍然会自行批处理。
10.1.3 分时
1.分时系统允许多个用户同时与计算机进行交互。
2.在分时系统中,每个用户都不必主动竞争资源。操作系统负责在幕后管理资源(包括CPU)共享。
3.在分时系统中,每个用户都有自己的虚拟机,可以使用虚拟机中的所有系统资源(都是有效的)。但其实这些资源是由多个用户共享的。
4.分时系统最初有一台主机和一组连接到主机的哑终端构成。哑终端只是一个显示器的和一个键盘。
分时(timesharing):为多个交互用户同时共享CPU时间的系统。
虚拟机(virtual machine):分时系统创建的每个用户都有专有机器的假象。
主机(mainframe):一个大型的多用户计算机,通常与早期的分时系统相关。
哑终端(dumb terminal):在早期的分时系统中用于访问主机的一套显示器和键盘。
5.每个用户有主机上运行的一个登陆进程表示。当用户运行程序时,将创建另一个进程(由用户的登陆进程生成)。
10.1.4 其他OS要素
1.随着计算计算的不断改进,机器自身体积也变得越来越小。大型计算机演变成了小型机,这种机器不再需要专用的放置空间。微型机则第一次采用单个的集成芯片作为CPU,从而引发了个人计算机(PC)的想法。顾名思义,个人计算机不是为多个用户设计的,最初的个人计算机操作系统反映出了这种简单性。
2.操作系统还必须把计算机通常要连接到网络这个因素考虑在内。
3.操作系统要负责与各种各样的设备通信。
设备驱动程序:“了解”特定设备接收和发布信息所希望采用的方式的小程序。
4.操作系统的最后一个要素是需要支持实时系统的。
实时系统(real-time system):应用程序的特性决定了++响应时间++至关重要的系统
响应时间(response time):收到信号和生成响应之间的延迟时间。
10.2 内存管理
1.所有程序在执行时都存储在主存中。这些程序引用的数据也都存储在主存中,以便程序能够访问它们。
2.操作系统必须采用下列技术:
- 跟踪一个程序驻留在内存的什么位置以及是如何驻留的。
- 把逻辑程序地址转换成实际的内存地址。
3.但我们却并不确切地知道程序载入了主存中的什么位置,解决方法是使用两种地址——逻辑地址和物理地址。
逻辑地址(logical address):对一个存储值的引用,是相对于引用它的程序的。
物理地址(physical address):主存储设备中的真实地址。
4.在编译程序时,对标识符(如变量名)的引用将被转化成逻辑地址。当程序最终载入内存时,每个逻辑地址将被转换成对应的物理地址。
地址联编(address binding):逻辑地址和物理地址间的映射。
10.2.1 单块内存管理
1.单块内存管理(single contiguous memory management):把应用程序载入一段连续的内存区域的内存管理方法。
除了操作系统外,单块内存管理一次只能处理一个程序。进行地址联编所要做的也只是把操作系统的地址考虑在内。
2.在这种内存管理机制中,逻辑地址只是一个相对于程序起始位置的整数值。也就是说,创建逻辑地址就像将程序载入地址是0的主存中一样。因此,要生成物理地址,只要用逻辑地址加上程序在物理主存中的起始地址即可。
3.单块内存管理法的优点在于实现和管理都很简单,但却大大浪费了内存空间和CPU时间。应用程序一般不可能需要操作系统剩余的所有空间,而且在程序等待某些资源的时候,还会浪费CPU的时间。
10.2.2 分区内存管理
1.有两种划分内存的方法,即固定分区法和动态分区法。
使用固定分区法,主存将被划分为特定数目的分区。这些分区的大小不一定要相同,但在操作系统初始引导时他们的大小就固定了。作业将被载入空间足够容纳它的分区。OS具有一个地址表,存放了每个分区的起始地址和长度。
使用动态分区法,将根据程序的需要创建分区。当载入程序时,将从主存划分出一块刚好能容纳程序的空间,留下一块新的、小一些的空白分区,以便之后供其他程序使用。操作系统将维护一个分区信息灬,不过在动态分区中,地址信息会随着程序的载入而清除和改变。
2.固定分区和动态分区的地址联编基本上是一样的。与单块内存管理法一样,逻辑地址是相对于0起始点的整数。当CPU开始运行一个程序时,OS将把程序的分区起始地址存储到基址寄存器中。同样,分区的长度将被存入界限寄存器。
固态分区法(fixed-partition technique):把内存分成特定数目的分区以载入程序的内存管理方法。
动态分区法(dynamic-partition technique):根据容纳程序的需要对内存分区的内存管理方法。
基址寄存器(base register):存放当前分区的起始地址的寄存器。
界限寄存器(bounds register):存放当前分区的长度的寄存器。
3.对于一个新程序,下面有三种常用的分区选择法:
- 最先匹配,即把第一个足够容纳程序的分区分配给它。
- 最佳匹配,即把最小的能够容纳程序的分区分配给它。
- 最差匹配,即把最大的能够容纳程序的分区分配给它。
4.压缩:在动态分区中,作业可以在内存中移动,以创建较大的空白分区。
10.2.3 页式内存管理
1.页式内存管理需要跟踪分配的内存,还要解析地址,从而给操作系统增加了很多负担。但是,这种方法提供的好处值得做出这些牺牲。
2.在页式内存管理法中,主存被分成小的大小固定的存储块,叫做帧。进程被划分为页。在执行程序是,进程的页将被载入分散在内存中的各个未使用的帧中,因此,一个进程的页可能是四处散落的,无序的,与其他进程的页混合在一起。为了掌握进程页的分别,操作系统需要为内存中的每个进程维护一个独立的页映射表(PMT),把每个页映射到载入它的帧。
页式内存管理法(paged memory technique):把进程划分为大小固定的页,载入内存时存储在帧中的内存管理方法。
帧(frame):大小固定的一部分主存,用于存放进程页。
页(page):大小固定的一部分进程,存储在内存帧中。
页映射列表(Page Map Table,PMT):操作系统用于记录页和帧之间关系的表。
3.页式内存管理系统中的逻辑地址与分区系统中的一样,都是从一个相对于程序起始点的整数值开始。但这个地址被转换成两个值--页编号和偏移量。用页面大小除逻辑地址得到的上是页编号,余数是偏移量。
4.请求分页(demand paging):页式内存管理法的扩展,只有当页面被引用(请求)是才会被载入内存。
页面交换(page swap):把一个页面从二级存储设备载入内存,通常会使另一个页面从内存中删除。
虚拟内存(virtual memory):由于整个程序不必同时处于内存而造成的程序大小没有限制的假想。
系统颠簸(thrashing):频繁的页面交换造成的低效处理
10.3 进程管理
10.3.1 进程状态
1.在操作系统的管理下,进程会经历几种状态,即进入系统,准备执行,执行,等待资源以及执行结束。
2.进程状态(process state):在操作系统的管理下,进程经历的概念性阶段。
3.分析进程的每个状态会发生那些事情:
- 在创建阶段,将创建一个新进程。
- 在准备就绪状态中,进程没有任何执行障碍。
- 运行状态下的进程是当前CUP执行的进程。它的指令将按照读取-执行周期被处理。
- 等待状态下的进程是当前在等待资源(除CUP以外的资源)的进程。
- 终止状态下的进程已经完成了它的执行。
10.3.2 进程控制块
1.操作系统必须为每个活动进程管理大量的数据。这些数据通常存储在称为进程控制块(PCB)的数据结构中。
2.进程控制块(process control block):操作系统管理进程信息使用的数据结构。
3.上下文切换(context switch):当一个进程移出CPU时,另一个进程取代它时发生的寄存器信息交换。
10.4 CPU调度
1.所谓CUP调度,就是确定把那个处于准备就绪阶段的进程移入运行状态。
2.非抢先调度(nonpreemptive scheduling):当当前执行的进程自愿放弃了CPU时发生的CPU调度。
3.抢先调度(preemptive scheduling):当操作系统决定照顾另一个进程而抢占当前执行进程的CPU资源是发生的CPU调度。
4.周转周期(turnaround time):从进程进入准备就绪状态到它最终完成之间的时间间隔,是评估CPU调度算法的标准。
10.4.1 先到先服务
1.在先到先服务(FCFS)调度方法中,进程按照它们到达运行状态的顺序转移到CPU。
2.在FCFS调度方法中,每个进程将依次访问CPU。
3.由于我们假设所有进程同时到达,所以每个进程的周转周期等于它的完成时间。事实上,进程并非同时到达的。
10.4.2 最短作业优先
最短作业优先(SJN)CPU调度算法将查看所有处于准备就绪状态的进程,并分派一个具有最短服务时间的。和FCFS一样,它通常被实现为非抢先算法。
10.4.3 轮询法
1.CPU的轮询法将把处理时间平均分配给所有准备就绪的进程。
2.时间片(或时间量子):在CPU轮询算法中分配给每个进程的时间量。
3.CPU的轮询算法可能是应用最广泛的。他一般支持所有的作业,被认为是最公平的算法。
小结
- 操作系统是管理计算机资源的系统软件的一部分,是人类用户、应用软件和系统硬件设备之间的协调者。
- 多道程序设计技术允许在内存中同时驻留多个程序,让它们竞争CPU时间。
- 批处理把使用相同或相似的作业组织成批。
- 操作系统必须管理内存,以控制和监管把进程载入主存中的什么位置。
- 操作系统管理进程的生命状态,即程序在执行过程中要经历的阶段。
- CPU调度算法确定了下一个使用CPU的进程。
第十一章 文件系统和目录
11.1 文件系统
1.文件(file):数据的有名集合,用于组织二级存储设备。
2.文件系统(file system):操作系统为它管理的文件提供逻辑视图。
3.目录(directory):文件的有名分组。
11.1.1 文本文件和二进制文件
1.所有文件都可以被归类为文本文件或二进制文件。
文本文件(text file):包含字符的文件。
二进制文件(binary file):包含特定格式的数据的文件,要求给为串一个特定的解释。
11.1.2 文件类型
1.无论是文本文件还是二进制文件,大多数文件都包含有特定类型的信息。
2.文件类型(file type):文件(如Java程序或Microsotf文档)中存放的关于类型的信息。
3.文件扩展名(file extension):文件名中说明文件类型的部分。文件扩展名只说明了文件中存放的是什么。
11.1.3 文件操作
- 创建文件
- 删除文件
- 打开文件
- 关闭文件
- 从文件中读取数据
- 把数据写入文件
- 重定文件中的当前文件指针
- 把数据附加到文件结尾
- 删减文件(删除它的内容)
- 重命名文件
- 复制文件
注:
1.操作系统用两种方式跟踪二级存储设备
2.大多数操作系统要求对文件执行读写操作前要先打开该文件。
3.无论何时,一个打开的文件都有一个当前文件指针(一个地址),说明下一次读写操作要发生在什么位置。
4.打开的文件的当前指针可以被重新定义到文件中的其他位置,以备下次读2或写操作。
5.操作系统还提供了更改文件名的操作,叫做重命名文件。
11.1.4 文件访问
- 顺序文件访问(sequential file access):以线性方式访问文件中的数据的方法。
- 直接文件访问(direct file access):通过指定逻辑记录编号直接访问文件中的数据的方法。
11.1.5 文件保护
1.在多用户系统中,文件保护的重要性居于首要地位。也就是说,除非是特许的,否则我们不想让一个用户访问另一个用户的文件。确保合法的文件访问是操作系统的责任。不同操作系统管理文件保护的方式不同。无论哪种情况,文件保护机制都决定了谁可以使用文件,以及为什么目的而使用文件。
2.虽然其他操作系统实现保护机制的方式不同,弹幕的是相同的,即控制文件的访问,以防止蓄意获取不正当访问的企图,以及最小化那些出于好奇的用户不经意引起的问题。
11.2 目录
目录是文件的有名集合,是一种按照逻辑方式对文件分组的方法。
11.2.1 目录树
目录树(directory tree):展示文件系统的嵌套目录组织的结构。
根目录(root directory):包含其他所有目录的最高层目录。
工作目录(working directory):当前活动的子目录。
11.2.2 路径名
1.要用文本指示一个特定的文件,必须说明该文件的路径,即找到这个文件所必须经历的一系列目录。路径可以是绝对的,也可以是相对的。
2.绝对路径名从根目录开始,说明了沿着目录树前进的每一步,直到到达了想要的文件或目录。
3.相对路径则从当前工作目录开始。
路径(path):文件或者子目录在文件系统中的位置的文本名称。
绝对路径(absolute path):从根目录开始,包括所有后继子目录的路径。
相对路径(relative path):从当前工作目录开始的路径。
4.下面是示例目录树中的绝对路径名:
C:\Program Files\MS Office\WinWord.exe
C:\MY Documents\letters\applications\vaTech.doc
C:\Windows\System\QuickTime
5.UNIX中的绝对路径:
/bin/tar
/etc/sysconfig/clock
/home/smith/reports/weekl.txt
6.相对路径是基于当前工作目录而言的。假设列中当前工作目录是C:\My Documents\letters.,那么可以使用下列的相对路径名:
cancelMag.doc
applications\calState.doc
7.使用相对路径时,有时需要返回上层目录。如:
..\landscaps.jpg
..\csc111\proj2.java
.. ..\WINDIWS\Drivers\E55IC.ICM
.. ..\Program Files\WinZip
8.UNIX中的相对路径:
utilities/combine
../smith/reports
.. / ../dev/ttyE71
.. / ../usr/man/man1/1s.1.gz
11.3 磁盘调度
1.磁盘调度(disk scheduling):决定先满足哪个磁盘I/O请求的操作。
2.磁盘调度算法:先到先服务磁盘调度法、最短寻道时间优先磁盘调度法、SCAN磁盘调度法
- 先到先服务磁盘调度法
FCFS算法按照当前请求到达的顺序处理它们,并不考虑读写头的当前位置。 - 最短寻道时间优先磁盘调度法
通过尽可能少的读写头移动满足所有未解决的请求。这种方法可能会在满足一个请求后改变读写头的移动方向。 - SCAN磁盘调度法
在磁盘调度法中没有上下移动,而是读写头向轴心移动,然后再向盘边缘移动,就这样在轴心和盘片边缘来回移动。与其他算法不同的是,我们要决定读写头最初移动的方向。
小结
- 文件系统定义了组织二进制存储设备的方式
- 用文件名的扩展名可以说明文件类型
- 对文件执行的操作包括创建文件、删除文件、打开文件和关闭文件。
- 磁盘调度算法决定了处理未解决的磁盘请求的顺序。
原文地址:https://www.cnblogs.com/chw123/p/11801648.html