Linux之kernel(1)系统基础理论(1)

打印 上一主题 下一主题

主题 844|帖子 844|积分 2532

Linux之Kernel(1)系统基础理论(1)

  
   Author: Once Day Date: 2025年2月6日


  一位热衷于Linux学习和开辟的菜鸟,试图谱写一场冒险之旅,大概终点只是一场白日梦…


   漫漫长路,有人对你微笑过嘛…


  全系列文章可参考专栏: Linux内核知识_Once-Day的博客-CSDN博客


  参考文章:
  

  • openEuler OS知识连载 - 知乎
  • 弁言 - rCore-Camp-Guide-2024A 文档
  • 盘算机操纵系统知识点总结(有这一篇就够了!!!)-CSDN博客
  • 5万字、97 张图总结操纵系统核心知识点 - 程序员cxuan - 博客园
  • 【王道】操纵系统 知识点总结(合集)【超详细!】 - Zyyyyyyyyy - 博客园
  • 全方位剖析Linux操纵系统,太全了-linux操纵系统的特点
  • OS发展史中各操纵系统的形成、发展和特点_同时具备什么操纵系统功能构成所谓前后系统,前后任务优先后台任务-CSDN博客
  • 《现代操纵系统》
  

  
1.概述

1.1 怎么明白操纵系统

(1)操纵系统起首是软件程序
操纵系统是盘算机系统中最基础、最核心的软件程序。它是盘算机硬件与用户之间的桥梁,为用户提供一个方便、高效、安全的工作环境。操纵系统管理和控制着盘算机系统中的各种硬件资源,如CPU、内存、存储设备、输入输出设备等,合理地组织、调度和分配这些资源,使它们可以或许协调工作,发挥最大效能。
(2)盘算机系统的核心和基石
操纵系统也是其他应用软件运行的基础。它为应用程序提供了同一的编程接口和运行环境,屏蔽了硬件细节,使得应用程序开辟者无需关注底层硬件,专注于应勤奋能的实现。常见的进程管理、内存管理、文件系统、网络通信等,都是由操纵系统提供支持的。
(3)管理盘算机硬件,为应用程序提供基础
从抽象的角度看,操纵系统是一个非常高级的抽象层次。它比进程、文件、内存、网络等详细的资源管理都要更加抽象和高级。操纵系统将这些资源管理封装起来,提供同一的调用接口,极大地方便了用户和程序员。但操纵系统又低于虚拟机这一更高级别的抽象。虚拟机在操纵系统之上,可以模拟出多个独立的、互不干扰的运行环境。
盘算机科学的核心就是研究如安在差别层次上进行抽象,如何通过抽象来管理日益复杂的盘算机系统。从详细的硬件到操纵系统,再到虚拟机,是一个不断抽象、封装的过程。每一层抽象都潜伏了下层的复杂性,提供了更简便友好的上层接口。明白和掌握这些差别级别的抽象,是学习盘算机科学的关键地点。

   上图引用自:全方位剖析Linux操纵系统,太全了-linux操纵系统的特点
  1.2 操纵系统与应用程序的关系

操纵系统与应用程序之间存在着精密的协作关系:


  • 操纵系统提供运行环境和须要的服务
  • 应用程序在操纵系统提供的环境中运行并使用操纵系统提供的服务

   上图引用自全方位剖析Linux操纵系统,太全了-linux操纵系统的特点。
  详细而言,操纵系统为应用程序提供了以下支持:


  • 执行环境:操纵系统为应用程序提供了一个同一的执行环境,包括内存空间、CPU时间等盘算资源。应用程序在这个环境中被装载、执行,无需关心底层硬件的差别。
  • 系统调用:操纵系统提供了一组系统调用(System Call),使应用程序可以或许请求操纵系统的服务,如文件读写、进程管理、内存分配等。系统调用是应用程序与操纵系统之间的重要接口。
  • 资源管理:操纵系统负责管理盘算机系统中的各种硬件和软件资源,如CPU、内存、I/O设备等,并为应用程序分配和回收这些资源。
  • 安全保护:操纵系统提供了多种安全保护机制,如用户身份验证、访问权限控制、内存保护等,防止恶意或错误的应用程序破坏系统或其他程序。
应用程序则在操纵系统的支持下运行,通过系统调用请求操纵系统的服务,使用操纵系统分配的资源完成盘算任务。差别的应用程序可以并发执行,共享操纵系统提供的资源。
单个程序通常不能发挥处理器的全部性能,因为程序在执行过程中难免遇到一些须要等候的情况,如等候I/O操纵完成、等候某个事件发生等。这时程序会调用阻塞函数或睡眠函数,主动放弃CPU,进入等候状态。操纵系统会趁这个空档,将CPU时间片分配给其他停当的程序,以进步CPU的使用率。以是在多道程序环境下,多个程序轮番占用CPU,可以或许充分发挥处理器的性能。而单个程序因为等候造成的CPU空闲浪费问题,则由操纵系统的调度机制来解决,对程序员是透明的。
1.3 并发编程与操纵系统

   如果是无操纵系统,要实现并行编程,必须要手动使用汇编进行CPU寄存器切换
  在没有操纵系统的情况下,如果要实现并行编程,程序员须要直接面对硬件,手工处理各种底层细节。好比,要在单个处理器上实现多个程序的并发执行,程序员必须使用汇编语言,精心计划程序,手动生存和恢复各个程序的CPU寄存器状态,以实现程序之间的切换。这非常复杂和低效,对程序员的技能要求很高,而且难以保证正确性和可靠性。
