86
——————/
网络字节序:
网络字节顺序是TCP/IP中规定好的一种数据表示格式,它与具体的CPU类型、操作系统等无关,从而可以保证数据在不同主机之间传输时能够被正确解释。
网络字节顺序采用bigendian排序方式
网络上的数据流是字节流,对于一个多字节数值,在进行网络传输时,先传递哪个字节?
也就是说,当接收端收到第一个字节的时候,它是将这个字节作为高位还是低位来处理呢?
收到的第一个字节被当作高位看待,这就要求发送端发送的第一个字节应当是高位。
而在发送端发送数据时,发送的第一个字节是该数字在内存中起始地址对应的字节。
可见多字节数值在发送前,在内存中数值应该以大端法存放
——————/
什么是段错误?
访问了未申请的内存
访问系统保护的内存:
int*p=0;
访问只读的内存
栈溢出:
main(){main();}
——————/
控制型、等时型(不可靠)、中断型、批量型(可靠),这四种传输类型中,哪些属于可靠传递,哪些不是可靠传递?
——————/
copy_to_user:
传入指针,返回变量或buffer
put_user:
要复制的内存为简单类型,如char、int、long等
intput_read(structfile*filp,char__user*buff,size_tcount,loff_t*offp)
{
chartemp=100;
put_user(temp,buff);
return0;
}
——————/
copy_to_user和__copy_to_user的区别
__copy_to_user没有判断用户传入的指针是否合法
——————/
如何处理jiffies的溢出问题?
处理jiffies回绕问题可使用宏time_before或time_after判断
unsignedlongtimeout=jiffies=HZ/2;
if(time_before(jiffies,timeout))//返回true或false
没有超时
else
超时
——————/
ttl电平5v为逻辑1,ov为0
rs232电平逻辑1=-3V~-15V,逻辑0=+3~+15V
MAX232实现电平转换
——————/
linux驱动开发工作,涉及驱动开发模式、内核相关知识和硬件相关知识
——————/
关于i节点和超级块,下列论述不正确的是(B)
Ai节点是一个长度固定的表
B超级块在文件系统的个数是唯一的
Ci节点包含了描述一个文件所必需的全部信息(存储区地址,大小等,不包含文件名,文件名存于目录项)
D超级块记录了i节点表和空闲块表信息在磁盘中存放的位置
选b
——————/
C与C++各自是如何定义常量的?
有什么不同?
C中是使用宏#define定义(不能调试),C++使用更好的const来定义。
——————/
C++中引用和指针的区别?
别名,操作引用即操作该对象,须在创建同时初始化,且初始化后不能再重新声明为另一变量的别名(但devc++可以);引用具有指针的效率,又具有变量使用的方便性和直观性,引用一般都是通过指针来实现的,编译器帮我们完成了转换。
——————/
在C++程序中调用被C编译器编译后的函数,为何要加extern"C"?
C++支持重载,被C++编译后的函数名与C不同,如函数原型voidfoo(intx,inty)被C编译器编译后在库中名字为_foo,而C++编译器则会产生像_foo_int_int之类的名字。
C++提供了C连接交换指定符号extern"C"来解决名字匹配问题。
——————/
多态性通过派生类和虚函数实现,基类和派生类中使用相同函数名
——————/
拷贝构造函数:
单个参数,为同类对象的常引用
浅拷贝:
简单赋值而没有拷贝分配给该成员的资源,如给其指针变量分配了动态内存
深拷贝反之
——————/
软实时、硬实时
哈佛结构主要特点是程序存储器与数据存储器独立,即存于不同空间,独立编址独立访问
提供Linux系统实时性:
①缩短中断响应时间②缩短进程上下文切换时间③缩短进程调度时间
ARM7种工作模式:
用户模式、快中断模式、中断模式、管理模式、未定义指令终止模式、系统模式、数据访问终止模式
两种工作状态:
ARMthumb
Linux内核主要由5个子系统组成:
进程调度、内存管理、vfs、网络接口、进程间通信
tcp/ip:
应用层、传输层、网络层、接口层
——————/
中断延迟,是指中断发生到中断得到处理所消耗的时间。
中断延迟的主要原因是中断关闭,故降低中断延迟主要方法是减少中断关闭时间,把主要工作放到下半部分完成。
Semaphore和Mutex的区别:
①初始状态不一样,Mutex的初始值是1(表锁可用),而Semaphore初始值是0
②用法不一样,Mutex使用者必须为同一个线程,避免临界区被并行执行,而Semaphore可由不同线程进行P和V操作,即由一个线程P一资源,另一个线程V一资源,故可用于生产者-消费者模型等资源同步的场合
信号量本身会记录阻塞在它上面的进程。
在释放信号量的时候,会唤醒一个/一些进程。
而后,调度器根据调度策略选择一个进程执行
——————/
为了避免并发,防止竞态,内核提供了一组同步方法来提供对共享数据的保护:
中断屏蔽、原子操作、自旋锁(读写锁、顺序锁)、信号量、互斥体
应用:
信号量:
不能用于分布式操作系统
自旋锁:
死锁、过多占用cpu资源
管程
会和
分布式系统
——————/
死锁产生的必要条件:
互斥、不可剥夺、请求与保持、循环等待
——————/
产生死锁的原因:
资源竞争、进程推进顺序非法
——————/
死锁的处理:
预防策略、避免策略、鸵鸟策略
——————/
纯虚函数如何定义?
使用时应注意什么?
virtualvoidf()=0;是接口,子类必须要实现
——————/
轮询任务调度与抢占式任务调度的区别在于抢占式调度可以因为优先级高的任务抢占cpu,而轮询的不能
在RTOS中,主要的调度算法是基于任务优先级的抢占式调度。
在这种调度算法中,系统总是选择优先级别的最高的算法进行调度,并且一旦高优先级别的任务准备就绪之后,它就会马上被调度而不等待低优先级的任务主动放弃CPU。
在时间片轮转调度算法中,只有等任务主动放弃CPU,高优先级的任务才有调度的优先权。
——————/
什么叫存储