概述
1、什么是操作系统
- 操作系统简称OS,负责管理协调计算机硬件与软件资源工作的系统软件。
- 屏蔽了硬件层的复杂性,为上层应用软件与用户提供易用的服务。
2、操作系统主要有哪些功能?
操作系统最主要的功能:
- 处理器(CPU)管理:CPU的管理和分配,主要指的是进程管理。
- 内存管理:内存的分配和管理,主要利用了虚拟内存的方式。
- 外存管理:外存(磁盘等)的分配和管理,将外存以文件的形式提供出去。
- I/O管理:对输入/输出设备的统一管理。
除此之外,还有保证自身正常运行的健壮性管理,防止非法操作和入侵的安全性管理。
3、什么是系统调用?有哪几类?
根据进程访问资源的特点,可以将进程在系统上的运行分为两个级别:
- 用户态:用户态下的进程可以直接读取用户程序的数据
- 内核态:内核态下的进程几乎可以访问计算机的任何资源,不受限制
我们运行的程序基本都是运行在用户态,如果需要调用操作系统提供的内核态级别的功能的时候,就需要使用系统调用,通过系统调用方式向操作系统提出服务请求,并由操作系统代为完成 。
这些系统调用按功能大致可分为如下几类:
- 设备管理。完成设备的请求或释放,以及设备启动等功能。
- 文件管理。完成文件的读、写、创建及删除等功能。
- 进程控制。完成进程的创建、撤销、阻塞及唤醒等功能。
- 进程通信。完成进程之间的消息传递或信号传递等功能。
- 内存管理。完成内存的分配、回收以及获取作业占用内存区大小及地址等功能。
4、用户态切换到内核态的几种方式
- 系统调用
- 这是用户态进程主动要求切换到内核态的一种方式,用户态进程通过系统调用申请使用操作系统提供的服务程序完成工作 。
- 异常
- 发生异常,切换到处理该异常的内核程序中。
- 硬件设备中断信号
- 当硬件设备完成用户请求的操作后,会向CPU发出相应的中断信号,这时CPU会暂停执行下一条即将要执行的指令转而去执行与中断信号对应的处理程序,如果先前执行的指令是用户态下的程序,那么这个转换的过程自然也就发生了由用户态到内核态的切换。
系统调用可以认为是用户进程主动发起的,异常和硬件设备中断则是被动的。
4、并发和并行有什么区别?
- 并行:指两个或多个事件在同一时刻同时发生。
- 并发:指两个或多个事件在同一时间间隔内发生。这些事件宏观上是同时发生的,但微观上是交替发生的。
5、同步与异步?
- 同步就是指一个进程在执行某个请求的时候,若该请求需要一段时间才能返回信息,那么这个进程将会一直等待下去,直到收到返回信息才继续执行下去;
- 异步是指进程不需要一直等下去,而是继续执行下面的操作,不管其他进程的状态。当有消息返回时系统会通知进程进行处理,这样可以提高执行的效率。
6、什么是中断?
基本概念:
- 中断是指计算机在执行期间,系统内发生任何非寻常的或非预期的急需处理事件,使得 CPU 暂时中断当前正在执行的程序而转去执行相应的事件处理程序,待处理完毕后又返回原来被中断处继续执行或调度新的进程执行的过程。
- 引起中断发生的事件被称为中断源。
- 中断源向 CPU 发出的请求中断处理信号称为中断请求,而 CPU 收到中断请求后转到相应的事件处理程序称为中断响应。
类型:
根据中断源产生的条件,可把中断分为外中断和内中断。
- 外中断: 指来自处理器和内存外部的中断,包括 IO 设备发出的 IO 中断、外部信号中断(例如用户键人 ESC 键)。各种定时器引起的时钟中断以及调试程序中设置的断点等引起的调试中断等。外中断在狭义上一般被称为中断。
- 内中断:一般称为陷阱(trap)或异常。它包括程序运算引起的各种错误,如地址非法、校验错、页面失效、存取访问控制错、算术操作溢出、数据格式非法、除数为零、非法指令、用户程序执行特权指令、分时系统中的时间片中断以及从用户态到核心态的切换等都是陷阱的例子。
7、软中断和硬中断的区别?
硬中断:
- 硬中断是由硬件产生的,比如,像磁盘,网卡,键盘,时钟等。
- 处理中断的驱动是需要运行在 CPU 上的,因此,当中断产生的时候,CPU 会中断当前正在运行的任务,来处理中断。
- 硬中断可以直接中断 CPU。它会引起内核中相关的代码被触发。对于那些需要花费一些时间去处理的进程,中断代码本身也可以被其他的硬中断中断。
- 对于时钟中断,内核调度代码会将当前正在运行的进程挂起,从而让其他的进程来运行。它的存在是为了让调度代码(或称为调度器)可以调度多任务。
软中断
- 软中断的处理非常像硬中断。然而,它们仅仅是由当前正在运行的进程所产生的。
- 通常,软中断是一些对 I/O 的请求。这些请求会调用内核中可以调度 I/O 发生的程序。对于某些设备,I/O 请求需要被立即处理,而磁盘 I/O 请求通常可以 排队并且可以稍后处理。
- 软中断仅与内核相联系。而内核主要负责对需要运行的任何其他的进程进行调度。一些内核允许设备驱动的一些部分存在于用户空间,并且当需要的时候内核也会调度这个进程去运行。
- 软中断并不会直接中断 CPU。也只有当前正在运行的代码(或进程)才会产生软中断。这种中断是一种需要内核为正在运行的进程去做一些事情(通常为 I/O)的请求。