首页 > 其他分享 >线程的种类-内核支持线程以及用户级线程

线程的种类-内核支持线程以及用户级线程

时间:2024-03-20 19:31:32浏览次数:20  
标签:阻塞 用户 线程 切换 进程 内核

内核支持线程:

KST,在OS中的所有进程,无论是系统进程还是用户进程,都是在OS内核的支持下运行的,是与内核紧密相关的。而内核支持线程KST,也是在内核的支持下运行,他们的创建阻塞撤销和切换等都是在内核空间实现的。优点有:内核可同时调度进程中的多个线程并发运行;如果进程中的一个线程被阻塞,内核可调度该进程中的其他线程占有处理机运行;线程切换快开销小。
缺点是对于用户的线程切换而言,其模式切换的开销较大;在同一进程中,从一个线程切换到另一个线程时需要从用户态转到内核态,因为用户进程的线程在用户态运行,而线程调度和管理在内核中实现的,系统开销大。
—>用户级线程:

ULT是在用户空间中实现的,它对进程的创建,撤销,同步与通信等功能无须内核支持。即ULT 与内核无关,优点有:线程切换不需要转到内核空间,节省了模式切换的开销;调度算法可以是进程专用的;用户级线程的实现与OS运行平台无关。
缺点有:系统调用的阻塞问题,在基于进程机制的OS中,大多数系统调用都会使进程阻塞,因此在线程执行一个系统调用时,不仅该线程会被阻塞,而且进程内的所有线程都会被阻塞,而在KST方式下,进程中的其他线程仍可继续运行。在单纯的ULT实现方式中,多线程应用不能利用多处理机可以进行多重处理这一优点,内核每次分配给一个进程的仅有一个CPU,因此进程中仅有一个线程能执行,在该线程放弃CPU之前,其他线程只能等待。

标签:阻塞,用户,线程,切换,进程,内核
From: https://blog.csdn.net/m0_74762905/article/details/136886162

相关文章

  • 线程的创建与终止
    线程的创建与终止:1.线程的创建:应用程序在启动时,通常仅有一个线程在执行,称为“初始化线程”,它的主要功能是创建新线程,利用一个线程创建函数,并提供相应参数,创建函数执行完毕后,返回一个线程标识符供以后使用。2.线程的终止:当一个线程完成了自己的任务后,或是线程在运行中出现异......
  • 权限与用户
    一、使用者文件拥有者userLinux是一个多用户多任务的系统,文件拥有者能够让Linux系统的文件更安全。群组group保护系统文件安全,设置同一个群组下的成员对文件的管理权限其他人others除了文件的拥有者、群组以外的其他人对文件的管理权限rootroot拥有对系统所有文件的权限......
  • Jmeter 之跨线程组传参(环境变量设置为全局变量)
    工作中往往会出现同一个测试计划下这个线程组下变量在另外一个线程组中使用,这就意味着需要把环境变量修改为全局变量 1.首先通过json提取器或者正则表达式的方式把数据提取出来 2.打开函数助手,选择setProperty函数, 生成函数${__setProperty(token,${access_token},)}3.......
  • 线程同步,命令行程序创建承载WPF程序运行的另一种实现
    WPFApplication类WPFApplication类是WPF应用程序的核心。它负责管理应用程序的生命周期、创建和管理应用程序的主窗口、处理应用程序事件以及提供对应用程序资源的访问。主要方法和属性WPFApplication类包含以下主要方法和属性:构造函数: 构造函数用于初始化应用程序......
  • 线程同步 SynchronizationContext 在命令行程序中创建一个ui线程承载WPF运行
    1、创建一个线程作为ui线程ui线程要求必须是STA线程vart=newThread(()=>{});t.SetApartmentState(ApartmentState.STA);t.Start();2、创建一个公共的SynchronizationContext作为同步的入口在.NET框架中,Dispatcher是一个类,它负......
  • 线程同步 SynchronizationContext 初识
    什么是SynchronizationContext?SynchronizationContext是.NET中的一个类,用于管理跨线程的同步操作。它提供了一种机制,使线程可以协调对共享资源的访问,从而防止并发问题。SynchronizationContext的工作原理SynchronizationContext与每个线程相关联。当线程执行时,它会使用关......
  • redis自学(22)Redis是单线程还是多线程?
    Redis是单线程还是多线程?Redis到底是单线程还是多线程? 如果仅仅聊Redis的核心的业务处理部分(命令处理),答案是单线程 如果是聊整个Redis那么答案是对线程在Redis版本迭代过程中,在两个重要的时间节点上引入了多线程的支持:Redisv4.0:引入多线程异步处理一些耗时较长的任务,......
  • Oracle新建用户、表空间、表
    首先使用sys用户登录plsql。 1.创建表空间(用于存储数据库的数据)--创建表空间--createtablespaceMySpacedatafile'E:\OracleSpace\orcl\TEST.DBF'size15Mautoextendonnext10Mpermanentonline 2.新建用户,找到Users右键新建 也可以查看sql,然后apply ......
  • 06 - Debian如何启用root用户的声音
    作者:网络傅老师特别提示:未经作者允许,不得转载任何内容。违者必究!Debian如何启用root用户的声音《傅老师Debian小知识库系列之06》——原创==前言==傅老师Debian小知识库特点:1、最小化拆解Debian实用技能;2、所有操作在VM虚拟机实测完成;3、致力于最终形成Debian小知识......
  • C# 关注抖音用户并私信
    ​一、通过服务器获取数据库中抖音用户主页链接1、获取用户数据:用第三方服务器编写php代码调用nacicat数据库表里的数据 2、在容器中展示加载组合网页:二、JS点击关注按钮、私信按钮 出现了两个关注,我们要点击的是红色按钮的第一个“关注”标签只有div,第二个标签为“butto......