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

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

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

--->上半部在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] 为分界点、或选取最大和最小值的平均值为分界点等。

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

  1. linux进程管理机制,linux进程管理,linux进程管理机制

    linux进程管理,linux进程管理机制 一.基本介绍 1.在 LINUX 中,每个执行的程序(代码)都称为一个进程.每一个进程都分配一个 ID 号 2.每一个进程,都会对应一个父进程,而这个父进程 ...

  2. Linux进程ID号--Linux进程的管理与调度(三)

    进程ID概述 进程ID类型 要想了解内核如何来组织和管理进程ID,先要知道进程ID的类型: 内核中进程ID的类型用pid_type来描述,它被定义在include/linux/pid.h中 enum ...

  3. Linux进程实践(1) --Linux进程编程概述

    进程 VS. 程序 什么是程序? 程序是完成特定任务的一系列指令集合. 什么是进程? [1]从用户的角度来看:进程是程序的一次执行过程 [2]从操作系统的核心来看:进程是操作系统分配的内存.CPU时间 ...

  4. linux 进程管理 ppt,linux操作系统-进程管理和打印管理.ppt

    <linux操作系统-进程管理和打印管理.ppt>由会员分享,可在线阅读,更多相关<linux操作系统-进程管理和打印管理.ppt(25页珍藏版)>请在装配图网上搜索. 1.进 ...

  5. linux 进程管理 ppt,Linux内核结构与进程管理.ppt

    Linux内核结构与进程管理.ppt Linux 内核结构与进程管理,Linux系统结构Linux kernel 开放源代码的linux操作系统内核,目前版本为2.6,Linux内核组成1. 进程调度 ...

  6. linux进程管理fork,Linux -- 进程管理之 fork() 函数

    一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间.然后把原来的进程的所有值都复制到新的新进程中,只有少数值与原来的进程的值不同.相当于克隆了一个自己. Test1 f ...

  7. linux 进程的执行时间,Linux 获取进程执行时间

    Linux 获取进程执行时间 1 前言 测试一个程序的执行时间, 时间包括用户 CPU 时间系统 CPU 时间时钟时间之前获取之前时间都是在程序的 main 函数用 time 函数实现, 这个只能粗略 ...

  8. linux 进程函数替换,Linux使用exec函数实现进程替换的代码分享

    这篇文章主要介绍了Linux 进程替换(exec函数)实现代码的相关资料,需要的朋友可以参考下 Linux 进程替换(exec函数)实现代码# include #include #include #i ...

  9. linux进程运行队列,Linux进程调度中队列的使用

    Linux内核中大量使用了队列,这里仅列举它在进程调度中的几处应用.Linux内核中的队列是以双链表的形式连接起来的,include/linux/list.h中定义了队列并提供了一些接口,详细的介绍可 ...

最新文章

  1. 电脑记事本_带日历的电脑桌面记事本?
  2. python程序入门设计_程序设计入门—Python
  3. 搭建及训练py-R-FCN遇到的问题
  4. Unity 安卓连调profile失败
  5. 如何区分电梯卡为id卡ic卡_电梯刷卡系统基本属性
  6. 电信业务分类目录_第五大运营商!中信网络获基础电信业务牌照
  7. 【Flink】FLink 反序列化空指针 java.lang.String.<init> SimpleStringSchema
  8. java 我爱你_Java初级教程-课程笔记
  9. SpringData环境搭建代码编写
  10. 2015061906 - firebug安装和下载(2)
  11. 软路由保姆级入门教程 一篇看懂软路由
  12. [渝粤教育] 山东职业学院 话说铁道 参考 资料
  13. TNN MatConverter CvtColor NV21TOBGR
  14. 【面经攒人品】蚂蚁金服—反洗钱岗
  15. 用理想低通滤波器在频率域实现低通滤波、高通滤波。
  16. 常用电平标准——LVTTL、LVCMOS、LVDS等
  17. CSCLa测试指标 (照明研究中心) 计算软件
  18. 厦门大学数据库实验室----- 数据库系统原理
  19. 分布有限传输速度高的计算机网络,第5章 计算机网络基础ppt课件.ppt
  20. iconv 转换字符编码,兼容VC转换

热门文章

  1. 苹果隐藏应用_使用iMazing导出苹果设备中的录音文件
  2. 设计模式理解:装饰模式Decorator
  3. 算法练习day13——190401(前缀树、贪心策略拼接字符串使字典序最小)
  4. c语言定义链式队列用菜单,数据结构之---C语言实现链式队列
  5. 判断字符串格式_Blind_pwn之格式化字符串
  6. php get 返回源码,php源码 fsockopen获取网页内容实例详解
  7. 树结构遍历节点名字提取,这里提取的是el-tree数据结构,封装成函数
  8. 学习总结:CSS(一)定义方式、选择器、选择器权重
  9. python-模块入门二(模块循环导入,区分python文件的两种用途,模块搜索路径,软件开发的目录规范)...
  10. C# 按部门拆分excel文件