ucore操作系统学习(七) ucore lab7同步互斥

Java30

1. ucore lab7介绍

ucore在前面的实验中实现了进程/线程机制,并在lab6中实现了抢占式的线程调度机制。基于中断的抢占式线程调度机制使得线程在执行的过程中随时可能被操作系统打断,被阻塞挂起而令其它的线程获得CPU。多个线程并发的执行,大大提升了非cpu密集型应用程序的cpu吞吐量,使得计算机系统中宝贵的cpu硬件资源得到了充分利用。

操作系统提供的内核线程并发机制的优点是明显的,但同时也带来了一些问题,其中首当其冲的便是线程安全问题。

并发带来的线程安全问题

线程安全指的是在拥有共享数据的多条线程并行执行的程序中,线程安全的代码会通过同步机制保证各个线程都可以正常且正确的执行,不会出现数据污染等意外情况。

举一个经典的例子:在高级语言中对于某一共享整型变量i(假设i=5)进行的i++操作,在最终的机器代码中会被分解为几个更细致的机器指令:

  1. 从内存的对应地址中读取出变量i的值(高级语言的变量在机器层面表现为一个内存地址),写入cpu的寄存器中(假设是edx)

  2. 对寄存器edx进行+1运算(运算后edx寄存器中的值为5+1=6)

  3. 将edx的值写入变量i对应的内存空间中(在高级语言层面看,写入edx中的新值后i变成了6)

通过之前lab5/lab6的学习,我们知道在i++具体的机器指令序列执行的每一步过程中,操作系统都可能通过时钟中断打断对应线程的执行,进行线程的上下文切换。机器指令是原子性的,但高级语言中的一条指令底层可能对应多个机器指令,在执行的过程中可能被中断介入,无法保证执行的连贯性。

输入验证码查看隐藏内容

扫描二维码关注本站微信公众号 Johngo学长
或者在微信里搜索 Johngo学长
回复 svip 获取验证码
wechat Johngo学长

相关文章
Java

MySQL 事务常见面试题总结 | JavaGuide

《Java 面试指北》来啦!这是一份教你如何更高效地准备面试的小册,涵盖常见八股文(系统设计、常见框架、分布式、高并发 ......)、优质面经等内容。 本文原发于 MySQL知识点&面试题总...
Java

Java中动态指定长度打印

C语言中的printf,sprintf打印实现 以前使用C语言的时候知道可以使用如下方法动态指定长度打印: 点击查看代码 printf("[%-*s]", 10, "he...
Java

ch04 Java流程控制

Java 流程控制 Scanner对象 通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取前一般使用hasNext()与hasNextLine()判断是否还有输入的数...
Java

JavaSE-对象所有字段判空

```java /* * 判断该对象是否所有属性为空 * 返回ture表示所有属性为null,返回false表示不是所有属性都是null / public static boolean isAllFi...
Java

Netty源码分析之ByteBuf引用计数

引用计数是一种常用的内存管理机制,是指将资源的被引用次数保存起来,当被引用次数变为零时就将其释放的过程。Netty在4.x版本开始使用引用计数机制进行部分对象的管理,其实现思路并不是特别复杂,它主要涉...
Java

idea-启动速度优化

原因:默认分配的内存太小了 解决方式:更改idea(64).exe.vmoptions配置 D:\ADBSpace\ProgramFiles\ideaIU-2021.2.win\bin 默认配置 ``...
Java

JVM-垃圾回收机制

引用计数法 可达性分析 Java 中常见的垃圾回收算法 标记-清除算法 复制算法 标记-整理算法 分代回收算法 内存分配机制 Minor GC 和 Full GC 垃圾收集器 在 JVM 进行垃圾回收...
Java

多线程相关知识整理

java内存区域和内存模型是不一样的东西,内存区域是指Jvm运行时将数据分区存储,强调对内存空间的划分。而内存模型是定义了线程和主内存之间的关系,即JVM在计算内存中的工作方式,如果我们想要深入了解J...
Java

TypeScript(6)函数

函数 函数是 JavaScript 应用程序的基础,它帮助你实现抽象层,模拟类,信息隐藏和模块。在 TypeScript 里,虽然已经支持类,命名空间和模块,但函数仍然是主要的定义行为的地方。Type...
Java

接口(Java)

基本介绍 普通类:只有具体实现 抽象类:具体实现和规范(抽象方法)都有 接口:只有规范(抽象方法)自己无法写方法~专业的约束!约束和现实分离:面向接口编程 接口就是规范,定义的是一组规则 接口的本质是...