操作系统—进程与线程

补充知识

  1. PSW程序状态字寄存器
  2. PC程序计数器:存放下一条指令的地址
  3. IR指令寄存器:存放当前正在执行的指令
  4. 通用寄存器:存放其他一些必要信息

进程

进程:进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。

进程实体 = 程序段 + 相关数据段 + 进程控制块PCB

PCB是给OS用的,程序段和数据段都是给进程自己使用的

①创建进程 = 创建进程实体中的PCB

撤销进程 = 撤销进程的PCB

②进程映像(进程实体) 是静止的,进程是动态的

③PCB是进程存在的唯一标识。OS管理时所需要的信息都放在PCB中

进程的特征

  1. 动态性(最基本特征):进程是程序的一次执行,具有一定的生命周期,是动态的产生、变化和消亡的
  2. 并发性:多个进程实体同存于内存中,能在一段时间内同时运行
  3. 独立性:进程实体是一个能独立运行、独立获得资源和独立接受调度的基本单位
  4. 异步性:由于进程的相互制约,使得进程按各自独立的、不可预知的速度向前推进(OS提供“进程同步机制”来解决异步问题)
  5. 结构性:每个进程都会配置一个PCB

进程的状态

  • 运行态 —— 单处理机中,每个时刻只有一个进程处于运行态
  • 就绪态
  • 阻塞态 / 等待态 :进程正在等待某一事件而暂停运行(等待某资源为可用,等待输入/输出完成)
  • 创建态

—— 创建进程:申请一个空白PCB → 向PCB里填写用于控制和管理进程的信息 → 为该进程分配运行时所必需的资源 → 把该进程转入就绪态并插入就绪队列

  • 终止态 :处理资源释放和回收(回收PCB)

在这里插入图片描述

补充知识

  • 一个进程可以执行exit系统调用,请求OS终止该进程 → “终止态”

  • 在进程PCB中,会有一个变量state来表示进程的当前状态

  • 同一程序运行在不同的数据集上,形成不同的进程

  • 一个计算机系统中,进程的最大数目主要受到 内存大小 限制

  • 在一个多道系统中,若就绪队列不空,就绪的进程数目越多,处理器的效率不变


①进程控制块PCB

  • 进程描述信息:进程标识符PID、用户标识符UID
  • 进程控制和管理信息:进程当前状态、进程优先级、代码运行入口地址、程序的外存地址、进入内存时间、处理机占用时间、信号量使用
  • 资源分配清单:代码段指针、数据段指针、堆栈段指针、文件描述符、键盘、鼠标
  • 处理及相关信息:通用寄存器值、地址寄存器值、控制寄存器值、标志寄存器值、状态字

在这里插入图片描述
在这里插入图片描述

进程组织方式

①链接方式:按照进程状态将PCB分为多个队列;操作系统持有指向各个队列的指针

②索引方式:根据进程状态的不同,建立几张索引表;操作系统持有指向各个索引表的指针

②程序段

程序的代码(指令序列)

③数据段

运行过程中产生的各种数据。如:程序中定义的变量


进程控制

进程控制:对系统中的所有进程实施有效的管理,具有创建新进程、撤销已有进程、实现进程状态转换等功能

原语:进程控制用的程序段(执行期间不允许中断)

进程的创建

①允许一个进程(父进程)创建另一个进程(子进程)

  1. 子进程继承父进程所拥有的资源;
  2. 撤销子进程时,需把从父进程获取的资源还给父进程;
  3. 撤销父进程时,同时撤销子进程
  4. 父进程与子进程共享一部分资源,但不能共享虚拟地址空间
  5. 父进程创建子进程:父进程与子进程同时执行(并发)
  6. 主程序调用子程序:主程序暂停在调用点,子程序开始执行,直到子程序返回,主程序才开始执行

②引起进程的创建(创建态→就绪态):终端用户登陆系统、作业调度、系统提供服务、用户程序的应用请求

  • 申请一个空白PCB(PCB有限)
  • 为进程分配所需资源
  • 初始化PCB
  • 将新进程插入就绪队列

