linux中的进程和线程

时间:2022-04-09 18:43:11

应用程序:可以被操作系统执行的一组指令和参数的集合,是静态的,并存储在磁盘空间中;

进程:在操作系统中在运行程序后,处于运行状态的程序,是应用程序的一个执行过程,同时也是操作系统分配内存,cpu等系统资源的基本单位;

线程:进程中可以共享进程资源的一个执行单位;

一个应用程序可以对应多个进程,一个进程中可以有多个执行线程;

系统操作进程的方式主要是:创建进程,终止进程,已经控制进程间的通信和同步;

进程的创建过程:

  1. 复制父进程的环境配置;

  2. 在内核中建立进程结构;

  3. 将创建好的进程结构放入到进程列表中;

  4. 系统分配资源给此进程;

  5. 复制父进程的内存映射信息;

  6. 管理文件描述符和连接点;

  7. 通知父进程;

进程的终止方式:

  1. 从main函数返回;

  2. 调用exit或者_exit函数;

  3. 调用abort函数;

  4. 被信号终止;

进程在终止时,系统会释放进程拥有的资源,包括内存,内核结构等。

进程间的通信方式:

  1. 管道:内核为两个进程建立的通信通道,一端只能写数据,一个端只能读数据,完成通信;

  2. 共享内存:多个进程共享一段内存,并对内存进行操作来完成通信;

  3. 消息队列:内核中的一个链表,发送方进程将消息发送到内核中,内核将消息放入链表,等待接收方进程发送请求消息,收到请求消息后,内核将消息从链表上取下,交给接收方,完成通信,此过长完全是异步的;

  4. 信号量:一个共享的数值,主要用于进程间的同步和对共享资源的保护;

进程和线程:

  线程是进程的一个执行单位,属于进程的一部分;

  进程是操作系统分配资源的基本单位,系统只为线程分配cpu资源,其他系统资源只能共享进程的系统资源,线程是执行的基本单位;

  系统通过进程控制表PCB调度线程,并通过线程控制表TCB对线程进行调度;