沉下心学操作系统(一)概念与基础


​ 以前觉得操作系统是一块难啃的骨头,自己不想去碰。然后问面试官,自己哪些地方需要学习一下,面试官说操作系统和内核等等,如果学会了,对自己的发展会更有帮助。因为越底层的东西懂得越多,才能对编程有更加深入的了解和体会。自己很赞同这个思想,不多说,沉下心来学操作系统吧,路一步步地走~

操作系统概念

​ 不同的电脑硬件设备不同,运行网络环境不同。为了避免对不同的硬件写不同的程序,因此需要在硬件和软件之间加一个抽象层,从而方便软件利用硬件资源。而这个抽象层就是操作系统

​ (1)基于磁盘信息的抽象:操作系统帮我们管理了磁盘上的数据,能够将一次存储在多个位置的数据结合在一起命名为文件,方便我们直接读取磁盘上的信息

​ (2)对物理资源的抽象:操作系统通过将物理资源抽象为进程,大大方便了多个程序在系统中同时运行,而程序设计者无需考虑其它软件的内存占用以及上下文切换,保留处理器状态等复杂过程

​ (3)防止程序直接与物理资源接触,避免通过程序修改磁盘信息和对其它程序破坏的情况

内核与用户进程

​ 我们一般把操作系统核心功能部分称为内核(包括物理资源管理,协调进程调度,构建虚拟机,公共服务等)

​ 一般把处理器运算时间分成两部分:一部分是内核在处理器运行,一部分是用户进程运行。有关两者:

​ (1)用户进程必须通过内核获取资源,并且不能接触除了自己以外的资源。

​ (2)用户进程比内核拥有更少的权限和资源

​ (3)内核与用户进程使用不同的存储空间,内核所用的空间为系统空间,用户进程所用的空间为用户空间

双模式操作

​ 处理器中的一个位用于区分内核和用户进程,当处理器要执行某些只允许在内核态执行的特权操作时,它会先通过这个位判断当前是否处于内核态。若用户进程越权操作,处理器会触发异常,该进程被内核终止

用户态到内核态的三种方式:

  1. 系统调用
  2. 异常
  3. 中断

系统调用表

​ 为了使用户进程在保证安全的情况下实现文件读写、进程间通信等“内核级操作”,操作系统给用户进程提供系统调度,允许用户进程在特定的位置进入系统空间并使用系统提供的服务。

​ 而所有的系统调用程序地址都被存放在存储器的某一个位置,该位置称为系统调度表。

​ 为了避免恶意进程通过空指针、超出缓冲区大小范围攻击内核。在实现系统调用时必须检查用户空间指针的合理性,再将参数复制到系统空间进行操作

异常

​ 又被称为内中断或同步中断。是由于进程运行时的非法操作或者硬件故障导致,然后引起内核中对应的异常处理机制。

中断

​ 又被称为外中断或异步中断,来自处理器外的中断信号。包括时钟中断、设备I/O中断

​ 当同时出现多个中断时处理器会优先处理优先度高的中断。如果处理一个中断的过程中出现一个优先度更高的中断,处理器可能会切换到新的中断信号,从而造成多重中断。对此我们可以采用屏蔽方式处理

转载请注明出处!!!

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

猜你喜欢

转载自blog.csdn.net/Ivan_zcy/article/details/88762078