linux为什么要禁止内核抢占,为什么linux在内核代码持有自旋锁后禁用内核抢占?...

我是

Linux的新手,正在阅读Rubini& amp;的Linux设备驱动程序.科比特.我对一个与自旋锁相关的陈述感到困惑;这本书说明

If a nonpreemptive uniprocessor system ever went into a

spin on a lock, it would spin forever; no other thread would ever be able to obtain

the CPU to release the lock. For this reason, spinlock operations on uniprocessor systems

without preemption enabled are optimized to do nothing, with the exception of

the ones that change the IRQ masking status.

书还说明了这一点

The kernel preemption case is handled by the spinlock code itself. Any time kernel

code holds a spinlock, preemption is disabled on the relevant processor. Even uniprocessor

systems must disable preemption in this way to avoid race conditions.

问题:在单处理器系统上,如果内核代码(代表用户进程执行)持有自旋锁,则禁用内核抢占,那么另一个进程怎么能有机会运行并因此尝试获取自旋锁?为什么Linux内核会在内核代码持有自旋锁时禁用内核抢占?

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

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

相关文章

英飞凌TC3xx之一起认识DSADC系列(七)应用实战项目二(实现旋变软解码)

英飞凌TC3xx之一起认识DSADC系列(七) 1 项目要求2 项目实现2.1 内部时钟配置2.2 输入信号配置2.3 调制器配置2.4 滤波器链路配置2.5 整流器配置3 总结本文写一篇关于DSADC的resover的载波信号生成的应用,刚刚接触DSADC的开发者很容易被手册中简短的文字描述弄的迷惑,它到底…

linux 两块硬盘 分区,linux 两块硬盘分区,这个是什么/dev/mapper/VolGroup00-LogVol00

df -lh查看Filesystem Size Used Avail Use% Mounted on/dev/mapper/VolGroup00-LogVol00 1.8T 823G 874G 49% //dev/sda1 99M 13M 82M 14% /boottmpfs 7.8G 4.1G 3.8G 53% /dev/shm安装的时候/dev/sdb1 是挂在/home下面的,现在怎么找不到了现在我怎么查看/dev/sdb1…

linux qemu运行windows,用qemu搭建CentOS 6 for colinux虚拟系统——《Windows下搭建CentOS 6开发环境之一》...

用qemu搭建CentOS 6 for colinux虚拟系统一、安装的软硬件环境操作系统: Windows XP SP3硬件环境: CPU AMD 速龙AthlonII X3 445 (3.1GHz/AM3/3*512KB二缓/45纳米)内存 Corsair 海盗船 CMX4GX3M2A1600C9 DDR3 1600 4G(2G*2)硬盘 Seagate 希捷 ST3100052…

linux如何运行verilog,linux系统下ncverilog的详细命令linux系统下ncverilog的详细命令.doc...

linux系统下ncverilog的详细命令linux系统下ncverilog的详细命令ncverilog: 08.10-p002: (c) Copyright 1995-2008 Cadence Design Systems, Inc.Usage:ncverilog [options] filesFile languages: Verilog, SystemVerilog, VHDL, e, System-C, C, CIn addition to the dash opt…

linux服务器p2v,使用 Linux dd 命令实现 P2V 或 V2V

原标题:使用 Linux dd 命令实现 P2V 或 V2V迁移逻辑1、源虚拟机通过liveCD启动2、建立空白目标虚拟机,CPU、内存、网卡、磁盘等参数配置一致,并通过liveCD启动3、磁盘通过dd命令实现复制LiveCD和模板选择1、注意虚拟机模板和LiveCD版本选择2、…

linux tunl0 ip,Centos7下lvs负载均衡lvs-tun模式配置

一、架构director:172.28.18.69 vip:172.28.18.70real server1:172.28.18.71real server2:172.28.18.78二、两台real server上安装nginx配置nginx yum源[rootlocalhost ~]# vim /etc/yum.repos.d/nginx.repo[nginx]namenginx repobaseurlhttp://nginx.org/packages/centos/7/$b…

linux下查看进程的线程数,linux查看进程的线程数

top -H -p $PID #查看对应进程的那个线程占用CPU过高1、top -H手册中说:-H : Threads toggle加上这个选项启动top,top一行显示一个线程。否则,它一行显示一个进程。2、ps xH手册中说:H Show threads as if they were processes这…

linux操作系统字段含义,Linux系统 /etc/fstab各个字段含义解释

Linux系统 /etc/fstab各个字段含义解释# fstab文件的作用文件/etc/fstab存放的是系统中的文件系统信息。当正确的设置了该文件,则可以通过"mount /directoryname"命令来加载一个文件系统,每种文件系统都对应一个独立的行,每行中的字…

linux下c语言编程gedit,Ubuntu Linux下实现Gedit支持NesC语法高亮

