操作系统-线程引入

引入:

1、每个服务进程都有自己的独立的地址空间,不能共享信息 ,无并发,阻塞系统调用

2、从时间和空间开销上讲,进程相关的操作开销大,线程的开销小,并且线程之间相互通信无需调用内核,统一进程内的线程共享内存和文件

3、性能考虑:一个进程中有多个线程的话可以支持多个任务同时进行

概念:

进程中的一个运行实体,是CPU的调度单位,有时将线程称为轻量级进程

前面讲了,进程的两个基本属性:资源的拥有者,CPU调度单位,线程继承了后者

属性:

标识符ID

状态和状态转换

不运行时需要保存上下文(即每个线程有上下文环境,他们是各种寄存器)

自己的栈和栈指针

共享所在进程的地址空间和资源

可以创建、撤销另一个线程(程序开始是以一个单线程进程方式运行,即有主线程创建其他线程)

实现:

1、用户级线程Unix

2、核心级线程Windows

(1) 内核管理所有线程管理,并向应用程序提供API接口

(2) 内核维护进程和线程上下文

(3) 线程的切换需要内核支持

(4)以线程为基础进行调度

3、混合模型

原文地址:https://www.cnblogs.com/yb38156/p/9747851.html

时间: 2024-10-13 15:47:20

操作系统-线程引入的相关文章

erlang进程与操作系统线程

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

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

进程至少包括一个主线程,还有工作线程狭隘的讲:线程通信就是进程范围内主线程与工作线程 或者 工作线程之间的通信 进程通信,是进程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执行所

【转】java jvm 线程 与操作系统线程

原文链接:http://segmentfault.com/q/1010000000370403 Java的目标是要跨平台,而不同的操作系统(如类Unix和Windows)其任务调度机制有很大的不同,故Java在JVM层面抽象了一套自己的线程机制,用以映射不同的操作系统的任务调度.如你所述的一些缺点,Java在1.1版本之后,这个线程模块就是基于内核级别线程[1]. 首先,如果一个机器上只有一个逻辑CPU,此时系统调度器通过轮换时间片的方式来调度任务,所以不存在真正的并行,只是并发:只有多个逻辑C

操作系统--线程介绍

线程介绍 线程是进程中的一个实体,是独立调度和分派的基本单位. 线程自身基本上不拥有系统资源,只拥有少许运行中必不可少的私有资源.线程可与同属一个进程的其他线程共享进程的全部资源. 线程使用的目标 线程使用的目标:既能提高进程并发度,又能降低系统的额外开销. 线程的实现 实现:将进程的资源申请和调度属性分开.即进程作为资源的申请和拥有者,但不作为调度的基本单位.这样,就产生了线程的概念. 线程状态 线程状态:就绪,执行,阻塞. 线程类型 用户级线程:用户级线程的创建,撤销及切换等操作全部由支持线

[操作系统] 线程和进程的简单解释

进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握. 最近,我读到一篇材料,发现有一个很好的类比,可以把它们解释地清晰易懂. 1. 计算机的核心是CPU,它承担了所有的计算任务.它就像一座工厂,时刻在运行. 2. 假定工厂的电力有限,一次只能供给一个车间使用.也就是说,一个车间开工的时候,其他车间都必须停工.背后的含义就是,单个CPU一次只能运行一个任务. 3. 进程就好比工厂的车间,它代表CPU所能处理的单个任务.任一时刻,CPU总是运行一个进程,其

操作系统中的进程与线程

操作系统中的进程与线程 转自:http://www.cnblogs.com/CareySon/archive/2012/05/04/ProcessAndThread.html 简介 在传统的操作系统中,进程拥有独立的内存地址空间和一个用于控制的线程.但是,现在的情况更多的情况下要求在同一地址空间下拥有多个线程并发执行.因此线程被引入操作系统. 为什么需要线程? 如果非要说是为什么需要线程,还不如说为什么需要进程中还有其它进程.这些进程中包含的其它迷你进程就是线程. 线程之所以说是迷你进程,是因为

操作系统中线程的实现模型

转自https://blog.csdn.net/fuzhongmin05/article/details/55802984 1.为什么需要线程? 首先需要回答一个问题,为什么操作系统需要线程.如果非要说是为什么需要线程,还不如说为什么需要进程中还有其它进程.这些进程中包含的其它迷你进程就是线程.进程有以下缺陷: 1.进程只能在一个时间内干一件事(执行一个程序执行流),而如果想同时干两件或多件事情,进程就不够用了.2.进程在执行过程中如果阻塞,例如等待输入,整个进程就将挂起,而无法继续执行.这样,