Linux教程

操作系统期末复习——第四章 线程

本文主要是介绍操作系统期末复习——第四章 线程,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

第四章 线程

1 线程概述

1.1为什么引入线程

  1. 有的进程可能需要同时满足许多功能,引入线程增加并发度
  2. 进程上下文切换系统开销大,线程降低系统开销
  3. 进程的创建相对困难,线程创建相对简单——只需要复制栈和寄存器的内容

1.2多线程进程

一个进程可以拥有多个线程,多个线程间共享以下内容

  1. 代码段、全局变量
  2. 打开的文件标识符
  3. 工作环境——当前目录,用户权限等
  4. 内存空间

多线程编程的优点:

  1. 响应速度快
  2. 资源共享
  3. 经济
  4. 多处理器体系结构的应用:可在多处理器上并行

2 多线程模型

2.1用户线程和内核线程

用户线程:

  • 受内核支持
  • 由线程库管理,无需内核管理
  • 对于内核透明

内核线程:

  • 由内核管理
  • 由内核进行维护和调度

内核线程和用户线程存在映射关系即:
一对一模型优点:

  1. 提供并发功能,多处理器并行执行
  2. 一个阻塞,可以调度另一个线程继续执行

缺点:

  • 内核负担重

多对一模型缺点:

  • 一个被阻塞其他都无法继续运行

多对多模型缺点:

  • 没有以上缺点,需要向内核提供调度机制

二级模型:

  • 多对多模型的变种,允许用户线程绑定一对一绑定一个特定内核线程

3 线程库

3.1实现方式

  1. 非嵌入到内的方式:在用户控件中提供没有内核支持的库,所有代码和数据结构都存在于用户空间中
  2. 嵌入到内核的方式:调用内核库,代码和数据结构储存在内核中

4 多线程程序相关问题

4.1系统调用fork()与exec()的含义

线程调用fork()创建新进程时,如果调用exec()只复制单个线程,不调用则复制全部全部线程

4.2线程取消

目标线程:线程完成任务前需要被取消的线程

异步取消:一个线程立即终止目标线程

延迟取消:目标线程不断检测它是否应终止

4.3信号处理

同步信号:进程本身产生的信号

异步信号:进程外产生的信号

ctrl + C 信号传送给每个线程,pthread_kill函数可以传信号给指定线程

4.4线程池

在进程开始时创建一定数量的线程备用

主要优点:

  1. 用现有线程处理请求比等待创建新的线程要快
  2. 线程池限制了可用线程的数量,防止大量创建并发线程

4.5调度程序激活

暂时略过,复习完有时间再看

这篇关于操作系统期末复习——第四章 线程的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!