操作系统----线程

线程的概念

其实可以理解为“更小”的进程。记住一句话,如果CPU可以进行线程的状态的切换,那么线程就是程序执行流的最小单位。

 

在一个进程中的线程,进程中的资源是共享的。

线程的实现方式和多线程模型

线程的实现方式分为两种:

        1:用户级线程

        2:内核级线程

用户级线程:即用户层面的可以看到的线程。

举个例子,QQ有视频聊天功能、文件传输功能、文字聊天功能。

那么我们可以抽象为三个while 循环。

线程1
while (true)
{
    视频聊天
}

线程2
while (true)
{
    文字聊天
}

线程3
while (true)
{
    文件传输
}

抽象成上述图。

很明显,CPU是不知道线程的存在,他只知道一个进程进入CPU运行。

由操作系统对其管理。

在切换另一个线程的时候,CPU不需要变态。

操作系统意识不到线程的存在。

优点:线程的切换效率高

缺点:当一个线程阻塞的时候,整个进程会被阻塞。

 

内核级线程:

     

 1:内核级的线程由操作系统来管理

 2:需要CPU进行状态的切换

 3:操作系统自然就意识到线程的存在了

  优点:

        当一个线程阻塞的时候其他线程还可以运行

   缺点:     

        一个用户进程会占用多个内核级线程,线程切换由操作系统内核完成,需要切换到核心态,因此线程管理的成本高,开销大。

多线程模型:

         多对一:多个用户级线程映射到一个内核级线程。且一个进程只被分配一个内核级 线程。   

            操作系统只看得见内核级的线程

    优点:用户级的线程可以在用户态进行切换,不需要进入内核态进行切换 ,提高程序执行的效率。

     缺点:当用户级的线程被阻塞的时候,整个进程被阻塞。

        多对多:  n 用户及线程映射到 m 个内核级 线程(n >= m)。每个用户进程对应 m 个内核级线程。

克服了多对一模型并发度不高的缺点(一个阻塞全体阻塞),又克服了一对一模型中一个用 户进程占用太多内核级线程,开销太大的缺点。
可以这么理解:
用户级线程是“代码逻辑”的载体
内核级线程是“运行机会”的载体
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值