Linux进程与线程

本文建立在读者已对Linux进程和线程有初步的认知

计算机内存逻辑上可以划分为内核空间用户空间。也就是我们经常讨论的内核态和用户态。

1.Linux组织进程

进程是程序运行的一个实体,是一个动态的过程。Linux中PCB是一个task_struct的结构体,每个PCB包括基本信息(PID,进程状态),资源管理(fs,files,mm,signal),进程间通信(管道、消息队列、共享内存等IPC机制),进程关系。
在这里插入图片描述

图1 PCB文件系统管理图
在这里插入图片描述
图2 PCB内存管理图
可以看出一个进程除了管理自身的属性(PID、进程状态),都用于调度使用,还有文件系统、内存资源管理,故进程是操作系统资源分配的一个基本单位。

2.Linux组织线程

进程与线程之间的关系如下图,线程只拥有调度所需要的最少资源。包括pid、寄存器(PC指针和栈指针)、优先级。满足调度的基本要求,故线程是一个调度的基本单位。
线程间共享:

  • 进程指令
  • 全局变量
  • 打开文件

线程私有:

  • ID
  • 寄存器集合
  • 优先级
    在这里插入图片描述
    图3 线程与进程间关系

2.1线程启动例程函数

进程的启动,会有一个启动例程,该例程会调用main()函数进而开始执行代码。线程也有一个例程函数,当线程创建后,此函数会作为线程的入口函数进行执行。
下面展示一些 内联代码片

// An highlighted block
#include <pthread.h>

int pthread_create(pthread_t *thread, const pthread_attr_t *attr,
                   void *(*start_routine) (void *), void *arg);

void *(*start_routine) (void *)是例程函数的原型。

补充:进/线程生命周期

在这里插入图片描述
图4 进程生命周期
在一个进程不被阻塞的情况下,生命周期如图,进程执行期间调用exit()函数会进入进程的收尾工作,包括终止处理函数和I/O清理。

  • 终止处理函数
    资源释放:网络资源,内存资源等
    日志登记
  • I/O清理函数
    将缓冲设备中的信息更新到字符设备中存储。
    线程生命周期与进程类似,但两者API并不相同。
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值