面试 linux 进程通讯,【转】LINUX驱动的经典面试问题...

问:驱动程序分成上半部和下半 部,具体讲讲?

答:(当时我把中断处理程序的上下半部给答了)下半部是处理一些推后的工作,举个例子吧,比如网卡驱动,当有数据包到达网卡的时候,就会产生中断,然后一

个特定的程序就会去处理他。实现这个功能的程序就是上半部……云云,省去若干字。(答完之后面试官没啥表情,不知道是对是错)

--->上半部在ISR中执行,是最关键的部 分,执行时间很短,关中断执行,不及时处理就会丢失数据,影响实时性;

下半部的作用是上半部的延续,一般用于处理数据,执行时间可能较长,延迟并开中断处理,以免屏蔽其它中断,影响中断响应。

《windosw NT 技术内幕》一书中讲的很明白,此书中把“下半部”叫做“延迟过程调用(DPC)”。

问:说一下Linux环境编程中进程间通信都有哪几种。

答:管道、Unix Socket、共享内存……云云

问:这些通信方式的作用/或者是区别

答:不知道(这个确实忘了,没办法)

Linux下进程间通信的几种主要手段简介:

问:说一下快速排序

答:(这个太简单了)找一个key作为基准,然后划分左右子序列,左边的比key小,右边的比key大,然后继续之,形成了一个递归的关系……云云

问:说一下指针的指针的作用

答:举个例子吧,我要操作一个链表,该链表只有一个头指针,但是我想在表头插入节点,那么就需要修改头指针,如果我是写一个函数来实现的话,那么我需要把 头指针的地址传过去……云云

问:你对线程了解么?

答:不了解,因为Linux下好像用的不多。

1.管道(Pipe)及有名管道 (named pipe):管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通 信;

2.信号(Signal):信号是比较复杂的通信方式,用于通知接受进程有某种事件发生,除了用于进程间通信外,进程还可以发送信号给进程本身;Linux除了 支持Unix早期信号语义函数sigal外,还支持语义符合Posix.1标准的信号函数sigaction(实际上,该函数是基于BSD的,BSD为了 实现可靠信号机制,又能够统一对外接口,用sigaction函数重新实现了signal函数);

报文 (Message)队列(消息队列):消息队列是消息的链接表,包括Posix消息队列systemV消息队列。有足够权限的进程可以向队列中添加消息, 被赋予读权限的进程则可以读走队列中的消息。消息队列克服了信号承载信息量少,管道只能承载无格式字节流以 及缓冲区大小受限等缺点。

共享内存:使得多个进程可以访问同一 块内存空间,是最快的可用IPC形式。是针对其他通信机制运行效率较低而设计的。往往与其它通信机制,如信号量结合使用,来达到进程间的同 步及互斥。

信号量(semaphore):主要 作为进程间以及同一进程不同线程之间的同步手段。

套接口(Socket):更为一般的进程间通信机 制,可用于不同机器之间的进程间通信。起初是由Unix系统的BSD分支开发出来的,但现在一般可以移植到其它类Unix系统上:Linux和 System V的变种都支持套接字。

下面将对上述通信机制做具体阐述。

附1:参考文献[2]中对Linux环境下的进程进行了概括说明:

一般来说,Linux下的进程包含以下几个关键要素:

1.有一段可执行程序;

2.有专用的系统堆栈空间;

3.内核中有它的控制块(进程控制块),描述进程所占用的资源,这样,进程 才能接受内核的调度;

4.具有独立的存储空间

5.进程和线程有时候并不完全区分,而往往根据上下文理解其含 义。

快速排序法是分治法的经典应 用实例之一。快速排序法是对冒泡排序法的一种改进,也是基于交换排序的一种算法。因此,被称为"分 区交换排序"。

在待排序序列中按某种方法选取一个元素K,以它为分界点,用交换的方法将序列分为两个部分:比该值小的放在左边,否则在右边。形成"{左子序列}K{右子 序列}"。再分别对左、右两部分实施上述分解过程,直到各子序列长度为1,即有序为止。

分界点元素值K的选取方法不同,将构成不同的排序法,也将影响排序的效率:例如,可取左边第1个元素为分界点、取中点A[(left+right)/2] 为分界点、或选取最大和最小值的平均值为分界点等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值