面试 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] 为分界点、或选取最大和最小值的平均值为分界点等。
面试 linux 进程通讯,【转】LINUX驱动的经典面试问题...相关推荐
- linux进程管理机制,linux进程管理,linux进程管理机制
linux进程管理,linux进程管理机制 一.基本介绍 1.在 LINUX 中,每个执行的程序(代码)都称为一个进程.每一个进程都分配一个 ID 号 2.每一个进程,都会对应一个父进程,而这个父进程 ...
- Linux进程ID号--Linux进程的管理与调度(三)
进程ID概述 进程ID类型 要想了解内核如何来组织和管理进程ID,先要知道进程ID的类型: 内核中进程ID的类型用pid_type来描述,它被定义在include/linux/pid.h中 enum ...
- Linux进程实践(1) --Linux进程编程概述
进程 VS. 程序 什么是程序? 程序是完成特定任务的一系列指令集合. 什么是进程? [1]从用户的角度来看:进程是程序的一次执行过程 [2]从操作系统的核心来看:进程是操作系统分配的内存.CPU时间 ...
- linux 进程管理 ppt,linux操作系统-进程管理和打印管理.ppt
<linux操作系统-进程管理和打印管理.ppt>由会员分享,可在线阅读,更多相关<linux操作系统-进程管理和打印管理.ppt(25页珍藏版)>请在装配图网上搜索. 1.进 ...
- linux 进程管理 ppt,Linux内核结构与进程管理.ppt
Linux内核结构与进程管理.ppt Linux 内核结构与进程管理,Linux系统结构Linux kernel 开放源代码的linux操作系统内核,目前版本为2.6,Linux内核组成1. 进程调度 ...
- linux进程管理fork,Linux -- 进程管理之 fork() 函数
一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间.然后把原来的进程的所有值都复制到新的新进程中,只有少数值与原来的进程的值不同.相当于克隆了一个自己. Test1 f ...
- linux 进程的执行时间,Linux 获取进程执行时间
Linux 获取进程执行时间 1 前言 测试一个程序的执行时间, 时间包括用户 CPU 时间系统 CPU 时间时钟时间之前获取之前时间都是在程序的 main 函数用 time 函数实现, 这个只能粗略 ...
- linux 进程函数替换,Linux使用exec函数实现进程替换的代码分享
这篇文章主要介绍了Linux 进程替换(exec函数)实现代码的相关资料,需要的朋友可以参考下 Linux 进程替换(exec函数)实现代码# include #include #include #i ...
- linux进程运行队列,Linux进程调度中队列的使用
Linux内核中大量使用了队列,这里仅列举它在进程调度中的几处应用.Linux内核中的队列是以双链表的形式连接起来的,include/linux/list.h中定义了队列并提供了一些接口,详细的介绍可 ...
最新文章
- 电脑记事本_带日历的电脑桌面记事本?
- python程序入门设计_程序设计入门—Python
- 搭建及训练py-R-FCN遇到的问题
- Unity 安卓连调profile失败
- 如何区分电梯卡为id卡ic卡_电梯刷卡系统基本属性
- 电信业务分类目录_第五大运营商!中信网络获基础电信业务牌照
- 【Flink】FLink 反序列化空指针 java.lang.String.<init> SimpleStringSchema
- java 我爱你_Java初级教程-课程笔记
- SpringData环境搭建代码编写
- 2015061906 - firebug安装和下载(2)
- 软路由保姆级入门教程 一篇看懂软路由
- [渝粤教育] 山东职业学院 话说铁道 参考 资料
- TNN MatConverter CvtColor NV21TOBGR
- 【面经攒人品】蚂蚁金服—反洗钱岗
- 用理想低通滤波器在频率域实现低通滤波、高通滤波。
- 常用电平标准——LVTTL、LVCMOS、LVDS等
- CSCLa测试指标 (照明研究中心) 计算软件
- 厦门大学数据库实验室----- 数据库系统原理
- 分布有限传输速度高的计算机网络,第5章 计算机网络基础ppt课件.ppt
- iconv 转换字符编码,兼容VC转换
热门文章
- 苹果隐藏应用_使用iMazing导出苹果设备中的录音文件
- 设计模式理解:装饰模式Decorator
- 算法练习day13——190401(前缀树、贪心策略拼接字符串使字典序最小)
- c语言定义链式队列用菜单,数据结构之---C语言实现链式队列
- 判断字符串格式_Blind_pwn之格式化字符串
- php get 返回源码,php源码 fsockopen获取网页内容实例详解
- 树结构遍历节点名字提取,这里提取的是el-tree数据结构,封装成函数
- 学习总结:CSS(一)定义方式、选择器、选择器权重
- python-模块入门二(模块循环导入,区分python文件的两种用途,模块搜索路径,软件开发的目录规范)...
- C# 按部门拆分excel文件