1. 对于linux内核信号量,说法正确的是(多选):(参考:Linux内核设计与实现,第二版,第9章,9.4小节)

A. 如果获取一个被占用的信号量,任务会睡眠,等待信号量释放之后,该任务才能重新获得调度

B. 信号量可以允许任意数量的锁持有者

C. 信号量保护的代码可以被抢占

D. 信号量的实现也是与体系架构相关的

答案:A,B,C,D

试题解析:信号量是一个睡眠锁,在信号量被占用时,企图获取该信号量的任务会睡眠,等待信号量被释放,或者被唤醒,之后再重新获得调度;

信号量在初始化时,其count可以初始化为大于等于0的任何数值,因此可以允许任意数量的锁持有者;

信号量获取后,在释放之前,并不管抢占,正因为这个原因,在可抢占的内核中,高优先级任务可以抢占获取信号量的低优先级任务;

在内核中,信号量数据结构如下:

struct semaphore {

spinlock_t              lock;

unsigned int           count;

struct list_head       wait_list;

};

自旋锁保护P/V(对其count加减)操作,而自旋锁是基于原子操作才能实现,因此信号量是与体系架构相关的。

2. 对于内核信号量,对其使用方法,错误的是(单选):(参考:Linux内核设计与实现,第二版,第9章,9.4小节)

A. 信号量在使用之前一定要初始化,否则在使用时可能会导致内核崩溃

B. 对信号量的操作,其实就是P/V操作,在linux内核中,对信号量的down()相当于V操作,up()相当于P操作

C. 在使用down_interruptible()函数未获取信号量时,进入睡眠的任务可以被信号唤醒

D. 如果想在获取信号量失败后超时退出,可以使用down_timeout()函数接口

答案:B

试题解析:内核信号量以及内核mutex,在使用之前都需要初始化,内核对信号量的初始化,方法有:

1.  sema_init(struct semaphore *sem, int val),将count的值初始化为val;

2. init_MUTEX(sem), 将count的值初始化为1,通常用于互斥操作;

3. init_MUTEX_LOCKED(sem), 将count的值初始化为0,通常用于异步事件的同步;

在linux内核中,对信号量的down()相当于P操作,up()相当于V操作

down_interruptible()以及down_timeout()接口函数,可参考内核代码。

因此选B

3. 对于信号量和自旋锁使用区别,错误的是(单选):(参考:Linux内核设计与实现,第二版,第9章,9.4小节)

A. 信号量适合于多进程对资源互斥,竞争失败就会发生上下文切换,适合进程长时间占用资源;

B. 如果占用资源时间短于线程上下文切换开销时间,使用自旋锁

C. 在使用信号量和自旋锁时,持有信号量或者自旋锁的代码可以被高优先级任务抢占

D. 如果需要在中断上下文中保护临界区,则只能使用spinlock,不能使用信号量

答案:C

试题解析:信号量特点:

1. linux中的信号量是一种睡眠锁,当一个任务试图获得一个已经被占用的信号量,信号量会将其推进一个等待队列,然后让其睡眠。

2. 争用信号量的进程在等待锁可用时会睡眠,使用锁长时间持有的情况;

3. 允许任意数量持有该锁。

自旋锁特点:

1. 低开销加锁;

2. 短期锁定;

3. 可用于中断上下文中加锁;

4. 只允许一个任务获取。

自旋锁用于多核之间的同步,因此需要禁止抢占,否则很容易造成死锁(如在本地CPU上任务被抢占,在高优先级任务中又获取了同一个自旋锁,死锁)由此得出:C错误,获取自旋锁的代码不能被抢占。

4. 下面不是解决linux内核态并发机制的是(单选):(参考:Linux内核设计与实现,第二版,第9章)

A. 自旋锁;

B. 互斥锁mutex

C. 原子操作

D. 管道

答案:D。

试题解析:管道是一种用户态进程间通信机制。管道是进程之间的一个单向数据流:一个进程写入管道的所有数据都由内核定向到另一个进程,另一个进程由此就可以从管道中读取数据。

