【计算机操作系统】深入探究CPU,PCB和进程工作原理

news2024/11/18 7:32:37

˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱
ʕ̯•͡˔•̯᷅ʔ大家好,我是xiaoxie.希望你看完之后,有不足之处请多多谅解,让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客
本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN 如需转载还请通知˶⍤⃝˶​
个人主页:xiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客

系列专栏:xiaoxie的JAVAEE学习系列专栏——CSDN博客●'ᴗ'σσணღ
我的目标:"团团等我💪( ◡̀_◡́ ҂)" 

( ⸝⸝⸝›ᴥ‹⸝⸝⸝ )欢迎各位→点赞👍 + 收藏⭐️ + 留言📝​+关注(互三必回)!

 

一.CPU

1.CPU是什么

CPU(Central Processing Unit)中文翻译为中央处理器,是计算机硬件系统的核心组件之一,负责执行计算机程序的指令,进行各种算术和逻辑运算,控制数据的流动,并管理计算机系统内部的整体操作。CPU可以看作是计算机的大脑,它承担了几乎所有的计算任务和协调其它硬件组件的工作。

2.CPU的工作原理

CPU(中央处理器)的工作原理基于一种称为“指令周期”的循环过程,这个过程主要包括以下几个基本步骤:

  1. 取指令(Fetch)

    • CPU从内存中按照程序计数器(Program Counter, PC)所指向的位置取出下一条待执行的指令。程序计数器是一个专门的寄存器(可以看作一个轻量级的内存,存储空间小于内存不过访问数据的速度远大于内存),它保存着即将执行的指令地址。
    • 当指令被取出后,程序计数器通常自动递增(或按需调整),以便准备取出下一条指令。
  2. 指令解码(Decode)

    • 取出的指令进入指令解码器,CPU对其进行分析以确定这条指令的操作码(Opcode)和相关操作数(Operand)。
    • 操作码告诉CPU要执行何种操作(例如加法、减法、跳转等),而操作数则指示参与操作的具体数据源或目标位置。
  3. 执行(Execute)

    • 根据解码后的指令信息,CPU调用相应的功能部件(如算术逻辑单元ALU、浮点运算单元FPU等)来执行实际操作。
    • 如果指令涉及到数据读取或写入,CPU会通过地址总线与内存交互,从内存读取数据到寄存器或把寄存器中的结果写回内存。
  4. 访存(Memory Access)

    • 在执行过程中,如果需要访问主存,CPU会发出控制信号,通过内存管理单元(MMU)与内存进行数据交换。
  5. 写回(Write Back)

    • 执行完毕后,如果有运算结果需要保存,CPU会将结果写回到相应的寄存器中,或者写入内存指定位置。
  6. 更新程序计数器(PC Update)

    • 根据指令类型,程序计数器可能会被更新以执行顺序执行的下一条指令,或者是跳转到新的指令地址执行分支或循环操作。

以上步骤概括了一个简化版的CPU工作循环,现代CPU为了提高效率,采用了流水线、乱序执行、预测执行等多种优化技术,使得多个指令能够在不同的处理阶段并行工作,极大地提升了CPU的性能表现。不过,上述基本原理依然适用于理解CPU工作的核心逻辑

3.CPU执行指令的流程

上述的内容可能比较抽象,博主举一个具体的示例来演饰一下CPU执行指令的流程

第一轮操作 

1.CPU取出0号地址的指令

0  ->  00101110

2.根据指令表解析指令

因为该指令表表示前4位为操作码 0010 对照指令表的LOAD_A操作将后4位的 1110(14) 地址所指向的数据 存储到寄存器A

3.执行指令

第二轮操作 

1.CPU取出1号地址的指令(PC++)

1  ->  00011111

2.根据指令表解析指令

因为该指令表表示前4位为操作码 0001 对照指令表的LOAD_B操作将后4位的 1111(15) 地址所指向的数据 存储到寄存器B

3.执行指令

第三轮操作 

1.CPU取出2号地址的指令(PC++)

2 ->  10000100

2.根据指令表解析指令

因为该指令表表示前4位为操作码 1000 对照指令表的ADD操作,计算两个寄存器里的数据的和,并将结果放到第二个寄存器中,并且说明了后4位操作码,两个为一组,分别对应两个寄存器的ID(这里ID都是提前约定好的,我们就假设01为B,00为A)

