操作系统(汤小丹)期末复习(一)

  • Post author:
  • Post category:其他



目录


如何理解作业这个概念


如何理解多道批处理这个概念


如何理解操作系统的基本特征,虚拟、异步、共享、并发


介绍一下调度算法


介绍一下OS的处理机管理功能


介绍一下条件变量


介绍一下设备管理功能


进程


线程


死锁


死锁定义  产生的必要条件  处理方法


介绍一下动态分区分配


介绍一下动态分区分配算法


介绍一下分页管理方式


介绍一下多级页表


介绍一下分段系统的基本原理


如何理解作业这个概念


作业(Job)是指用户提交给操作系统执行的任务或程序单元。在操作系统中,作业通常是由一系列相关的任务、进程或程序组成的逻辑实体。

作业的概念与批处理系统密切相关,它代表了用户在计算机系统中提交的一项工作,可以是一个程序、一组程序或一系列相关的任务。作业通常包含了用户所需的数据、指令和执行要求,它的目标是在计算机系统上完成特定的任务。

作业通常经历以下过程:

  1. 提交:用户将作业提交给操作系统,包括所需的程序和数据。

  2. 排队:作业被放入作业队列中,等待操作系统的处理。通常按照先来先服务的原则进行排队。

  3. 调度:

    操作系统根据调度算法从作业队列中选择一个或多个作业,将它们调度到可用的计算资源上进行执行。

  4. 执行:选中的作业在分配给它的计算资源上执行,包括处理器、内存和其他系统资源。

  5. 完成:作业执行完毕后,结果被返回给用户或存储到指定的位置。


作业的概念在多道批处理系统中特别重要

,它允许多个作业同时在计算机系统上运行,提高了系统的资源利用率和效率。操作系统需要有效地管理和调度作业,以确保系统资源的合理分配和作业的正常执行。

如何理解多道批处理这个概念


多道批处理(Multi-programming)是一种操作系统的运行模式

,它允许多个作业同时在计算机系统中运行而不需要用户干预。在多道批处理系统中,多个作业被提交到操作系统执行,操作系统会根据一定的调度算法和资源管理策略,合理地分配系统资源,使多个作业可以并发地执行。

多道批处理系统的特点包括:

  1. 并发执行:多个作业可以同时在系统中执行,提高了系统资源的利用率和效率。当一个作业等待I/O操作或其他阻塞操作时,系统可以切换到执行另一个作业,从而充分利用空闲时间。

  2. 自动调度:操作系统会根据一定的调度算法从作业队列中选择合适的作业进行执行。通常采用的调度算法包括先来先服务(FCFS)、短作业优先(SJF)、时间片轮转(RR)等。

  3. 资源管理:操作系统需要管理和分配计算机系统的各种资源,包括处理器、内存、设备等。它需要确保每个作业都能获得所需的资源,并避免资源的冲突和浪费。

  4. 作业间的保护与隔离:

    多道批处理系统需要保证各个作业之间的相互隔离,防止作业间的干扰和冲突。每个作业在执行时都应该有自己独立的地址空间和资源,不会影响其他作业的执行。


多道批处理系统的优点在于可以充分利用计算机系统的资源,提高系统的吞吐量和效率。

它适用于那些可以被自动化处理的作业,例如批量处理大量数据或运行一系列相似任务的场景。然而,多道批处理系统也面临一些挑战,如作业的调度和资源管理、作业间的相互影响等,需要操作系统提供相应的机制和策略来解决。

多道批处理不是通过中断技术实现的,而是通过操作系统的调度算法和资源管理策略来实现多个作业的并发执行。

时间片轮转调度算法是多道批处理系统中常用的一种调度算法,它将CPU时间分成若干个时间片,每个作业在一个时间片内执行一段时间,然后切换到下一个作业。这种轮流切换的方式使得多个作业可以交替执行,实现了并发性。

至于多道批处理是否可以在单核CPU下执行,实际上是取决于操作系统的实现和硬件的支持。在单核CPU下,操作系统通过时间片轮转等调度算法来分配CPU时间给多个作业,让它们交替执行。虽然在某个时间点上只有一个作业在执行,但由于作业之间的切换非常快速,给人的感觉是它们在同时执行。