而有了操纵系统的支持,并发编程就容易多了。操纵系统提供了进程或线程的概念,将并发执行的每个程序封装为一个进程或线程。操纵系统负责进程/线程的创建、切换、同步、通信和烧毁,程序员只须要使用操纵系统提供的相干API,就可以方便地编写并发程序。操纵系统会自动生存和恢复CPU寄存器状态,实现进程/线程之间的切换。

   上图引用自:盘算机操纵系统知识点总结(有这一篇就够了!!!)-CSDN博客
  (1)在单个处理器上的并发,多个程序分享处理器资源,将CPU时间切成很多时间片,宏观上并发,但在微观上单发
在单处理器系统上,操纵系统采用时间片轮转的方式,将CPU时间划分为多个时间片,并将时间片轮番分配给各个停当的进程/线程,宏观上实现了多个程序的并发执行。但在微观上,单个处理器任一时候只能执行一个程序,这称为单处理器并发。
(2)在多个处理器上的并发,多个程序在差别处理器上同时运行,微观上并发
在多处理器系统上,操纵系统可以将差别的进程/线程分配到差别的处理器上同时执行,真正实现了并行执行。每个处理器独立工作,互不干扰。在微观和宏观上都是并行的,这称为多处理器并行。现代的多核CPU就是典范的多处理器系统。
1.4 并发与共享

(1)并发指两个或多个事件在同一时间间隔内发生。这些事件宏观上是同时发生的,但微观上是瓜代发生的。
操纵系统的并发性是通过分时实现的。


  • 单核CPU同一时候只能执行一个程序,各个程序只能并发地执行
  • 多核CPU同一时候可以同时执行多个程序,多个程序可以并行地执行
   并发性:两个或多个事件在同一时间间隔内发生。
  并行性:两个或多个事件在同一时候发生,须要硬件支持,如多流水线或多处理机硬件环境。
  并发编程可以充分使用处理器资源,各程序可以同时运行。但是也会带来时序问题,即运行效果取决于运行时详细的执行序次。
在多道程序环境下,答应多个程序并发执行,但由于资源有限,进程的执行不是一贯到底的,而是走走停停,以不可预知的速度向前推进,这就是进程的异步性
(2)共享即资源共享,是指系统中的资源可供内存中多个并发执行的进程共同使用


  • 互斥共享方式:系统中的某些资源,虽然可以提供给多个进程使用,但一个时间段内只答应一个进程访问该资源。比方,同一时间段内摄像头只能分配给此中一个进程。
  • 同时共享方式:系统中的某些资源,答应一个时间段内由多个进程“同时”对它们进行访问。比方,同时打开两个窗口读取PDF文件。宏观上看,双方都在同时读取并显示PDF内容,说明两个进程都在访问硬盘资源,从中读取数据。微观上看,两个进程是瓜代着访问硬盘的。
所谓的“同时”每每是宏观上的,而在微观上,这些进程大概是瓜代地对该资源进行访问的(即分时共享)。
并发和共享是操纵系统两个最基本的特征,两者之间互为存在的条件:


  • 资源共享是以程序的并发为条件的,若系统不答应程序并发执行,则天然不存在资源共享问题;
  • 若系统不能对资源共享实施有效的管理,则必将影响到程序的并发执行,以致根本无法并发执行。
2. 盘算机硬件