3.执行指令

第四轮操作 

1.CPU取出3号地址的指令(PC++)

3  ->  01001101

2.根据指令表解析指令

因为该指令表表示前4位为操作码 0100 对照指令表的STORE_A操作,将寄存器A的数据写入到后4为操作码指定的地址1101

3.执行指令

 

第五轮操作 

1.CPU取出3号地址的指令(PC++)

4  ->  00000000

2.根据指令表解析指令

发现指令表没有0000 的操作,就表示程序运行完毕

3.执行指令

退出程序

以上只是CPU操作的一点小实例,实际过程更复杂,并且一秒时间内CPU就能运行上亿条指令,我们简单了解一下它的工作原理即可,具体实现,我们这里就不深究了

二.进程(process)

1.什么是进程

进程是计算机操作系统中一个非常核心的概念,它是系统进行资源分配和独立运行的基本单位。进程是正在运行的程序的实例.

2.进程的几个关键特性

  1. 动态性:进程是动态生成和消亡的,它的存在始于程序的执行,终于程序执行的结束或被操作系统终止。

  2. 独立性:每个进程都有自己的地址空间(虚拟内存空间),其中包含了程序代码、数据、堆栈和共享库等,彼此之间相互独立,互不影响。

  3. 并发性:操作系统允许多个进程同时存在于内存中,并通过进程调度算法在多个进程之间切换执行,形成并发执行的效果,尽管实际上单个CPU在同一时刻只能执行一个进程。

  4. 异步性:进程执行不是连续的,而是按照各自独立且不可预知的速度向前推进,进程间的执行进度相互不受对方影响。

  5. 资源分配:操作系统以进程为单位分配系统资源,如CPU时间、内存空间、I/O设备等。

  6. 系统调度:操作系统通过进程调度器决定哪个进程获取CPU使用权,进程状态可以在就绪、运行、等待(阻塞)等状态间转换。

  7. 进程控制块(PCB):操作系统为每个进程维护一个进程控制块(Process Control Block),记录了进程的相关信息,如状态、优先级、CPU寄存器值、内存管理信息等。

总之,进程是操作系统实现多任务并行处理的基础,它将程序的执行表现为一系列操作系统可管理、可调度的任务单元。

3.进程运行的过程

进程运行的过程可以概括为以下几个主要阶段:

  1. 进程创建

    • 应用程序启动或由已运行的进程请求创建新进程时,操作系统首先会响应这个请求。
    • 操作系统为新进程分配必要的系统资源,包括创建一个新的进程控制块(PCB)来存储该进程的状态信息、优先级、程序计数器、内存指针等重要控制信息。
    • 在某些操作系统(如Windows)中,通过类似CreateProcess()这样的系统调用创建进程,并为新进程分配一个独立的地址空间,通常是从父进程复制或者映射文件到内存中加载程序代码和数据段。
  2. 进程加载

    • 操作系统将程序的代码和静态数据从磁盘加载到进程的地址空间中,设置初始堆栈和全局变量。
    • 如果有需要,初始化动态链接库和资源。
  3. 进程调度

    • 新创建的进程被置于就绪队列中等待CPU资源。
    • 当调度程序选择此进程时,将其状态变为“运行”状态,并把CPU控制权交给该进程。
  4. 进程执行

    • 进入“运行”状态的进程开始执行其第一条指令。
    • 进程在CPU上运行,执行程序代码,访问内存,可能涉及到IO操作或其他系统调用。
    • 进程在其生命周期内可能会经历各种状态变迁,例如由于等待某个事件而进入阻塞状态,或因时间片用完而重新回到就绪队列等待下次调度。
  5. 进程同步与通信

    • 在执行过程中,进程可能与其他进程交互,使用同步机制(如信号量、互斥锁等)协调对共享资源的访问,或通过IPC(进程间通信)机制交换数据。
  6. 进程终止

    • 当进程执行完毕或因异常、错误、用户请求等原因被终止时,操作系统释放该进程占用的所有资源,包括内存空间、打开的文件等,并从系统中移除相应的进程控制块。
  7. 进程切换

    • 当前进程因为时间片耗尽、发生中断、等待I/O完成或者其他原因需要让出CPU时,操作系统会保存当前进程的上下文(CPU寄存器状态等),恢复下一个即将运行进程的上下文,然后开始执行新的进程。

