非阻塞同步在大多数情况下,我们为了实现线程安全都会使用Synchronized或lock来加锁进行线程的互斥同步,但互斥同步的最主要的问题就是进行线程的阻塞和唤醒所带来的性能问题,因此这种阻塞也称作阻塞同步。从处理问题的方式上说,互斥同步属于一种悲观的并发策略,总是认为只要不去做正确的同步措施,那就肯定会出现问题,无论共享数据是否真的会出现竞争,它都会进行加锁、用户态核心态转换、维护锁的计数器和检查...
分类:
编程语言 时间:
2016-06-21 06:56:42
阅读次数:
213
sendfile实质是linux系统中一项优化技术,用以发送文件和网络通信时,减少用户态空间与磁盘倒换数据,而直接在内核级做数据拷贝,这项技术是linux2.4之后就有的,现在已经很普遍的用在了C的网络端服务器上了,而对于java而言,因为java是高级语言中的高级语言,至少在C语言的层面上可以提供... ...
分类:
其他好文 时间:
2016-06-21 01:06:47
阅读次数:
142
sendfile实质是linux系统中一项优化技术,用以发送文件和网络通信时,减少用户态空间与磁盘倒换数据,而直接在内核级做数据拷贝,这项技术是linux2.4之后就有的,现在已经很普遍的用在了C的网络端服务器上了,而对于java而言,因为java是高级语言中的高级语言,至少在C语言的层面上可以提供... ...
分类:
其他好文 时间:
2016-06-20 23:40:57
阅读次数:
320
主要介绍内核抢占的相关概念和具体实现,以及抢占对内核调度和内核竞态和同步的一些影响。1. 基本概念
用户抢占和内核抢占
用户抢占发生点
当从系统调用或者中断上下文返回用户态的时候,会检查need_resched标志,如果被设置则会重新选择用户态task执行
内核抢占发生点
当从中断上下文返回内核态的时候,检查need_resched标识以及__preemp_count计数,如果标识被设置,并且...
分类:
系统相关 时间:
2016-06-18 17:04:16
阅读次数:
508
1 Gevent 协程 协程,又称微线程,纤程。英文名Coroutine。一句话说明什么是线程:协程是一种用户态的轻量级线程。 协程拥有自己的寄存器上下文和栈。协程调度切换时,将寄存器上下文和栈保存到其他地方,在切回来的时候,恢复先前保存的寄存器上下文和栈。因此: 协程能保留上一次调用时的状态(即所 ...
分类:
编程语言 时间:
2016-06-10 14:58:49
阅读次数:
185
一:java多线程互斥,和java多线程引入偏向锁和轻量级锁的原因? >synchronized的重量级别的锁,就是在线程运行到该代码块的时候,让程序的运行级别从用户态切换到内核态,把所有的线程挂起,让cpu通过操作系统指令,去调度多线程之间,谁执行代码块,谁进入阻塞状态。这样会频繁出现程序运行状态 ...
分类:
编程语言 时间:
2016-06-08 15:31:32
阅读次数:
418
一、CAS和synchronized适用场景 1、对于资源竞争较少的情况,使用synchronized同步锁进行线程阻塞和唤醒切换以及用户态内核态间的切换操作额外浪费消耗cpu资源;而CAS基于硬件实现,不需要进入内核,不需要切换线程,操作自旋几率较少,因此可以获得更高的性能。 2、对于资源竞争严重 ...
分类:
编程语言 时间:
2016-06-08 12:08:30
阅读次数:
313
一:大话版用户态和内核态 (1)用户态和内核态的概念? >内核态: CPU可以访问内存所有数据, 包括外围设备, 例如硬盘, 网卡. CPU也可以将自己从一个程序切换到另一个程序 >用户态: 只能受限的访问内存, 且不允许访问外围设备. 占用CPU的能力被剥夺, CPU资源可以被其他程序获取 (1) ...
分类:
编程语言 时间:
2016-06-07 17:54:35
阅读次数:
294
前言:
开发和维护内核是一件很繁杂的工作,因此,只有那些最重要或者与系统性能息息相关的代码才将其安排在内核中。其它程序,比如GUI,管理以及控制部分的代码,一般都会作为用户态程序。用户态和内核态的通讯机制IPC(interprocess
communication )机制:比如系统调用,ioctl接口,proc文件系统以及netlink socket。
介绍:
netlink so...
分类:
Web程序 时间:
2016-06-06 01:19:54
阅读次数:
459
一、进程 操作系统中最核心的概念是进程,分布式系统中最重要的问题是进程间通信。 进程是“程序执行的一个实例” ,担当分配系统资源的实体。进程创建必须分配一个完整的独立地址空间。 进程切换只发生在内核态,两步:1 切换页全局目录以安装一个新的地址空间 2 切换内核态堆栈和硬件上下文。 另一种说法类似: ...
分类:
编程语言 时间:
2016-06-02 17:56:56
阅读次数:
199