一.多进程是操作系统基本图像

进程都是在内核进行

二.用户级线程

2.1线程引入

可以切指令不切表,也就是资源不动,指令执行分开,更加轻量化,从而提高效率,保留并发优点,避免进程切换代价,也就引入了线程.

2.2多线程例子

同时触发以及用yield交替执行

104是B的函数返回地址,将104压栈,其他也是陆续压栈,用两个执行序列和一个栈,就会发现第一个线程,居然返回的函数地址是404,也就是线程在乱跑. 

解决办法,一个序列一个栈,切回线程要将栈切回,用一个地方存放栈指针也就是TCB(thread control block),esp是cpu寄存器(理解为大脑),利用TCB和栈配合就解决了多线程执行问题,每个线程有自己的TCB和栈.

用户级线程缺点: 由于某个线程阻塞,导致进程阻塞,而内核并不知道,不会切换到下一个线程,会到另一个进程,这样浏览器例子就不会显示内容.

但是内核级线程就不会这样

三.内核级线程

3.1 多核利用核心级线程优势

并发:同时触发,交替执行,共用一套资源.这意味着,如果程序在单核处理器上运行,那么这两个线程将交替地换入或者换出内存。这些线程是同时“存在”的——每个线程都处于执行过程中的某个状态。
并行:同时触发,同时进行.如果程序能够并行执行,那么就一定是运行在多核处理器上。此时程序中的每个线程都将分配到一个独立的处理器核上,因此可以同时运行。

多核共用一套内存映射,真正实现核心级线程才能利用多核,如果用多进程,就需要不同资源(内存映射)那实际上对于多核就是一套资源反复切换,如果用用户级线程,操作系统是看不见的,没法使用多核.也就是多核只能适用于核心级线程才能发挥优势.

3.2和用户级线程对比  

进入内核只能是中断,INT指令是一个中断指令

四.总结

多个线程同时执行任务肯定存在线程间的同步和互斥:

  1. 线程同步:指线程之间所具有的一种制约关系,一个线程的执行依赖另外一个线程的消息,当它没有得到另一个线程的消息时应等待,直到消息到达时才被唤醒。

  2. 线程互斥:指对于共享的进程系统资源,每个线程访问时的排他性。当有若干个线程都要使用某一个共享资源时,任何时刻最多只允许一个线程去使用,其他线程必须等待,直到占用资源者释放该资源。线程互斥可以看成是一种特殊的线程同步。

线程间的同步方法大体可以分为两类:

  1. 用户模式(使用时不需要切换内核态,只在用户态完成操作):临界区:适合一个进程内的多线程访问公共区域或代码段时使用;

  2. 内核模式(利用系统内核对象的单一性来进行同步,使用时需要切换内核态与用户态):

    • 事件:通过线程间触发事件实现同步互斥;

    • 互斥量:适合不同进程内多线程访问公共区域或代码段时使用,与临界区相似;

    • 信号量:与临界区和互斥量不同,可以实现多个线程同时访问公共区域数据,原理与操作系统中PV操作类似,先设置一个访问公共区域的线程最大连接数,每有一个线程访问共享区资源数就减一,直到资源数小于等于零;

参考:

操作系统_哈尔滨工业大学_中国大学MOOC(慕课)