进程的终止

①引起进程的终止(…态→终止态→无):正常结束、异常结束、外界干预

  • 根据被终止进程的标识符,检索出该进程的PCB
  • 若被终止进程处于运行态,立即终止该进程的执行(剥夺CPU),将处理机资源分配给其他进程
  • 将其所有子孙进程终止
  • 将该进程所拥有的全部资源,归还给父进程或OS
  • 将该PCB删除

进程的阻塞(Block原语)和唤醒(Wakeup原语)

①引起进程的阻塞(运行态→阻塞态):请求系统资源失败、等待某种操作的完成、新数据尚未到达、无新任务可做 等期待的某些事件未发生

  • 找到被阻塞进程的标识号对应的PCB
  • 若该进程为运行态,则保护其现场,将其状态转为阻塞态,停止运行
  • 把该PCB插入相应事件的等待队列

②引起进程的唤醒(阻塞态→就绪态):I/O操作已完成、新数据已到达 等期待的某些事件发生

  • 在该事件的等待队列中找到相应进程的PCB
  • 将其从等待队列中移出,并置其状态为就绪态
  • 把该PCB插入就绪队列,等待调度程序调度

进程的切换

①允许进程的切换:当前进程时间片到、有更高优先级的进程达到、当前进程主动阻塞、当前进程终止

  • 将运行环境信息存入PCB
  • 把该PCB移入相应队列
  • 选择另一个进程执行,并更新其PCB
  • 根据PCB恢复新进程所需的运行环境

进程的通信

∵各个进程拥有的内存地址空间相互独立,故需要进行通信,即进程之间的信息交换

1.共享存储

共享存储:存在一块可直接访问的共享空间,通过对这片共享空间进行读/写操作(各个进程的访问是互斥的)来实现信息交换

其中,读/写操作需要使用 同步互斥工具(P操作、V操作)

①基于数据结构的共享(低级)

速度慢,限制多

②基于存储区的共享(高级)

注:OS只负责为通信进程提供可共享使用的存储空间和同步互斥工具

数据交换由用户自己安排读/写指令完成

2.消息传递

消息传递:进程间的数据交换以格式化的消息为单位

需要使用 发送消息Send 和 接收消息Receive 两个原语

在这里插入图片描述

消息头:发送进程ID、接收进程ID、消息长度等格式化的信息

①直接通信方式

直接把消息发送给接收进程(需指明接收进程的ID)

②间接通信方式(信箱通信方式)

把消息发送到某个中间实体(需指明要发送到的信箱)

3.管道通信(单向)

在这里插入图片描述

  1. 管道通信允许两个进程按 生产者-消费者 方式进行通信
  2. 数据在管道中 先进先出(循环队列)
  3. 半双工通信:在某一时间段内只能实现单向的传输
  4. 管道文件:一个固定大小的缓冲区
  5. 管道机制需提供的能力:互斥(由OS实现)、同步、确定对方的存在

管道只能由创建进程所访问,当父进程创建一个管道后,由于管道是一种特殊文件,子进程会继承父进程的打开文件,因此子进程也会继承父进程的管道,并使用这个管道与父进程进行通信。

  • 只要管道不是空的,读进程就能从管道中读出数据
  • 若数据被读空,则读进程阻塞,直到写进程往管道中写入新的数据,再将读进程唤醒
  • 只要管道没满,写进程就能往管道中写入数据
  • 若管道被写满,则写进程阻塞,直到读进程读出数据,再将写进程唤醒

从管道读数据是一次性操作,数据一旦被读取,就彻底消失,同时释放空间以便写更多数据。这种普通管道只允许单向通信,若要实现父子进程双向通信,则需要定义两个管道。

解决方案:一个管道允许多个写进程,一个读进程

②允许多个写进程,多个读进程,但系统会让各个读进程轮流从管道中读数据

4.共享文件



线程

  • 引入进程的目的:使多道程序并发执行,提高资源利用率和系统吞吐量
  • 引入线程的目的:减小程序在并发执行时所付出的时空开销,提高OS的并发性能

