1.请说说CPU的工作原理
①控制单元在时序脉冲的作用下,会将指令计数器指向的指令的地址送到地址总线,而后CPU将该地址的指令获取到指令寄存器中进行译码。
②对于指令执行过程中需要用到的数据,会将数据地址也送到地址总线,CPU获取数据到存储单元暂存,而后由运算单元进行运算,周而复始直至程序结束。
2.请说说CPU流水线
CPU执行一条指令,分为几个步骤,不会执行完一条指令再执行下一条指令,而是像流水线一样。
经典的MIPS五级流水线将执行的生命周期拆分成五个部分:
①取指
②译码
③执行
④访存
⑤写回
3.内核态和用户态的区别
①内核态和用户态是操作系统的两种运行级别。内核态的权限最高,能访问系统所有的指令,用户态仅能访问系统的部分指令。
②访问内核态的方式:1.系统调用;2.异常;3.设备中断。前一种是主动的,后两种是被动。
③为什么区分内核态和用户态:由于CPU的某些指令比较危险,如果错用会造成系统崩溃,如:清理内存,设置时钟,因此是出于安全考虑划分用户态和内核态。
4.什么是系统调用
①Linux内核内设置了一系列用于实现系统功能的子程序,这些子程序成为系统调用。用户可以利用系统调用命令在自己的程序里实现系统调用。在某种程度上,系统调用和函数类似,区别在于系统调用由操作系统的内核提供,运行于内核态,函数由函数库或用户自己提供,运行于用户态。
②系统调用实现的核心机制是操作系统为用户开放的一个中断,这个中断是开发人员开发的正常的异常,具体需要调用int $0x80的汇编指令,产生向量为0x80的编程异常。
③产生中断后,需要调用中断处理程序,再调用System_call函数,就实现了操作系统内核态的调用。
5.说说并发和并行
①并发:单个cpu,同一时刻只有一个进程在运行,但是线程之间的切换减小到纳秒数量级,多个线程不停的来回切换。
②并行:多个cpu,同一时刻多个进程同时运行。
③区别:它们虽然都是同时运行多个进程,但它们的“同时”不是一个同时。并发的同时是线程切换的速度非常快,使它看上去像是同时运行多个进程,而并行则是同一时刻多个任务同时运行。