然而,要注意的是,在单核CPU下执行的多道批处理系统中,每个作业并不是真正地并行执行,而是通过快速的切换来模拟并发执行的效果。实际上,单核CPU一次只能执行一个指令,只是在作业间的切换上给人一种并发的感觉。

在多道批处理系统中,如果使用了多个物理核心的多核CPU,每个核心可以同时执行一个作业,这样就实现了真正的并行执行。但即使在单核CPU下,通过适当的调度算法和时间片轮转等技术,多道批处理系统仍然可以实现作业的并发执行,提高系统的效率和资源利用率。

如何理解操作系统的基本特征,虚拟、异步、共享、并发

操作系统的基本特征包括虚拟、异步、共享和并发。下面我将对每个特征进行解释:

  1. 虚拟(Virtualization):

    操作系统通过虚拟化技术将物理资源(如处理器、内存、存储器)抽象成逻辑上的多个虚拟资源,使得每个应用程序都感觉到有独占的资源。

    例如,虚拟内存可以让每个程序看起来有自己的独立内存空间,而实际上它们共享物理内存。

  2. 异步(Asynchrony):

    操作系统中的进程或线程可以以异步的方式运行,即它们的执行不是按照固定的顺序或时序进行的。操作系统可以根据需要在不同的进程或线程之间切换执行,通过时间片轮转或其他调度算法来实现并发执行。


  3. 共享(Sharing):操作系统管理和控制计算机系统中的资源,并确保多个应用程序能够共享这些资源。

    例如,多个应用程序可以同时访问打印机、网络连接等共享设备,操作系统负责调度和协调它们的访问。


  4. 并发(Concurrency):操作系统能够支持多个独立的任务或进程同时执行,使得它们可以在同一时间段内进行交替执行。

    操作系统通过时间片轮转、进程调度等机制实现并发执行,提高系统的效率和资源利用率。

这些基本特征使得操作系统能够有效地管理计算机系统的资源,并为应用程序提供良好的执行环境。通过虚拟化、异步、共享和并发,操作系统能够实现资源的有效利用、任务的高效执行和用户的良好体验。

介绍一下调度算法


调度算法是操作系统中用于确定进程或线程执行顺序的一组规则和策略。

它决定了系统中哪个进程或线程应该被分配到处理器上执行,以及它们在处理器上执行的时间和顺序。调度算法的目标是优化系统的性能、资源利用和响应时间。

下面是几种常见的调度算法:


  1. 先来先服务(FCFS,First-Come, First-Served):

    按照作业或进程到达的先后顺序进行调度。当一个进程开始执行时,它会一直运行直到完成或阻塞。这种算法简单直观,但可能导致长作业优先的问题,即短作业需要等待长作业执行完成。


  2. 最短作业优先(SJF,Shortest Job First):

    选择执行时间最短的作业或进程先执行。这种算法可以最大程度地减少平均等待时间,但需要提前知道作业的执行时间,对于实时系统或动态作业来说不太适用。


  3. 优先级调度(Priority Scheduling):

    为每个作业或进程分配一个优先级,优先级高的作业先执行。优先级可以是静态的,由用户或系统设定,也可以是动态的,根据作业的重要性和紧急程度动态调整。


  4. 时间片轮转(Round Robin):将处理器时间划分为固定长度的时间片,每个作业或进程在一个时间片内执行,然后切换到下一个作业。

    这种算法确保每个作业都能得到一定的执行时间,并且响应时间相对较快。


  5. 多级反馈队列调度(Multilevel Feedback Queue Scheduling):将作业或进程划分为多个队列,每个队列具有不同的优先级和时间片大小。

    进程在不同队列之间移动,根据其行为和执行时间动态调整优先级和时间片大小。

这些调度算法各有优缺点,适用于不同的场景和需求。选择合适的调度算法取决于系统的特性、应用程序的性质以及用户对性能和响应时间的要求。

介绍一下OS的处理机管理功能

操作系统的处理机管理功能是指操作系统对计算机中的处理器(CPU)进行分配、调度和管理的能力。处理机管理是操作系统的核心功能之一,它确保系统中的处理器资源得以有效地利用,以满足各个进程或线程的执行需求。