5. 下面不是内核态和用户态间通信机制的是(单选):(参考:http://www.ibm.com/developerworks/cn/linux/l-netlink/index.html)

A. Netlink;

B. 消息队列

C. 系统调用

D. ioctl

答案:B

试题解析:消息队列是一种用户态进程间通信机制,不能实现内核态和用户态间通信;

Netlink,系统调用,ioctl是使用较多的内核态和用户态间通信机制,其中系统调用只能由用户态发起。

转载于:https://www.cnblogs.com/hehehaha/archive/2013/05/20/6332760.html

华为内部面试题库---(10)相关推荐

  1. 华为内部面试题库---(19)

    1. 在Linux操作系统中,以Ext文件系统为例,下列那个数据结构在磁盘上没有对应的项:(<深入理解Linux内核>P461-480) A.inode: B.dentry: C.supe ...

  2. 华为内部面试题库---(2)

    1.在分页存储管理系统中,从页号到物理块号的地址映射是通过(  )实现的. A.段表 B.页表 C.PCB D.JCB 答案:B 用户程序的地址空间被划分成若干固定大小的区域,称为"页&qu ...

  3. 华为内部面试题库---(9)

    1.spinlock可通过配置选项CONFIG_DEBUG_SPINLOCK来打开内核编译选项,进行自旋锁调试,作用有(多选):(参考:Linux内核设计与实现,第二版,第9章,9.2节) A. 内核 ...

  4. 华为内部面试题库---(6)

    1.在SMP体系结构中,中断亲和性是指将一个或者多个中断绑定到特定CPU core上运行,下列说法错误的是:A.每个硬件设备都会在/proc/irq下有个中断号命令的目录来标志中断亲和性B.IRQ#目 ...

  5. 华为工程师面试题库—通信类

    华为工程师面试题库-通信类 [ 2007-5-21 16:41:00 | By: bjxiong ]   应聘华为各类工程师通信基础题库以及答案-知己知彼.百战不殆 电信基础知识题库 (以下题目可以按 ...

  6. 国内一线互联网公司内部面试题库

    原文链接:https://github.com/JackyAndroid/AndroidInterview-Q-A/blob/master/README-CN.md 欢迎在GitHub或者掘金上关注我 ...

  7. 华为通信基础面试题库以及答案

    华为通信基础知识题库 (以下题目可以按填空.判断或简答方式出题,也可以经过变化成为选择题) 1.语音信号数字化过程中,采用的是的量化方法是非均匀量化. 2.PCM30/32路系统中,每个码的时间间隔是 ...

  8. 华为java机试题库社招,月薪30K

    前言 作为一个已经毕业的计算机专业学长,其实几年大学走来还是挺感慨万千的.(说明一下:一本,非958.211) 老实说,上大学之前填志愿选专业的时候没有任何打算,就觉得学海熬到头了,向往已久的大学舒坦 ...

  9. Java高级工程师必备知识!华为java机试题库社招

    前言 对Java开发的知识点进行深入的学习,并打算做成系列,先从基础常用的重点**(面试点)**知识开始,后续会陆续扩展,加油! 涉及到底层的可能代码块会多点,但要学习底层不看代码看啥?代码说明一切! ...

最新文章

  1. Too many open files错误与解决方法
  2. HBase–常用API操作篇
  3. 【JPA操作】CriteriaQuery多条件查询
  4. java基础输入输出语句
  5. c#发送讯息_企业讯息
  6. eclipse中git解决冲突
  7. java中强引用、弱引用、软引用、虚引用学习
  8. java bufferedrandomaccessfile_java 读写操作大文件 BufferedReader和RandomAccessFile
  9. PyTorch 深度学习:37分钟快速入门——FCN 做语义分割
  10. 程序员怒了!阿里 Antd 圣诞彩蛋害我被离职了!
  11. selenium2 webdriver要点理解
  12. linux内核丢包分析工具,Linux模拟网络丢包与延迟的方法
  13. Word 2010/2013 菜单栏添加 MathType 菜单
  14. C#反射(Reflection)对类的属性get或set值
  15. 使用 GalleryView 1.1制作相册说明
  16. 如何使用EDI系统解决对接多工厂的问题?
  17. 《从0到1:CTFer成长之路》书籍配套题目-[第二章 web进阶]死亡ping命令
  18. 初学者自学计算机软件,中望CAD初学者自学宝典
  19. 微信小程序button修改边框样式after
  20. 【耀杨闯荡华儿街】当曹阿门问起hascode()和equals()方法“上篇”

热门文章

  1. Setting Up Hadoop NameNode High Availability
  2. tomcat 软连接
  3. .net erp(办公oa)开发平台架构概要说明之表单设计器
  4. 50个Android开发人员必备UI效果源码[转载]
  5. zlog使用手册,小靠谱啊
  6. V8 Design Elements(翻译)
  7. linux crond命令
  8. 优米网:创业传记——傅盛
  9. html表ge模板_16款用户体验优秀的HTML CSS价格表格模板 附演示及下载
  10. Franzis CutOut 9 Professional中文版