盘算机硬件的基础组成部分包括运算器、控制器、存储器、输入设备和输出设备。它们各司其职,协同工作,共同完成盘算机的各种功能。

   图片引用自:5万字、97 张图总结操纵系统核心知识点 - 程序员cxuan - 博客园
  下面进行详细先容:


  • 运算器(Arithmetic Logic Unit, ALU):运算器是盘算机的"大脑",负责执行各种算术和逻辑运算,如加减乘除、与或非等。它从存储器中获取数据,按照控制器的指令进行运算,并将效果写回存储器或输出设备。现代CPU中的运算器通常由多个功能单元组成,可以并行执行多个运算,进步运算速度。
  • 控制器(Control Unit, CU):控制器是盘算机的"指挥中心",负责解释和执行程序指令,控制和协调各个硬件部件的工作。它从存储器中逐条取出指令,分析指令的类型和参数,向相干硬件发出控制信号,引导程序的执行流程。控制器的工作基于指令周期,包括取指、译码、执行等步调。
  • 存储器(Memory):存储器用于存放程序指令和数据,是盘算机的"影象系统"。它分为内存(Random Access Memory, RAM)和外存(External Storage)两大类。内存是CPU可以直接访问的高速存储器,用于存放当前运行的程序和数据,特点是速度快、容量小、掉电易失。外存是用于恒久生存程序和数据的大容量存储器,如硬盘、U盘等,特点是速度慢、容量大、掉电不丢失。
  • 输入设备(Input Device):输入设备是用户向盘算机输入数据和指令的装置,如键盘、鼠标、麦克风、摄像头、扫描仪等。它们将人可读的信息转换为盘算机可处理的数字信号,实现人机交互。
  • 输出设备(Output Device):输出设备是盘算机向用户出现处理效果的装置,如显示器、打印机、音响等。它们将盘算机产生的数字信号转换为人可感知的形式,如文字、图形、声音、视频等,实现信息的可视化表达。
运算器和控制器共同组成了 CPU,这五部分也是冯诺伊曼的体系结构,它以为盘算机必须具有如下功能:
   把须要的程序和数据送至盘算机中。必须具有恒久影象程序、数据、中间效果及终极运算效果的能力。可以或许完成各种算术、逻辑运算和数据传送等数据加工处理的能力。可以或许根据须要控制程序走向,并能根据指令控制机器的各部件协调操纵。可以或许按照要求将处理效果输出给用户。
  下面是一个现实PC电脑的硬件组成概念图:

3. 操纵系统发展历程

3.1 手工操纵阶段(此阶段无操纵系统)

在盘算机发展的早期阶段,没有操纵系统的概念,盘算机的使用完全依靠于手工操纵。这一阶段,用户在盘算机上进行任何任务,如程序的装载、运行、效果输出等,都须要人工手动完成。详细过程如下:


  • 用户将程序和数据以纸带、磁带等形式提供给盘算机操纵员。
  • 操纵员将程序和数据通过控制台或纸带读取机输入到盘算机内存中。
  • 操纵员在控制台上手动输入启动程序的命令,程序开始执行。
  • 程序执行过程中,若须要数据输入,操纵员须要在控制台上手动输入数据。
  • 程序执行完毕,操纵员从控制台上读取输出效果,并将效果打印输出或生存到磁带等外部存储介质上。
  • 操纵员将盘算效果返回给用户。
这种完全手工操纵的方式存在以下缺点:

  • 用户独占全机:一个用户的任务从开始到竣事,独占整个盘算机系统,其他用户无法使用,资源使用率极低。
  • CPU使用率低:CPU大量时间都在等候手工操纵,如等候装入程序、等候输入数据等,CPU的盘算能力没有得到充分使用。
这现实反映了人机矛盾,即CPU和I/O设备速度不匹配的矛盾。CPU的运算速度很快,而手工操纵的速度很慢,二者之间存在巨大差别。CPU大量时间都在等候人工操纵完成,导致CPU空闲浪费。
为相识决这些问题,厥后出现了脱机批处理阶段,引入了监督程序,实现了作业的自动调度和输入输出的重叠处理,在一定程度上缓解了人机矛盾,进步了资源使用率。但脱机批处理仍旧存在用户与作业之间、I/O与CPU之间的速度矛盾。这催生了分时系统和实时系统的出现,从而进入了操纵系统时代。
3.2 批处理阶段(操纵系统开始出现)

单道批处理系统和多道批处理系统是操纵系统发展过程中的两个重要阶段,标志着操纵系统的雏形开始出现。
单道批处理系统引入了脱机输入/输出技术,实现了作业的自动调度和输入/输出的重叠处理。它的主要特征是:


  • 自动性:在正常情况下,一批作业可以或许自动地逐个运行,无需人工干预。
  • 序次性:作业按照其在输入设备上的序次依次进入内存执行,完成序次与进入内存的序次相同。
  • 单道性:内存中每次只有一道作业,当前作业完成或非常停止后,才调入后继作业运行。
单道批处理缓解了人机速度矛盾,减少了作业的建立时间和手工操纵时间,进步了盘算机资源的使用率。但由于内存中始终只有一道程序,CPU和其他资源还是要经常等候I/O完成,资源使用率仍旧偏低。
多道批处理系统引入了多道程序计划技术,实现了作业的并发执行,进一步进步了资源使用率。多道程序计划答应多个程序同时进入内存并在CPU中瓜代运行,这些程序共享系统中的各种硬件和软件资源。其主要特点包括:


  • 多道性:内存中同时存放多个相互独立的程序。
  • 宏观并行:同时进入内存的多个程序都处于运行过程中,但它们开始和竣事的时间大概差别。
  • 微观串行:内存中的多个程序轮番占用CPU,瓜代执行。
  • 中断性:由于程序之间须要共享和竞争资源,每个程序的执行都是中断的,而不是连续的。
  • 共享性:多个程序之间共享系统的各种资源,如CPU、内存、I/O设备等。
  • 制约性:多个程序之间存在相互制约关系,如同步、互斥、优先级等。
