操作系统相关概念

本文深入探讨操作系统中的并发性、进程状态转换、局部性原理、链接方式、设备独立性、磁盘访问优化、缓冲区作用、死锁预防和同步机制。通过实例解析信号量的PV操作,介绍了系统调用的本质与实现,以及SPOLLING技术在提高I/O效率中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.说明一下并发的概念,并解释并发对操作系统为什么这么的重要?

并行性和并发性是既相似又有区别的两个概念。并行性是指两个或多个事件在同一时刻发生。而并发性是指两个或多个事件在同一时间间隔内发生。

作用:正是系统中的程序能并发执行这一特征,才使得OS能有效的提高系统中资源利用率,增加系统的吞吐量。并发特征是操作系统最重要的特征,是其他特征的前提。

并发性是指在一段时间内宏观上有多个程序在运行,微观上这些程序只能分时的交替运行。

2.进程最基本的状态的转换。就绪、运行、阻塞。他们在什么情况下进行转换的。

进程的三种基本状态

就绪状态

当进程分配了除了CPU以外的所有必要的资源后,只要能在获得处理机,便可立即执行。这时的进程状态称为就绪状态。

执行状态

进程已经获得处理机,其程序正在执行。

阻塞状态

进程因发生某事件(如请求I/O,申请缓存空间等)而暂停执行的状态,亦即进程的执行受到阻塞,故称这种状态为阻塞状态,有时也称为“等待”或“睡眠”状态。

什么情况下互相转换

处于就绪状态的进程,在调度程序为之分配了处理机之后便可执行。
正在执行的进程如果因为分配给她的时间已完会被剥夺处理机暂停执行。
如果因为发生某事件,导致当前的进程受阻(例如进程访问某临界资源,而该资源正在被其他进程访问时),使之无法继续执行,则该进程状态由执行转变为受阻。

3.程序能够运行,保证性能不会有太大的损失是基于什么原理?

局部性原理

定义

程序在执行时将呈现出局部性规律,即在以较短的时间内,程序的执行仅限于某个部分,相应的,他所访问的存储空间也局限于某个区域。

表现

时间局限性

如果程序中的某条指令被执行,则不久以后该指令可能再次执行;如果程序中的某数据被访问过,则不久以后该数据可能再次被访问;

产生的原因:程序中存在着大量的循环操作。

空间局限性

一旦程序访问了某个存储单元,在不久之后,其附近的存储单元也将被访问,即程序在一段时间内所访问的地址可能集中在一定的范围之内,其典型的情况就是程序的顺序进行。

4.静态链接、动态链接(装入时动态链接和运行时动态链接)这三种链接有什么不同,对你编程有什么启示。即各自的优缺点。

静态链接方式

在程序运行之前,先将各目标模块及他们所需的库函数链接成一个完整的装配模块,以后不再拆分.我们将这种先进性链接的方式称为静态链接方式。

需解决:

  1. 对相对地址进行修改。
  2. 变换外部调用符号。

装入时动态链接

这是指将用户源程序编译后所得的一组目标模块,在装入内存时,采用边装入边链接的方式。

优点:

  1. 便于修改和更新。
  2. 便于实现对目标模块的共享。

运行时动态链接

在程序执行过程中,当发现一个被调用模块尚未装入内存时,立即由OS找到该模块,并将之装入内存,将其链接到装入模块上。

优点:加快程序的装入过程,节省了大量的内存空间。

5.在设备管理中,解释一下设备独立性的概念,它是为了解决什么问题,是如何做到的。

如果在程序中使用由“设备类、相对号”定义的逻辑设备,那么在程序执行时,系统将根据用户指定的逻辑设备转换为其对应的具体物理设备,并启动该物理设备工作。
设备独立性是指用户编制程序时使用的设备与实际使用哪台设备无关的特性。

设备独立性,即应用程序独立于具体使用的物理设备。为了实现设备独立性而引入了逻辑设备和物理设备这两个概念。在应用程序中, 使用逻辑设备名称来请求使用某类设备;而系统在实际执行时, 还必须使用物理设备名称。因此,系统须具有将逻辑设备名称转换为某物理设备名称的功能。

