0x01:操作系统(12个问题)
1、 进程和线程的区别?
1:一个线程属于一个进程,一个进程可以包括多个线程
2:一个线程挂掉,对应的进程挂掉;一个进程挂掉,不会影响其他进程。
3:进程是系统资源调度的最小单位;线程CPU调度的最小单位。
4:进程在执行时拥有独立的内存单元,多个线程共享进程的内存,如代码段、数据段、扩展段;但每个线程拥有自己的栈空间。
5:进程切换时需要刷新TLB并获取新的地址空间,然后切换硬件上下文和内核栈,线程切换时只需要切换硬件上下文和内核栈。
2、进程地址空间里面有什么东西?
代码段 常量区 静态全局区(data bss) 堆区 共享区 栈区 内核空间
PCB中的:进程id 进程状态 进程切换时需要保存的寄存器组 文件描述符 页表等
3、线程的栈里面有哪些东西?
局部变量 函数参数 返回值等
4、 fork的原理是什么?
pid_t fork() 返回值是进程描述符PID 返回值有三种情况
对于父进程:fork()返回子进程的PID
对于子进程:调用成功返回0
创建出错 返回-1;
Fork() 创建进程后 为这个进程分配空间 将父进程的内容复制到子进程
包括数据段和堆栈段 共享代码段。最后fork会返回两次
5、进程间通信有哪些方式?
管道:无名管道(亲属间 父子 兄弟) 和有名管道(任意) 单双工
消息队列:消息的连接表 放在内存中 先进先出
信号:通知进程信号的发生 kill-9 触发SIGKILL信号 终止该程序
信号量:一个计数器 控制多个进程对共享资源的访问
共享内存:多个进程可以读写同一块空间
Socket通信:不同主机之间直接的通信
6、共享内存的原理是什么?
多个进程可以读写同一块空间
7、原子操作的原理是什么?

本文深入探讨操作系统中的关键概念,包括进程与线程的区别、内存区域、fork原理、进程间通信方式、共享内存、原子操作、I/O多路复用模型、线程池设计以及系统调用和写时拷贝机制。对于C++开发者理解系统级编程至关重要。
最低0.47元/天 解锁文章
11万+

被折叠的 条评论
为什么被折叠?