以下是处理机管理功能的几个主要方面:

  1. 进程调度:操作系统负责根据调度算法决定哪个进程或线程应该在处理器上执行,并决定它们的执行顺序和时间片分配。调度算法的选择会影响系统的性能和响应时间。


  2. 进程创建和终止:操作系统负责创建新的进程或线程,并在进程完成任务或发生异常时终止它们。

    这包括分配进程控制块(PCB)、

    为进程分配资源、建立进程间的通信机制

    等。

  3. 进程同步和通信:操作系统提供各种机制来实现进程间的同步和通信,以便进程能够协同工作、共享资源和交换信息。这包括

    信号量、互斥锁、条件变量、管道、消息队列

    等。

  4. 中断处理:当发生硬件中断或异常时,操作系统负责管理中断处理程序的执行,以响应和处理外部事件。它会保存当前进程的状态,切换到中断处理程序,并在处理完中断后恢复原先的执行状态。

  5. 多处理器管理:如果系统具有多个处理器,操作系统需要管理和协调它们的工作,以确保任务在各个处理器上分配和执行,并利用并行处理的优势提高系统性能。

  6. 资源分配和管理:操作系统管理处理器的资源分配,包括分配处理器时间片、处理中断和异常、处理各种请求等。它还跟踪和监控处理器的利用率和性能指标,以优化资源的使用。

通过有效的处理机管理,操作系统能够实现进程的合理调度和资源的高效利用,提供良好的系统性能、响应时间和用户体验。

介绍一下条件变量


条件变量是操作系统提供的一种进程间通信机制,用于实现进程之间的同步和协作。它通常与互斥锁(Mutex)结合使用,用于解决多个进程之间的竞争条件和资源争用问题。


条件变量允许一个或多个进程(或线程)等待特定的条件发生,一旦条件满足,被阻塞的进程将被唤醒,并可以继续执行。

条件变量提供了一种有效的方式,使进程可以在特定条件下等待,而不是通过忙等待(busy waiting)的方式消耗处理器资源。


条件变量通常与互斥锁结合使用,以确保在访问共享资源之前获取互斥锁,并在条件不满足时释放互斥锁并等待条件变量。

当其他进程改变了满足条件的条件变量时,它们可以通过唤醒等待的进程来通知它们条件已满足。

在实际应用中,条件变量可以用于各种情况,例如生产者-消费者问题、读者-写者问题等。它提供了一种可靠的方式,使进程能够在需要的条件满足时进行等待,并在条件发生变化时得到通知,从而实现进程之间的协调和资源共享。

需要注意的是,条件变量是与特定的互斥锁关联的,因此在使用条件变量时需要确保互斥锁的正确使用和管理,以避免死锁和竞态条件等问题。同时,对条件变量的操作应遵循特定的编程模式和约定,以确保正确的同步和通信行为。

介绍一下设备管理功能

设备管理是操作系统的一项重要功能,它涉及对计算机系统中的各种外部设备(如硬盘、打印机、键盘、鼠标等)进行管理和控制。

设备管理的主要目标是有效地管理和分配系统中的设备资源,以满足进程的需求并提供良好的用户体验。它涉及设备的请求、分配、释放、调度、错误处理以及设备驱动程序的管理等方面。

设备管理的功能主要包括以下几个方面:

  1. 设备驱动程序管理:设备驱动程序负责与硬件设备进行通信和控制。操作系统需要管理设备驱动程序的加载、初始化、卸载等操作,确保设备驱动程序能够正常工作并与其他系统组件进行交互。

  2. 设备分配和释放:操作系统需要对系统中的设备资源进行分配和释放,以满足进程的需求。设备分配通常基于请求和优先级等策略,确保设备资源被合理地分配给不同的进程使用。而设备释放则是在进程使用完设备后,将其归还给系统供其他进程使用。

  3. 设备调度:当多个进程同时请求同一设备时,操作系统需要进行设备的调度,确定哪个进程先获得设备的使用权。设备调度算法可以根据不同的策略(如先来先服务、最短作业优先、优先级等)进行设备请求的调度,以提高设备的利用率和系统的响应性能。

  4. 设备错误处理:设备可能出现各种错误,如硬件故障、传输错误等。操作系统需要检测并处理这些错误,采取适当的措施,如重新请求、重启设备等,以确保设备的正常工作和系统的稳定性。

