栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

进程与线程

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

进程与线程

进程与线程

进程是系统分配资源的基本单位,线程是调度cpu的基本单位,一个进程至少包含一个执行线程,线程寄生在进程之中。每个线程都有一个程序计数器(记录要执行的下一条指令),一组寄存器(保存当前线程的的工作变量),堆栈(记录执行历史,其中每一帧保存了一个已经调用但未返回的过程)

线程分为两类
  • 用户级线程(ULT),cpu权限级别ring3普通用户可操作
  • 内核级线程(KLT),cpu权限级别ring0才可操作
用户空间划分
  • 内核空间,KLT

系统核心跑在内核空间,ring0才有权限创建线程

  • 用户空间,ULT

进程(JVM虚拟机,ps,word等)跑在用户空间,通过交互接口来跑内核空间的线程。只要主进程进行切换会发生阻塞。

volatile

        解决了并发编程的可见性

JMM(java内存模型)

                工作内存 = 虚拟机栈

                主内存 = 方法区 + 堆(jdk7及之前,静态属性在方法区),主内存 = 堆(jdk1.8及以后)

JVM(虚拟机内存模型) 指令重排
  • 一种现象,而非一种动作
  • cpu为了提升效率其实是乱序执行代码,优点性能高
  • 什么样代码会乱序执行?as-if-serial语义(乱序执行的一种约束),所有的操作可以为了优化重新排序,但是必须保重排序后结果不能改变

        Java层面:

                没有发生重排

        Hotspot层面:

                发生了重排,提高cpu利用率,GCC编译优化(默认O2级优化):优化无效代码,进行简单运算,指令乱排序

DCL为什么加volatile?

DCL:双重检查,是一种单例模式,加不加都没问题

屏障:

        内存屏障

        编译屏障

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/827944.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号