多道批处理系统须要解决处理器分配、内存分配、I/O设备分配、作业管理等问题。与单道批处理相比,它的优点是资源使用率高,系统吞吐量大;缺点是用户响应时间长,缺乏人机交互能力。
3.3 分时操纵系统

分时操纵系统是操纵系统发展汗青上的一个重要里程碑,它引入了分时技术,实现了多用户交互式操纵,极大地改善了人机交互体验。
分时技术的核心是时间片轮转,即将CPU的时间划分为多个时间片,每个时间片分配给一个用户或作业,多个用户或作业在时间上瓜代使用CPU。当一个时间片用完时,操纵系统会自动切换到下一个用户或作业,从而实现多用户或多任务的并发执行。每个用户通过本身的终端与盘算机交互,感觉好像独占了整个系统。
分时系统的主要特点包括:


  • 同时性(多路性):答应多个终端用户同时使用一台盘算机,用户之间互不干扰。
  • 交互性:用户可以通过终端与系统进行实时的人机对话,控制程序运行,获取即时响应。
  • 独立性:多个用户可以彼此独立地进行操纵,互不影响,每个用户感觉本身独占整个系统。
  • 实时性:用户请求可以或许在很短时间内得到响应,通常在几秒钟之内,满足人机交互的需求。
与批处理系统相比,分时系统的优点在于:


  • 大大改善了人机交互性,用户请求可以被即时处理和响应,进步了用户体验
  • 实现了多用户共享,进步了系统资源的使用率和系统的服务能力
但分时系统也存在一些范围性,主要是无法优先处理紧急任务,所有用户受到同等对待,紧急任务大概须要等候较长时间才能得到响应。
3.4 实时操纵系统

实时操纵系统是为了满足实时任务处理需求而发展起来的一种专门的操纵系统。实时任务对响应时间有严格要求,必须在规定的时间内完成处理,如果超过停止时间,就大概造成严重结果
实时系统通过引入任务优先级机制,确保高优先级的紧急任务可以或许优先得随处理,而不须要经过期间片排队,从而保证了实时性。
实时系统可以分为软实时系统和硬实时系统两大类:


  • 软实时系统:在大多数情况下可以或许满足实时要求,但偶然违反时间规定是可以接受的,不会引起永久性的破坏。典范的软实时系统包括飞机订票系统、银行管理系统等,这些系统对响应时间有较高要求,但偶然的延迟并不会造成严重结果。
  • 硬实时系统:必须绝对严格地满足实时要求,某个动作必须在规定的时候或时间范围内发生,丝绝不能违反,否则就大概导致灾难性的结果。典范的硬实时系统包括飞行器自动控制、工业过程控制、医疗设备控制等,这些系统容不得任何时间上的误差,必须准确、可靠地执行每一个操纵。
实时系统的主要特点包括:


  • 实时性:可以或许在规定的时间内响应外部事件,并实时完成任务处理。
  • 可靠性:必须保证系统的高度可靠,避免出现故障或错误,确保任务的正确执行。
相比其他类型的操纵系统,实时系统的优点在于可以或许优先处理紧急任务,保证关键任务的实时响应,适用于对时间要求极为严格的场合。但实时系统对硬件和软件的要求也更高,须要专门的实时调度算法、中断处理机制、非常处理机制等,以确保实时性和可靠性。
在现实应用中,实时操纵系统广泛应用于工业控制、机器人、航天航空、国防军事等范畴。一些着名的实时操纵系统包括VxWorks、QNX、RTLinux、FreeRTOS等。这些系统都提供了专门的实时内核和开辟工具,支持实时任务的快速开辟和可靠执行。
3.5 网络操纵系统和分布式盘算机系统

网络操纵系统和分布式操纵系统是盘算机技术发展到一定阶段的产物,它们反映了盘算机系统从会合式向分布式演进的趋势。
网络操纵系统是指把盘算机网络中的各台盘算机有机地组合起来,提供一种同一、高效、经济的方法来管理和使用网络资源。它的主要特点包括:


  • 资源共享:网络中的硬件、软件、数据等各种资源可以被所有用户共享,进步了资源使用率。
  • 通信能力:各台盘算机之间可以方便地进行数据交换和信息通报,实现了分布式处理。
网络操纵系统为用户提供了一个同一的操纵界面,屏蔽了底层网络的复杂性,使得用户可以方便地访问和使用网络资源。
分布式盘算机系统是由多台盘算机组成的,这些盘算机通过网络互连,协同工作,完成共同的任务。分布式系统的主要特点包括:


  • 分布性:系统中的硬件、软件、数据等资源是分布在差别的盘算机上的。
  • 并行性:多台盘算机可以并行工作,协同完成同一个任务,进步了系统的处理能力。
  • 对等性:系统中的每台盘算机地位同等,不存在主从关系。
  • 资源共享:每台盘算机上的资源可以被所有用户共享。
  • 可重构性:系统的任意一部分都可以构成一个子系统,并且可以方便地进行重组。
