操作系统--线程介绍

线程介绍

线程是进程中的一个实体,是独立调度和分派的基本单位。 
线程自身基本上不拥有系统资源,只拥有少许运行中必不可少的私有资源。线程可与同属一个进程的其他线程共享进程的全部资源。

线程使用的目标

线程使用的目标:既能提高进程并发度,又能降低系统的额外开销。

线程的实现

实现:将进程的资源申请和调度属性分开。即进程作为资源的申请和拥有者,但不作为调度的基本单位。这样,就产生了线程的概念。

线程状态

线程状态:就绪,执行,阻塞。

线程类型

用户级线程:用户级线程的创建,撤销及切换等操作全部由支持线程的应用程序完成,内核并不知道线程的存在。 

内核级线程:内核级线程的管理全由系统内核完成,应用程序无权进行线程切换等操作,系统为引用程序提供了相应的应用程序编程接口API。 

时间: 2024-10-11 17:59:11

操作系统--线程介绍的相关文章

进程/线程介绍

一.进程 进程可以认为是程序执行时的一个实例.进程是系统进行资源分配的独立的实体,且每个进程拥有独立 的地址空间.一个进程无法直接访问另一个进程的变量和数据结构,如果希望让一个进程访问另一个进程 的资源,需要使用进程间通信,比如:管道,有名管道,信号,信号量,消息队列,套接字等. 一个进程可以拥有多个线程,每个线程使用其所属进程的栈空间.线程和进程的一个主要区别是,同一程序内 的多个线程会共享部分状态,多个线程可以读写同一块内存(一个进程无法直接访问另一进程的内存).同时 每个线程还拥有自己的寄

erlang进程与操作系统线程

erlang多进程与多线程: 在erlang开发中,我们面对的最小执行单位是进程,当然这个进程并不是系统层面上的进程,也不是线程.而是基于erlang运行时系统的一个进程.那么erlang的多进程是如何变成系统级别上的多线程,进而被多核处理器处理呢? 其实,我们每启动一个erlang VM,实际上就启动了模拟器+erlang运行时系统.而每个erlang运行时系统会启动N个进程调度器,每个进程调度器都是一个独立的操作系统线程.这个调度器会处理一个进程池,进程池里面是M个erlang进程.也就是说

Perl线程介绍

Perl 中的线程 本文首先概述了线程的概念和意义,接着回顾了 Perl 语言中对线程支持的演化历史,然后通过一系列示例重点介绍了 Perl 中线程的实现,数据的共享以及线程间的同步,最后归纳并总结了全文主要内容. 线程概述 线程是一个单一的执行流程,它是所有程序执行过程中最小的控制单位,即能被 CPU 所调度的最小任务单元.线程与进程之间既有联系,又完全不同.简单地说,一个线程必然属于某一个进程,而一个进程包含至少一个或者多个线程.早期的计算机系统一次只能运行一个程序,因此,当有多个程序需要执

操作系统--线程同步和进程同步的区别

进程至少包括一个主线程,还有工作线程狭隘的讲:线程通信就是进程范围内主线程与工作线程 或者 工作线程之间的通信 进程通信,是进程A(可以理解为主线程) 与 进程B(可以理解为主线程)之间的通信 这个 同步 的概念都是一至的. 不论是进程还是线程.不同在于所采用的同步方式, 进程的同步方式是线程的同步方式的子集. 换句话说, 进程之间的同步方式会比线程之间同步方式选择小. 就这样而已.. 线程通信一般是指同一进程内的线程进行通讯,由于在同一进程内,共享地址空间,因此交互比较容易,全局变量之类的都能

操作系统-线程与进程

首先要分清楚进程和线程的区别. 借用<操作系统概念>的一幅图: 线程由线程ID.程序计数器.寄存器集合和栈组成. 进程由代码段.数据段.文件.线程组成. 可以想象成一个进程可以有多个线程.而每个线程可以共享进程里面的代码段.数据段等. 举个例子. #include <stdio.h> #include <pthread.h> static int counter = 0; void* mythread(void* arg) { int i; for (i = 0; i

操作系统 - 线程

之前已经讨论过进程了,现在讨论线程.我在想如何用现实中的具体事物来比较进程和线程的关系. 举个我认为较恰当的例子.把进程比作一个工厂中的车间,车间中有若干个生产线,但是每条生产线都需要不同的零件,原料和员工.零件,原料和员工,是所有生产线都可以共同使用的资源.这里就把生产线当做线程吧.这样,每条生产线就只用管自己的生产过程. 就如讨论进程一样,这里还是列举一下线程所包含的实体. Program counter Register Statck State 不难发现,线程关心的只是下一刻CPU执行所

JVM 内部运行线程介绍

线程 所属 说明 Attach Listener JVM           Attach Listener线程是负责接收到外部的命令,而对该命令进行执行的并且吧结果返回给发送者.通常我们会用一些命令去要求jvm给我们一些反馈信息,如:java -version.jmap.jstack等等.如果该线程在jvm启动的时候没有初始化,那么,则会在用户第一次执行jvm命令时,得到启动. Signal Dispatcher JVM         前面我们提到第一个Attach Listener线程的职

java jstack dump 线程 介绍 解释

最近抽时间把JVM运行过程中产生的一些线程进行了整理,主要是围绕着我们系统jstack生成的文件为参照依据.  前段时间因为系统代码问题,造成性能到了天花板,于是就dump了一份stack出来进行分析.  看stack其实也需要一定的经验,毕竟它里面很多线程不可能都是有问题,所以,需要对他们有一定认识.  现在市面上很少有人对这一块做整理,所以,导致很多新人在拿到一个stack文件之后,也是一头雾水. 下面我把这次整理的一些个人认为比较重要的线程列出来,供大家参考. 如果发现有什么写得不对或者可

C# ----- 线程介绍(一)

C#支持通过多线程并行地执行代码,一个线程有它独立的执行路径,能够与其它的线程同时地运行.一个C#程序开始于一个单线程,这个单线程是操作系统自动创建的,并具有多线程创建额外的线程.这里的一个简单的例子及其输出: 结果: 主线程创建了一个新线程“t”,它运行了一个重复打印字母"y"的方法,同时主线程重复但因字母“x”.CLR分配每个线程到它自己的内存堆栈上,来保证局部变量的分离运行.在接下来的方法中我们定义了一个局部变量,然后在主线程和新创建的线程上同时地调用这个方法.  线程是如何工作