整个进程中,操作系统扮演着管理和调度的角色,确保进程在多任务环境下正确地并发执行。

其中进程调度是最核心的一步,接下来我们来详细介绍一下进程调度的过程

4.进程调度

进程调度是操作系统中的一项核心功能,它负责决定哪一个进程在什么时候获取CPU资源并执行。在多道程序设计系统中,由于CPU、内存等系统资源有限,而同时存在多个进程需要执行,因此必须有一个机制来公平有效地分配这些资源。进程调度主要涉及以下几个方面:

1.进程调度的目的与意义

  • 资源利用率:最大化CPU的使用率,避免CPU空闲。
  • 响应时间:确保交互式系统中的进程能及时响应用户的请求。
  • 公平性:确保所有进程都能得到合理的执行机会,避免饥饿现象(一个进程长时间得不到执行的情况)。
  • 系统吞吐量:提高系统处理任务的整体速度。
  • 平衡性:兼顾进程执行的紧迫性和等待时间。

2.进程调度的时机

  • 进程主动放弃CPU:进程执行时发生I/O请求或其他阻塞事件,此时进程转入阻塞状态,调度程序会选择其他就绪进程运行。
  • 当前进程的时间片用完:在分时系统中,每个进程执行一段时间后会被强制让出CPU,这是时间片轮转调度策略的特点。
  • 新进程创建并进入就绪状态:当有新的进程被创建并且准备好运行时,也可能触发进程调度。

3.进程调度的方式

  • 非抢占式调度(Non-preemptive scheduling):一旦进程获得CPU,它会一直执行直到自己主动放弃(如执行完毕或阻塞)或系统中没有其他进程需要执行为止。例如,先来先服务(FCFS)调度算法。

  • 抢占式调度(Preemptive scheduling):操作系统可以根据需要随时中断当前正在运行的进程,并把CPU分配给另一个进程。这种调度方式允许更灵活的响应实时性和优先级变化,例如短进程优先(SPN)或时间片轮转(Round Robin, RR)调度算法。

4.进程调度的算法

  • 先来先服务(First-Come, First-Served, FCFS):按照进程到达就绪队列的顺序依次执行。
  • 短进程优先(Shortest Process Next, SPN 或 Shortest Job First, SJF):优先选择预计执行时间最短的进程执行。
  • 优先级调度(Priority Scheduling):根据进程的优先级高低选择进程执行,优先级高的进程优先执行。
  • 时间片轮转(Round Robin, RR):每个进程都分配一个固定的时间片,时间片结束后不论进程是否执行完毕都要让出CPU,转至下一个进程。
  • 多级反馈队列(Multilevel Feedback Queue):使用多个就绪队列,每个队列有不同的优先级和时间片长度,进程可以根据一定条件在队列间迁移。

5.进程调度的过程

  • 进程状态转换:进程在就绪、运行、阻塞等状态间切换。
  • 上下文切换:当进行进程调度时,操作系统需要保存当前进程的上下文(CPU寄存器状态、程序计数器等信息),并恢复即将执行进程的上下文。
  • 调度决策:调度程序根据所采用的调度算法和当前系统状态作出调度决策。

6.进程调度准则

  • 公平性:保证所有进程都能得到合理的执行机会。
  • 效率:尽量减少进程在就绪队列中的等待时间,降低进程的响应时间。
  • 平衡性:既考虑进程的紧迫程度,也顾及进程的等待时间长短。
  • 系统开销:最小化进程调度引起的上下文切换开销。

总之,进程调度是操作系统内核中的核心组成部分,其性能直接影响到整个系统的性能和用户体验。通过精心设计和实现高效的进程调度算法,操作系统能够更好地满足各类应用程序的需求,提高系统的整体效能。

三.PCB(进程控制块)

1.PCB是什么

进程控制块是操作系统中用于管理和控制进程的一个数据结构。操作系统为系统中的每一个进程都维护一个唯一的PCB,其中包含了描述进程状态、控制信息以及与该进程相关的一些重要数据。注意这里提的PCB在每个操作系统中的名字是不一样的,例如在Linux里的PCB是叫task_struct

2.操作系统如何组织PCB

