操作系统与系统编程(一)操作系统概念与理解

(一)操作系统的一些理解与概念

1.一般程序猿也不会参与系统编程,那么还有学习操作系统和系统编程的必要吗?

​ 答案是肯定,因为理解操作系统可以更好地服务于编程,比如更深入的理解多线程等

2.操作系统的理解:

​ 操作系统是应用程序和硬件间的抽象层,方便软件利用硬件资源,也可以避免软件直接与物理资源接触(防止恶意程序)

​ 操作系统的抽象包括很多层面,包括文件和文件系统,基于进程的抽象等

3.操作系统的作用:

​ ——提供公共服务:如读写文件等(无需用户理解实现原理)

​ ——协调进程交互:操作系统负责给每个进程分配处理器时间、内存等。进程间同步和通信、进程切换过程中处理器和高速缓存器状态的变化等都属于操作系统的协调范围

​ ——管理与控制资源:将有限物理资源合理分配给不同的进程,提高资源利用率

​ 以上称为操作系统内核,计算机启动时第一个运行的进程就是内核,所有用户进程都基于内核运行,所有资源管控、进程交互协调都由内核完成。也就是说处理器每隔一段时间就中断正在执行的用户进程,切回内核,让它重新分配物理资源,然后决定下一个运行的用户进程。

4.关于进程的理解:

​ 我们知道,程序在处理器上运行是不连续的,因为硬件资源有限,不可能为所有程序提供全部处理器时间,同样计算机有限的内存迫使一个程序的部分内存留在磁盘上,只有部分数据存在系统内存中。所以系统处理程序的过程是非常复杂的

​ 如果程序猿在编写程序的过程中需要考虑那么多,估计会累死吧。。所以,就有了“进程”这样一个概念。

​ 我们把占用全部内存和处理器时间的程序(理想状态)抽象为“进程”。“进程”大大方便了多个程序同时在系统中运行(因为程序猿不需考虑在内存中所占大小和位置,也不需考虑上下文切换(从一个进程切换到另一个进程)时的复杂过程,只需考虑自己的程序在理想状态下的运行情况)

​ 而且,每个进程都在抽象的内存空间中进行读写,不直接接触其它进程的内存,从而保护进程不受到其它恶意进程的侵害

5.关于内核与用户进程的理解:

​ 内核和用户进程都是进程!内核就相当于一个指挥官,而用户进程就相当于小兵,指挥官决定小兵的资源分配以及小兵间的协调配合。

​ 内核与用户进程使用不同的存储空间,防止用户进程获得内核信息(内核所在存储空间称为系统空间 用户进程所用空间称为用户空间)

6.用户进程到内核的方式

​ ——系统调用 (关于系统调用,会在8中的(1)里有详细描述)

​ ——中断(又称外中断或异步中断)包括时钟中断(即一个进程执行一段时间后,时钟发出中断信号使计算机进入内核态)、设备 I/O 中断。

​ ——异常(又称内中断或同步中断)可能源于程序的非法操作(如除数为0、超长度读取数组等)、硬件故障等,通过内核中对应的异常处理程序处理

7.关于双模式操作:

​ 我们用两种不同模式来区分用户进程与内核的不同权限,这种区分被称为双模式操作

​ 两种模式由处理器中一个位来区分,当处理器执行只允许内核态执行的操作时,它会通过位判断是否处于内核态,如果不是,处理器就会触发异常并终止该进程

8.一些疑问和答案:

(1)诸如文件读写啦,进程间通信啦,都是内核专属的权利,用户进程是没有权限的,那么平时用的软件是怎么实现该操作的呢?

​ 操作系统提供了给用户进程的服务(即系统调用),它可以使用户进程在固定位置进入系统空间并使用系统提供的服务,这样就可以解决文件读写之类的问题啦

​ 所有系统调用的地址存放在系统调用表里(存储的是系统自带的系统调用的地址!!)

注意!!

​ 编程中新建一个数组是用户进程使用自己已分配的一段内存,并不需要进入内核态!!!

​ 而从磁盘中读取文件,写入文件,处理异常等操作都需进入内核态!!

(2)如果同时有多个中断发生时,处理器将怎么处理?

​ 处理器会先处理优先级高的中断。如果在处理一个中断过程中出现另一个优先级更高的中断信号,那么处理器可能切换处理新的中断信号,这时会出现多重中断。

​ 为避免中断耗费过多时间,在处理中断信号时会屏蔽某一优先等级的中断信号或某个单独的中断信号

(3)怎么控制用户进程获取系统调用?

​ 所有中断服务程序的地址按顺序存储在中断向量表中。向量表控制用户进程进入系统的地址,保护内核不被篡改。处理器可以利用中断向量表转入中断服务程序

转载请注明出处!!!

如果有写的不对或者不全面的地方 可通过主页的联系方式进行指正,谢谢

你可能感兴趣的:(操作系统)