操作系统--用户级线程与内核级线程相关推荐

  1. 操作系统--用户级线程和内核级线程

    在多线程操作系统中,各个系统的实现方式并不相同.在有的系统中实现了用户级线程,有的系统中实现了内核级线程 1.内核级线程: (1)线程的创建.撤销和切换等,都需要内核直接实现,即内核了解每一个作为可调 ...

  2. 应用退出前不让线程切换_用户级线程和内核级线程,你分清楚了吗?

    前天晚上有个伙伴私信我说在学进程和线程,问我有没有好的方法和学习教程,刚好我最近也在备相关的课. 班上不少学生学的还是很不错的.拿班上小白和小明的例子吧(艺名哈).小明接受能力很强,小白则稍差些. 关 ...

  3. 用户级线程与内核级线程

    http://blog.csdn.net/yangzl2008/article/details/7014106 在多线程操作系统中,各个系统的实现方式并不相同.在有的系统中实现了用户级线程,有的系统中 ...

  4. 用户态和内核态:用户态线程和内核态线程有什么区别?

    转载 文章来源于 拉钩教育 重学操作系统 林䭽 用户态和内核态:用户态线程和内核态线程有什么区别? 什么是用户态和内核态 Kernel 运行在超级权限模式(Supervisor Mode)下,所以拥有 ...

  5. 操作系统——用户级线程和内核级线程(L10,L11,L12)

    用户级线程: 不同的进程的映射表不同,当一个进程中断了,我们需要切换到另外一个线程,就需要我们切换指令执行序列,切换与设备等各种资源,这样的效率是很低的 线程保留了并发的特点,又避免了进程切换的代价. ...

  6. OS / 线程的 3 种实现方式(内核级,用户级 和 混合型)

    1 .线程的 3 种实现方式 在传统的操作系统中,拥有资源和独立调度的基本单位都是进程.在引入线程的操作系统中,线程是独立调度的基本单位,进程是资源拥有的基本单位.在同一进程中,线程的切换不会引起进程 ...

  7. Linux下的LWP(轻量级进程)、进程 、 线程、用户级线程、内核线程

    一.定义 再看正文之前我要先强调一下几点: 1. Linux中没有真正的线程,但windows中确实有线程 2. Linux中没有的线程是由进程来模拟实现的(又称作:轻量级进程) 3. 所以在Linu ...

  8. 内核级线程(KLT)和用户级线程(ULT)

    文章目录 进程和线程 内核级线程(Kemel-Level Threads, KLT 也有叫做内核支持的线程) 纯内核级线程特点 用户级线程(User-Level Threads ULT) 纯用户级线程 ...

  9. 8.内核级线程(核心级线程)

    [README] 1.本文内容总结自 B站 <操作系统-哈工大李治军老师>,内容非常棒,墙裂推荐: 2.为什么要讲线程呢.实际要讲进程的切换:进程的切换包括切换指令,切换资源:切换指令就是 ...

最新文章

  1. 华科发布报告:41%研究生学霸是单身!
  2. 无线基站侧的信令风暴根因——频繁的释放和连接RRC产生大量信令、设备移动导致小区重选信令增加、寻呼信令多...
  3. 用C语言编写一个Linux下的简单shell程序
  4. Java千百问_05面向对象(012)_泛型是什么
  5. 计算机会计学ufo报表,ufo报表实验报告(共10篇).doc
  6. 这14个Java核心并发容器,Java高手和低手的区别点
  7. UML建模与软件工程
  8. H3CSE园区-RSTP
  9. 第六章 现在给我道歉还来得及~修改登录cookie进后台上传muma
  10. MVC项目实践,在三层架构下实现SportsStore-01,EF Code First建模、DAL层等
  11. 检查软件下载是否完整 MD5 工具使用 ----- md5sum
  12. python:实现9×9二维数组数独算法(附完整源码)
  13. 解决sourcetree特别卡的问题
  14. 你以为大厂的代码就不烂了?烂成一坨屎...
  15. 学生用计算机调整小数点后位数,计算器怎么改小数点位数
  16. 聊聊rel=external nofollow和rel=noopener noreferrer
  17. LVS+Keepalived实现高可用的ip负载均衡
  18. 自动化(Automation)基础概念:二次开发接口(API)与插件(Addin)
  19. 估算类问题-费米问题
  20. the 95th-percentile ,50th,99th等

热门文章

  1. 写在校招季,谈谈机器学习岗的Offer选择问题
  2. 通过预训练提升语言理解
  3. 论文浅尝 | How to Keep a Knowledge Base Synchronized
  4. 修改安装路径 pip 以及修改运行路径
  5. Nature发布第一张人类造血干细胞发育的全面路线图
  6. 【推荐系统算法学习笔记1】基本架构、专有名词、构建流程
  7. 常识知识在AI不同领域应用的最新研究进展
  8. 总结Vue中index.html、main.js、App.vue、index.js之间关系以及Vue项目加载流程
  9. leetcode-114-二叉树展开为链表*
  10. 虚拟机安装CentOS6.4