设备独立性是指操作系统把所有外部设备统一当作成文件来看待,只要安装它们的驱动程序,任何用户都可以象使用文件一样,操纵、使用这些设备,而不必知道它们的具体存在形式。

原因:为了提高操作系统的可适应性和可扩展性。

优点:(1)设备分配时的灵活性;(2)易于实现I/O重定向(指用于I/O操作的设备可以更换即重定向,而不必改变应用程序)。

解决的问题:用户和物理的外围设备无关,系统增减或变更外围设备时程序不必修改;易于对付输入输出设备的故障,例如,某台行式打印机发生故障 时,可用另一台替换,从而提高了系统的可靠性,增加了外围设备分配的灵活性,能更有效地利用外围设备资源, 实现多道程序设计技术。

如何做到的:为了实现设备的独立性,应引入逻辑设备和物理设备两个概念。在应用程序中,使用逻辑设备名称来请求使用某类设备;而系统执行时,是使用物理设备名称。鉴于驱动程序是一个与硬件(或设备)紧密相关的软件,必须在驱动程序之上设置一层软件,称为设备独立性软件,以执行所有设备的公有操作、完成逻辑设备名到物理设备名的转换(为此应设置一张逻辑设备表)并向用户层(或文件层)软件提供统一接口,从而实现设备的独立性。

6.磁盘访问时间由哪些部分构成的?有哪些方法可以优化磁盘访问时间?

磁盘访问时间分成以下3部分

  1. 寻道时间Ts。这是指磁头移动到指定磁道上所需要的时间。
    Ts = m * n + s
    n为磁头的时间
    s为磁臂的时间
  2. 旋转延迟时间T饕。这是指定扇区移动到磁头下面所需要的时间。
  3. 传输时间Tt。这是指把数据从磁盘读出或向磁盘写入数据所经历的时间。
    Tt = b/rN
    其中r是磁盘每秒的转速,N为一条磁道上的字节数,b是每次读写的字节数。

优化磁盘访问时间

首先可以通过选择最佳的磁盘调度算法,以使各进程对磁盘的平均访问时间最小,减少磁盘的寻道时间;其次通过提高磁盘I/O速度,以提高文件的访问速度;

提高磁盘I/O速度的途径

  1. 磁盘高速缓存
    在磁盘中为磁盘盘块设置一个缓冲区,保存了某些盘块副本。

  2. 其他方法

    1. 提前读
    2. 延迟写
    3. 优化物理块分布
    4. 虚拟盘
      用内存空间仿真磁盘,形成虚拟盘,又称RAM盘,该盘的设备驱动程序可以接受所有标准的磁盘操作,但是操作执行不在磁盘而在内存中。

虚拟盘与磁盘高速缓冲的区别

虚拟盘中内存完全由用户控制,而磁盘高速缓存是由OS控制,RAM盘刚开始是空的,仅当用户在RAM盘中创建了文件后,RAM盘中才有内容。

7.引入缓冲区可以减少CPU的中断频率,可以延长中断响应时间?

缓冲的引入:

  1. 缓和CPU与I/O设备速度不匹配的矛盾。
  2. 减少对CPU的中断频率,放宽对CPU中断响应时间的限制。在数据通信中,如果从远地终端发来的数据仅用一位缓冲来接收,则必须每收到一位数据中断一次CPU。
  3. 解决数据粒度不匹配的问题。
  4. 提高CPU和I/O设备之间的并行性。

8.预防死锁有哪些方法(破坏协议)

  1. 破坏“请求和保持”条件
  2. 破坏“不可抢占”条件

死锁的定义:如果一组进程中的每一个进程都在等待仅由该组进程中的其他进程才能引发的条件,那么该组进程是死锁的。

产生死锁的必要条件

  1. 互斥条件
  2. 请求和保持条件
  3. 不可抢占条件
  4. 循环等待条件

9.信号量 PV操作

10.写一下记录型信号量,PV操作怎么实现的,怎么写?

wait(S)
{
    while(S<=0);
    S--;
}

signal(S)
{
    S++;
}

typedef struct {
    int value;
    struct procrss_control_block *list;
}semaphore;

wait(semaphore *S)
{
    s->value--;
    if(S->value<0)
            block(S->list);
}