线程(轻量级进程):是一个基本的CPU执行单元,是程序执行流的最小单元

线程 = 线程ID + 程序计数器 + 寄存器集合 + 堆栈

线程控制块TCB:记录线程执行的寄存器和栈等现场状态。

线程控制块TCB = 线程标识符TID + 寄存器 + 线程运行状态 + 优先级 + 线程专有存储区 + 堆栈指针

寄存器:程序计数器PC(线程目前执行到哪)、状态寄存器、通用寄存器(线程运行的中间结果)

线程运行状态:用于描述线程正处于何种状态

优先级:线程调度、资源分配的参考

线程专有存储区:线程切换时用于保存现场

堆栈指针:用于过程调度时保存局部变量及返回地址等

①线程是进程中的一个实体,是被系统独立调度和分派的基本单位

线程自己不拥有系统资源,只拥有一点儿在运行在必不可少的资源,但它可与同属于一个进程的其他线程共享进程所拥有的全部资源,可独立执行程序

③一个线程可以创建和撤销另一个线程,同一进程中的多个线程之间可以并发执行

④引入线程后,进程作为除CPU外的系统资源的分配单元,而线程是作为处理及的分配单元

在这里插入图片描述

线程与进程的比较线程(引入线程的操作系统)进程(传统操作系统)
调度线程是独立调度的基本单位
线程切换代价小。
在同一进程内进行线程切换不会引起进程切换
进程是拥有资源和独立调度的基本单位。
每次调度都会引起上下文切换,开销大
并发性进程之间可以并发执行
一个进程中的多个线程也可并发执行
进程之间可以并发执行
拥有资源线程不拥有系统资源进程是系统中拥有资源的基本单位
独立性某进程中的线程对其他进程不可见。
同一进程内的不同线程共享进程的地址空间和资源
每个进程都拥有独立的地址空间和资源
系统开销线程切换只需保存和设置少量寄存器内容,开销很小;
同一进程内的多个线程的同步与通信不需要OS的干预
系统开销很大
支持多处理机系统多线程进程:进程中的多个线程可以分配到多个处理机上执行单线程进程:进程只能允许在一个处理机上

线程的实现方式

①用户级线程ULT

用于早期OS:只支持进程,不支持线程

  • 在用户级线程中,内核意识不到线程的存在,应用程序可以通过使用线程库设计成多线程程序
  • 设置了用户级线程的系统,仍以 进程 为单位进行调度

优点:①线程切换不需要转换到内核空间,系统开销小,效率高

②用户级线程的实现与OS平台无关

缺点:①当一个用户级线程被阻塞后,整个进程都会被阻塞,并发度不高

②多个线程不可在多核处理机上并行运行

在这里插入图片描述

②内核级线程KLT = 内核支持的线程

内核级线程是处理机分配的基本单位

  • 线程切换需要CPU变态
  • 内核级线程是在内核的支持下运行的

优点:①多个线程可并行执行,并发能力强;

②如果进程中的一个线程被阻塞,可运行其他进程中的线程;

③采用多线程技术

缺点:同一进程中的线程切换,需要从用户态转到核心态进行,系统开销较大

在这里插入图片描述

③组合方式

线程库:为程序员提供创建和管理线程的API

  1. 在用户空间中提供一个没有内核支持的库
  2. 实现由操作系统直接支持的内核级的一个库

多线程模型

在这里插入图片描述在这里插入图片描述在这里插入图片描述

①多对一模型

情况:1.以不同的参数或数据多次执行同一个应用程序(多对一)

2.进程在执行过程中可以加载执行不同的程序(一对多)

优点:线程管理在用户空间进行,不需要切换,效率较高

缺点:并发性不高。若一个线程在访问内核时发生阻塞,则整个进程都会被阻塞

②一对一模型

情况:执行一条命令或运行一个应用程序

优点:当一个线程被阻塞后,允许调度另一个线程允许(因为内核级线程是处理及分配的单位),故并发能力较强