设备管理涉及的设备类型广泛,包括磁盘设备、网络设备、输入设备、输出设备等。它在操作系统中起着重要的作用,通过合理的设备管理,可以提高系统的性能、可靠性和可用性,同时确保进程能够有效地与外部设备进行交互和通信。

系统调用的类型:

进程

线程


引入线程:减少时空开销,增强并发性

死锁

死锁定义  产生的必要条件  处理方法

allocation

介绍一下动态分区分配

动态分区分配是一种操作系统内存管理技术,用于有效地分配和管理进程的内存空间。在动态分区分配中,操作系统将可用的物理内存划分为多个不同大小的分区,并根据进程的内存需求进行动态分配和回收。

以下是动态分区分配的基本原理和流程:

  1. 内存划分:操作系统将可用的物理内存划分为若干个分区,每个分区可以用来存储一个进程或一部分进程。

  2. 进程申请内存:当一个进程需要内存空间时,它向操作系统发出请求。请求的大小通常以字节为单位。

  3. 分配内存:操作系统根据分区分配算法,在可用的内存空闲区域中找到一个足够大的分区来满足进程的需求。分配的方式可以是首次适应、最佳适应、最差适应等。

  4. 更新分区信息:在分配内存后,操作系统需要更新分区的状态信息,如分区的起始地址、大小和分配状态等。

  5. 进程使用内存:被分配内存的进程可以开始使用内存空间,执行程序代码和操作数据。

  6. 内存回收:当进程不再需要内存空间时,它将内存释放给操作系统。操作系统会标记该分区为空闲状态,并将其合并或重新分配给其他进程。

动态分区分配可以有效地利用可用的内存资源,使多个进程能够并发执行,并提供内存管理的灵活性。然而,动态分区分配也可能导致内存碎片的产生,需要使用合适的分区管理算法来优化内存利用率和性能。

介绍一下动态分区分配算法

动态分区分配算法是一种用于管理内存的方法,它将可用的物理内存划分为多个不同大小的分区,并根据进程的需求动态地分配和回收这些分区。

以下是几种常见的动态分区分配算法:

  1. 首次适应算法(First Fit):该算法从内存空闲区域列表中找到第一个足够大的空闲分区来满足进程的需求。这种算法的优点是简单且执行效率较高,但可能导致产生较多的碎片。

  2. 最佳适应算法(Best Fit):该算法从内存空闲区域列表中找到最小的足够大的空闲分区来满足进程的需求。这种算法的优点是可以最大程度地减少碎片的产生,但执行效率较低。

  3. 最差适应算法(Worst Fit):该算法从内存空闲区域列表中找到最大的空闲分区来满足进程的需求。这种算法的优点是可以尽量利用大的空闲分区,但可能导致碎片的产生较多。

  4. 循环首次适应算法(Next Fit):该算法与首次适应算法类似,但从上次分配位置开始查找,避免每次都从列表头开始查找。这种算法的优点是可以减少搜索的开销。

介绍一下分页管理方式

分页管理是操作系统中的一种内存管理方式,它将进程的逻辑地址空间划分为固定大小的页(或块),同时将物理内存划分为相同大小的页框(或物理块)。通过分页管理,操作系统可以将进程的页映射到物理内存中的页框,实现虚拟内存的抽象和管理。

以下是分页管理的基本原理和流程:

  1. 页面大小:首先确定页面的大小,常见的页面大小为4KB或8KB,具体大小取决于操作系统和硬件的限制。

  2. 逻辑地址映射:进程的逻辑地址空间被划分为多个固定大小的页面。逻辑地址由两部分组成:页号和页内偏移量。页号用于标识页的索引,页内偏移量表示页内的具体位置。

  3. 页表:每个进程都有一个页表,用于存储逻辑地址和物理地址之间的映射关系。页表中的每个条目记录了一个逻辑页面和对应的物理页面的映射关系。

  4. 页表访问:当进程访问逻辑地址时,操作系统通过页表查找逻辑页面和物理页面的对应关系。根据页号在页表中找到对应的页表项,该项包含了物理页框的地址。

  5. 页表维护:当进程的页被访问或修改时,页表需要进行相应的更新。例如,当页不在物理内存中时,需要进行页面调度将其加载到物理内存;当页被修改时,需要更新页表的标志位。

  6. 页面调度:当进程访问的页不在物理内存中时,需要进行页面调度,将相应的页从磁盘加载到物理内存中。页面调度算法通常根据一定的策略选择要替换的页面。

