操作系统基础(操作系统理论基础)

操作系统基础(操作系统理论基础)svg xmlns http www w3 org 2000 svg style display none svg

大家好,我是讯享网,很高兴认识大家。



 <svg xmlns="http://www.w3.org/2000/svg" style="display: none;"> <path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path> </svg> 

讯享网

计算操作系统的知识点比较繁杂,但是面试的时候又经常会遇到。其中操作系统中比较常见的问题包括进程管理内存管理虚拟内存等等。

操作系统中的很多思想、很多经典的算法,在我们日常开发使用的各种工具或者框架中找到它们的影子。比如说我们开发的系统使用的缓存(比如 Redis)和操作系统的高速缓存就很像。(1)Redis解决程序处理速度和访问常规关系型数据库速度不对等的问题。(2)局部性原理(2-8 原则)

(1)CPU 中的高速缓存有很多种,不过大部分都是为了解决 CPU 处理速度和内存处理速度不对等的问题。我们还可以把内存看作外存的高速缓存,程序运行的时候我们把外存的数据复制到内存,由于内存的处理速度远远高于外存,这样提高了处理速度。同样地,我们使用的 Redis 缓存就是为了解决程序处理速度和访问常规关系型数据库速度不对等的问题。

(2)高速缓存一般会按照局部性原理(2-8 原则)根据相应的淘汰算法保证缓存中的数据是经常会被访问的。我们平常使用的 Redis 缓存很多时候也会按照 2-8 原则去做,很多淘汰算法都和操作系统中的类似。

既说了 2-8 原则,那就不得不提命中率了,这是所有缓存概念都通用的。简单来说也就是你要访问的数据有多少能直接在缓存中直接找到。命中率高的话,一般表明你的缓存设计比较合理,系统处理速度也相对较快。

  1. 操作系统(Operating System,简称 OS)是一组 控制和管理 计算机软硬件资源,合理地 组织 多道程序的运行,方便 用户使用的程序的集合;-
  2. 操作系统本质上是一个运行在计算机上的软件程序 ,主要用于管理计算机硬件和软件资源。 举例:运行在你电脑上的所有应用程序都通过操作系统来调用系统内存以及磁盘等等硬件。
  3. 操作系统存在屏蔽了硬件层的复杂性。 操作系统就像是硬件使用的负责人,统筹着各种相关事项。
  4. 操作系统的内核(Kernel)是操作系统的核心部分,它负责系统的内存管理,硬件设备的管理,文件系统的管理以及应用程序的管理。 内核是连接应用程序和硬件的桥梁,决定着系统的性能和稳定性。

操作系统的内核(Kernel)和中央处理器(CPU,Central Processing Unit)的区别:

  1. 操作系统的内核(Kernel)属于操作系统层面,而 CPU 属于硬件。
  2. 内核(Kernel)主要负责系统管理比如内存管理、硬件设备管理、文件管理以及应用程序管理,它屏蔽了对硬件的操作。

CPU 主要提供运算,处理各种指令的能力。

【问】简述操作系统的基本特征

① 并发

② 共享

​ 系统中的资源可被多个并发执行的进程共同使用;
并发性 与 共享性 互为存在条件

③ 虚拟

④ 异步

【问】简述并发与并行的区别

从资源管理的角度来看,操作系统有 6 大功能:

  1. 进程和线程的管理 :进程的创建、撤销、阻塞、唤醒,进程间的通信等。
  2. 存储管理 :内存的分配和管理、外存(磁盘等)的分配和管理等。
  3. 文件管理 :文件的读、写、创建及删除等。
  4. 设备管理 :完成设备(输入输出设备和外部存储设备等)的请求或释放,以及设备启动等功能。
  5. 网络管理 :操作系统负责管理计算机网络的使用。网络是计算机系统中连接不同计算机的方式,操作系统需要管理计算机网络的配置、连接、通信和安全等,以提供高效可靠的网络服务。
  6. 安全管理 :用户的身份认证、访问控制、文件加密等,以防止非法用户对系统资源的访问和操作。

(1)Windows:目前最流行的个人桌面操作系统 ,界面简单易操作,软件生态非常好

(2) Unix:最早的多用户、多任务操作系统 。后面崛起的 Linux 在很多方面都参考了 Unix。目前这款操作系统已经逐渐逐渐退出操作系统的舞台。

(3) Linux:Linux 是一套免费使用、开源的类 Unix 操作系统。 Linux 存在着许多不同的发行版本,但它们都使用了 Linux 内核


讯享网

(4)Mac Os:苹果自家的操作系统,编程体验和 Linux 相当,但是界面、软件生态以及用户体验各方面都要比 Linux 操作系统更好。

2.5.1 用户态和内核态定义

CPU使用 程序状态字寄存器(PSW) 实现对CPU状态的标记【用户态、内核态】;