缺点:每创建一个用户线程,相应的需创建一个内核线程,开销较大

③多对多模型

情况:并发执行不同的应用程序

特点:克服了多对一模型并发度不高的特点,克服了一对一模型的一个用户进程占用太多内核级线程而开销太大的缺点

拥有上述两种模型的优点

补充知识

  • 多线程:在一个程序中可以定义多个线程并同时运行它们,每个线程可以执行不同的任务
  • 多任务:针对操作系统,代表OS可以同时执行的程序个数
  • 多线程:针对一个程序,代表一个程序可以同时执行的线程个数,而每个线程可以完成不同的任务
  • 一个系统中可能所有进程都处于等待态(死锁)


进程的调度

补充知识

  • 进程处于临界区(访问临界资源的那段代码)时不能进行处理机调度
  • 内核程序临界区:访问某种内核数据结构(例:进程的就绪队列)

①高级调度(作业调度)

作用:按照一定的原则从外存上处于后备队列的作业中挑选一个(或多个),分配内存、输入/输出设备等必要的资源

多道批处理系统大多配有作业调度,而其它系统中通常不需要配置作业调度

②中级调度(内存调度)

目的:提高内存利用率和系统吞吐量

将那些暂时不能运行的进程调至外存等待,此时进程的状态—— 挂起态

作用:把外存上的那些已具备运行条件的就绪进程再重新调入内存,并修改其状态为就绪态,挂在就绪队列上等待

③低级调度(进程调度)

作用:按照某种算法从就绪队列中选择一个进程为其分配处理机

进程调度是最基本的一种调度,在各个操作系统中都必须配置

狭义进程调度:从就绪队列中选出一个要运行的进程

广义进程调度:包含了选择一个进程和进程切换两个步骤

三级调度的联系

作业调度从外存的后备队列中选择一批作业进入内存,为它们建立进程,这些进程被送入就绪队列;

进程调度从就绪队列中选出一个进程,并把其状态改为运行态,把CPU分配给它;

中级调度是为了提高内存的利用率,系统将那些暂时不能运行的进程挂起来。

  1. 作业调度为进程活动做准备,进程调度使进程正常活动起来
  2. 中级调度将暂时不能运行的进程挂起,中级调度处于作业调度和进程调度之间
  3. 调度频率:作业<中级<进程

在这里插入图片描述


🤨调度算法评价标准

①CPU利用率

CPU利用率 = CPU有效工作时间 / ( CPU有效工作时间 + CPU空闲等待时间 )

②系统吞吐量

单位时间内CPU完成作业的数量

③周转时间

从作业提交到作业完成所经历的时间

周转时间 = 作业完成时间 - 作业提交时间

平均周转时间 = (作业1的周转时间 + … + 作业n的周转时间)/ n

带权周转时间 = 作业周转时间 / 作业实际运行时间

平均带权周转时间 = (作业1的带权周转时间 + … + 作业n的带权周转时间)/n

④等待时间

进程:进程处于等处理机的时间之和

作业:需考虑建立进程后的等待时间,和作业在外存后备队列中等待的时间

⑤响应时间 ——衡量调度算法的重要准则之一

从用户提交请求到系统首次产生响应所用的时间


调度程序(调度器)

用于调度和分派CPU的组件(排队器、分派器、上下文切换器)

①触发“调度程序”的情况

  1. 非抢占式调度策略,只有运行进程阻塞或退出才触发
  2. 抢占式调度策略,每个时钟中断或k个时钟中断会触发

②触发“调度程序”

  1. 创建新进程
  2. 进程退出
  3. 运行进程阻塞
  4. I/O中断发生

🎃不能进行进程的调度与切换的情况

  1. 在处理中断的过程中
  2. 进程在操作系统内核临界区
  3. 其他需要完全屏蔽中断的原子操作过程中

🎃应该进行进程调度与切换的情况

当前运行的进程主动放弃处理机:

  1. 进程正常终止
  2. 运行过程中发生异常而终止
  3. 进程主动请求阻塞(等待I/O)

