首页 > 其他分享 >操作系统线程介绍

操作系统线程介绍

时间:2024-08-21 19:53:35浏览次数:7  
标签:执行 操作系统 调度 介绍 单位 线程 进程 多线程

线程介绍

什么是线程:

线程是操作系统能内够进行运算、执行的最小单位,它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。

总结:线程是进程的一部分,是进程内负责执行的单位,进程是由资源单位(内存资源、信号处理方案、文件表)+执行单位组成,默认情况下进程内只有一个线程,但可以有多个。

线程的发展简史:

60年代,在操作系统中能拥有资源和独立运行的基本单位是进程。

随着计算机技术的发展,进程出现了很多弊端:

一是由于进程是资源拥有者,创建、撤消与切换存在较大的时间开销,因此需要引入轻型进程;

二是由于对称多处理机出现,可以满足多个运行单位,而多个进程并行开销过大。

因此在80年代,出现了能独立运行的基本单位——线程(Threads)。

线程的调度策略:

线程是独立调度和分派的基本单位,有三种不同的调试策略:

1、线程可以为操作系统内核调度的内核线程,如Win32线程;

2、由用户进行自行调度的用户线程,如Linux、UNIX平台的POSIX Thread;

3、由内核与用户进程进行混合调度,如Windows 7的线程。

多线程适用的范围:

一个进程可以有很多线程,每条线程并行执行不同的任务。 ​ 在多核或多CPU,或支持Hyper-threading的CPU上使用多线程程序设计的好处是显而易见,即提高了程序的执行吞吐率。

在单CPU单核的计算机上,使用多线程技术,可以把进程中负责I/O处理、人机交互而常被阻塞的部分与密集计算的部分分开来执行,原因就是线程占用的资源少,被阻塞时不浪费资源。

线程的特点:
轻型实体:

线程中的实体基本上不拥有系统资源,只是有一点必不可少的、能保证独立运行的资源。线程的实体包括用于指示被执行指令序列的程序计数器、局部变量、状态参数和返回地址。

线程是动态概念,它的动态特性由线程控制块TCB(Thread Control Block)描述,包括以下信息:

1、线程状态

2、当线程不运行时,被保存的现场资源。

3、一组执行堆栈

4、存放每个线程的局部变量主存区

5、访问同一个进程中的主存和其它资源

独立调度和分派的基本单位:

在多线程OS中,线程是能独立运行的基本单位,因而也是独立调度和分派的基本单位。由于线程很“轻”,故线程的切换非常迅速且开销小(在同一进程中的)。

可并发执行:

在一个进程中的多个线程之间,可以并发执行,甚至允许在一个进程中所有线程都能并发执行;同样,不同进程中的线程也能并发执行,充分利用和发挥了CPU与外围设备并行工作的能力。

共享进程资源:

在同一进程中的各个线程,都可以访问该进程的用户空间,此外,还可以访问进程所拥有的已打开文件、定时器、信号量等,线程可以共享该进程所拥有的资源。所以线程之间互相通信不必调用内核。

标签:执行,操作系统,调度,介绍,单位,线程,进程,多线程
From: https://blog.csdn.net/zzt_is_me/article/details/141401776

相关文章

  • 线程与进程的区别(多进程与多线程)
    线程与进程的区别(多进程与多线程)资源:进程采用虚拟空间+用户态/内核态机制,所以就导致进程与进程之间是互相独立的,各自的资源不可见。在同一进程中的各个线程都可以共享该进程所拥有的资源。多进程之间资源是独立的,多线程之间资源是共享的。通信:由于进程之间是互相独立的,需......
  • Java小白一文深入介绍String、StringBuffer、StringBuilder
    String类String对象用于保存字符串,也就是一组字符序列字符串常量对象是用双引号括起的字符序列,例如“Kerwin”字符串的字符使用Unicode字符编码,一个字符(不区分字母还是汉字)占两个字节String类较常用构造方法Strings1=newString();Strings2=newString(Str......
  • 操作系统基础之磁盘及软考高级试题解析
    概述基本概念磁盘有正反两个盘面,每个盘面有多个同心圆,每个同心圆是一个磁道,每个同心圆又被划分为多个扇区,数据就被存在扇区中。磁头首先寻找到对应磁道,然后等到磁盘进行周期旋转到指定的扇区,才能读取到对应的数据。存取时间=寻道时间+等待时间盘面号(磁头号):0~M-1;由于一......
  • 面试必备之线程池
    概述在Java中要想实现线程,有四种手段:继承Thread类实现java.lang.Runnable接口实现java.util.concurrent.Callable泛型接口,利用线程池线程池通过线程复用机制,并对线程进行统一管理,优点:降低系统资源消耗。通过复用已存在的线程,降低线程创建和销毁造成的消耗;提高响应速度......
  • Aloha-便携式 AI 实验室 开箱介绍
    原文链接:Aloha-AILabIn ABox(youtube.com) AlohakitsarecompleteRoboticMachineLearningLabs.Theyhaveeverythingyouneedtogetupandrunninginlessthanaday;Hardware,Software,MachineLearningModels,CustomerSupport,Warranty,aprel......
  • SAP B1 三大基本表单标准功能介绍-业务伙伴主数据(三)
    背景在SAPB1中,科目表、业务伙伴主数据、物料主数据被称为三大基本表单,其中的标准功能是实施项目的基础。本系列文章将逐一介绍三大基本表单各个字段的含义、须填内容、功能等内容。附上SAPB110.0的帮助文档:SAPBusinessOne10.0|SAPHelpPortal本文介绍的是:业务......
  • java线程池任务执行过程 | java线程池原理探究 | 线程池源码
    目录一、线程池的使用二、线程池的创建2.1构造方法及参数2.2拒绝策略2.2.1AbortPolicy(直接抛出异常)2.2.2 CallerRunsPolicy(将任务交给调用者处理)2.2.3 DiscardOldestPolicy(弹出队列中等待最久的任务)2.2.4 DiscardPolicy(无操作)2.2.5自定义拒绝策略(实现Rejected......
  • Android开发 - Handler 类处理线程通信与任务调度解析
    什么是Handler类是处理线程间通信和任务调度的一个重要工具,用于在不同的线程之间传递消息和执行任务使用场景线程间通信:在子线程中执行任务后,更新主线程(UI线程)的界面。任务调度:安排在将来某个时间点执行的任务。基本工作原理消息队列:每个线程(包括主线程)都有一个......
  • 线程常用api
    线程常用apipthread_create该api用于创建一个新线程intpthread_create(pthread_t*thread,constpthread_attr_t*attr,void*(*start_routine)(void*),void*arg)pthread_t*thread:指向线程标识符的指针,用于存储新创建的线程的线程标识符constpthread_attr_t*attr:用来......
  • MIL⁃STD⁃1553B总线介绍
    MIL⁃STD⁃1553B总线介绍MIL⁃STD⁃1553B是一种命令/响应型多路传输总线,它采用冗余的总线结构,在当前传输线发生故障时可立刻切换到冗余传输线上,防止通信中断。同时,1553B协议严格规定了消息格式,限定了每条消息的最大传输数据量及总线单元的最大响应时间,并规范了总线耦合方式、......