操作系统组织进程控制块(PCB)的方法主要有以下几种:

  1. 线性表方式: 在这种方式下,操作系统将所有进程的PCB连续地存放在内存的一个区域内。这是一种简单的组织形式,适合于进程较少且系统不支持复杂调度策略的情况。查找、添加和删除操作需要遍历整个线性表,所以当系统中进程数量较多时,这种方式效率较低。

  2. 索引表方式: 改进线性表方法,按照进程的状态(如就绪、运行、阻塞等)建立不同的索引表。这样,操作系统可以更快地定位到处于特定状态的进程。例如,系统会有一个就绪队列的索引表,一个阻塞队列的索引表等,每个表中包含了对应状态的所有进程的PCB地址。

  3. 链接表方式: 使用链表数据结构来组织PCB,将具有相同状态的进程PCB链接在一起,形成不同的队列,如就绪队列、阻塞队列、运行队列等。每个PCB中包含一个指向下一个PCB的指针,这样可以方便地插入和删除进程,同时也便于进行调度操作。

在现代操作系统中,往往结合以上几种方法的优点,采用更为复杂的数据结构和技术来组织PCB。例如,可能会采用优先级队列、红黑树、哈希表等高效的数据结构,依据进程的不同属性(如优先级、状态等)来组织和管理PCB,以提高调度和管理的效率。此外,还可能结合多级队列或多维数据结构来应对不同的调度策略和系统需求。

3.PCB所包含的信息

1.几个重要的信息

1.进程标识符(PID, Process ID)每个进程都有一个独一无二的标识符,用于区分系统中的不同进程就像我们的身份证一样,用于区别每一个进程

2.内存指针:一个进程运行时,就会被从硬盘加载到内存中,同时加载这个进程所的指令/依赖的数据

注意这个指针不是一个,而是一组,这一组就告诉操作系统,这个进程要运行的指令在内存的那个地址上,以及这个进程依赖的数据存储在内存的那个地址上.

2.和进程调度有关的信息

上文也提到了进程调度是进程运行的核心部分主要也是因为解决了操作系统如何在有限资源条件下管理大量并发任务的问题特别是我们现如今的CPU都是多核心的,所要求的如何在单一CPU核心上轮流执行多个进程以提供并发效果,而且更要在多个CPU核心之间智能分配任务,以实现真正意义上的并行执行,最大限度地利用硬件资源。

在PCB(进程控制块)中,与进程调度相关的几个关键属性包括

1.进程状态:进程状态字段记录了进程的当前状态,如就绪,阻塞等。调度器会根据进程状态来决定具体的调度

举一个例子说明: 博主同时约了两个人,一个叫小美,一个叫小花.其中小美是富二代,家里有矿,我约她她随时就可以出来,属于是随叫随到, (随叫随到 -> 在操作系统那里看来,就说明进程处于就绪状态)

而小花,就是一个普通人,因为需要考研,所以现在就在图书馆学习,所以呢约不出来(约不出来  ->在操作系统那里看来,就说明进程处于阻塞状态);

2.优先级:

 

 进程优先级决定了进程在调度算法中的优先级,优先级高的进程通常会比优先级低的进程更早得到CPU资源。操作系统可以根据不同的调度策略赋予进程不同的优先级。

这个很好理解,博主就不举例说明,就是很简单的优先级问题

3.上下文切换信息

包括程序计数器(PC)、栈指针等,这些信息在进程切换时用于保存和恢复进程上下文,确保进程能在合适的时候恢复执行。

举一个例子说明:

假设博主是一位老师,一天之中我需要辅导多位学生做作业。我手中有一份详细的“学生辅导计划表”,这份计划表就像进程控制块(PCB)一样,记录了每位学生的学习进度、需要解答的问题和当前的状态(正在辅导、等待辅导、已完成辅导)。

当我正在辅导第一个学生A做数学题时,突然电话响了,通知你马上要去接待一位来访的家长B。这时,你必须放下学生的作业和教学思路(这就是保存当前进程A的上下文),记下A做到哪一题、思考到何处(相当于保存CPU寄存器状态和程序计数器)。

接着,我接待了家长B讨论了一会儿孩子的学习情况(执行另一个“进程”),完成后我返回继续辅导学生A。这时,我需要查看辅导计划表(PCB)并回想刚才中断的地方(恢复上下文),然后继续从之前离开的地方帮助学生A解答数学题。

上下文切换”就好比我从辅导一个学生切换到处理其他事务,再回到辅导学生的过程中保存和恢复执行状态的过程。在计算机中,上下文切换则是操作系统在多个进程或线程之间切换执行时,保存和恢复进程或线程状态的过程。