当前运行的进程被动放弃处理机:

  1. 分给进程的时间片用完
  2. 有更紧急的事需要处理(I/O中断)
  3. 有更优先级的进程进入就绪队列

进程切换往往在调度完成后立刻发生,会保存原进程当前断点的现场信息,回复被调度进程的现场信息

当进程处于临界区时,说明进程正在占用处理机,只要不破坏临界资源的使用规则,就不会影响处理机的调度(即,在进程处于临界区时可以进行处理机调度)

😊进程调度方式

  • 非抢占调度方式(非剥夺方式)

主动放弃处理机

优点:实现简单、系统开销小,适用于早期批处理系统

缺点:不能用于分时系统和大多数实时系统

  • 抢占调度方式(剥夺方式)

适合分时系统和实时操作系统。

优点:遵循优先权、短进程优先和时间片原则

闲逛进程(能耗低、优先级最低、不需要CPU之外的资源、不会被阻塞)

在进程切换时,若系统中没有就绪进程,就会调度闲逛进程运行

可以是0地址指令,占一个完整的指令周期(指令周期末尾例行检查中断)


调度算法

调度算法名称先来先服务FCFS短作业优先SJF优先级调度高响应比优先调度时间片轮转RR多级队列调度多级反馈队列调度
算法过程选择最先进入后备队列的作业选择运行时间最短的作业选择优先级最高的作业选择响应比最高的作业选择就绪队列中的第一个进程
适用作业、进程调度作业、进程调度作业、进程调度;实时操作系统作业、进程调度进程调度;分时系统进程调度
是否导致“饥饿”不会导致饥饿会饥饿会饥饿不会饥饿会饥饿
调度方式非抢占式非抢占式非抢占式、抢占式优先级调度;非抢占式抢占式抢占式
公式响应比Rp=
(等待时间+要求服务时间) / 要求服务时间
最高优先级
→系统进程→
→交互式进程→
→批处理进程→
最低优先级
在这里插入图片描述(如表格下图)
优点算法简单公平平均等待时间、平均周转时间最少有利于短作业公平,响应快- 公平,不必实现估计进程的运行时间
- 可灵活调整对各类进程的偏好程度
- 终端型作业用户:短作业优先
- 短批处理作业用户:周转时间较短
- 长批处理作业用户:不会长期得不到处理
缺点- 效率低
- 长作业有利,短作业不利
- 利于CPU繁忙型作业,不利于I/O繁忙型作业
- 长作业不利,短作业有利
- 可能导致长作业饥饿
- 不能保证紧迫性作业会被及时处理
- 不一定能真正做到短作业优先调度
计算响应比的开销大- 不区分任务的紧急程度
- 处理机在进程间过于频繁的切换
- 开销增大
补充短进程优先算法SPF
抢占式版本:最短剩余时间优先算法SRTN
- 静态优先级:创建进程时确定
- 动态优先级:根据进程情况的变化动态调整
- 进程优先级设置:
1. 系统进程>用户进程
2. 交互性进程>非交互型进程(前台>后台)
3. I/O型进程>计算型进程
时间片的长短:
系统的响应时间、就绪队列中的进程数目、系统的处理能力
同一队列中的进程可以设置不同的优先级;
不同的队列本身也可以设置不同的优先级

在这里插入图片描述

进程切换

任何进程都是在操作系统内核的支持下运行的

1.上下文切换

切换CPU到另一个进程需要保存当前进程状态并恢复另一个进程的状态

2.上下文切换的消耗

3.上下文切换与模式切换

模式切换:用户态和内核态之间的切换

调度:决定资源分配给哪个进程的行为(决策)

切换:实际分配的行为(执行)

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

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

相关文章

【基于SprintBoot+Mybatis+Mysql】电脑商城项目之上传头像和新增收货地址