分布式操纵系统是指用于管理分布式盘算机系统的操纵系统,它提供了一种机制,使得用户可以方便地开辟和运行分布式应用,充分发挥分布式系统的上风。
网络操纵系统和分布式操纵系统的本质区别在于,网络操纵系统主要关注资源共享和通信,而分布式操纵系统更夸大任务的分布式执行和并行处理。在分布式系统中,一个任务被分解成多个子任务,分别在差别的盘算机上并行执行,最后将效果汇总,完成整个任务。这种并行协同的工作方式是分布式操纵系统的核心特征。
随着互联网、云盘算、大数据等技术的兴起,分布式系统变得越来越重要。很多大型互联网应用,如搜索引擎、社交网络、电商平台等,都是建立在分布式架构之上的。一些著名的分布式操纵系统包括Google的Borg、Microsoft的Dryad、Apache的Hadoop等,它们为海量数据的存储、处理、分析提供了强大的支持。
未来,分布式操纵系统将在人工智能、物联网、区块链等范畴扮演越来越关键的角色。如何实现高效、安全、可靠的分布式盘算,如何均衡负载、容错容灾、动态伸缩,都是分布式操纵系统须要解决的重要课题。可以预见,随着盘算机技术的不断发展,分布式操纵系统也将不断演进,为构建更加智能、弹性的分布式应用提供更加完善的支持。
3.6 个人盘算机操纵系统

个人盘算机操纵系统是平凡用户最为认识和广泛使用的一类操纵系统。随着个人盘算机的遍及,个人盘算机操纵系统也得到了快速发展和广泛应用。它为用户提供了一个友好、直观、易用的图形用户界面(GUI),使得非专业用户也能方便地使用盘算机,完成各种日常任务,如文字处理、电子表格、多媒体播放、网络浏览、游戏娱乐等。
目前主流的个人盘算机操纵系统包括:


  • Microsoft Windows:由微软公司开辟,是目前个人盘算机上使用最广泛的操纵系统。Windows提供了丰富的应用软件,支持多种硬件设备,具有精良的易用性和兼容性。主要版本有Windows 7、Windows 8、Windows 10等。
  • macOS:由苹果公司开辟,专门用于苹果Macintosh系列个人盘算机。macOS以其流通的用户界面、优雅的计划风格、强大的多媒体功能而闻名,在创意计划、音视频处理等范畴有广泛应用。
  • Linux:一种基于UNIX的开源操纵系统,有多个发行版本,如Ubuntu、Fedora、CentOS等。Linux以其稳定性、安全性、灵活性著称,广泛应用于服务器、嵌入式设备、个人桌面等范畴。
  • Chrome OS:由Google开辟的基于Linux内核的轻量级操纵系统,主要用于Chromebook条记本电脑。Chrome OS以云服务为中心,提供了简便高效的浏览器界面,用户的数据和应用都存储在云端。
相比其他类型的操纵系统,个人盘算机操纵系统的特点包括:


  • 图形用户界面:提供了直观、雅观的图形界面,用户可以通过鼠标、触摸板等设备进行操纵。
  • 多任务处理:支持多个应用程序同时运行,用户可以方便地在差别任务之间切换。
  • 多媒体支持:内置了强大的多媒体框架,支持音频、视频、图像等多种格式的播放和编辑。
  • 网络连接:提供了便捷的网络连接和管理功能,用户可以轻松接入互联网和局域网。
  • 硬件支持:支持各种外围设备,如打印机、扫描仪、数码相机等,可以方便地进行安装和配置。
随着个人盘算机硬件性能的不断提升和应用软件的日益丰富,个人盘算机操纵系统也在不断创新和发展。一些新的技术和理念,如云盘算、人工智能、语音交互、虚拟/增强现实等,正在被集成到个人盘算机操纵系统中,为用户提供更加智能、便捷、沉浸式的使用体验。
3.7 嵌入式操纵系统

嵌入式操纵系统是一种专门用于嵌入式系统的操纵系统。嵌入式系统是指以应用为中心、以盘算机技术为基础、软硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用盘算机系统。嵌入式操纵系统就是运行在这些嵌入式设备上、管理硬件资源、支持应用软件的基础软件。
嵌入式操纵系统的主要特点包括:


  • 资源受限:嵌入式设备通常资源有限,如CPU速度较慢,内存容量较小,存储空间不足等,嵌入式操纵系统必须可以或许在有限的资源中高效运行。
  • 实时性:很多嵌入式系统须要对外部事件实时响应,完成实时控制和处理任务,嵌入式操纵系统必须具备精良的实时性能。
  • 可裁剪性:由于嵌入式设备的应用范畴非常广泛,需求千差万别,嵌入式操纵系统必须可以或许根据详细应用需求进行裁剪和定制,以到达优化资源使用的目的。
  • 可移植性:嵌入式系统采用的硬件平台多种多样,嵌入式操纵系统须要具有精良的可移植性,以便在差别的硬件平台上快速移植和摆设。
  • 可靠性:嵌入式系统通常要求长时间连续工作,并且很多应用范畴对可靠性有极高要求,嵌入式操纵系统必须具备高可靠、高稳定的特性。
