table {
border-collapse: collapse;
width: 100%;
margin-bottom: 1rem;
}
th, td {
border: 1px solid #ddd;
padding: 8px;
text-align: left;
}
th {
background-color: #f2f2f2;
}
tr:nth-child(even) {
background-color: #f9f9f9;
}
pre {
background-color: #f8f8f8;
padding: 15px;
border-radius: 4px;
overflow-x: auto;
}
56、包括RC 4000系统在内,定义了一个进程树,使得一个进程的所有后代只能由其祖先分配资源(对象)和访问权限。因此,一个后代永远不能做其祖先不能做的任何事情。树的根是操作系统,它可以做任何事情。假设访问权限集由一个访问矩阵A表示。A(x,y)定义了进程x对对象y的访问权限。如果x是z的后代,对于任意对象y,A(x,y)和A(z,y)之间有什么关系?
由于后代不能做祖先不能做的事,所以对于任意对象
y
,
A(x,y)
所代表的访问权限是
A(z,y)
所代表的访问权限的子集,即进程
x
对对象
y
的访问权限不会超过进程
z
对对象
y
的访问权限。
57、能力列表通常保存在用户的地址空间内。系统如何确保用户无法修改列表内容?
系统通过以下两种方式确保用户无法修改能力列表内容:
设置对象标签
为每个对象设置标签来表明其是能力还是可访问数据。标签本身不允许应用程序直接访问,可借助硬件或固件支持来实施这一限制。
划分地址空间
将程序关联的地址空间划分为两部分:
–
程序访问部分
:包含程序的常规数据和指令。
–
操作系统访问部分
:包含能力列表,仅允许操作系统访问,可利用分段内存空间来支持该方法。
58、访问控制矩阵可用于确定一个进程是否可以从域A切换到域B并享有域B的访问权限。这种方法是否等同于将域B的访问权限包含在域A的访问权限中?
否。进程从域A切换到域B需满足访问矩阵中`access(A, B)`存在`switch`权限,且切换后按域B权限访问,并非直接将域B权限包含在域A中。
59、假设有一个计算机系统,学生只能在晚上10点到早上6点玩电脑游戏,教职工只能在下午5点到早上8点玩,而计算机中心工作人员可以随时玩。请提出一个能有效实施该策略的方案。
游戏使用时间策略实施步骤
为了有效实施该游戏使用时间策略,可按以下步骤操作:
用户身份验证
系统要对使用计算机的人员进行身份验证,区分学生、教职工和计算机中心工作人员。可以使用账号密码、刷卡等方式。
时间管理模块
在操作系统或游戏管理系统中,添加时间管理模块。该模块能获取当前系统时间,并根据用户身份判断是否允许玩游戏。
规则设定
在时间管理模块中,设定不同身份的使用时间规则:
– 学生:晚上10点到早上6点
– 教职工:下午5点到早上8点
– 工作人员:无时间限制
实时检查
当用户尝试启动游戏时,系统实时检查当前时间和用户身份。若符合规则,允许启动;若不符合,阻止启动并给出提示。
日志记录
系统记录所有用户的游戏启动尝试,包括时间、身份和结果,以便后续审计和管理。
60、最小特权原则如何有助于创建保护系统?
最小特权原则
最小特权原则有助于创建更安全的计算环境。操作系统遵循该原则,会让程序、用户和系统仅拥有完成任务所需的最少特权。
这样能使系统组件故障或受威胁时,造成的损害最小化。同时,它还能限制故障进程对系统造成的破坏,因为进程只能访问完成当前任务所需的资源。
此外,该原则还能帮助实现细粒度的访问控制,创建审计跟踪,以及通过基于角色的访问控制(RBAC)管理用户权限。
61、实施最小特权原则的系统为何仍会出现导致安全违规的保护失败情况?
以Windows和Solaris为例,Windows虽有复杂保护方案但安全漏洞多,而Solaris相对安全。
原因如下:
代码复杂度与服务数量
Windows的代码行数和服务远多于Solaris,导致需要保护的内容更多,攻击面更广。
保护方案的合理性问题
Windows的保护机制可能不完整,或过度集中在操作系统的某些方面,而忽视了其他关键区域,从而使系统整体安全性下降。
62、可以通过采用更好的编程方法或使用特殊的硬件支持来避免缓冲区溢出攻击。请讨论这些解决方案。
更好地防范缓冲区溢出攻击的方法
采用更好的编程方法
编程时应进行边界检查。为了避免因程序员疏忽而未对输入字段进行边界检查,导致攻击者可以发送超出程序预期的数据,从而引发缓冲区溢出问题,开发人员应在编写代码时特别注意输入数据的长度和范围验证。
使用特殊的硬件支持
部分CPU具备禁止在内存栈区执行代码的功能,有助于防止缓冲区溢出攻击。
Sun的SPARC芯片
:最新版本中提供了相关设置,Solaris的最新版本已启用该功能。
AMD和Intel x86芯片
:其最新版本具备NX(No-eXecute)特性,多个x86操作系统支持使用此特性。
该机制通过在CPU页表中使用新的位标记,将相关页面标记为不可执行,从而防止从这些页面读取和执行指令,有效阻止缓冲区溢出攻击的发生。
63、将“盐值”与用户提供的密码一起使用的目的是什么?“盐值”应存储在哪里,以及应如何使用?
使用“盐值”的目的是确保即使两个明文密码相同,加密后也会得到不同的密文,增加密码破解的难度。“盐值”存储在密码文件中。
当用户输入密码时,该密码会与存储在密码文件中的“盐值”重新组合,然后通过相同的单向转换函数进行处理,将结果与密码文件中的内容进行匹配,若匹配则接受该密码。
64、所有密码列表都存储在操作系统中。因此,如果用户设法读取此列表,密码保护就失效了。请提出一种避免此问题的方案。(提示:使用不同的内部和外部表示形式)
可以采用加密的方式,将用户输入的密码通过加密算法转换为另一种内部表示形式存储在操作系统中。例如 UNIX 系统,使用加密算法对用户密码进行加密存储,即便存储的加密密码被看到,也无法解码得到原始密码。
同时还可在加密算法中加入“盐值”,即一个随机数,确保相同的明文密码加密后得到不同的密文。
当用户输入密码时,系统将输入的密码进行同样的加密转换,再与存储的加密密码进行比对,以此避免因密码列表被读取而导致保护失效的问题。
65、请支持或反对针对小罗伯特·莫里斯创建和释放互联网蠕虫所做出的司法判决。
支持该司法判决。莫里斯释放的蠕虫虽未包含破坏或摧毁系统的代码,但他精心设计攻击步骤,采用复杂的密码破解算法,且程序有掩盖踪迹和抵抗阻止传播的手段,可见其释放蠕虫并非无意。该蠕虫迅速传播,消耗大量系统资源,致使众多机器瘫痪,造成了巨大的经济损失。所以,法院判处他三年缓刑、400小时社区服务和1万美元罚款是合理的,这能起到警示作用,维护网络安全秩序。
66、列出银行计算机系统的六个安全问题。对于列表中的每个问题,说明该问题与物理安全、人员安全还是操作系统安全相关。
以下是六个银行计算机系统的安全问题及相关类别:
服务器硬件损坏
:
物理安全
。
硬件故障可能导致数据丢失或系统停机。
员工操作失误
:
人员安全
。
员工可能因误操作删除重要数据或泄露客户信息。
操作系统漏洞
:
操作系统安全
。
黑客可能利用漏洞入侵系统,窃取数据。
数据中心火灾
:
物理安全
。
火灾会破坏服务器和存储设备,造成数据丢失。
员工内部欺诈
:
人员安全
。
员工可能利用职务之便进行非法操作,如挪用资金。
恶意软件攻击
:
操作系统安全
。
病毒、木马等恶意软件会感染系统,破坏数据或窃取信息。
67、比较对称加密和非对称加密方案,并讨论分布式系统在什么情况下会使用其中一种。
加密方式对比:对称加密与非对称加密
对称加密
使用
相同的密钥
进行加密和解密
加密算法基于
替换和置换操作
常见算法包括:
DES
三重DES
AES
Twofish
RC5
RC4
优点
:
加密速度快
适合对大量数据进行通用加密
缺点
:
密钥的保密性要求高
若密钥泄露,加密信息将被破解
非对称加密
使用
公钥和私钥
公钥:公开
私钥:保密
加密基于
数学函数
常见应用场景:
少量数据加密
认证
保密
密钥分发
优点
:
提供信息的
保密性
和
不可抵赖性
缺点
:
计算成本高
速度比对称加密慢
应用场景选择
对称加密适用场景
:
需要对大量数据进行
快速加密和解密
非对称加密适用场景
:
需要进行
认证、少量数据加密、密钥分发
需要确保信息的
保密性
和
不可抵赖性
68、讨论如何使用非对称加密算法实现以下目标。a. 认证:接收者知道只有发送者能生成该消息。b. 保密:只有接收者能解密该消息。c. 认证和保密:只有接收者能解密该消息,且接收者知道只有发送者能生成该消息。
a.
认证
:发送者用自己的私钥对消息加密,接收者用发送者的公钥解密。若能成功解密出有效消息,就证明消息由持有对应私钥的发送者生成,因为只有发送者的私钥能加密出可被其公钥正确解密的消息。
b.
保密
:发送者用接收者的公钥对消息加密,由于只有接收者持有对应的私钥,所以只有接收者能解密该消息。
c.
认证和保密
:发送者先用自己的私钥对消息签名(加密),再用接收者的公钥对签名后的消息加密。接收者先用自己的私钥解密得到签名消息,再用发送者的公钥验证签名。这样既保证只有接收者能解密消息,又能证明消息来自发送者。
69、讨论与静态链接相比,库的动态(共享)链接的三个优点。描述两种静态链接更可取的情况。
动态链接与静态链接
动态链接的优点
节省物理内存,系统库只需加载到内存一次,避免每个程序都包含相同系统库函数的副本;
节省磁盘空间,无需在每个程序的可执行二进制文件中嵌入相同的系统库函数;
便于库的更新,更新库时,所有使用该库的程序都能受益,无需重新编译每个程序。
静态链接更可取的情况
当程序需要在没有动态链接库支持的环境中运行时;
对程序运行速度要求极高,避免动态链接带来的额外开销时。
70、比较在单台计算机上使用网络套接字和共享内存作为进程间数据通信机制的情况。这两种方法各有什么优点?分别在什么情况下更适用?
进程间通信机制对比:网络套接字与共享内存
网络套接字和共享内存是单台计算机上进程间通信的两种机制。
网络套接字
基于标准互联网协议
,支持多种协议
适用于本地和远程进程通信
便于不同系统间的通信
缺点
:通信过程中需要进行协议处理和系统调用,效率相对低
共享内存
允许进程通过读写共享区域交换信息
速度快,能实现高效的数据共享
适合大量数据的快速传输
缺点
:本身缺乏同步机制,需要额外的同步手段
适用场景
选择网络套接字
:当需要与远程进程通信或不同系统间通信时
选择共享内存
:当在本地进程间进行大量数据的快速传输时
71、用高级语言(如C语言)编写操作系统有哪些优缺点?
优点:
- 现代编译器能对大型程序进行复杂分析和优化,生成优秀代码;
- 现代处理器可轻松处理复杂依赖细节;
- 操作系统性能提升更依赖于更好的数据结构和算法,而非优秀的汇编代码;
- 系统编写并正常运行后,可找出瓶颈程序并用汇编语言等价程序替换。
缺点:
- 速度降低和存储需求增加,但在当今系统中这不再是主要问题。
72、实现计算机间文件传输程序应使用哪种套接字类型?用于定期测试网络中另一台计算机是否在线的程序应使用哪种套接字类型?请解释原因。
实现计算机间文件传输程序应使用面向连接的TCP套接字。因为文件传输需要保证数据的完整性和顺序性,TCP提供可靠的、面向连接的通信,能确保数据准确无误地从发送方传输到接收方,适合对数据准确性要求高的场景。
用于定期测试网络中另一台计算机是否在线的程序应使用无连接的UDP套接字。这种测试不需要建立复杂的连接,只需要简单地发送一个探测包并等待响应,UDP开销小、速度快,能快速判断目标计算机是否在线。
73、Linux内核在加载内核模块时所使用的冲突解决机制的主要目标是什么?
冲突解决机制允许不同的设备驱动程序预留硬件资源,并保护这些资源不被其他驱动程序意外使用。
74、Linux操作系统的目录结构可能包含对应几种不同文件系统的文件,包括Linux的/proc文件系统。支持不同文件系统类型的需求会如何影响Linux内核的结构?
为支持不同文件系统类型,Linux内核采用虚拟文件系统(VFS)层。该层分离了通用文件系统操作与其实现,定义清晰接口,使不同文件系统的实现能共存,实现对本地挂载的不同类型文件系统的透明访问。同时,VFS基于
vnode
结构,能在网络中唯一表示文件,区分本地和远程文件以及不同类型的本地文件,根据文件系统类型激活特定操作,调用NFS协议处理远程请求,从而让内核有效支持多种文件系统类型。
75、Linux的setuid特性与标准Unix的setuid特性有哪些不同之处?
Linux 对标准 Unix 的
setuid
机制有两点增强:
一是实现了 POSIX 规范的保存用户 ID(saved user ID)机制,允许进程反复放弃和重新获取其有效 UID,且无需修改实际 UID;
二是增加了进程特性,可授予有效 UID 的部分权利,
fsuid
和
fsgid
进程属性用于文件访问权限授予,且能独立于有效 ID 设置。
76、对象管理器的工作是什么?
对象管理器的工作包括:
生成对象句柄
检查进程访问对象的权限
实施配额管理
跟踪每个对象的句柄数量和引用指针数量
维护Windows内部命名空间,支持命名空间中的目录和符号链接
对象类型指定实例的分配方式、数据字段定义和标准虚拟函数的实现
77、I/O管理器的职责是什么?
I/O管理器负责管理文件系统、设备驱动程序和网络驱动程序。它跟踪哪些设备驱动程序、过滤驱动程序和文件系统已加载,还管理I/O请求的缓冲区。
它与VM管理器协作以提供内存映射文件I/O,并控制Windows缓存管理器,该管理器处理整个I/O系统的缓存。
I/O管理器本质上是异步的,通过显式等待I/O操作完成来提供同步I/O。它还提供多种异步I/O完成模型,包括:
设置事件
更新调用进程中的状态变量
向发起线程传递APC
使用I/O完成端口
78、Windows支持哪些类型的网络?Windows如何实现传输协议?请描述两种网络协议。
Windows 支持的网络类型
Windows 支持通过多种协议连接不同的网络。Windows 将传输协议实现为驱动程序,这些驱动程序可以动态加载和卸载,但通常更改后需要重启系统。
常见网络协议
1. 服务器消息块(SMB)协议
简介
:最早在 MS-DOS 3.1 中引入,用于在网络上发送 I/O 请求。
功能
:支持会话控制、文件、打印机和消息四种消息类型。
发展
:其一个版本作为通用 Internet 文件系统(CIFS)发布,被多个操作系统支持。
2. 传输控制协议/网际协议(TCP/IP)
简介
:是互联网上使用的协议套件,已成为事实上的标准网络基础设施。
应用
:Windows 使用它连接各种操作系统和硬件平台。
组成
:其 TCP/IP 包包含以下协议:
简单网络管理协议(SNMP)
动态主机配置协议(DHCP)
旧的 Windows Internet 名称服务(WINS)
改进
:Windows Vista 引入了新的 TCP/IP 实现,支持以下特性:
IPv4 和 IPv6 在同一网络栈中运行
支持将网络栈卸载到高级硬件以实现服务器的高性能
其他网络功能
软件防火墙
:Windows 提供软件防火墙限制程序用于网络通信的 TCP 端口。
79、NTFS命名空间是如何组织的?
NTFS命名空间结构
NTFS命名空间组织为目录层次结构,每个目录使用
B+树数据结构
来存储该目录中文件名的索引。
目录的索引根
包含B+树的顶层。
对于大目录,顶层包含指向存储树其余部分的磁盘范围的指针。
目录条目内容
目录中的每个条目包含以下信息:
文件的名称
文件引用
从MFT中文件的常驻属性获取的更新时间戳和文件大小的副本
80、Windows如何分配用户内存?
Windows 内存管理方式
Windows 的 Win32 API 为应用程序提供了几种使用内存的方式。
虚拟内存分配
应用程序通过调用
VirtualAlloc()
来保留或提交虚拟内存。
通过调用
VirtualFree()
来取消提交或释放内存。
这些函数允许应用程序指定内存分配的虚拟地址。
操作以内存页面大小的倍数进行。
内存映射
应用程序可以将文件内存映射到其地址空间以使用内存。
这是两个进程共享内存的便捷方式。
内存映射是一个多阶段过程。
81、描述应用程序通过 Win32 API 使用内存的一些方式。
应用程序通过 Win32 API 使用内存的方式有:
虚拟内存
:
– 调用
VirtualAlloc()
预留或提交虚拟内存。
– 调用
VirtualFree()
取消提交或释放内存。
– 还可调用
VirtualLock()
将部分已提交页面锁定到物理内存。
内存映射文件
:
– 将文件映射到进程的地址空间。
– 也可用于进程间共享内存。
堆
:
– Win32 进程初始化时会创建默认堆。
– 提供了
HeapCreate()
、
HeapAlloc()
等多个堆管理函数。
– 还提供
HeapLock()
和
HeapUnlock()
用于线程对堆的独占访问。
线程本地存储
:
– 通过线程本地存储(TLS)机制使用内存。
82、描述虚拟内存管理器的管理方案。虚拟内存管理器如何提高性能?
虚拟内存管理器管理方案
管理内容
管理已提交内存
管理每个进程的保留内存(虚拟地址空间)
地址描述与页表管理
每个进程有相关树描述虚拟地址使用范围及用途
管理器按需调入页表页
页表项处理流程
若页表项未初始化:
– 在进程的虚拟地址描述符树中搜索地址
– 填充页表项并获取页面
若页表页不存在:
– 透明分配和初始化页表页
若页面是共享的:
– 根据信息初始化页表项
性能优化方式
利用线程内存引用的局部性
调入一个页面时,同时调入几个相邻页面
预取机制优势
减少页面错误总数
使读取操作集中
提高I/O性能
83、描述Windows中无访问页面功能的一个有用应用。
在Windows系统中,无访问页面功能可用于安全审计。例如,通过对文件访问进行成功和失败审计,能检测对敏感文件的访问情况。若设置某个用户对特定文件无访问权限,当该用户尝试访问时,系统的审计功能会记录这一失败事件,从而有助于发现潜在的安全威胁。
84、描述本地过程调用中用于传输数据的三种技术。不同的消息传递技术最适合在哪些场景应用?
本地过程调用中用于传输数据的三种技术及适用场景如下:
小消息传递技术
–
原理
:使用端口的消息队列作为中间存储,将消息从一个进程复制到另一个进程。
–
适用场景
:适用于发送不超过4KB的小消息。
共享内存技术
–
原理
:客户端或服务器通过创建一个节对象来设置共享内存区域,避免数据复制。
–
适用场景
:适用于需要发送大消息的场景。
回调机制
–
原理
:当客户端或服务器不能立即响应请求时使用,允许进行异步消息处理。
–
适用场景
:适用于需要异步处理消息的场景。
85、Windows 中由什么管理缓存,以及如何管理缓存?
在 Windows 中,缓存管理器负责管理缓存。其默认采用回写式缓存,会累积 4 到 5 秒的写入数据,然后唤醒缓存写入线程。若需要直写式缓存,进程在打开文件时可设置标志,或调用显式的缓存刷新函数。
当空闲缓存内存不足时,缓存管理器会暂时阻止试图写入数据的进程,并唤醒缓存写入线程将页面刷新到磁盘。
网络重定向器可指示缓存管理器限制缓存中的写入积压。此外,缓存管理器还提供 DMA 接口,以便在磁盘和网络接口之间直接移动数据。
86、什么是进程,在Windows系统中进程是如何管理的?
进程概述
进程可以被看作是正在执行的程序。它需要诸如 CPU 时间、内存、文件和 I/O 设备等资源来完成任务,这些资源在进程创建时或执行期间被分配。
Windows 系统中的进程管理
在 Windows 系统中,操作系统负责与进程和线程管理相关的活动,包括:
创建和删除用户及系统进程
对进程进行调度
提供进程同步、通信和死锁处理的机制
87、Windows 7中的用户模式调度(UMS)与纤程有何不同?纤程和UMS之间有哪些权衡?
UMS与纤程的不同之处在于:
纤程执行Win32 API不可靠,因为它们没有自己的线程环境块(TEB),而UMS使用每个用户线程(UT)的TEB来唯一标识UT;
当运行纤程的线程在内核中阻塞时,用户调度器会暂时失去对CPU的控制,而UMS中,当UT进入内核,其对应的内核线程(KT)可能阻塞,内核会切换到调度线程,重新进入用户模式调度器选择另一个UT运行;
纤程可由程序员直接使用,而UMS并非供程序员直接使用,其调度器来自基于UMS构建的编程语言库。
纤程和UMS的权衡方面:
纤程便于移植使用用户模式线程模型编写的传统UNIX应用程序,但存在潜在的兼容性问题,使用Win32 API时不可靠;
UMS解决了纤程的一些局限性,但编写用户模式调度器具有挑战性,且UMS本身不包含调度器。
88、当Windows系统进入休眠状态时,系统会断电。假设你在系统休眠时更换了CPU或内存容量,你认为这样可行吗?为什么?
不可行。因为休眠时系统将内存全部内容转存到磁盘,这些数据是基于原CPU和内存配置的。更换CPU或内存后,硬件环境改变,原数据可能不兼容新硬件,导致系统无法正确恢复运行。
89、一些早期计算机通过将操作系统放置在一个既不能被用户作业也不能被操作系统自身修改的内存分区中来保护操作系统。请描述你认为这种方案可能会出现的两个问题。
一是系统更新困难,当需要对操作系统进行功能升级、漏洞修复时,由于该内存分区不可修改,无法直接更新;
二是故障处理不便,若操作系统出现故障,无法在该内存分区内对系统进行修改和调试来解决问题。
90、在多道程序和分时环境中,多个用户同时共享系统。这种情况可能会导致各种安全问题。a. 请列举两个这样的问题。b. 我们能否在分时机器上确保与专用机器相同程度的安全性?请解释你的答案。
a. 用户数据可能被其他用户非法访问、恶意程序可能干扰其他用户程序运行。
b. 通常不能确保相同程度的安全性。因为分时系统多个用户共享资源,增加了数据泄露和恶意攻击风险;而专用机器仅单一用户使用,受攻击和干扰的可能性相对较小。
91、进程间通信的两种模型是什么?这两种方法的优缺点分别是什么?
进程间通信的两种模型
进程间通信主要有两种模型:
消息传递
和
共享内存
。
消息传递
优点:
适用于交换少量数据。
无需避免冲突。
在计算机间通信中比共享内存更容易实现。
共享内存
优点:
通信速度快且方便。
一旦建立共享内存区域,访问如同常规内存访问。
无需内核干预。
缺点:
需要进程自行确保不同时写入同一位置。
需要进程同意移除操作系统对进程间内存访问的限制。
92、解释为什么记录元数据更新能确保文件系统在崩溃后恢复。
元数据更新与恢复机制
记录元数据更新采用基于日志的恢复技术,所有元数据更改会
顺序写入日志
。
每个特定任务的操作集是一个事务。
写入日志后,该事务即视为
已提交
。
系统崩溃处理
系统崩溃时
,日志文件会包含零个或多个未完成的事务。
这些事务可从指针处继续执行直至完成,以保持文件系统结构的一致性。
对于崩溃前未提交的事务
:
需撤销已应用到文件系统的更改,同样是为了保持文件系统的一致性。
检查点机制
定期写入
检查点记录
。
系统恢复时无需检查点之前的日志记录,可将其丢弃。
避免日志文件无限增长。
93、讨论使用与域相关联的能力来实现访问矩阵的优缺点。
优点
:
灵活性高
便于动态授权和权限管理
支持细粒度控制等
缺点
:
实现复杂度高
性能开销大
管理和维护成本高等
94、讨论以下哪些系统允许模块设计者执行“知必所需”原则。a. MULTICS 环保护方案 b. Hydra 的能力机制 c. JVM 的栈检查方案
b。
MULTICS 环保护方案无法执行“知必所需”原则;Hydra 能力机制能提供更大灵活性来执行保护策略,所以允许模块设计者执行“知必所需”原则的是 Hydra 的能力机制。