4.进程调度标志

有些系统中,PCB还可能包含特殊的调度标志,比如是否需要立即调度、是否可以被抢占等,用于指导调度器做出更细致的决策。

5.等待原因(Wait Reason)

如果进程处于阻塞状态,PCB会记录进程等待的原因,可能是等待某个资源(如I/O操作完成),当等待条件满足时,调度器会改变其状态。

四.总结

CPU(Central Processing Unit)是计算机硬件系统的核心部件,负责执行指令、处理数据和控制计算机系统的运行。CPU执行指令流,对数据进行算术逻辑运算,并根据操作系统提供的指令控制整个系统的运作。

进程(Process)是计算机操作系统中运行的程序的实例,它包含了程序代码、数据、堆栈以及进程控制块(PCB)。进程是一个动态的概念,代表着程序在执行过程中的实体,是系统资源分配和调度的基本单位。操作系统通过创建、调度和销毁进程来管理计算机系统的并发执行。

PCB(Process Control Block)是操作系统内维护的一个数据结构,用于记录进程的状态信息以及控制进程运行所需的各种参数。每个进程都有一个与之对应的PCB,它包含了进程标识符、进程状态(如就绪、运行、阻塞等)、程序计数器(PC)、CPU寄存器的上下文、内存管理信息、优先级、资源列表(如打开的文件描述符、内存地址空间等)、以及与进程调度有关的信息如时间片、等待事件等。操作系统通过PCB来管理和调度进程,实现进程的创建、切换、同步、通信以及资源的分配和回收等功能。

感谢你的阅读,祝你一天心情愉悦.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1548185.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【前端】Layui的表格常用功能,表单提交事件,表格下拉按钮点击事件,表格外的按钮点击事件

欢迎来到《小5讲堂》 大家好,我是全栈小5。 这是《前端》系列文章,每篇文章将以博主理解的角度展开讲解, 特别是针对知识点的概念进行叙说,大部分文章将会对这些概念进行实际例子验证,以此达到加深对知识点的理解和掌握…

短袖有什么牌子可以推荐?质量最好的短袖品牌推荐

天气转热,大家都开始给自己选一些穿着舒适且好看的短袖。但是不少朋友都应该发现,目前市面上的服装品牌质量参差不齐,而且有一些短袖穿身上还会瘙痒等情况,尤其是大家喜欢入手的网红或明星代言的牌子更严重。 那么短袖应该怎么选…

spring 的理解

spring 的理解 spring 是一个基础的框架,同时提高了一个Bean 的容器,用来装载Bean对象spring会帮我们创建Bean 对象并维护Bean对象 的生命周期。在spring 框架上,还有springCloud,spring Boot 的技术框架,都是以Spring为基石的sp…

centos7 使用docker安装了mongo 怎么设置远程链接,必须使用密码才能连接

docker run -d –name mongodb_container -e MONGO_INITDB_ROOT_USERNAMEroot -e MONGO_INITDB_ROOT_PASSWORDroot -e MONGO_INITDB_DATABASEdataserver -p 27017:27017 \ 无法在mongo容器里编辑文件 如果你无法直接编辑 MongoDB 容器内的配置文件,你可以尝试…

ClickHouse10-ClickHouse中Kafka表引擎

Kafka表引擎也是一种常见的表引擎,在很多大数据量的场景下,会从源通过Kafka将数据输送到ClickHouse,Kafka作为输送的方式,ClickHouse作为存储引擎与查询引擎,大数据量的数据可以得到快速的、高压缩的存储。 Kafka大家…

碳课堂|什么是碳资产?企业如何进行碳资产管理?

碳资产是绿色资产的重要类别,在全球气候变化日益严峻的背景下备受关注。在“双碳”目标下,碳资产管理是企业层面实现碳减排目标和低碳转型的关键。 一、什么是碳资产? 碳资产是以碳减排为基础的资产,是企业为了积极应对气候变化&…

华为昇腾asend

昇腾Ascend C编程语言 Ascend C原生支持C/C编程规范,通过多层接口抽象、并行编程范式、孪生调试等技术,极大提高了算子的开发效率,帮助AI 参考文章 手把手教你在昇腾平台上搭建PyTorch训练环境 - 哔哩哔哩 (bilibili.com)https://www.bilibi…