分页管理方式可以提供更大的虚拟内存空间,允许多个进程并发执行,并且减少了内存碎片的问题。然而,分页管理也引入了页表访问的开销,并可能导致页面调度和缺页中断的发生。因此,在设计和实现分页管理时需要考虑各种因素,以提高性能和效率。

介绍一下多级页表

多级页表是一种分页管理技术,用于解决大型地址空间的管理问题。它通过将页表分为多个级别的表格来减少页表的大小和访问开销。下面是多级页表的基本原理和工作流程:

  1. 层级结构:

    多级页表将整个逻辑地址空间分为多个层级结构,每个层级对应一个页表

    。通常,逻辑地址由页号和页内偏移量组成,而每个层级的页表对应了地址的一部分。

  2. 分级索引:

    每个层级的页表都包含了索引和页表项。

    索引用于根据页号定位到下一级页表,而页表项记录了页号和物理页框的映射关系。

  3. 分级访问:当进程访问逻辑地址时,操作系统根据逻辑地址的层级结构依次访问对应的页表。从顶层开始,通过索引找到下一级页表,直到最后一级页表找到物理页框的地址。

  4. 页表项大小:由于使用了多级结构,每个页表只需要存储部分逻辑地址空间的映射关系。因此,每个页表的大小相对较小,可以节省内存空间。

  5. 懒加载:多级页表支持懒加载(也称为延迟加载)的方式,即只有当进程访问某个页时才加载对应的页表项和物理页框到内存中,从而减少了初始化时的开销。

  6. 页表访问:当进程访问逻辑地址时,操作系统需要在多级页表中进行多次访问,从而找到物理页框的地址。这会增加一定的访问开销,但通过层级结构和分级索引的设计,可以有效减少整体的页表大小和访问时间。

多级页表的优势在于可以支持大型地址空间的管理,尤其适用于现代操作系统和虚拟化环境中需要管理大量进程的情况。通过层级结构和懒加载的策略,多级页表能够高效地管理和映射逻辑地址到物理内存,提供良好的内存管理性能。

介绍一下分段系统的基本原理

分段系统是一种内存管理技术,它将进程的逻辑地址空间划分为若干个段,每个段表示一个逻辑单元(如代码段、数据段、堆段等),并为每个段分配相应大小的内存空间。

下面是分段系统的基本原理和工作流程:

  1. 逻辑地址空间:进程的逻辑地址空间由多个段组成,每个段对应一种逻辑单元,如程序的代码、数据、堆、栈等。每个段都有自己的起始地址和长度。

  2. 段表:操作系统维护一个段表,其中记录了每个段的信息,包括段的起始地址、长度、权限等。段表存储在内存中,每个进程有自己的段表。

  3. 段选择子:在程序执行时,CPU使用一个段选择子来指定当前正在访问的段。段选择子包含了段在段表中的索引和一些段的属性信息。

  4. 段地址转换:当进程访问逻辑地址时,CPU通过段选择子找到对应的段描述符,并从中获取段的起始地址和长度。然后,CPU将逻辑地址中的段偏移量与段的起始地址相加,得到物理地址。

  5. 段保护:分段系统通过段的权限属性实现对内存的保护。每个段都有自己的权限设置,包括读、写、执行等权限。当进程试图访问受保护的内存时,CPU会进行权限检查并拒绝非法访问。

  6. 内存分配:在分段系统中,内存的分配是按照段的需求进行的。当进程请求创建一个新的段时,操作系统会为该段分配一块足够大小的内存空间,并更新段表中的信息。

分段系统的优势在于可以灵活地管理进程的逻辑地址空间,每个段可以根据需求独立分配和管理内存,提供了更好的内存利用率和保护机制。然而,分段系统也存在一些挑战,如外部碎片问题、段表管理开销等,需要合理的算法和策略进行解决。



版权声明:本文为m0_62574889原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。