文章目录
- 操作系统
-
- 进程和线程
-
- 什么是进程?什么是线程?
- 进程和线程有什么区别?
- 何时使用多进程,何时使用多线程?
- 进程有几种状态?画一下进程状态转换图?
- 创建进程有哪几种方式?
- 进程间通信方式有哪些?有什么优缺点?
- 线程间同步方法有哪些?
- 什么是内核线程和用户线程?
- 内核线程和用户线程的区别?
- 内核线程和用户线程有什么优缺点?
- 什么是僵尸进程,孤儿进程,守护进程?
- 僵尸进程有什么危害?
- 如何清理僵尸进程?
- 如何唤醒被阻塞的socket线程?
- 如何确定当前线程是繁忙还是阻塞?
- 空闲的进程和阻塞的进程状态会不会在唤醒的时候误判?
- 请问就绪状态的进程在等待什么?
- 如何实现线程池?
- 请你回答一下fork和vfork的区别?
- server端监听端口,但还没有客户端连接进来,此时进程处于什么状态?
- 堆和栈
- 并发和互斥
- 内存
-
- 在1G内存的计算机中能否malloc(1.2G)?为什么?
- malloc能申请多大的空间?
- 内存管理有哪几种方式?
- 什么是虚拟内存?
- 解释下内存碎片,内碎片,外碎片?
- 解释下虚拟地址、逻辑地址、线性地址、物理地址?
- 请问虚拟内存和物理内存怎么对应?
- 虚拟内存置换方式是怎么样的?
- 给你一个类,里面有static,virtual之类的,来说一说这个类的内存分布?
- 假设临界区资源释放,如何保证只让一个线程获得临界区资源而不是都获得?
- 操作系统中的缺页中断是什么?
- OS缺页置换算法如何实现的?
- 系统调用是什么,你用过哪些系统调用,和库函数有什么区别?
- 为什么要有page cache,操作系统怎么设计的page cache?
- 上下文
操作系统
进程和线程
什么是进程?什么是线程?
进程是资源分配的基本单位,它是程序执行时的一个实例,在程序运行时创建。
线程是程序执行的最小单位,是进程的一个执行流,一个进程由多个线程组成的。
进程和线程有什么区别?
-
进程是资源分配的最小单位。
-
线程是程序执行的最小单位,也是处理器调度的基本单位,但进程不是,两者均可并发执行。
-
进程有自己的独立地址空间,每启动一个进程,系统就会为它分配地址空间,建立数据表来维护代码段、堆栈段和数据段,这种操作非常昂贵。而线程是共享进程中的数据,使用相同的地址空间,因此,CPU切换一个线程的花费远比进程小很多,同时创建一个线程的开销也比进程小很多。
-
线程之间的通信更方便,同一进程下的线程共享全局变量、静态变量等数据,而进程之间的通信需要以通信的方式(IPC)进行。不过如何处理好同步与互斥是编写多