操作系统学习笔记四.线程

  1. 线程引入原因:
    性能方面:操作进程系统开销大;
    应用需求:进程代码并发执行的需求;
    硬件支持:多核处理器,加速进程的运行;

  2. 线程:
    可在cpu上运行的基本执行单位;
    进程内的一个代码片段可以被创建称为一个线程;
    线程状态:就绪、运行、等待等;
    线程操作:创建、撤销、等待、唤醒等;
    进程依旧是资源分配的基本单位;
    线程自己不拥有系统资源,通过进程申请资源;

  3. 传统进程:
    重型进程;
    只有一个线程:主线程;
    单线程模型;

  4. 线程的结构:
    代码和数据:来自进程;
    各类资源:来自进程;
    线程控制块(TCB):线程ID,程序计数器PC,寄存器集,栈空间;

  5. 单线程:一个进程只有一个线程。如早期的操作系统;
    多线程:一个进程有多个线程。需要支持线程的操作系统;

  6. 线程优点:
    响应度高:线程创建开销小,如web服务器;
    资源共享:进程中的线程可以共享进程资源;
    经济性:线程创建、上下文切换比进程快;
    MP体系结构的运用:一个线程中的进程在不同处理器上并行运行;

  7. linux线程:
    linux 2.2版引入线程;
    通过clone()系统调用创建线程:类似fork,linux只支持克隆线程;
    用术语“任务”表示进程和线程,一般不用“线程”;
    用户线程:PThreads;

  8. Clone可创建进程或者线程

  9. 用户(管理)线程:由用户线程库进行管理的线程:
    内核看不到用户线程;
    用户线程的创建和调度在用户空间中,不需要内核的干预;
    应用于传统的只支持进程的操作系统;
    例子:POSIX Pthreads;Win32 threads;Java threads

  10. 内核(管理)线程:内核进行管理的线程:
    需要内核支持;
    由内核完成线程调度;
    由内核进行创建和撤销;
    例子:Windows XP/2000;Solaris;Linux;Tru64 UNIX;Mac OS X;

  11. 多线程模型:多对一模型;一对一模型;多对多模型;

  12. 多对一模型:
    不支持内核线程的操作系统:内核只有进程;
    内核只能看到一个进程:多个进程不能并行运行在多个处理器上;
    进程中的用户线程由进程自己管理:进程内线程切换不会导致进程切换;一个线程的系统调用会导致整个进程阻塞;

  13. 一对一模型:
    用于支持线程的操作系统:用户线程映射到内核线程;操作系统管理这些线程;
    并发性好:多个线程可并发运行在多个处理器上;
    内核开销大;
    如Windows;OS/2;

  14. 多对多模型:
    多个用户线程映射为相等或更小数目的内核线程:并发性和效率兼顾;增加复杂度;
    例子 :Solaris 9 以前的版本;

  15. 线程库:
    为程序员提供API来创建和管理线程;
    两种模式:
    用户库(用户线程):存在于用户空间;没有内核支持;调用线程库不会产生系统调用;
    内核库(内核线程):存在于内核;操作系统支持;调用线程库会产生系统调用;

  16. Pthreads线程库:
    线程的POSIX标准;
    定义了创建和操纵线程的一整套API;
    用在类Unix操作系统(Unix,Linux,Mac OS X等);
    Windows也有移植版pthreads-win32;
    一般多为用户线程;

  17. Java线程库:
    Java线程由JAVA虚拟机JVM管理:
    JAVA线程操作系统不可见;
    用户线程;
    定义了创建和操纵线程的一整套API;
    跨操作系统平台;

  18. Win32线程库:
    win32线程库是内核库;
    内核线程;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值