自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 问答 (2)
  • 收藏
  • 关注

翻译 Three easy pieces 第一部分(8) Multiprocessor Scheduling

欢迎来到多核的时代。首先什么是多核,就是因为单核的速度无法提升,所以只能以增加核心的方式来提升cpu 的速度。而且需要注意的是每个核心都有对应的缓存,所以这个会导致缓存不一致的情况。另外还需要考虑的就是并发的问题,这个可以通过加锁机制来完成。另外对于多核来说,会带来一个新的问题,那就是缓存关联性(Cache Affinity)。也就是说,如果一个进程如果能够一直运行在一个核上,那么就可以利用高速缓...

2018-05-28 16:15:24 224

翻译 Three easy pieces 第一部分(6) Scheduling: The Multi-Level Feedback Queue

这一章对新的调度策略MLFQ进行讲解。1.MLFQ的的规则    我们会有一些队列,不同的队列对应不同的优先级.对于队列中的进程,调度的规则如下:    (1)如果Priority(A) > Priority(B),那么A运行。    (2)如果Priority(A) = Priority(B),那么A,B按照Round-Robin方式运行。    (3)当一个任务创立的是时候,它在最高的优...

2018-05-28 16:03:08 781

翻译 Three easy pieces 第一部分(5) Scheduling: Introduction

这一章主要是介绍几个简单的调度器策略。内容比较简单,就简单汇总下。首先我们对现有的计算机环境有如下几个假设:1.每个job都运行相同的时间。2.所有的job都同时到达3.一旦一个job启动,那么他就会一直运行到结束。4.所有的job不会有I/O5.每个job运行的时间都是可知的。我们先引入一个效率的测量值:turnaround timeTturnaround = Tcompletion − Tar...

2018-05-28 16:01:22 351

翻译 Three easy pieces 第一部分(4) Mechanism: Limited Direct Execution

1.如果直接让程序直接运行在没有OS干涉的硬件上,会有什么问题?这个是书中给出的直接运行的流程图,会带来如下的问题: (1)怎么限制程序的行为,因为一个程序不能肆无忌惮的对硬件进行操作。 (2)怎么切换进程呢?2.怎么让程序执行的行为得到控制?    cpu的状态分为user mode和kernel mode。在user mode下,很多指令是无法执行的,比如对于DISK的操作。    OS提供s...

2018-05-28 15:59:28 529

翻译 Three easy pieces 第一部分(2) The Abstraction: The Process

这一章引入了process的概念。虚拟化cpu是通过time sharing的方式来进行的,

2018-05-28 15:56:52 148

翻译 Three easy pieces 第一部分(1) Introduction to Operating Systems

一个程序在运行的时候发生了什么呢?其实只是一些非常简单的事情:运行指令。处理器从内存中取出指令,译码然后执行。这条指令执行完毕后就又去执行新的指令,一直这样继续下去,直到程序执行完毕。这里,我们所描绘的就是计算机的基本模型-冯诺依曼模型。听起来很简单不是吗?但是在这个课堂上,我们将学习程序在运行的时候,其他的一些不一样的知识,这些知识能够让系统更加的好用。有一个软件,它负责让你更容易的运行程序(甚...

2018-05-28 15:55:52 192

原创 Three easy pieces 第二部分(2)

1.如何评价构造的lock?    (1)功能性。就是你这个lock到底能不能有效果。    (2)公平性。你不能让某个thead永远获取不到lock    (3)效率。对于只有一个thread的情况不能因为锁代码导致效率变低。分别对于单核和多核的情况,锁的获取和释放的效率如何2.如果构造lock?     (1)停止中断     (2)Test-and-Set。硬件提供原子性的操作,从而可以构成...

2018-05-22 18:09:09 375

原创 关于虚拟存储器和高速缓存的理解

对于csapp中的高速缓存和虚拟存储器章节做个总结,这些可以帮助我更好的理解java中的NIO以及并发。先记录下一些名称的英文缩写:PP(physical page)物理页VP (virtual page)虚拟页VA (Virtual Address)虚拟地址              VPO(虚拟页面偏移)+VPN(虚拟地址页号)+TLBI(TLB索引)+TLBT(TBL标记)

2017-05-25 09:51:26 2450

原创 关于java的future和Executor接口的理解

在创建线程的方法中,一种是实现Runnable接口的方式,但是这种方式是没有办法获取返回值和捕获异常的,所以这里来说说可以让线程返回执行结果的Future,Callable,Executor接口。首先说下Callable接口,这个接口只有一个方法如下:public V call();和Runnable不同的是,Thread类不会接受一个Callable接口的实现来实现一个线程,而是需要

2017-05-24 16:51:36 366

原创 关于ReentrantLock类的解读

synchronized关键字提供了语言级别的并发支持,通过这个关键字,标明了可能会产生竞态代码的区域,这样多线程调用的时候就会保证同一时间只有 一个线程可以进入,消除了多线程的问题. 但是用synchronized关键字实现的并发是很重量级别的,因为没有获取到对应锁的线程会阻塞,如果要运行就需要调度,这会涉及到内核的 线程调度,这块的消耗是很大的,可能调度的时间会比你实际代码运行的时

2017-05-22 09:02:28 683

原创 关于Thread的中断解释

尝试总结下。

2017-04-24 16:40:30 264

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除