&#x1f9f8;安清h&#xff1a;个人主页 &#x1f3a5;个人专栏&#xff1a;【Spring篇】【计算机网络】【Mybatis篇】 &#x1f6a6;作者简介&#xff1a;一个有趣爱睡觉的intp&#xff0c;期待和更多人分享自己所学知识的真诚大学生。 目录 &#x1f680;1.上传头像 -持久…

Windows下ollama详细安装指南

文章目录 1、Windows下ollama详细安装指南1.1、ollama介绍1.2、系统要求1.3、下载安装程序1.4、安装步骤1.5、验证安装1.6、环境变量配置1.7、模型选择与安装【deepseek 示例】1.7.1、拉取并运行模型1.7.2、进阶使用技巧 1、Windows下ollama详细安装指南 1.1、ollama介绍 olla…

10vue3实战-----实现登录的基本功能

10vue3实战-----实现登录的基本功能 1.基本页面的搭建2.账号登录的验证规则配置3.点击登录按钮4.表单的校验5.账号的登录逻辑和登录状态保存6.定义IAccount对象类型 1.基本页面的搭建 大概需要搭建成这样子的页面: 具体的搭建界面就不多讲。各个项目都有自己的登录界面&#…

vue3 点击图标从相册选择二维码图片,并使用jsqr解析二维码(含crypto-js加密解密过程)

vue3 点击图标从相册选择二维码图片&#xff0c;并使用jsqr解析二维码&#xff08;含crypto-js加密解密过程&#xff09; 1.安装 jsqr 和 crypto-js npm install -d jsqr npm install crypto-js2.在util目录下新建encryptionHelper.js文件&#xff0c;写加密解密方法。 // e…

支持多种网络数据库格式的自动化转换工具——VisualXML

一、VisualXML软件介绍 对于DBC、ARXML……文件的编辑、修改等繁琐操作&#xff0c;WINDHILL风丘科技开发的总线设计工具——VisualXML&#xff0c;可轻松解决这一问题&#xff0c;提升工作效率。 VisualXML是一个强大且基于Excel表格生成多种网络数据库文件的转换工具&#…

【JVM详解四】执行引擎

一、概述 Java程序运行时&#xff0c;JVM会加载.class字节码文件&#xff0c;但是字节码并不能直接运行在操作系统之上&#xff0c;而JVM中的执行引擎就是负责将字节码转化为对应平台的机器码让CPU运行的组件。 执行引擎是JVM核心的组成部分之一。可以把JVM架构分成三部分&am…

mysql安装starting the server报错

win10家庭版无法启动服务的&#xff0c;先不要退出&#xff0c;返回上一栏&#xff0c;然后通过电脑搜索栏输入服务两个字&#xff0c;在里面找到mysql80&#xff0c;右键属性-登录&#xff0c;登录身份切换为本地系统就行了

萬有的函數關係速成2. 連續和導數

1.討論間斷點類型 定义: 若函数在某点不满足连续的条件,则该点为间断点。 第一类间断点是左右极限都存在的间断点,其中左右极限相等的是可去间断点,不相等的是跳跃间断点; 第二类间断点是左右极限至少有一个不存在的间断点,包括无穷间断点(极限为无穷)和振荡间断点…

【专题】2025年我国机器人产业发展形势展望:人形机器人量产及商业化关键挑战报告汇总PDF洞察(附原数据表)

原文链接&#xff1a;https://tecdat.cn/?p39668 机器人已广泛融入我们生活的方方面面。在工业领域&#xff0c;它们宛如不知疲倦的工匠&#xff0c;精准地完成打磨、焊接等精细工作&#xff0c;极大提升了生产效率和产品质量&#xff1b;在日常生活里&#xff0c;它们是贴心…

用docker在本地用open-webui部署网页版deepseek

前置条件 用Ollama在本地CMD窗口运行deepseek大模型-CSDN博客文章浏览阅读109次&#xff0c;点赞5次&#xff0c;收藏2次。首次运行需要下载deepseek的大模型包&#xff08;大约5GB&#xff0c;根据本地网速的不同在半个小时到几个小时之间下载完成&#xff09; &#xff0c;并…

DeepSeek-R1 云环境搭建部署流程