在TinyOS下主要采用nesC编程,一种C语言的近亲。平时默认打开文本的工具是gedit,将以下代码保存为nesc.langtext/x-nc*.nc;*C.nc;*M.nc;*P.nc->///**/falsenewthistrueusingtaskpostnamespaceeventcommandmoduleimplementationconfigurationtypenamete…

kali linux 双显卡,Kali上双显卡驱动的安装

为kali用户,firefox上的flash的自带的驱动支持很不好,经常会出现卡顿的情况,让我很是难过,于是我打算装下驱动。一.安装内核的头文件apt install -y linux-headers-$(uname -r)二.安装nvidia的驱动包apt install nvidia-kernel-dk…

C语言优先队列作用,C语言实现优先队列(priority queue)

堆排序是一个比较优秀的算法,堆这种数据结构在现实生活中有很多的应用,比如堆可以作为一个优先队列来使用,作为一个高效的优先队列,它与堆的结构一样,都有最大优先队列,最小优先队列.优先队列priority queue 是一种用来维护一组元素构成的集合S的数据结构,每一个元素…

c语言sizeof测量字符组长度,C语言中,当计算字符数组长度时,用sizeof 和strlen 的原理及两者的区别...

1:定义时用字符初始化(1)char chs[7] {a, c, 0, z, 3,d}; // 长度为6上式等价于: (2)char chs[7] {a, c, 0, z, 3,d, /0}; // 长度为6也等价于: (3)char chs[] {a, c, 0, z, 3,d, /0 }; // 长度为6但不等价于:(4)char chs[] {…

c语言百文百鸡问题答案,python_百文买百鸡问题

百文买百鸡问题-- 不定方程-- 公鸡5文钱一只,母鸡3文钱一只,小鸡3只一文钱,用100文钱买100只鸡,如何买?-- 列出方程式x y z 1005x 3y z/3 100如何用计算机来算?-- 计算机并不会消元法,但是…

C语言 输出重复序列的序号,如何在FASTA序列中找到反向重复模式?

我是Python和生物信息学的新手,但我正在通过rosalind.info网站学习两种方法.您可以使用后缀树执行此操作.后缀树(见http://en.wikipedia.org/wiki/Suffix_tree)是神奇的数据结构,它使生物信息学中的所有事情成为可能.您可以快速找到多个长序列中的公共子串.后缀树只需要线性时间…

大写汉字转阿拉伯数字c语言,阿拉伯数字转中文数字方法详解(C++实现)

阿拉伯数字与中文数字没有一一对应关系,不存在直接转换的公式化算法,因此需要根据两种数字体系的特点精心构造转换算法。中文计数有一个特点,就是“零”的使用变化多端。阿拉伯数字中数字的权位依靠数字在整个数字长度中的偏移位置确定&#…

android 自定义progressbar demo,Android 自定义进度条ColorfulProgressbar,原理简单、效果还行...

效果图:demo效果演示演示Demo特性与原生Progress相比,感觉更漂亮一点,可以显示进度值,背景凹凸感明显,进度条效果更加立体。原理说明额,挺简单的。不过感觉我的做法有点复杂了,我先自定义了一个…

android os自动安裝软件,[图]Bliss OS 12进入开发阶段:可在桌面设备上安装Android 10系统...

此外还对电池进行了优化,添加了额外的安全性选项和相关功能,支持大部分主流游戏手柄,兼容ARM / ARM64应用程序。目前Bliss OS 12已经进入早期开发阶段,有望让您在PC上运行最新的Android 10移动操作系统。Bliss OS开发人员说&#…

android安装eclipse插件,Android SDK安装及Eclipse插件安装.pdf

Android SDK 安装不 Eclipse 插件安装工具的下载开发 Android 需要用到的工具有:集成开发环境 Eclipse ,Android 的 SDK 以及Java SDKAndroid SDK 下载地址 :/sdk/index.html点击上图中的红色地址就可以下载Eclipse 下载地址:/dow…

android 添加随意拖动的桌面悬浮窗口,android 添加随意拖动的桌面悬浮窗口

用过新版本android 360手机助手都人都对 360中只在桌面显示一个小小悬浮窗口羡慕不已吧?其实实现这种功能,主要有两步:1.判断当前显示的是为桌面。这个内容我在前面的帖子里面已经有过介绍,如果还没看过的赶快稳步看一下哦。2.使用…

android+版本升级的时候会清楚数据马,android主进程销毁了,线程会不会也销毁?...

Android Activity 销毁后子线程会不会被GC回收曾想当然地认为页面被finish之后线程会被android 虚拟机的垃圾回收机制回收掉。于是用页面跳转做测试测试代码结果有点意外,页面被销毁后定时器依然在执行。退出应用定时器还在执行。UI线程被结束掉,UI线程里…