C 语言

指针函数 和 函数指针的区别

  1. # 指针函数
  2. int * fun();
  3. # 函数指针
  4. int (*fun)();

volite 关键字优化的问题

https://www.yuque.com/u762558/ucbsrb/hlngwb

应用

父进程怎么回收子进程的资源?

wait 函数。

内核

自旋锁和互斥锁的差别

  1. 自旋锁 不会睡眠,将会一直忙等待。
  2. 互斥锁 得不到就会线程阻塞。

信号量

  1. 一个计数器, 用于对多个进程对共享资源的同步访问。

中断里面可以调用kmalloc 么

可以, 中断服务函数需要响应快速。
使用 GFP_ATOMIC 标志可以在中断函数里面调用。这是一个原子操作。
可以在中断服务程序执行malloc吗?

kmalloc vmalloc malloc 差别

自动驾驶公司

image.png

image.png

Cache 的工作原理

进程切换的时候需要都tlb做什么事? 什么是asid

一般性能优化是什么步骤?

有哪些cache 和 内存一致性出问题的情况。

请描述一下mmap

Linux 内核的page cache是什么?

中断发生会从那几个方面影响程序性能?每个方面影响的程度大概是多少了?

为什么编译器以结构体最大的成员size 对齐整个结构体的大小?

为什么总线写要比总线读要快?

软件版本管理应该有哪些需求?

如果同时使用两把锁,要注意什么避免死锁?

操作系统

操作系统如何进行进程的管理

进程控制块到底存储了哪些信息?

  • 每一个进程都需要包含一个页表 TLB。
  • 包含很多个段信息描述结构体
    • 比如代码段, 全局变量段, 包含动态库数据的段,
  • 进程需要包含当前PC指针指向的地址。
    • 换句话说,就是需要知道当前进程执行到哪里了。

进程的生命周期管理

进程的几个状态

分为三态和五态。
在内核中有五态。

  1. 运行态
  2. 就绪态
  3. 挂起态(阻塞)
  4. 创建态
  5. 终止态

运行态:

操作系统怎么完成系统调度?

实时操作系统freertos

freertos 系统调度实现