`

同步的本质

    博客分类:
  • JAVA
阅读更多

同步的本质

   首先我们得明白操作系统是如何执行程序的。对于进程和线程,操作系统设计者的目的是从概念上简化编程模型,使编程显得更自然,更符合思维习惯。

   操作系统设计者为使用进程和线程来编程提供了一个假设条件,即进程和线程各自的执行流是连贯的,没有任何断续执行的现象。但是实际上(以单CPU系统为例),从系统实现的底层看起来,这些进程和线程的执行流是支离破碎的,并且这些破碎的执行流片断被CPU以某种方式(即操作系统的调度程序)组合成一个串行的、混合在一起的执行流,以此推动操作系统不断运行。

    问题就在这里,同步问题的根源就在于看起来连贯的执行流实际上是破碎的。破碎的执行流会造成什么问题呢?

    比如有两个执行流A和B,A对现在需要对一个数据进行操作,但是这个操作被分割成了相连的两块执行流碎片,而另外一个执行流B本来需要在A完成这个数据操作之后才能取到这个数据然后进行它自己的计算,可是由于A对数据本应完整的操作被分割成了相连的两部分,然后CPU在A的碎片之间插入了B的取数这样一个执行流片断。

    这样一来,程序的行为就不符合我们原本所设想的那样,程序运行的结果就会出错。同步的本质就是让CPU不要把A的数据操作分割开,不让B有机会错误的横插一杠进来扰乱A,以保证正确的执行顺序,这样才能得到正确的我们想要的结果。   

   不管你看起来执行得多么快的操作,都有可能被操作系统打断,从而形成碎片,导致无法预料的结果。

   所以,应该在需要精确时序的地方使用同步,而不是根据这个操作快不快来判断。所谓需要精确时序场合,其实就是数据的使用或操作的执行存在依赖性的地方,对于代码来说,就是完成某项操作时对参与的进程或线程执行顺序存在依赖性的代码块。

分享到:
评论

相关推荐

    文件夹同步程序 文件夹 同步

    - **版本控制**:开发者常用Git等工具进行代码版本控制,其实质也是一种文件同步,确保团队成员的代码库一致。 - **移动设备同步**:手机、平板电脑与电脑之间的照片、音乐和联系人同步。 - **云存储**:通过...

    影音同步权探析

    影音同步权本质上属于著作权中的复制权,仅控制视听作品制作环节时同步配用音乐的行为,而不涵盖对音乐作品进行表演、播放等后续传播行为。在中国著作权法语境下适用影音同步权时,应围绕该权利的法律本质,正确理解其与...

    混沌同步的一些新结果

    这些成果不仅有助于理论研究者更好地理解混沌同步的本质,也为工程技术人员在实际应用中实现混沌同步提供了强有力的工具和支持。未来的研究方向可能包括探索更广泛的混沌系统类型、开发更高效的同步算法以及深化混沌...

    can_同步的研究

    以CAN技术规范为基础,深入分析CAN总线的位定时和同步机制,给出硬同步和重同步的定义,并给出相应的图解解释方式,对位时间的...这里的工作对理解位定时和同步机制的本质、指导位时间参数的设置均具有较高的参考价值。

    基于哈希树的分布式目录同步方法.pdf

    所谓伪冲突,是指在不同副本间产生冲突的假象,实际上文件内容并没有实质性的改变。 冲突检测是指系统在执行同步操作时,能够发现并处理副本间的不一致问题。在目录副本同步过程中,冲突检测是同步过程中不可或缺的...

    时钟同步技术

    时钟技术实质上是一种时间频率控制技术,它通过对频率的稳定性进行控制来确保频率的准确性,进而控制时间长度。时钟技术的重要性在于时间频率具有极高的准确性,目前的时间频率测量精度已能达到10E-16量级。 时间...

    Ext.Ajax.request2.x实现同步请求

    首先,我们需要理解Ajax的本质,它是Asynchronous JavaScript and XML的缩写,虽然现在XML已不再是主要的数据交换格式,但其核心思想——异步通信依然被广泛使用。异步请求允许用户在等待服务器响应的同时继续进行...

    Java多线程同步具体实例讲解 .doc

    值得注意的是,同步块和同步方法的本质是一样的,都是通过获取对象的锁来实现同步。在同步块中,我们可以指定任何对象作为锁,而在同步方法中,锁默认是当前对象。在这个例子中,`sell()`方法使用`this`作为锁,而...

    混沌同步控制

    由于抖振可能破坏神经元的本质特性,因此动态滑模控制在混沌同步控制中尤为重要。 自适应控制技术能够在系统参数未知或变化的情况下,自动调节控制器参数以满足系统的控制需求。将自适应技术与反演控制相结合,可以...

    电子CAD课程Protel99同步器的剖析.pdf

    网络表实质上是一个文本文件,记录了原理图或PCB图中元件之间连线关系的信息。使用网络表进行设计的过程涉及生成网络表、创建新的PCB文件、引入网络表和放置元件等步骤。这种方法虽然能够实现原理图和PCB图的同步...

    C# 线程同步详解

    多个线程同时访问共享数据的时,线程同步能防止数据损坏,之所以强调同时这个概念,因为线程同步本质就是计时问题。 异步和同步是相对的,同步就是顺序执行,执行完一个再执行下一个,需要等待、

    操作系统\ 进程同步.pdf

    它本质上是一个整型变量,可以被多次加锁和解锁。当信号量的值大于零时,进程可以进入临界区;当信号量的值小于等于零时,请求进入临界区的进程将被阻塞,直到有其他进程释放资源为止。 ### 经典同步问题 经典同步...

    论文研究-异结构混沌系统的有限时间同步控制 .pdf

    该方法的实质是利用反馈控制来调整系统的动态行为,实现系统间的稳定连接。 在本文中,研究对象是Chen系统和Liu系统。Chen系统是一种三维动力学系统,具有复杂的动力学行为,容易进入混沌状态。Liu系统也是一种常见...

    DSP和FPGA协同处理的雷达时间同步方法.pdf

    该方法的核心在于利用秒级时间信息和秒脉冲信号实现毫秒级时间与秒级时间信息的同步,这实际上是雷达与平台系统时间同步问题的本质所在。 文章中提到了一种错误的时间同步方法,即简单的毫秒级计数方法。这种方法的...

    Linux系统编程之线程同步

    所以,互斥锁实质上是操作系统提供的一把“建议锁”(又称“协同锁”),建议程序中有多线程访问共享资源的时候使用该机制。但,并没有强制限定。 因此,即使有了mutex,如果有线程不按规则来访问数据,依然会造成...

    跨越鸿沟:同步世界中的异步信号

    ### 跨越鸿沟:同步世界中的异步信号——深入解析MCU与FPGA之间...通过理解亚稳态问题的本质并采取有效的同步措施,可以显著提高系统的性能和可靠性。对于现代IC、ASIC及FPGA的设计者而言,掌握这些技术是非常必要的。

Global site tag (gtag.js) - Google Analytics