嵌入式操纵系统是物联网、智能硬件、无人驾驶等新兴范畴的重要使能技术。随着嵌入式设备的智能化、网络化、多样化趋势不断加强,嵌入式操纵系统也在不断创新发展,出现出实时性与通用性分身、安全性与开放性并重、轻量化与高性能融合等新特点。
4. 操纵系统运行环境

4.1 处理器运行模子

在现代盘算机系统中,CPU通常运行在两种差别的模式下:用户态和内核态。这种区分是为了保护操纵系统内核和系统资源的安全,防止用户程序对系统造成破坏。
(1)指令的分类:


  • 特权指令:只答应操纵系统内核使用,如I/O指令、置中断指令等。
  • 非特权指令:答应用户程序使用,仅限于访问用户本身的地址空间。
(2)CPU的运行模式:


  • 用户态:CPU只能执行非特权指令,运行用户程序。
  • 内核态:CPU可以执行特权指令,运行操纵系统内核程序。
(3)模式切换:


  • 内核态到用户态:通过执行特权指令修改程序状态字寄存器(PSW)中的模式位。
  • 用户态到内核态:通过系统调用、硬件中断、非常等事件触发,产生软中断,进入内核态。
(4)用户程序与内核程序:


  • 用户程序受限于用户态,只能使用非特权指令和有限的系统资源。
  • 内核程序运行在内核态,可以执行特权指令,访问所有系统资源。
  • 用户程序通过系统调用向内核程序请求服务,内核程序验证和处理请求,完成后返回用户态。
(5)操纵系统内核的分层计划:


  • 底层模块:与硬件关联精密,如中断处理、进程调度等,运行于最高特权级。
  • 高层模块:提供更抽象的服务,如文件管理、网络通信等。
  • 分层架构进步了系统的安全性和可维护性。
通过引入用户态和内核态,现代操纵系统实现了用户程序和内核程序的隔离,提供了受控的系统调用接口,在保证系统安全和稳定的同时,为用户程序提供了丰富的功能支持。明白用户态与内核态的区别和切换机制,是掌握操纵系统工作原理的基础。
4.2 操纵系统内核功能

操纵系统内核(kernel)是盘算机系统的核心部分,它直接管理硬件资源,为上层应用程序提供服务。内核由多个关键组件构成,各司其职,协同工作,以确保系统的高效、安全、可靠运行。
(1)内核的定义与作用:


  • 内核是操纵系统的最基本、最底层的软件模块。
  • 它负责管理和分配系统资源,如处理器、内存、设备等。
  • 内核通过系统调用接口,实现用户程序与系统资源的交互。
(2)时钟管理:


  • 提供标准的系统时间,支持进程调度。
  • 时钟中断是重要的系统事件来源,如定时器、看门狗等。
  • 时间戳、计时器等机制也依靠于时钟管理。
(3)中断机制:


  • 包括硬件中断(外设触发)和软件中断(程序发起,如系统调用)。
  • 内核负责中断识别、中断处理程序调度、现场保护与恢复等。
  • 中断驱动的异步编程模子可进步系统的并发性和实时性。
(4)原语操纵:


  • 原语是由若干指令组成的不可分割的操纵,用于完成特定的底层功能。
  • 常见原语有进程同步和通信、内存分配和回收、原子操纵等。
  • 原语通常须要关中断执行,以保证其原子性。
(5)系统数据结构:


  • 内核维护进程、内存、设备等管理数据结构,以及中断向量表、系统调用表等。
  • 这些数据结构通常驻留在内核空间,受到严格的访问控制和一致性保护。
  • 高效的数据结构和算法(如多级反馈队列、红黑树等)是内核性能的关键。
(6)其他内核组件:


  • 进程间通信(IPC):管道、消息队列、共享内存、信号量等机制。
  • 安全和权限管理:用户和用户组管理、访问控制、特权级别等。
  • 文件系统:目次结构、文件操纵、数据缓存、日志等。
  • 网络协议栈:TCP/IP协议、Socket编程接口、网络驱动等。
4.3 中断和非常

