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、进程间通信有哪些方式?
管道:无名管道(亲