`

1.并发简介

 
阅读更多
1、单道程序,即在内存中只有一个程序运行,在这个程序结束之前其他程序无法使用内存。
2、多道程序:多道程序设计技术是在计算机内存中同时存放几道相互独立的程序,使它们在管理程序(我们后来常说的内核)控制下,相互穿插运行,两个或两个以上程序在计算机系统中同处于开始到结束之间的状态, 这些程序共享计算机系统资源。多道程序的发展,在一定程度上促进了操作系统和多cpu的发展。

3、为什么后来会引入进程?
由于程序在并发执行时,可能会造成执行结果的不可再现,所以用“程序”这个概念已无法描述程序的并发执行,所以必须引入新的概念—进程来描述程序的并发执行,并要对进程进行必要的管理,以保证进程在并发执行时结果可再现。

进程(Process)定义:可并发执行的程序在一个数据集合上的运行过程。进程具有如下特征:

4、为什么要引入线程?
由于进程是资源的拥有者,所以在创建、撤销、切换操作中需要较大的时空开销,限制了并发程度的进一步提高。为减少进程切换的开销,把进程作为资源分配单位和调度单位这两个属性分开处理,即进程还是作为资源分配的基本单位,但是不作为调度的基本单位(很少调度或切换),把调度执行与切换的责任交给“线程”。这样做的好处不但可以提高系统的并发度,还能适应新的对称多处理机(SMP)环境的运行,充分发挥其性能。

线程定义:线程是指程序在执行过程中,能够执行程序代码的一个执行单元。

线程的优势 :发挥多处理器的强大能力,提高单处理器的吞吐率,程序响应更快。

5、联系:一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行.

相对进程而言,线程是一个更加接近于执行体的概念,它可以与同进程中的其他线程共享数据,但拥有自己的栈空间,拥有独立的执行序列。

6、区别

  进程和线程的主要差别在于它们是不同的操作系统资源管理方式。进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。

1) 简而言之,一个程序至少有一个进程,一个进程至少有一个线程.

2) 线程的划分尺度小于进程,使得多线程程序的并发性高。

3) 另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。

4) 线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。

5) 从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别。

7、线程带来的风险

1)安全性问题:单线程条件下因为不存在共享变量可以保证程序的正确性,多线程条件下如果没有正确的同步,多个线程中操作执行顺序是不可预测的,可能产生无法预料的结果。
2)活跃性问题:活跃性定义为某件正确的事情一定会发生,例如:死锁

3)性能问题:线程会带来一定成都的运行时开销,上下文切换,反复保存,恢复上下文,cpu将更多时间花在线程调度而不是线程运行上。当共享变量时必须使用同步机制,而这些机制往往会抑制某些编译器优化,使内存缓冲区的的数据无效,以及增加共享内存总线的同步流量。这些因素都会带来一定程度上的性能开销。
分享到:
评论

相关推荐

    【文件夹】Go语言并发之道.pdf

    第1章 并发概述 9 摩尔定律,Web Scale和我们所陷入的混乱 10 为什么并发很难? 12 竞争条件 13 原子性 15 内存访问同步 17 死锁、活锁和饥饿 20 确定并发安全 28 面对复杂性的简单性 31 第2章 对你的代码建模:通信...

    复旦nois教材01.rar

    1 第一章 绪论....................................................................................................................................1 1.1 概述................................................

    20120813_并发简介1

    并发简介并发的定义在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但是任一个时刻点上只有一个程序在

    Java并发编程实战

    第1章 简介 1.1 并发简史 1.2 线程的优势 1.2.1 发挥多处理器的强大能力 1.2.2 建模的简单性 1.2.3 异步事件的简化处理 1.2.4 响应更灵敏的用户界面 1.3 线程带来的风险 1.3.1 安全性问题 1.3.2 活跃性...

    Java并发编程实战2019.zip

    Java并发编程实战,第1章 简介,第2章 线程安全性 第3章 对象的共享 第4章 对象的组合 第5章 基础构建模块 第6章 任务执行 第7章 取消与关闭 第8章 线程池的使用 第9章 图形用户界面应用程序 第10章 避免...

    Eclipse权威开发指南1.pdf

    第1章 引言 3 1.1 Eclipse作为应用程序开发 工具的宿主...... 4 1.2 不仅仅是工具的宿主,Eclipse 还作为客户端应用程序的 宿主...... 5 1.3 什么是Eclipse?...... 6 1.3.1 工具与应用程序的集成平台...

    国嵌培训课件Linux驱动程序设计

    第一天 1.Linux驱动简介 2.字符设备驱动程序设计 3.驱动调试技术 4. 并发与竞态 第二天 1.Ioctl型驱动 2.内核等待队列 3. 阻塞型驱动程序设计 4.Poll设备操作 第三天 1.Mmap设备操作 2. 硬件访问 3. 混杂...

    业级超高并发与高可用架构实现 JUC高并发编程 Java.Util.Concurrent源码+原理解析

    Java.Util.Concurrent是在并发编程中很常用的实用工具类。此包包括了几个小的、已标准化的可扩展框架,以及一些提供...├─课程简介.mp4 (4)\资料;目录中文件数:1个 ├─hotspot-87ee5ee27509.zip (5)\视频\day01-3.

    linux网路编程 中文 23M 版

    第3 章文件系统简介........................................................ 61 3.1 Linux下的文件系统.................................................. 61 3.1.1 Linux下文件的内涵...........................

    史上最强全面解析SQLite

    改良的并发性 ..................................................................... 13 致谢 ............................................................................. 13 SQLite 第三版中的数据类型......

    Java 7并发编程实战手册

    1.1 简介 1 1.2 线程的创建和运行 2 1.3 线程信息的获取和设置 5 1.4 线程的中断 9 1.5 线程中断的控制 11 1.6 线程的休眠和恢复 15 1.7 等待线程的终止 17 1.8 守护线程的创建和运行 20 ...

    精通websphere MQ

    简介.......................................................................................................... 16 1.1.1 消息中间件.......................................................................

    DM8_SQL语言使用手册.pdf

    第 1 章 结构化查询语言 DM_SQL 简介 ....................................................................1 1.1 DM_SQL 语言的特点 ............................................................................

    Linux多线程服务端编程:使用muduo C++网络库

    《Linux多线程服务端编程:使用muduo C++网络库》主要讲述采用现代C++在x86-64 Linux上编写多线程TCP网络服务程序的主流常规技术,重点讲解一种适应性较强的多线程服务器的编程...第6章muduo 网络库简介125 6.1由来. ....

    JBoss Seam 工作原理、seam和hibernate的范例、RESTFul的seam、seam-gen起步、seam组件、配置组件、jsf,jboss、标签、PDF、注解等等

    JBoss Seam 简介......................................................................................................................................................................... 11 Chapter 1. ...

    Eclipse权威开发指南2.pdf

    第1章 引言 3 1.1 Eclipse作为应用程序开发 工具的宿主...... 4 1.2 不仅仅是工具的宿主,Eclipse 还作为客户端应用程序的 宿主...... 5 1.3 什么是Eclipse?...... 6 1.3.1 工具与应用程序的集成平台..... 6 ...

    论文研究 - 巴马科加布里埃尔·图尔大学医院的手术后并发症(CPPO)

    简介:尽管使用了侵入性较小且越来越有效的技术来降低每次手术后的死亡率,CPPO仍然是外科手术中的重要问题。 目的:确定术中和术后并发症的发生率,描述并发症的类型并确定其危险因素。 方法:这是2016年4月4日至6...

    Qcon北京2018-《百万级并发商品服务架构解密》-丁鸣亮.pdf

    1. 百万级并发商品服务 架构解密 分享人:丁鸣亮 2. 3. 4. 个人简介 Personal Profile 分享人: 丁鸣亮 职位: 商品库存中心负责人 工作经历: p 网易印像派

    DB2 内部培训(V1.0)

    2.3 DMS和SMS表空间简介.......................................................................................3 2.4 SMS与DMS的对比.........................................................................

    Java 并发编程实战

    第1章 简介 1.1 并发简史 1.2 线程的优势 1.2.1 发挥多处理器的强大能力 1.2.2 建模的简单性 1.2.3 异步事件的简化处理 1.2.4 响应更灵敏的用户界面 1.3 线程带来的风险 1.3.1 安全性问题 1.3.2 活跃性...

Global site tag (gtag.js) - Google Analytics