linux进线程

进线程

1. 什么是进程,什么是线程,区别在那?

  • 进程是系统资源分配的基本单位,线程是程序执行的最小单位,一个进程可以包含多个线程
  • 进程有自己独立的地址空间,每新建一个进程,系统都会给进程分配独立的地址空间,建立数据表来维护代码段,数据段,堆栈段,并且进程的全局变量是不共用的,线程是以来进程的地址空间,因此切换一个线程远比切换一个进程的空间少
  • 线程之间通信更方便,一个进程下的线程共享全局变量和静态数据,线程有自己的寄存器组和栈段

2. 何时使用多进程,何时使用多线程?

  1. 频繁修改:需要频繁创建和销毁资源使用多进程
  2. 数据共享/相关性:需要频繁数据共享使用多线程
  3. 计算量:计算量大使用多线程

3. 创建进程的方式?

  1. fork()
  2. 系统初始化,像是后台进程或是守护进程
  3. 用户的交互式请求

4, 进程的几种状态

创建,就绪,阻塞,运行,终止

5. 进程间的通信方式

  1. 管道(pipe)
  2. 信号量
  3. 消息队列
  4. 信号
  5. 共享内存
  6. 套接字

进程间通信的选择

数据交互频繁使用管道
数据量大使用共享内存

6.什么是僵尸进程,孤儿进程,守护进程

  • 僵尸进程:子进程退出后没有被父进程使用wait()或waitpid()回收资源
  • 孤儿线程:父进程在没有回收子进程的情况下异常推出,子进程此时会被init进程收养
  • 守护进程:是指后台进程,有意把父进程结束,然后被1号进程收养

僵尸进程的危害

如果一直产生僵尸进程,系统的进程号会被占用而无法产生新的进程

线程间的通信方式

  1. 临界区
  2. 信号量
  3. 互斥量
  4. 事件
  5. 条件变量
  6. 读写锁
posted @ 2025-12-11 00:13  lskyl  阅读(8)  评论(0)    收藏  举报