1. 请分别从系统和用户的角度,阐述操作系统的主要功能?
从用户角度来说,OS主要功能有:
- 操作系统可以对计算机系统的各项资源开展调度工作,其中包括软硬件设备、数据信息等,运用操作系统可以减少人工资源分配的工作量,用户不必自己去分配各种资源,计算机的智能化得到提高。
- 其次在资源管理方面,若有多个用户来管理一个计算机系统,那么在用户进行资源共享时可能存在冲突。而操作系统可以协调计算机的各个组成部分,对各个资源板块的使用效率和使用程度进行一个最优的调整,使得各个用户的需求都能够得到满足。
- 最后,操作系统在计算机程序的辅助下,可以抽象处理计算系统资源提供的各项基础职能,以可视化的手段来向使用者展示操作系统功能,减低计算机的使用难度。
从系统的角度来说,OS主要功能有:
- 操作系统是资源分配器:
管理计算机系统中的资源,能够有效而公平地处理冲突的资源请求。 - 操作系统是控制程序:
管理用户程序的执行以防止计算机资源的错误使用或使用不当。
概括地说,OS主要功能有:
进程管理,主要是进程调度,在单用户单任务的情况下,处理器仅为一个用户的一个任务所独占, 进程管理的工作十分简单。但在多程序或多用户的情况下,组织多个作业或任务时,操作系统就要解决处理器的调度、分配和回收等问题 。
存储管理功能:包括存储分配、存储共享、存储保护 、存储扩张。
设备管理功能:合理进行设备分配、对设备传输进行控制 、保证设备的独立性。—>
文件管理功能:文件存储空间的管理、目录管理 、文件操作管理、文件保护。—>
作业管理功能:负责处理用户提交的任何要求。
2. 解释什么是系统调用?阐述系统调用与 API 的逻辑关系。
系统调用概念:
系统调用就是一种特殊的接口,通过这个接口,用户可以访问内核空间。并且系统调用规定了用户进程进入内核的具体位置。一般在linux
系统中将程序运行空间分为内核与用户空间(内核态和用户态),逻辑上它们是相互隔离的,因此用户程序无法直接访问内核数据和调用内核函数,而有了系统调用,用户就可以通过:用户进程->系统调用->内核->返回用户空间 来访问内核空间。
系统调用和API的逻辑关系:
API(Application Programming Interface):应用程序接口,是一些预先定义的函数,提供应用程序与开发人员基于某软件或硬件的以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。
逻辑联系如下:
- 一个API可能需要一个或者多个系统调用来完成其特定的功能,API是与程序员交互的,而系统调用是直接与内核交互的,其关系如下:
程序员<-->API<-->系统调用<-->内核空间
。 - 因此系统调用是不与程序员进行交互的,它根据API函数,通过一个软中断机制向内核提交请求,以获取内核服务的接口。
- 最后,API与系统调用的对应关系,一个API可能对应多个API,因为它可能会用到多个系统调用来实现其函数功能,甚至一个API也可能不需要系统调用。总之,如果一个API需要内核空间提供的服务来完成功能的话,它必须调用相应的系统函数。
3. 阐述 Dual Mode 的工作机制,以及采用 Dual Mode 的原因。
工作机制:
分为用户模式和内核模式,在硬件中提供模式位(Mode bit)使得能够分辨系统是在运行那种模式;有一些指令被认为是特权的,只能在内核模式下执行;特别地,执行系统调用时会设置为内核模式(需要访问内核空间),而在系统返回时重置为用户模式。采用Dual Mode的原因:
通过双模式的必要切换,允许操作系统保护自身和其他系统组件。
4. 概述操作系统需要提供的服务有哪些?
- 处理器(进程)管理:对处理器的分配和和运行(以进程为单位)实施有效的管理,包括进程控制(负责进程的创建,撤销以及状态转换),进程同步(对并发执行的进程进行协调),进程通信(负责进程间的信息交流),进程调度(按一定算法进行处理器分配)。
- 存储器管理:对内存进行分配,保护和扩充,包括内存分配(按一定策略为每道程序分配内存),内存保护(保证各程序在自己的内存区域内运行而不相互干扰),内存扩充(为允许大型最作业或多作业的运行,必须借助虚拟存储技术去获得增加内存的效果)。
- 设备管理:对计算机系统内的所有设备进行管理。包括设备分配(根据一定的设备分配原则对设备进行分配),设备传输控制(实现物理的输入输出操作),设备独立性(用户程序中的设备与实际使用的物理设备无关)。
- 文件管理:操作系统中负责信息管理的部分称为文件系统,文件管理的主要任务包括文件存储空间的管理(存储空间的分配与回收),目录管理(提供按名存取的功能),文件操作管理(负责完成数据的读写),文件保护。
- 用户接口:方便用户使用操作系统,包括命令接口(包括联机命令接口和脱机命令接口),程序接口(也称系统调用),图形接口,处理用户的作业请求。
5.分别阐述 Monolithic 结构,层次化结构,模块化结构和微内核 结构的特点和优劣。
Monolithic 结构
优点: 效率高。
缺点: 没有结构, 难以修改和维护。层次化结构
优点: 简化设计实现, 隐藏底层实现, 方便调试维护。
缺点: 难以定义不同的层次, 性能较差。微内核结构
优点: 容易拓展, 增加服务无需改动内核。
缺点: 用户空间和通信开销导致的性能开销较大。模块化结构
优点:类似于分层结构,但更加灵活,也类似于微内核结构, 但效率更高。
缺点:需要保证设计使操咋系统各模块间耦合度低, 且无法找到一个可靠的模块开发顺序. 增加新的内容时可能产生系统碎片化和安全问题。
6.举例说明什么是机制与策略分离的设计原则。
操作系统设计与实现的一个重要原则就是策略与机制的分离,其目的是为了提供系统(设计、使用)的灵活性。机制决定如何做(how),而策略决定做什么(what)。
机制和策略必须分开以确保系统易于修改。没有两个系统安装是相同的,因此每个安装都可能需要调整操作系统以适合其需求。通过将机制和策略分开,可以在机制保持不变的情况下随意更改策略,这种安排提供了更灵活的系统 。
例如,timer结构是一种保护CPU的机制,但是为特定用户设置多长时间的计时器是由策略决定。这样就适应了用户的不同需求。
7.概述 multi-programming 和 multi-tasking 的概念及其设计目的。
Multi-programming:
A computer running more than one program at a time (like running Excel and Firefox simultaneously)。
即一个设备可以同时运行多个程序,具体地,把多个program放入系统中,当一个program在做I/O,其他的program可以用CPU,合理分配使用的时间,因为在计算机内,一旦一项作业(job)离开CPU并执行其他一些任务(例如I / O),CPU就会变得空闲。CPU一直在等待,直到该作业(之前正在执行的作业)返回并重新开始与CPU的执行。因此,CPU在这所有时间内都保持空闲状态。
muti-tasking的设计目的就是为了减少上述过程中的CPU浪费情况,主要思想是最大化CPU时间,显著地提高CPU的利用率。
Multi-tasking:
Tasks sharing a common resource (like 1 CPU)。
多任务处理是指一次执行多个任务(例如,进程,程序,线程等)。在OS中,我们能够播放MP3音乐,在Microsoft Word中编辑文档,同时浏览Google Chrome,这是通过多任务处理来完成的。
具体通过Time-Sharing实现,CPU划分n个小到几毫秒的时间区域,让已经加载到Memory中的program同时进行,因此,CPU使进程在它们之间共享时间片并相应地执行。只要一个进程的时间量到期,另一个进程就会开始执行,比如时间片设置为5ns,多任务切换非常快,以至于使得用户认为这些任务是“同时”进行的。
muti-tasking的设计目的是为了满足用户进行多任务处理的需求。通过Time-Sharing使得一个任务不必等待长时间才能执行。