[C++面试高频]操作系统基础(一)

1.请说说CPU的工作原理

①控制单元在时序脉冲的作用下,会将指令计数器指向的指令的地址送到地址总线,而后CPU将该地址的指令获取到指令寄存器中进行译码。

②对于指令执行过程中需要用到的数据,会将数据地址也送到地址总线,CPU获取数据到存储单元暂存,而后由运算单元进行运算,周而复始直至程序结束。

 2.请说说CPU流水线

CPU执行一条指令,分为几个步骤,不会执行完一条指令再执行下一条指令,而是像流水线一样。

经典的MIPS五级流水线将执行的生命周期拆分成五个部分:

①取指

②译码

③执行

④访存

⑤写回

3.内核态和用户态的区别

①内核态和用户态是操作系统的两种运行级别。内核态的权限最高,能访问系统所有的指令,用户态仅能访问系统的部分指令。

②访问内核态的方式:1.系统调用;2.异常;3.设备中断。前一种是主动的,后两种是被动。

③为什么区分内核态和用户态:由于CPU的某些指令比较危险,如果错用会造成系统崩溃,如:清理内存,设置时钟,因此是出于安全考虑划分用户态和内核态。

4.什么是系统调用

①Linux内核内设置了一系列用于实现系统功能的子程序,这些子程序成为系统调用。用户可以利用系统调用命令在自己的程序里实现系统调用。在某种程度上,系统调用和函数类似,区别在于系统调用由操作系统的内核提供,运行于内核态,函数由函数库或用户自己提供,运行于用户态。

②系统调用实现的核心机制是操作系统为用户开放的一个中断,这个中断是开发人员开发的正常的异常,具体需要调用int $0x80的汇编指令,产生向量为0x80的编程异常。

③产生中断后,需要调用中断处理程序,再调用System_call函数,就实现了操作系统内核态的调用。

5.说说并发和并行

①并发:单个cpu,同一时刻只有一个进程在运行,但是线程之间的切换减小到纳秒数量级,多个线程不停的来回切换。

②并行:多个cpu,同一时刻多个进程同时运行。

③区别:它们虽然都是同时运行多个进程,但它们的“同时”不是一个同时。并发的同时是线程切换的速度非常快,使它看上去像是同时运行多个进程,而并行则是同一时刻多个任务同时运行。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值