signal(semaphore *S)
{
    s->value++;
    if(S->value<=0)
            wakeup(S->list);
}

11.不能被打断的是原语,为什么不能被打断,打断会出现什么现象?

原语是一段用机器指令编写的完成特定功能的程序,在执行过程中不允许中断。原语位于操作系统的底层,是操作系统内核的一部分。通过一段不可分割的或不可中断的程序实现其功能。它是一个不可分割的操作。

12.引入同步机制四条准则?

  1. 空闲让进。当无进程处于临界区时,表明临界资源处于空闲状态,应允许一个请求进入临界区的进程进入自己的临界区,以有效的利用临界资源。
  2. 忙则等待。当已有进程处于临界区时,表明临界资源正在被访问,因而其他试图进入临界区的进程必须等待,以保证临界资源的互斥访问。
  3. 有限等待。对要求访问临界资源的进程,应保证在限的时间内能进入自己的临界区,以免陷入“死等”状态。记录型信号量解决了死等的现象,一旦不行就直接BLOCK了。
  4. 让权等待。当进程不能进入自己的临界区时,应立即释放处理机,以免进程进入忙等状态。

系统调用

系统调用也叫程序接口,是程序级的接口,即用户可以利用系统提供的一组系统调用命令调用操作内核中的一个(或一组)过程来完成自己所需的功能。

系统调用与普通的系统调用有什么区别?

写为代码 让文件块的IO信息访问1磁盘信息 怎么软中断

系统调用本质上是过程调用的一种特殊形式,与一般过程调用有差别:

(1)运行状态不同。一般过程调用的调用过程和被调用过程均为用户程序,或者均为系统程序,运行在同一系统状态(用户态或系统态);系统调用的调用过程是用户态下的用户程序,被调用过程是系统态下的系统程序。

(2)软中断进入机制。一般的过程调用可直接由调用过程转向被调用过程;而系统调用不允许由调用过程直接转向被调用过程,一般通过软中断机制,先进入操作系统内核,经内核分析后,才能转向相应命令处理程序。

(3)返回及重新调度。一般过程调用在被调用结束后,返回调用点继续执行;系统调用被调用完后,要对系统中所有运行进程重新调度。只有当调用进程仍具有最高优先权才返回调用过程继续执行。

(4)嵌套调用。一般过程和系统调用都允许嵌套调用,注意系统过程嵌套而非用户过程。

怎么调用系统调用

用户在程序中通过系统调用名和函数来访问系统调用。

系统调用是怎么实现的

用户在程序中通过系统调用名和函数来访问系统调用,即产生一条相应的陷入指令,通过陷入处理器自调用服务,导致处理器中断。然后保护处理器工作现场,根据系统调用号找到相应的子程序入口,通过入口地址表来调用系统子程序,处理完毕后返还用户程序继续执行。

SPOLLING技术

外围操作与CPU对数据的处理同时进行,我们把这种在联机情况下实现的同时外围操作称为SPOLLING技术,又称假脱机技术。

SPOLLING系统的组成

  1. 输入井和输出磁盘,用于接收I/O设备输入的数据。
  2. 输入缓冲区和输出缓冲区。这是在内存中开辟两个缓冲区,用于缓和CPU和磁盘之间速度不匹配的矛盾。输入缓冲区用于暂存输入设备传送的数据。
  3. 输入进程和输出进程。
  4. 井管理程序。用于控制作业与磁盘井之间信息的交换。

SPOLLOING系统的特点

  1. 提高了I/O的速度。
  2. 将独占设备改造为共享设备。
  3. 实现了虚拟设备功能。

共享打印机的原理(假脱机)

每当用户进程发出打印输出请求时,假脱机系统并不是立即把打印机分配给该用户进程,而是由假脱机管理进程完成两项工作:

  1. 在磁盘缓冲区中为之申请一个空闲盘块,并将要打印的数据送入其中暂存。
  2. 为用户进程申请一张空白的用户请求表,并将用户的答应请求填在其中,再将该表挂在假脱机文件队列上。

真正的打印输出是假脱机进程负责的,在打印机空闲时,该进程首先从假脱机文件队列的队首摘取一张请求打印表,然后根据表中的要求将打印的数据由输出井传送到内存缓冲区,再交付打印机进行打印。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值