面试题
BC锌
这个作者很懒,什么都没留下…
展开
-
*a++
例如: *P++ 应该解释成 *(P++) ,即取P指向的对象,然后P自增1,虽然后自增++优先级高于*,但是后自增的特性决定了先对P进行运算,运算完成后再P自增1;(*P)++指先取P所指向的对象,然后对该对象加1,由于括号优先级高则先计算括号内部表达式,++运算符对括号这个数据整体起作用。*a++,++的优先级更高,所以a是指针,但是++是后自增,所以先取出a指向的对象,然后指针a++,总之++的是指针,而不是指针a指向的对象;(*a)++,是取出a指向的对象,并对这个对象的值++;原创 2024-04-12 07:37:22 · 196 阅读 · 0 评论 -
优先级反转
当高优先级任务需要获得同步资源时(低优先级任务占有这个同步资源),临时提升低优先级任务的优先级=高优先级任务的优先级,让低优先级任务更快的执行并释放同步资源,释放同步资源后在恢复原来的低优先级。高优先级任务被低优先级任务阻塞,导致高优先级任务迟迟得不到调度,但其他中等优先级的任务却能抢到CPU资源,从现象上看,好像是中优先级的任务比高优先级任务具有更高的优先级。不管线程是否阻塞了高优先级线程的运行,只要线程访问共享资源都会提升线程的优先级。优先级天花板是当线程申请某个共享资源时,把该线程的优先级提升到。原创 2024-04-07 14:27:51 · 227 阅读 · 1 评论 -
c/c++ 随机数 rand() srand()
一般只需要在程序开始时调用srand函数一次即可,不需要在每次生成随机数之前都调用一次srand函数。srand(seed) 可以设置一个种子seed,当种子不一样的时候,随机数才不同。rand() 生成一个随机数,每次启动都是一样的。原创 2024-04-07 07:54:37 · 103 阅读 · 0 评论 -
emplace_back与push_back原理区别
push_back首先会利用传入的参数调用构造函数构造这个临时对象,然后需要调用拷贝构造函数将这个临时对象放入容器中。原来的临时变量释放。这样会造成效率低下。原文链接:https://blog.csdn.net/TwoTon/article/details/122507898。emplace_back支持直接将构造函数所需的参数传递过去,然后构建一个新的对象出来,然后填充到容器尾部的。原创 2024-04-07 07:34:58 · 94 阅读 · 0 评论 -
JOS是微内核还是单内核?分别说一下这两个的优缺点?
L4必然不是最早的微内核,但是从1980年代开始,它是最早一批可以工作的微内核之一,并且它非常能展现微内核是如何工作的。在许多年里面它一直都有活跃的开发和演进。L4有15-20个变种,有一些从1980年代开始开发的项目现在还存在。L4是微内核简单,它只有7个系统调用,虽然其中有一些稍微有点复杂,但是它还是只有7个系统调用。然而现在的Linux,有大概350个系统调用。甚至XV6这个极其简单的内核,也有21个系统调用。从这个指标来看,L4更加简单。原创 2024-04-05 07:22:09 · 462 阅读 · 0 评论 -
为什么JOS操作系统是用C语言实现的,why not高级编程语言?
为什么JOS操作系统是用C语言实现的,why not高级编程语言?原创 2024-04-05 07:12:09 · 149 阅读 · 0 评论