DeepSeek横空出世&#xff0c;在国际AI圈备受关注&#xff0c;作为个人开发者&#xff0c;AI的应用可以有效地提高个人开发效率。除此之外&#xff0c;DeepSeek的思考过程、思考能力是开放的&#xff0c;这对我们对结果调优有很好的帮助效果。 DeepSeek是一个基于人工智能技术…

x小兔鲜vue.js

LayoutFooter.vue <template><footer class"app_footer"><!-- 联系我们 --><div class"contact"><div class"container"><dl><dt>客户服务</dt><dd><i class"iconfont icon-kef…

磁盘分区损坏:深度解析与数据恢复策略

一、磁盘分区损坏现象概述 磁盘分区损坏是计算机数据存储领域的一个常见问题&#xff0c;它通常表现为硬盘上的某个分区无法正常访问&#xff0c;数据读写失败&#xff0c;甚至整个分区消失。这种损坏可能源于多种因素&#xff0c;不仅影响用户的正常使用&#xff0c;更可能导…

Python----Python高级(网络编程:网络基础:发展历程,IP地址,MAC地址,域名,端口,子网掩码,网关,URL,DHCP,交换机)

一、网络 早期的计算机程序都是在本机上运行的&#xff0c;数据存储和处理都在同一台机器上完成。随着技术的发展&#xff0c;人 们开始有了让计算机之间相互通信的需求。例如安装在个人计算机上的计算器或记事本应用&#xff0c;其运行环 境仅限于个人计算机内部。这种设置虽然…

k8sollama部署deepseek-R1模型,内网无坑

这是目录 linux下载ollama模型文件下载到本地,打包迁移到k8s等无网络环境使用下载打包ollama镜像非k8s环境使用k8s部署访问方式非ollama运行deepseek模型linux下载ollama 下载后可存放其他服务器 curl -L https://ollama.com/download/ollama-linux-amd64.tgz -o ollama-linu…

机器学习基本概念(附代码)

这里的“机器”指的是计算机软硬件组织&#xff0c;而非传统的机械装置&#xff1b;而“学习”&#xff0c;则是指软件通过训练过程&#xff0c;其性能得以提升的过程。 一、算法与模型的关系 在机器学习领域&#xff0c;算法和模型是两个核心概念。算法是一种偏抽象的概念&a…

白嫖RTX 4090?Stable Diffusion:如何给线稿人物快速上色?

大家都知道&#xff0c;在设计的初期&#xff0c;我们通常会先绘制草图&#xff0c;然后再进行上色处理&#xff0c;最终才开始进行最终的设计工作。在这个上色的过程中&#xff0c;配色是至关重要的一环。这不仅方便了内部同事的评审&#xff0c;也让产品方和客户可以直观地了…

Win10环境使用ChatBox集成Deep Seek解锁更多玩法

Win10环境使用ChatBox集成Deep Seek解锁更多玩法 前言 之前部署了14b的Deep Seek小模型&#xff0c;已经验证了命令行及接口方式的可行性。但是纯命令行或者PostMan方式调用接口显然不是那么友好&#xff1a; https://lizhiyong.blog.csdn.net/article/details/145505686 纯…

kafka服务端之日志磁盘存储

文章目录 页缓存顺序写零拷贝 Kafka依赖于文件系统&#xff08;更底层地来说就是磁盘&#xff09;来存储和缓存消息 。 那么kafka是如何让自身在使用磁盘存储的情况下达到高性能的&#xff1f;接下来主要从3各方面详细解说。 页缓存 页缓存是操作系统实现的一种主要的磁盘缓存…

计算机视觉语义分割——Attention U-Net(Learning Where to Look for the Pancreas)

计算机视觉语义分割——Attention U-Net(Learning Where to Look for the Pancreas) 文章目录 计算机视觉语义分割——Attention U-Net(Learning Where to Look for the Pancreas)摘要Abstract一、Attention U-Net1. 基本思想2. Attention Gate模块3. 软注意力与硬注意力4. 实验…