デッドロックの説明として, 適切なものはどれか。
平成24年度 秋期 ITパスポート試験 問67
这道题的解析和你的作答记录。
問 67
错误ア
这是访问控制(访问权限管理、内存保护)的说明。它指的是这样一种机制:操作系统根据权限判定是否允许,从而禁止进程接触本来无权访问的信息或其他进程的内存区域。其目的是确保机密性与安全性,与资源的释放等待或处理停止完全是另一个概念。死锁是围绕有权限的资源而发生的等待问题,因此这个说明并不符合。
错误イ
这是账户锁定(lockout)的说明。它指的是这样一种安全功能:在用户认证中,当密码输错次数达到规定次数时,把该用户的账户在一定期间内或直到管理员解除为止置为不可使用,以防止暴力破解攻击等造成的非法登录。由于同样含有「锁(lock)」这个词而容易混淆,但它针对的对象是用户账户,与进程之间对资源的争夺无关。
- ウ
正解 正确答案是ウ。所谓死锁(deadlock),是指多个进程在互斥控制(互斥使用)下使用共同资源时,各自都占着自己已获取的资源不放,同时又一直等待对方占用的资源被释放,结果任何进程都永远无法继续推进处理的状态。典型例子可以这样设想:进程 A 先锁定资源 X,然后请求资源 Y;与此同时,进程 B 先锁定资源 Y,然后请求资源 X。A 在等 B 放开 Y,B 在等 A 放开 X,于是等待关系形成循环,双方都停在等待状态。这种「彼此都在等待对方所占用的资源被释放」的循环等待,正是死锁的本质,而ウ 的表述就是照此描述的。在数据库中,多个事务以相反的顺序对同一行或同一表加锁时,也会同样发生死锁。死锁放任不管不会自然消解,因此要通过在整个系统中统一资源的获取顺序、一次性获取所需的全部资源、经过一定时间后中断等待并让其中一方回滚(重新执行)等预防、检测与恢复机制来应对。
错误エ
这是超时的说明,即在轮转调度(round robin)等方式下,进程用完分配给它的 CPU 时间(时间片),从运行状态被退回到可执行状态(被抢占)。在这种情况下,只要再轮到它,进程就会再次执行,因此处理并不会永久停止。这说的是 CPU 时间分配的控制,而不是描述与对方互相等待资源释放的死锁。
- 死锁的定义 —— 多个进程各自保持着被互斥控制的资源,同时互相等待对方占用的资源被释放,陷入循环等待,导致处理永远无法推进的状态。可通过统一资源获取顺序、一次性获取全部资源、用超时让其中一方回滚等方式来预防与恢复。
- 区分容易混淆的「停下来的状态」类术语 —— 访问控制是禁止访问无权限信息的保护功能,账户锁定是把认证连续失败的用户置为不可使用的功能,超时(抢占)是用完分配的 CPU 时间后回到可执行状态。永远等待下去的只有死锁。