进程、线程
什么是进程,线程,彼此的区别 ⭐⭐⭐
什么时候用进程,什么时候用线程?⭐⭐
一个线程占多大内存⭐⭐⭐
什么是信号量,有什么作用?⭐⭐
多进程内存共享可能存在什么问题?如何处理?⭐⭐⭐⭐⭐
多进程、多线程的优缺点⭐⭐⭐⭐
并发、并行
线程间通信
进程通信中的管道实现原理是什么?⭐⭐
什么是线程同步和互斥⭐⭐⭐
线程同步与阻塞的关系?同步一定阻塞吗?阻塞一定同步吗?⭐
并发,同步,异步,互斥,阻塞,非阻塞的理解⭐⭐⭐⭐⭐
一个进程可以创建多少线程,和什么有关⭐
什么是进程上下文、中断上下文?⭐⭐⭐
进程上下文(Process Context)
中断上下文(Interrupt Context)
父进程、子进程的关系以及区别⭐⭐
孤儿进程、僵尸进程、守护进程的概念⭐⭐⭐
正确处理僵尸进程的方法⭐⭐
如何创建守护进程⭐⭐⭐⭐⭐
进程线程的状态转换图
CPU工作原理⭐⭐
死锁的原因、条件?以及如何预防⭐⭐⭐
死锁必要条件
预防死锁的方法
死锁
活锁
- 活锁指的是多个线程不断重试,但最终无法取得进展的情况。线程们在不断改变自己的状态,但总是无法成功完成所需的操作。
- 活锁是一种动态状态,线程不断重试,但无法使程序向前推进。
- 活锁通常是由于竞争条件、过度的自旋等问题引起的。
解决活锁问题的一般策略
- 引入随机性:通过引入随机因素,使 线程的行为具有一定的不确定性,避免线程们不断重复相同的操作。
- 使用策略:在活锁发生时,采用某种策略,例如放弃一部分工作、转让任务或等待一段随机时间等。
- 调整线程优先级:适当调整线程的优先级,以改变线程的竞争行为。
- 重新设计算法和协调:如果活锁是由于设计问题引起的,需要重新设计算法或协调机制,以避免竞争条件。
sleep和wait的区别?⭐⭐⭐
互斥锁
互斥锁的机制 ⭐⭐
互斥锁与读写锁(读写互斥锁)的区别 ⭐⭐
中断
中断怎么发生,中断处理大概流程⭐⭐
I/O
五种IO模式
简述epoll,poll和select的区别⭐⭐⭐⭐
epoll 水平与边缘触发
epoll为什么高效?
虚拟内存和物理内存的区别⭐
基础概念
Linux系统的组成部分
32位Linux系统的寻址空间
Linux系统中进程默认栈空间
Linux系统中调试崩溃问题的流程
用户空间与内核通信方式
常见信号及其含义
信号量在进程中的使用
线程池的设计思路
线程池中线程数量确定因素
Linux的fork作用
Linux 命令
Linux中查看进程运行状态的指令、tar解压文件的参数
tar 解压文件的参数
Linux下检查内存状态的命令
如何创建一个新的目录
如何以 root 权限运行某个程序
在 Linux 中如何查看一个想知道的进程
在 Linux 中如何查看带有关键字的日志文件
Linux 修改主机名的命令
关于 ping 命令
GDB 常见的调试命令,什么是条件断点,多进程下如何调试
虚拟机制与页表
文件系统的作用
进程调度算法
LRU算法及其实现
页表及其作用
缺页中断
虚拟内存与物理内存
虚拟地址到物理地址的映射
中断与异常的区别
中断处理流程
操作系统的文件访问方式
Linux内核
内核态与用户态的区别
用户空间和内核通信的方式
Linux内核的组成
段页式内存管理的优点
系统调用与普通函数调用的区别
系统调用的作用
系统调用read/write的内核处理流程
bootloader与内核和根文件系统的关系
bootloader的两个阶段启动过程
Linux内核的装载
为什么需要Bootloader
Linux内核同步方式总结