Linux 线程基础

什么是线程 什么是进程

线程是计算机中运算调度的最小单位,
他在进程的地址空间内运行。 是进程实际运作单位
一条线程是进程中单一顺序的执行流
。线程使操作系统调度执行的基本单位。

而进程是操作系统中资源分配的基本单位,进程有自己独立的地址空间(页表),文件描述符管理的文件,IO设备,操作系统通过这些一定程度防止进程间资源的冲突。

???为什么vfork 保证子进程先执行 因为公用同一地址空间 父子进程同时在一个调用栈里跑 调用栈会混乱

内核角度看线程

在操作系统内核眼中 不区分进程和线程 他的眼中只有task_struct 要执行一个线程 (轻量级进程)/进程(单进程进程 或 主线程) 将其task_struct放入执行队列中

把一个线程挂起 就是把他放在挂起队列中

每一个进程有多个线程 也就是有多个PCB (task_struct) 内核通过task_struct来控制调度线程/进程

getpid() 返回的是task_struct结构体中的 pid_t tgid; 一个进程中的多个线程叫一个线程组 组id tgid
gettid() 返回值是task_struct结构体中的 pid_t pid

一个进程执行后 默认打开了第一个线程叫主线程 主线程pid tgid 一样 单线程进程中 只有主线程

线程组中除了主线程之外 其他线程是对等的 没有类似进程的父子关系.
线程组id等于进程中第一个线程id(主线程id)。tgid。

创建一个线程内核中多了一个县城的PCB,但是这个PCB和其进程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值