《操作系统》第一次作业
《操作系统》第一次作业¶
10211900416 郭夏辉
题目: 《现代操作系统》第一章1,3,4,6,9,10,17,18,21,26,27,31,32题
-
操作系统的两大主要作用是什么?
-
操作系统作为扩展机器。在隐藏硬件的同时,操作系统呈现给程序清晰明确的抽象;
-
操作系统作为资源的管理者。通过操作系统的合适调配,计算机的各项资源得到了完善利用。
-
分时系统和多道程序系统的区别是什么?
分时操作系统是使一台计算机采用时间片轮转的方式同时为多个用户服务的一种操作系统。分时操作系统将系统处理机时间与内存空间按一定的时间间隔,轮流地切换给各终端用户的程序使用。而多道程序系统在内存中同时存放多个作业,使之同时处于运行状态,这些作业共享CPU等资源。
所有分时系统都是多道程序设计系统,但并非所有多道程序系统都是分时系统,因为多道程序设计系统没有轮流地切换给各终端用户使用。
- 为了使用高速缓存,主存被划分为若干cache行, 通常每行长32或64字节。每次缓存整个cache行。每次缓存整行而不是一个字节或一个字, 这样做的优点是什么?
存储器的访问表现出较强的时间局部性和空间局部性,即如果读取了某个位置,接下来访问这个位置、访问这个位置紧邻的内存位置概率很高。通过缓存整个缓存行,之后缓存命中的概率会增加。与此同时,较高层次的存储器读写速度更快,将较大的字节块整个传输到高速缓存行的速度较快,比单个字节地依次读写要快很多。
-
与访问I/O设备相关的指令通常是特权指令,也就是说,它们能在内核态执行而在用户态则不行。说明为什么这些指令是特权指令。
-
特权指令是只能由操作系统内核执行的指令。这些指令可以自由地访问任何有效的地址,不受任何限制。非特权指令是运行于用户态的代码,受到很大的限制。
-
用户态的程序访问I/O设备要遵循操作系统的管理,如果在用户程序中便可以直接执行访问I/O设备的指令,那么非特权指令受到的限制便失效了,用户态的程序可以绕过内核的管理,出现很大的漏洞,这显然是不可以接受的。
-
在建立一个操作系统时有几个设计目的,例如资源利用、及时性、健壮性等。请列举两个可能互相矛盾的设计目的。
在资源利用的过程中,利用率和高效性都是我们关注的因素。比如在设计动态内存分配的malloc()函数时,采用首次适配的方式可以使得分配过程更高效,但是这样做比最优适配产生了更多的内部和外部碎片,降低了资源的利用率。
-
内核态和用户态有哪些区别?解释在设计操作系统时存在两种不同的模式有什么帮助。
-
内核态下,CPU可以执行其指令集中的每条指令,并能够使用硬件的各种功能,CPU可以无限制地读写任何有效的地址中的数据。
- 用户态下,CPU只能执行其指令集中的部分指令,执行时还不能是核心的功能。CPU只能受限地访问部分有效的地址中的数据。在系统调度环节,程度对CPU的控制权会被其他程序占据。
设计操作系统时存在两种不同的模式,将用户程序与内核程序隔绝起来,可以避免严重的错误。
-
什么是陷阱指令?在操作系统中解释它的用途。
-
陷阱指令是一系列将CPU执行模式从用户模式切换到内核模式的指令,它们使得用户程序能够间接地调用操作系统内核中的函数。
-
在用户程序和内核之间提供一个像过程一样的接口,叫系统调用。比如我要加载(execve)一个新的程序,我的程序在用户态下是没有权限这样做的,但是我可以通过调用适当的内核程序来请求对应的服务,以此实现我对内核服务受控的访问。
-
在分时系统中为什么需要进程表?在只有一个进程存在的个人计算机系统中,该进程控制整个机器直到进程结束,这种机器也需要进程表吗?
-
进程表存储了当前被挂起、或者是被延迟和阻塞的进程状态。在计算机上往往有多个进程在运行,为了追踪各个进程的状态信息,进程表就显得必不可少了。
-
对于只有一个进程存在的个人计算机系统,没有必要设置进程表,因为单一进程不会挂起,它的状态不依赖于其他进程。
-
下列资源能使用哪种多路复用(时间、空间或者两者皆可) CPU, 内存,磁盘,网卡,打印机,键盘以及显示器?
-
时间复用:CPU,网卡,打印机,键盘
- 空间复用:内存,磁盘
-
两者皆可:显示器
-
在图1-17 的例子中库调用称为read, 而系统调用自身称为read 。这两者都有相同的名字是正常的吗?如果不是,哪个更重要?
-
除了描述方便,系统调用本身是没有名称的。当库调用通过read陷阱指令进入内核之后,会把相关的系统调用参数放入存储器中,然后CPU在相应的处理表中根据所给的参数找到并执行对应的指令。
-
在我看来,如果硬是要说谁的"名称"更重要,我觉得库调用中的更重要。因为我们编程的过程中,往往接触的不是底层的,繁琐的系统调用指令,而是库中已经包装好了的函数,而这些函数通过清晰的库调用名称简化了我们的使用。
-
现代操作系统将进程的地址空间从机器物理内存中分离出来。列举这种设计的两个好处。
-
通过更有效的内存管理,保障各个进程之间访问不同的地址空间,确保互不干扰的同时实现了较高的安全性。
-
允许程序使用比物理内存还要多的内存,弥补物理内存的不足。
-
请解释在建立基于微内核的操作系统时策略与机制分离带来的好处。
-
机制分离使系统架构师在内核模式下可以执行较少的基础指令,使代码得以显著地简化,为这些辛苦的架构师们的开发省了很大力气。
-
在系统出错需要维护、更新时,架构师们可以较轻松地找到问题所在。
-
虚拟机由于很多因素而十分流行,然而它们也有一些缺点,给出一个缺点。
虚拟机对硬件资源的消耗是庞大的,在虚拟机上运行的程序难以达到机器的能力上限。同时,虚拟机的成功需要完善的虚拟化技术,虚拟机的更新迭代需要更高的成本。