浅谈linux线程切换问题
作者:jingxian 发布时间:2021-05-04 11:54:33
处理器总处于以下状态中的一种:
1、内核态,运行于进程上下文,内核代表进程运行于内核空间;
2、内核态,运行于中断上下文,内核代表硬件运行于内核空间;
3、用户态,运行于用户空间;
一个进程的上下文可以分为三个部分:用户级上下文、寄存器上下文以及系统级上下文。
用户级上下文: 正文、数据、用户堆栈以及共享存储区;
寄存器上下文: 通用寄存器、程序寄存器(IP)、处理器状态寄存器(EFLAGS)、栈指针(ESP);
系统级上下文: 进程控制块task_struct、内存管理信息(mm_struct、vm_area_struct、pgd、pte)、内核栈。
当发生进程调度时,进行进程切换就是上下文切换(context switch).操作系统必须对上面提到的全部信息进行切换,新调度的进程才能运行。而系统调用进行的模式切换(mode switch)。模式切换与进程切换比较起来,容易很多,而且节省时间,因为模式切换最主要的任务只是切换进程寄存器上下文的切换。系统中的每一个进程都有自己的上下文。一个正在使用处理器运行的进程称为当前进程(current)。当前进程因时间片用完或者因等待某个事件而阻塞时,进程调度需要把处理器的使用权从当前进程交给另一个进程,这个过程叫做进程切换。此时,被调用进程成为当前进程。在进程切换时系统要把当前进程的上下文保存在指定的内存区域(该进程的任务状态段TSS中),然后把下一个使用处理器运行的进程的上下文设置成当前进程的上下文。当一个进程经过调度再次使用CPU运行时,系统要恢复该进程保存的上下文。所以,进程的切换也就是上下文切换。在系统内核为用户进程服务时,通常是进程通过系统调用执行内核代码,这时进程的执行状态由用户态转换为内核态。但是,此时内核的运行是为用户进程服务,也可以说内核在代替当前进程执行某种服务功能。在这种情况下,内核的运行仍是进程运行的一部分,所以说这时内核是运行在进程上下文中。内核运行在进程上下文中时可以访问和修改进程的系统数据。此外,若内核运行在进程上下文中需要等待资源和设备时,系统可以阻塞当前进程。
Linux下的线程实质上是轻量级进程(light weighted process),线程生成时会生成对应的进程控制结构,只是该结构与父线程的进程控制结构共享了同一个进程内存空间。 同时新线程的进程控制结构将从父线程(进程)处复制得到同样的进程信息,如打开文件列表和信号阻塞掩码等。创建线程比创建新进程成本低,因为新创建的线程使用的是当前进程的地址空间。相对于在进程之间切换,在线程之间进行切换所需的时间更少,因为后者不包括地址空间之间的切换。
线程切换上下文切换的原理与此类似,只是线程在同一地址空间中,不需要MMU等切换,只需要切换必要的CPU寄存器,因此,线程切换比进程切换快的多。


猜你喜欢
- 前些日子曾经写过一篇博文《加速WordPress 》,完全用手工来调整,加速我们的WordPress,html代码层次加速WordPress
- 目前比较流行的ASP木马主要通过三种技术来进行对服务器的相关操作。一、使用FileSystemObject组件FileSystemObjec
- 如果网站有多个域名,而又不希望分散权重,则可以通过开启Rewrite设置,将多个域名都301跳转到主域名之下,具体代码如下:RewriteE
- 有很多人对FTP的问题多多,大家参考、讨论一下。我的环境如下:SERVER:ISASP1,IISCLIENT:Windows2000andX
- 对于已经建设好的网站,我们该如何做呢?下面我就结合自己建设“QQ空间5.0模板”亲身经历谈一点自己粗浅的做法,也许对你有所帮助!第一、网站的
- 有Godaddy主机用户对SSL状态不是很了解,问SSL状态这是什么意思呢?当一个SSL证书向访问的浏览器证明你的网站的身份,并加密他们的信
- 设定vim的工作方式(临时):set (模式信息):set nu — 显示行号:set nonu — 取消行号:set mouse=a —
- 对于专有软件使用者来说,当需要升级到一个新版本的时候,并没有多少激动的感觉。因为这种升级通常是为一些补丁修复或微小的功能升级来掏钱买单。即使
- 第三方数据分析公司Cnzz.com新公布的报告预计,2012年中国网络游戏市场规模将达到410亿元人民币,占据全球网游市场的半壁江山。报告显
- 12日晚上上线,看到红色联盟某会员在找我(为了安全起见,该会员我们下面称呼其为“站长X”)。说其网站被r了,让我去帮忙查查并恢复。我访问了一
- 随着国际互连网的发展,一些企业建立了自己的INTRANET,并通过专线与INTERNET连通。为了保证企业内部网的安全,防止非法入侵,需要使
- Google Adsense低价广告过滤清单提供下载,本清单使用目的:主要是为了过滤部分广告主的恶意低价广告(如非主流、6位QQ等点击单价几
- 1. 使用Twitter来Tweet或者分享:或许通过Twitter来分享精彩博文是最快速有效的途径,在Twitter中分享和ReTweet
- 如果您的网站正在投放 AdSense 推介,请您注意,近期 AdSense 推介计划将会进行调整。在新的调整中,对于北美洲、拉丁美洲和日本以
- 看惯了一个又一个的门户,中国网名究竟能真正容纳几个门户呢?个人站长动不动就做门户,你能和新浪、网易比吗?你有钱吗,有经历吗,有资源吗?个人站
- 鉴于这个教程没人发过,网上搜索的人也比较多。所以就做了个。比如我要添加:栏目图片,和栏目关键字等。随便你吧。好。我们现在开始做。第一我们要进
- WWW,也有人称它为WEB,是应用目前互联网上增长最快的网络信息服务,也是最方便和最受欢迎的信息服务类型。其最大的特点为集成性,它可以集成多
- 若觉得系统慢想换源的在另一篇文章有做整理https://blog.csdn.net/luguodehua/article/details/7
- 本文实例为大家分享了VMware虚拟机克隆的具体步骤,供大家参考,具体内容如下一、环境VMware 14克隆系统CentOS6.8二、开始克
- 乐鱼影音盒在初期使用过程中,难免会出现这样那样的问题,乐鱼菜鸟们也许会为之着急、恼火,那么就请来看看以下的小技巧吧!为了让朋友们更快速的解决