首页
题库
面试
求职
学习
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
下列不属于linux内核锁的一项是()
[单选题]
下列不属于linux内核锁的一项是()
Semaphore
Spinlock
seqlock
Message
查看正确选项
添加笔记
求解答(0)
邀请回答
收藏(625)
分享
7个回答
添加回答
21
younghang
spin_lock(自旋锁)
:是Linux内核中最基础的锁机制。自旋锁不会引起调用者休眠,如果自旋锁已经呗其他的执行单元持有,调用者就会一直循环等在该自旋锁的持有者是否已经释放了锁。自旋锁适用于锁的持有者保持锁的时间比较段的情形。
读写自旋锁(
__RW_LOCK_UNLOCKED
)
:也就是没有读,没有写的请求时,读者可以获得读写锁。在读写锁没有写者的时候,读者获得器自旋锁。
seq_lock(顺序锁)
:是对读写锁的优化。也就是写锁不被读锁所阻塞。写者写的同时,读者可以读。
semaphore(信号量)
:信号量和自旋锁的区别时信号量会引起调用者的休眠。
RCU(读-拷贝)
:在访问RCU保护的资源时,读者不需要任何等待,而写者访问它时首先得拷贝一个副本,然后对父辈修改,最后在没有任何对读者操作gai'zi'yuan把指向原来的数据的指针指向新的数据,
编辑于 2020-03-30 18:02:37
回复(0)
10
北海道
A 未知 B 和 C有lock 都是锁 先排除 D 消息 跟内核没关系,就它,哈哈
发表于 2019-10-02 09:32:25
回复(1)
6
大星星和小猩猩
Linux的内核锁主要是自旋锁、顺序锁和信号量。
自旋锁最多只能被一个可执行线程持有
,如果一个执行线程试图请求一个已被争用(已经被持有)的自旋锁,那么这个线程就会一直进行忙循环——旋转——等待锁重新可用。要是锁未被争用,请求它的执行线程便能立刻得到它并且继续进行。自旋锁可以在任何时刻防止多于一个的执行线程同时进入临界区。
spin_lock自旋锁对于临界区是不做区分的,而读写锁是对临界区做读写区分,并且度进程进入临界区的几率比较大,因为写进程进入时需要等待读进程退出临界区。
而有没有一种方法,可以保护写进程的优先权,使得写进程可以更快的获得锁?
答案是有的,就是顺序锁。顺序锁的设计思想是:对某一个共享数据读取的时候不加锁,写的时候加锁。同时为了保证读取的过程中因为写进程修改了共享区的数据,导致读进程读取数据错误。在读取者和写入者之间引入了一个整形变量sequence,读取者在读取之前读取sequence, 读取之后再次读取此值,如果不相同,则说明本次读取操作过程中数据发生了更新,需要重新读取。而对于写进程在写入数据的时候就需要更新sequence的值。
Linux中的信号量是一种睡眠锁。如果有一个任务试图获得一个已被持有的信号量时,信号量会将其推入等待队列,然后让其睡眠。
这时处理器获得自由去执行其它代码。当持有信号量的进程将信号量释放后,在等待队列中的一个任务(优先级最高的任务)将被唤醒,从而便可以获得这个信号量。信号量的睡眠特性,使得信号量适用于锁会被长时间持有的情况;只能在进程上下文中使用,因为中断上下文中是不能被调度的;另外当代码持有信号量时,不可以再持有自旋锁。
发表于 2020-04-06 11:16:06
回复(0)
0
牛客399799428号
semaphore:信号量
发表于 2023-07-08 10:54:06
回复(0)
0
999~
linux中的锁主要有以下几类。
spin_lock(自旋锁)
:是Linux内核中最基础的锁机制。自旋锁不会引起调用者休眠,如果自旋锁已经呗其他的执行单元持有,调用者就会一直循环等在该自旋锁的持有者是否已经释放了锁。自旋锁适用于锁的持有者保持锁的时间比较段的情形。
读写自旋锁(__RW_LOCK_UNLOCKED):也就是没有读,没有写的请求时,读者可以获得读写锁。在读写锁没有写者的时候,读者获得器自旋锁。
seq_lock(顺序锁)
:是对读写锁的优化。也就是写锁不被读锁所阻塞。写者写的同时,读者可以读。
semaphore(信号量)
:信号量和自旋锁的区别时信号量会引起调用者的休眠。
RCU(读-拷贝)
:在访问RCU保护的资源时,读者不需要任何等待,而写者访问它时首先得拷贝一个副本,然后对父辈修改,最后在没有任何对读者操作gai'zi'yuan把指向原来的数据的指针指向新的数据。
发表于 2022-08-16 11:08:49
回复(0)
0
牛客96828706号
spin_lock(自旋锁)
:是Linux内核中最基础的锁机制。自旋锁不会引起调用者休眠,如果自旋锁已经呗其他的执行单元持有,调用者就会一直循环等在该自旋锁的持有者是否已经释放了锁。自旋锁适用于锁的持有者保持锁的时间比较段的情形。
读写自旋锁(
__RW_LOCK_UNLOCKED
)
:也就是没有读,没有写的请求时,读者可以获得读写锁。在读写锁没有写者的时候,读者获得器自旋锁。
seq_lock(顺序锁)
:是对读写锁的优化。也就是写锁不被读锁所阻塞。写者写的同时,读者可以读。
semaphore(信号量)
:信号量和自旋锁的区别时信号量会引起调用者的休眠。
RCU(读-拷贝)
:在访问RCU保护的资源时,读者不需要任何等待,而写者访问它时首先得拷贝一个副本,然后对父辈修改,最后在没有任何对读者操作gai'zi'yuan把指向原来的数据的指针指向新的数据,
发表于 2020-06-09 15:10:01
回复(0)
0
Yeah4646
d
发表于 2019-10-04 20:37:57
回复(0)
这道题你会答吗?花几分钟告诉大家答案吧!
提交观点
问题信息
运维工程师
小米集团
2019
Linux
来自:
小米2019秋招运维工...
上传者:
小小
难度:
7条回答
625收藏
5403浏览
热门推荐
相关试题
(verbal)最近的研究显示,许...
言语理解与表达
2019
普华永道
人力资源
审计
税务服务
风险管理
管理咨询
行政管理
评论
(3)
来自
职能类模拟题14
关于Linux系统的负载(Load...
阿里巴巴
Linux
评论
(45)
请实现函数,输入一个参数baseS...
小米集团
字符串
评论
(4)
以下出现在 IPv4 头部却未出现...
小米集团
网络基础
运维工程师
2019
评论
(9)
来自
小米2019秋招运维工程...
下列关于mysql的表述错误的一项是()
小米集团
数据库
运维工程师
2019
评论
(14)
来自
小米2019秋招运维工程...
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题