写在前面的话
此为我在作完紫光笔试后的错题记录与查询,知识点涉及题目但不包含题目,是自己在考试过程中记录暴露出来的知识盲区,考试后查的。聊作记录,避免再犯。
启动地址???
选择了某种启动方式后,启动地址通常都是固定的。
ARM系统无论从何种设备启动都是从0地址开始运行的。
PowerPC通常是0x100或者0xFFF00100。
8086CPU上电复位后,执行的第一条指令的地址是FFFF0H
内核的工作模式
1、用户模式(user):正常程序执行模式;
2、快速中断模式(FIQ):高优先级的中断产生会进入该种模式,用于高速通道传输;
3、外部中断模式(IRQ):低优先级中断产生会进入该模式,用于普通的中断处理;
4、特权模式(Supervisor):复位和软中断指令会进入该模式;
5、数据访问中止模式(Abort):当存储异常时会进入该模式;
6、未定义指令中止模式(Undefined):执行未定义指令会进入该模式;
7、系统模式(System):用于运行特权级操作系统任务;
8、监控模式(Monitor):可以在安全模式和非安全模式之间切换;
Kernel锁机制
锁是内核中使用最频繁,最基础的设施之一,在内核的各个模块中被大量使用。锁的本质是在并发过程中保证资源的互斥使用。Linux内核提供了多种锁,应用的场合也各不相同,主要包括:原子操作,信号量,读写锁,自旋锁,以及RCU锁机制等。
Linux的内核锁主要是自旋锁和信号量。
自旋锁(spin_lock)
自旋锁是内核中最基础的锁机制。自旋锁不会引起调用者睡眠,如果自旋锁已经被别的执行单元持有,调用者就一直循环在那里看是否该自旋锁的持有者已经释放了锁,"自旋"一词就是因此而得名。自旋锁适用于锁使用者保持锁时间比较短的情况
信号量(semaphore/mutex)
信号量semaphore是一种睡眠锁,实现对多个同类资源的互斥访问,如果资源个数降为1个,就是互斥锁mutex。信号量实现原理如下:初始有n个同类资源,当某个线程获取(down操作)资源时,资源个数-1。当所有资源被分配完,此时当前线程被挂起在等待队列上,直到某个线程释放了(up操作)资源后,唤醒在等待队列上的线程重新获取资源。
iqr中断过程
CPSR:当前程序状态寄存器
SPSR:程序状态备份寄存器
R13:栈指针寄存器
R14:连接寄存器
R15:程序计数器</