中断和非常可以让操纵系统内核强行夺回CPU的控制权,以及使CPU从用户态变为内核态


  • 非常:又称内中断,指来自CPU执行指令内部的事件,如程序的非法操纵码、地址越界、运算溢出、虚存系统的缺页及专门的陷入指令等引起的事件。

    • 故障(Fault)通常是由指令执行引起的非常,如非法操纵码、缺页故障、除数为0、运算溢出等。
    • 自陷(Trap)是一种事先安排的“非常”事件,用于在用户态下调用操纵系统内核程序,如条件陷阱指令。
    • 停止(Abort)是指出现了使得CPU无法继承执行的硬件故障,如控制器出错、存储器校验错等。

  • 中断:又称外中断,指来自CPU执行指令外部的事件,通常用于信息输入/输出,如I/O中断,时钟中断。

    • 可屏蔽中断:指通过INTR线发出的中断请求,通过改变屏蔽字可以实现多重中断,从而使得中断处理更加灵活。
    • 不可屏蔽中断:指通过NMI线发出的中断请求,通常是紧急的硬件故障,如电源掉电等。别的,非常也是不能被屏蔽的。

故障非常和自陷非常属于软件中断(程序性非常),停止非常和外部中断属于硬件中断
非常不能被屏蔽,一旦出现,就应立刻处理
中断和非常的处理过程:

  • 当CPU在执行用户程序的第i条指令时检测到一个非常事件,或在执行第i条指令后发现一个中断请求信号,
  • 则CPU打断当前的用户程序,然后转到相应的中断或非常处理程序去执行。
  • 若中断或非常处理程序可以或许解决相应的问题,则在中断或非常处理程序的最后,CPU通过执行中断或非常返回指令,回到被打断的用户程序的第i条指令或第i+1条指令继承执行。
           返回第i+1条指令:由自陷(Trap)引起的内中断;如系统调用。由外部设备引起的外中断,如键盘敲击。
        返回第i条指令:由故障(Fault)引起的内中断;如缺页等。
  • 若中断或非常处理程序发现是不可恢复的致命错误,则停止用户程序。
通常情况下,对中断和非常的详细处理过程由操纵系统(和驱动程序)完成。
4.4 系统调用

系统调用(System Call)是操纵系统提供给用户程序的一组标准接口,使得用户程序可以或许请求操纵系统内核提供服务,好比文件读写、进程管理、内存分配等。它是用户态程序与内核态程序通信的桥梁,也是操纵系统实现其功能和管理盘算机硬件的重要手段。
系统调用的工作原理:


  • 用户程序通过API函数(如open、read、write等)发起系统调用。
  • API函数将参数打包,并触发软中断(如80h中断),从用户态切换到内核态。
  • 内核根据系统调用号查找系统调用表,定位到相应的内核函数。
  • 内核函数执行所请求的操纵,完成后将效果返回给用户程序,并切换回用户态。
系统调用的类型:


  • 进程控制:如fork、exec、exit等,用于创建、执行、停止进程。
  • 文件管理:如open、close、read、write等,用于打开、关闭、读写文件。
  • 设备管理:如ioctl、read、write等,用于与设备通信和控制。
  • 信息维护:如getpid、alarm、sleep等,用于获取或修改系统信息。
  • 通信:如pipe、shmget、mmap等,用于进程间通信和同步。
系统调用的优点:


  • 提供同一、标准、安全的接口,方便用户程序使用系统资源。
  • 封装底层细节,进步程序的可移植性和兼容性。
  • 通过权限检查和参数验证,保障系统的安全和稳定。
  • 会合管理和调度资源,进步系统的服从和公平性。
系统调用的缺点:


  • 频繁的系统调用会引起大量的上下文切换,影响系统性能。
  • 参数通报和效果返回须要在用户空间和内核空间之间进行数据拷贝,带来额外开销。
  • 内核代码的bug或安全毛病大概被恶意用户程序使用,威胁系统安全。
5. 操纵系统结构

操纵系统结构是指操纵系统内部各个组成部分之间相互关系和组织方式的抽象描述。合理的操纵系统结构计划可以进步系统的性能、可靠性、安全性、可维护性等。常见的操纵系统结构包括分层结构、模块化结构、宏内核结构、微内核结构、外核结构等。
(1)分层结构,将操纵系统按照功能和抽象级别划分为若干层,上层依靠下层提供的服务,下层为上层屏蔽硬件细节。典范的分层包括硬件层、内核层、系统调用层、API层和用户层。分层结构有利于系统的计划、实现和测试,但层次之间的频繁切换大概影响性能。
(2)模块化结构,将操纵系统划分为多个独立的模块,每个模块完成特定的功能,模块之间通过定义精良的接口进行通信。模块化结构有利于系统的扩展、裁剪和移植,进步了系统的灵活性和可维护性。但模块之间的依靠关系大概导致系统的复杂度增加。
(3)宏内核结构,又称单内核结构,将操纵系统的绝大部分功能(如进程管理、内存管理、文件系统、设备驱动等)都实如今内核态,提供了高度集成、高效的系统服务。宏内核结构是传统操纵系统(如Unix、Linux、Windows等)的主流选择,但内核代码巨大、耦合精密,大概影响系统的稳定性和安全性。
常见的Windows、Linux、Android、IOS、macOS等系统都是宏内核,但它们也广泛吸取微内核的优点进行改进。
(4)微内核结构,将操纵系统的核心功能(如进程调度、中断处理、IPC等)实如今内核态,而将其他功能(如文件系统、设备驱动等)实如今用户态,内核与服务之间通过消息通报进行通信。微内核结构有利于系统的可靠性、安全性和可扩展性,但频繁的消息通报大概影响系统的性能。
(5)外核结构,又称库操纵系统结构,将传统操纵系统中的大部分功能(如进程管理、内存管理等)都实如今用户态,内核只提供最基本的硬件抽象和保护机制。应用程序可以根据须要灵活选择和组合各种操纵系统服务。外核结构赋予了应用程序更大的自由度和控制权,但也大概引入安全隐患和兼容性问题。
除了上述经典结构外,现代操纵系统还出现了一些新的结构形式,如虚拟机监控器(VMM)结构、容器化结构、微服务结构等,以适应云盘算、边缘盘算、物联网等新兴应用场景的需求。
6. 虚拟机

