android面试题五

来源:互联网 发布:机器视觉算法工程师 编辑:程序博客网 时间:2024/05/16 00:30

二十六、什么情况会导致Force Close?如何避免?能否捕获导致其的异常?

抛出运行时异常时就会导致Force Close,比如空指针、数组越界、类型转换异常等等。

捕获:可以通过logcat查看抛出异常的代码出现的位置,然后到程序对应代码中进行修改。

避免:编写程序时,要思维缜密,在可能出现异常的地方都作相应的处理,增强程序的健壮性。

二十七、Android本身的api并未声明会抛出异常,则其在运行时有无可能抛出runtime异常,你遇到过吗?诺有的话会导致什么问题?如何解决?

会。比如nullpointerException。我遇到过。比如空指针异常是最常见的异常,只要对null调用方法就会出现nullpointerException。会导致程序无法正常运行出现forceclose。可以打开控制台查看logcat信息,然后找到抛出异常信息的代码段并进行修改。

二十八、Android dvm的进程和Linux的进程,应用程序的进程是否为同一个概念

DVMDalvik虚拟机。每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。而每一个DVM都是在Linux中的一个进程,所以说可以认为是同一个概念。

每一个Dalvik应用作为一个独立的Linux进程执行可以防止在虚拟机崩溃的时候所有程序都被关闭。

至于DVMJVM的区别上文已介绍过。

 

二十九、什么是嵌入式实时操作系统, Android操作系统属于实时操作系统吗?

概念:嵌入式实时操作系统是指当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统作出快速响应,并控制所有实时任务协调一致运行的嵌入式操作系统。主要用于工业控制、军事设备、航空航天等领域对系统的响应时间有苛刻的要求,这就需要使用实时系统。又可分为软实时和硬实时两种,而android是基于linux内核的,linux在用户空间可抢占,内核空间在2.4以后可局部抢占,严格来讲 Android属于软实时系统。

特点:

实时性。由于对嵌人式实时操作系统的共同要求是系统能快速响应事件,具有较强的实时性,所以嵌入式实时操作系统的内核都是可抢占的。
可裁剪性。嵌入式操作系统运行的硬件平台多种多样,其宿主对象更是五花八门,所以要求嵌入式操作系统中提供的各个功能模块可以让用户根据需要选择使用,即要求它具有良好的可裁剪性。
高可靠性。嵌入式系统广泛应用于军事武器、航空航天、交通运输、重要的生产设各领域,所以要求嵌人式操作系统必须有极高的可靠性,对关键、要害的应用还要提供必要的容错和防错措施,以进一步提高系统的可靠性。
易移植性。为了适应多种多样的硬件平台,嵌人式操作系统应可在不做大量修改的情况下能稳定地运行于不同的平台。

 

三十、嵌入式操作系统内存管理有哪几种,各有何特性

1)嵌入式操作系统内存管理机制:

1、虚拟内存管理机制
   
有一些嵌入式处理器提供了MMU,在MMU具备内存地址映射和寻址功能,它使操作系统的内存管理更加方便。如果存在MMU,操作系统会使用它完成从虚拟地址到物理地址的转换,所有的应用程序只需要使用虚拟地址寻址数据。这种使用虚拟地址寻址整个系统的主存和辅存的方式在现代操作系统中被称为虚拟内存。MMU便是实现虚拟内存的必要条件。
   
虚拟内存的管理方法使系统既可以运行体积比物理内存还要大的应用程序,也可以实现按需调页策略,既满足了程序的运行速度,又节约了物理内存空间。
   
L inux系统中,虚拟内存机制的实现实现为我们提供了一个典型的例子:在不同的体系结构下,使用了三级或者两级页式管理,利用MMU完成从虚拟地址到物理地址之间的转换。基于虚拟内存管理的内存最大好处是:由于不同进程有自己单独的进程空间,十分有效的提高了系统可靠性和安全性。
2、非虚拟内存管理机制
   
在实时性要求比较高的情况下,很多嵌入式系统并不需要虚拟内存机制:因为虚拟内存机制会导致不确定性的 I/O阻塞时间,使得程序运行时间不可预期,这是实时嵌入式系统的致命缺陷;另外,从嵌入式处理器的成本考虑,大多采用不装配MMU的嵌入式微处理器。所以大多嵌入式系统采用的是实存储器管理策略。因而对于内存的访问是直接的,它对地址的访问不需要经过MMU,而是直接送到地址线上输出,所有程序中访问的地址都是实际的物理地址;而且,大多数嵌入式操作系统对内存空间没有保护,各个进程实际上共享一个运行空间。一个进程在执行前,系统必须为它分配足够的连续地址空间,然后全部载入主存储器的连续空间。
   
由此可见,嵌入式系统的开发人员不得不参与系统的内存管理。从编译内核开始,开发人员必须告诉系统这块开发板到底拥有多少内存;在开发应用程序时,必须考虑内存的分配情况并关注应用程序需要运行空间的大小。另外,由于采用实存储器管理策略,用户程序同内核以及其它用户程序在一个地址空间,程序开发时要保证不侵犯其它程序的地址空间,以使得程序不至于破坏系统的正常工作,或导致其它程序的运行异常;因而,嵌入式系统的开发人员对软件中的一些内存操作要格外小心。
   UCOS就是使用非虚拟内存管理的一个例子,在UCOS中,所有的任务共享所有的物理内存,任务之间没有内存保护机制,这样能够提高系统的相应时间,但是任务内存操作不当,会引起系统崩溃。

2)嵌入式操作系统内存管理有页式,段式,段页,用到了MMU,虚拟空间等技术。

3)段式存储管理和页式存储管理的本质区别:

 1.页式存储管理中的逻辑地址有页号和业内地址两部分组成,但作业仍然使用连续的逻辑地址,可把它看作是一维的(线性的)地址结构。用户没有分页的概念,操作系统把作业信息装入主存时才按照块长进行分页。
 
2.段式存储管理中的逻辑地址有段号和段内地址两部分组成。他支持用户的分段,每段内的逻辑地址是连续的,而段与段之间的逻辑地址是不连续的。因此段式存储管理中的逻辑地址实际上是采用了二维的地址结构。

0 0
原创粉丝点击