处理模式,线程模式两者各自的特点?
两种操作模式分别为:处理者模式(handler mode,以后不再把 handler中译——译注)和线程模式(thread mode)。引入两个模式的本意,是用于区别普通应用程序的代码和异常服务例程的代码——包括中断服务例程的代码。

Cortex-M3 的另一个侧面则是特权的分级——特权级和用户级。这可以提供一种存储器访问的保护机制,使得普通的用户程序代码不能意外地,甚至是恶意地执行涉及到要害的操作。处理器支持两种特权级,这也是一个基本的安全模型。
译注: “用户级”其实是从“user”译来的。有些时候英文文档也使用术语“Unprivileged”,后者如果直译,则称为“非特权级” 。为统一术语,本译文一律使用“用户级”。
在 CM3 运行主应用程序时(线程模式),既可以使用特权级,也可以使用用户级;但是异常服务例程必须在特权级下执行。复位后,处理器默认进入线程模式,特权极访问。在特权级下,程序可以访问所有范围的存储器(如果有 MPU,还要 在MPU规定的禁地之外),并且可以执行所有指令。

在特权级下的程序可以为所欲为,但也可能会把自己给玩进去——切换到用户级。一旦进入用户级,再想回来就得走“法律程序”了——用户级的程序不能简简单单地试图改写 CONTROL寄存器就回到特权级,它必须先“申诉”:执行一条系统调用指令(SVC)。这会触发SVC异常,然后由异常服务例程(通常是操作系统的一部分)接管,如果批准了进入,则异常服务例程修改 CONTROL寄存器,才能在用户级的线程模式下重新进入特权级。 事实上,从用户级到特权级的唯一途径就是异常:如果在程序执行过程中触发了一个异常,处理器总是先切换入特权级,并且在异常服务例程执行完毕退出时,返回先前的状态。
windows handle的作用?
包含线程队列和消息队列,实现异步的消息处理机制,跟web开发的ajax有异曲同工之妙。
1.运行在某个线程上,共享线程的消息队列;

2.接收消息、调度消息,派发消息和处理消息;
3.实现消息的异步处理;
Handler能够让你发送和处理消息,以及Runnable对象;每个Handler对象对应一个Thread和 Thread的消息队列。 当你创建一个Handler时,它就和Thread的消息队列绑定在一起,然后就可以 传递消息和runnable对象到消息队列中,执行消息后就从消息队列中退出。
Handler的作用就是:调度消息和runnable对象去被执行;使动作在不同的线程中被执行。
当一个应用程序中进程被创建时,它的主线程专门运行消息队列(messageQueue),去管理顶层的应用程序相关的对象如:activity,broadcastReceiver,windows等,你可以创建你的Thread,和主线程进行交互——通过Handler,交互的方法就是通过post或者sendMessage。但是在你的新线程中,给定的Message或者Runnable,会在适当的时候的被调度和处理。
(即不会被立即处理——阻塞式)。
实际上就是建立消息处理模型/系统
到此,以上就是小编对于handler和thread的问题就介绍到这了,希望这2点解答对大家有用。