【Java面试题】计算机网络

文章目录 1.计算机网络基础1.1网络分层模型/OSI七层模型是什么?1.2TCP/IP四层模型是什么?每一层的作用?1.2.1TCP四层模型?1.2.2为什么网络要分层? 1.2常见网络协议1.2.1应用层常见的协议1.2.2网络层常见的协议 2.HTTP2…

基于springboot实现大学生入学审核系统项目【项目源码+论文说明】

基于springboot实现大学生入学审核系统演示 摘要 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了大学生入学审核系统的开发全过程。通过分析大学生入学审核系统管理的不足,创建了一个计算机管理大学生入…

大数据开发(日志离线分析项目)

大数据开发(日志离线分析项目) 一、项目需求1、使用jqueryecharts的方式调用程序后台提供的rest api接口,获取json数据,然后通过jquerycss的方式进行数据展示。工作流程如下:2、七大角度1、用户基本信息分析模块2、浏览…

微信怎么恢复聊天记录?效果惊人的3个方法

微信作为我们日常生活中最常用的即时通讯工具之一,承载着我们与亲友之间的重要沟通记录。然而,不可避免地会遇到误删聊天记录的情况,可能是因为手误、设备问题或其他原因。 当我们发现重要的聊天记录不见了,往往会感到焦虑和困扰…

ValueError: Cannot load file containing pickled data when allow_pickle=False

问题描述 遇到报错:ValueError: Cannot load file containing pickled data when allow_pickleFalse 解决方案 经过查阅有人说是与numpy的版本有关,但是还是不要轻易改变环境中的版本,不一定哪个地方就会报错。这里放个解决方案:…

量化交易入门(二十二)MACD指标实现,能挣到钱吗?

学习了MACD指标以后,我们通过量化回测来验证一下,这个指标能否帮我们挣到钱。我们还是使用Backtrader框架,实现MACD的交易策略,然后用苹果股票历史数据完成这个示例。 示例代码如下: import backtrader as bt import…

server端

一、创建项目 expess server 1.1 安装nodemon npm i nodemon 1.2 设置连接数据库mongodb 安装mongoose npm i mongoose 在根目录新建config文件夹/db.config.js // 引入mongodb数据库操作模块 const mongoose require("mongoose") // 连接数据库mongoose.con…

【Git】日志功能

1. git日志显示 # 显示前3条日志 git log -3# 单行显示 git log --oneline# 图表日志 git log --graph# 显示更改摘要 git log --stat# 显示更改位置 git log --patch 或 git log -p# 查看指定文件的提交历史记录 git log {filename}例子1:单行显示 例子2&#xff…

自学编程的六种方法,你必须知道

随着互联网日趋迅猛,编程已经在我们生活当中无处不在了。众所周知,程序员的工资都很不错,于是越来越多的人,都想加入到编程的行业中来。那么如何加入到程序员的行业当中? PHP从入门到放弃,C语言从入门到放…

3款免费甘特图制作工具的比较和选择指南

GanntProject GanttProject https://www.ganttproject.biz/ 是一款项目管理和调度应用,适用于 Windows、macOS 和 Linux。它易于使用,无需任何设置,适用于个人用户和小型团队。该应用提供任务层次结构和依存关系、里程碑、基准行、Gantt 图表…

【深度学习】最强算法模型之:潜在狄利克雷分配(LDA)

潜在狄利克雷分配 1、引言2、潜在狄利克雷分配2.1 定义2.2 原理2.3 算法公式2.4 代码示例 3、总结 1、引言 小屌丝:鱼哥, 给我讲一讲LDA 小鱼:LDA? 你指的是? 小屌丝:就是算法模型的LDA啊, 你…

基于XGBoost和数据预处理的电动汽车车型预测

基于XGBoost和数据预处理的电动汽车车型预测 文章目录 基于XGBoost和数据预处理的电动汽车车型预测1、前言2、导入数据3、各县电动汽车采用情况条形图4、电动车类型饼图5、前5最欢迎的电动车制造商6、XGBoost模型6.1 字符串列的标识6.2 删除不相关的列6.3 编码分类变量6.4 电动…

【机器学习之---数学】统计学基础概念

every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?typeblog 0. 前言 统计学基础 1. 频率派 频率学派(传统学派)认为样本信息来自总体,通过对样本信息的研究可以合理地推断和估计总体信息…