Skip to content

Latest commit

 

History

History
51 lines (40 loc) · 1.77 KB

1.md

File metadata and controls

51 lines (40 loc) · 1.77 KB

<<现代操作系统>>(第三版)习题笔记

1.7

答案为a,c,d。对于题意,我理解为哪条指令必须切换至内核态执行,我无法理解为什么b不需要通过内核态,我的依据是计算机的时间是存储在硬件上的,既然涉及了硬件的操作,那就等于需要切换至内核态。经过搜索之后我发现有不需要切换至内核态就能读日期-时间时钟的[方法](https://www.ibm.com/developerworks/cn/linux/1307_liuming_linuxtime1/#3. 时间的测量|outline)。我认为这还是取决于操作系统的具体实现。

1.11

这一题的答案有误。图中的寄存器、高速缓存、内存、磁盘、磁带的访问速度分别是1ns、2ns、10ns、10ms和100s。内存储一次只能读入1字符,磁盘、磁带一次能读取1024字符。

# 寄存器
700*50*80*1ns = 2.8ms
# 高速缓存
700*50*80*2ns = 5.6ms
# 内存
700*50*80*10ns = 28ms
# 磁盘
(700*50*80/1024)*10ms 约等于 27s
# 磁带
(700*50*80/1024)*100s 约等于 270000s

1.16

答案中文翻译: 装配文件系统将使得装配目录中已有的任何文件都不可访问,因此装配点通常都是空的。然而,系统管理人员可能需要将某些位于被装配目录中的非常重要的文件复制到装配点,使得他们在进行设备检查或修理时,可以在紧急事件中的普通路径上找到这些文件。

1.31

使用以下代码:

#!/bin/bash
test_fork() {
	sleep 10000
	echo "hello"
}

while true
do
	test_fork &
done

系统资源并没有被耗尽,而是报Resource temporarily unavailable的错误。linux是有用户进程数最大值限制的,在mac下输入sysctl -a | grep maxproc可查看。

$sysctl -a | grep maxproc
#=>
kern.maxproc: 1064
kern.maxprocperuid: 709