虚拟机(Virtual Machine, VM)是一种通过软件模拟的完备盘算机系统,它可以在一台物理盘算机上运行多个差别的操纵系统和应用程序,实现盘算资源的灵活共享和动态管理。虚拟机技术已广泛应用于服务器虚拟化、云盘算、桌面虚拟化等范畴。
根据虚拟机监控器(Virtual Machine Monitor, VMM)的实现方式和虚拟化层次,可将虚拟机分为两大类:第一类虚拟机(Type-1 VM)和第二类虚拟机(Type-2 VM)。

   图片源自于【王道】操纵系统 知识点总结(合集)【超详细!】 - Zyyyyyyyyy - 博客园
  第一类虚拟机,VMM直接运行在物理硬件之上,无需依靠宿主操纵系统,因此也被称为裸金属虚拟机(Bare-Metal VM)。VMM负责对物理资源进行抽象和分配,并为每个虚拟机提供虚拟化的硬件环境(如CPU、内存、I/O设备等),使其可以像独占硬件一样运行。第一类虚拟机的代表产物有VMware ESXi、Microsoft Hyper-V、Xen等。优点是虚拟化开销小,性能接近物理机,管理简单,无需考虑宿主操纵系统的兼容性和稳定性。缺点是硬件支持有限,须要CPU等提供虚拟化指令集,软件生态相对封闭,难以与宿主系统的应用程序协同工作。
第二类虚拟机,VMM运行在宿主操纵系统之上,借助宿主操纵系统提供的API和服务来实现虚拟化功能,因此也被称为托管虚拟机(Hosted VM)。VMM通过拦截和模拟虚拟机发出的特权指令和敏感操纵,将其转换为对宿主操纵系统资源的访问请求,再由宿主操纵系统代为执行。第二类虚拟机的代表产物有VMware Workstation、Oracle VirtualBox、QEMU等。优点是更硬件兼容性好,可在各种商用硬件和操纵系统上运行,软件生态丰富,可与宿主系统的应用程序方便地交互和集成。缺点是虚拟化开销大,性能受宿主操纵系统的影响,管理复杂,须要同时维护宿主操纵系统和虚拟机操纵系统。
第一类VMM第二类VMM对物理资源的控制权直接运行在硬件之上,能直接控制和分配物理资源运行在Host OS之上,依靠于Host OS为其分配物理资源资源分配方式在安装Guest OS时,VMM要在本来的硬盘上自行分配存储空间,类似于"外核“的分配方式,分配未经抽象的物理硬件GuestOs拥有本身的虚拟磁盘,该盘现实上是HostOs文件系统中的一个大文件。GuestOs分配到的内存是虚拟内存性能性能更好性能更差,须要Host Os作为"中介”可支持的虚拟机数目更多,不须要和Host OS竞争资源,相同的硬件资源可以支持更多的虚拟机更少,Host Os本身须要使用物理资源,Host OS上运行的其他进程也须要物理资源虚拟机的可迁徙性更差更好,只需导出虚拟机镜像文件即可迁徙到另一台Host Os上,商业化应用更广泛运行模式第一类VMM运行在最高特权级(Ring 0),可以执行最高特权的指令。第二类VMM部分运行在用户态、部分运行在内核态。GuestOs发出的系统调用会被VMM截获,并转化为VMM对Hostos的系统调用 除了上述两类虚拟机外,近年来还出现了一些新的虚拟化技术和实现方式,如操纵系统级虚拟化(如Docker容器)、库操纵系统虚拟化(如Unikernel)、硬件辅助虚拟化(如Intel VT、AMD-V)等,以进一步进步虚拟化的性能、安全性和灵活性。







   Once Day

  

    也信尤物终作土,不堪幽梦太匆匆......
    如果这篇文章为您带来了资助或启发,不妨点个赞

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

忿忿的泥巴坨

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表