根据进程访问资源的特点,我们可以把进程在系统上的运行分为两个级别:

  • 用户态(User Mode) : 用户态运行的进程可以直接读取用户程序的数据,拥有较低的权限。当应用程序需要执行某些需要特殊权限的操作,例如读写磁盘、网络通信等,就需要向操作系统发起系统调用请求,进入内核态。
  • 内核态(Kernel Mode) :内核态运行的进程几乎可以访问计算机的任何资源包括系统的内存空间、设备、驱动程序等,不受限制,拥有非常高的权限。当操作系统接收到进程的系统调用请求时,就会从用户态切换到内核态,执行相应的系统调用,并将结果返回给进程,最后再从内核态切换回用户态。

内核态相比用户态拥有更高的特权级别,因此能够执行更底层、更敏感的操作。

不过,由于进入内核态需要付出较高的开销(需要进行一系列的上下文切换和权限检查),应该尽量减少进入内核态的次数,以提高系统的性能和稳定性。

2.5.2 同时具有用户态和内核态的原因

同时具有用户态和内核态主要是为了保证计算机系统的安全性、稳定性和性能

  • 安全性:在 CPU 的所有指令中,有一些指令是比较危险的比如内存分配、设置时钟、IO 处理等,如果所有的程序都能使用这些指令的话,会对系统的正常运行造成灾难性地影响。因此,我们需要限制这些危险指令只能内核态运行。这些只能由操作系统内核态执行的指令也被叫做 特权指令
  • 稳定性和性能:如果计算机系统中只有一个内核态,那么所有程序或进程都必须共享系统资源,例如内存、CPU、硬盘等,这将导致系统资源的竞争和冲突,从而影响系统性能和效率。并且,这样也会让系统的安全性降低,毕竟所有程序或进程都具有相同的特权级别和访问权限。

2.5.3 用户态和内核态切换过程

:执行一条特权指令,修改 的标志位为 用户态 ;

:由 引发,硬件自动完成变态过程;

广义上来说,用户态切换到内核态有 3 种方式:

  1. 系统调用(Trap) :用户态进程 主动 要求切换到内核态的一种方式,主要是为了使用内核态才能做的事情比如读取磁盘资源。系统调用的机制其核心还是使用了操作系统为用户特别开放的一个中断来实现。【本质还是中断
  2. 中断(Interrupt) :当外围设备完成用户请求的操作后,会向 CPU 发出相应的中断信号,这时 CPU 会暂停执行下一条即将要执行的指令转而去执行与中断信号对应的处理程序,如果先前执行的指令是用户态下的程序,那么这个转换的过程自然也就发生了由用户态到内核态的切换。比如硬盘读写操作完成,系统会切换到硬盘读写的中断处理程序中执行后续操作等。
  3. 异常(Exception):当 CPU 在执行运行在用户态下的程序时,发生了某些事先不可知的异常,这时会触发由当前运行进程切换到处理此异常的内核相关程序中,也就转到了内核态,比如缺页异常

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-m7G8oqev-1681808824288)(C:UsersDoubleCAppDataRoamingTypora	ypora-user-imagesimage-20230417213806167.png)]

在系统的处理上,中断和异常类似,都是通过中断向量表来找到相应的处理程序进行处理。

区别在于,中断来自处理器外部,不是由任何一条专门的指令造成,而异常是执行当前指令的结果。


系统调用

我们运行的程序基本都是运行在用户态,如果需要使用操作系统提供的内核态级别的子功能,那就需要系统调用!

也就是说在我们运行的用户程序中,凡是与系统态级别的资源有关的操作(如文件管理、进程控制、内存管理等),都必须通过系统调用方式向操作系统提出服务请求,并由操作系统代为完成。

系统调用类型

系统调用按功能大致可分为如下几类:

  • 设备管理:完成设备(输入输出设备和外部存储设备等)的请求或释放,以及设备启动等功能。
  • 文件管理:完成文件的读、写、创建及删除等功能。
  • 进程管理:进程的创建、撤销、阻塞、唤醒,进程间的通信等功能。
  • 内存管理:完成内存的分配、回收以及获取作业占用内存区大小及地址等功能。

系统调用和普通库函数调用非常相似

​ 只是系统调用由操作系统内核提供,运行于内核态,

​ 普通的库函数调用属于编程语言级别。由函数库或用户自己提供,运行于用户态。

总结:系统调用是应用程序与操作系统之间进行交互的一种方式,通过系统调用,应用程序可以访问操作系统底层资源,例如文件、设备、网络等。

系统调用过程

系统调用的过程可以简单分为以下几个步骤:

  1. 用户态的程序发起系统调用,因为系统调用中涉及一些特权指令(只能由操作系统内核态执行的指令),用户态程序权限不足,因此会中断执行,也就是 Trap(Trap 是一种中断)。
  2. 发生中断后,当前 CPU 执行的程序会中断,跳转到中断处理程序。内核程序开始执行,也就是开始处理系统调用。
  3. 内核处理完成后,主动触发 Trap,这样会再次发生中断,切换回用户态工作

在这里插入图片描述


小讯
上一篇 2025-05-09 12:14
下一篇 2025-05-07 10:25

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/187499.html