转自zhttps://huoding.com/2015/10/16/474 发表于2015-10-16 早些年,如果你知道有个 strace 命令,就很牛了,而现在大家基本都知道 strace 了,如果你遇到性能问题求助别人,十有八九会建议你用 strace 挂上去看看,不过当你挂上去了,看着满屏翻 ...
分类:
其他好文 时间:
2017-09-07 15:04:44
阅读次数:
187
一、Unix/Linux的体系架构 如上图所示,从宏观上来看,Linux操作系统体系架构分为用户态和内核态(或者用户空间和内核)。内核从本质上看是一种软件——控制计算机的硬件资源,并提供上层应用程序运行的环境。用户态即上层应用程序的活动空间,应用程序的执行必须依托于内核提供的资源,包括CPU资源、存 ...
分类:
系统相关 时间:
2017-09-05 09:56:02
阅读次数:
274
写在前面:与之前主流程序语言(c/c++等)直接使用物理硬件和操作系统的内存模型不同,java虚拟机为了屏蔽各种硬件和操作系统的内存访问差异定义了一种java内存模型。其主要定义程序中各个变量的访问规则(在虚拟机中将变量存储到内存和从内存中取出变量的底层细节)。 线程、主内存、工作内存之间的交互关系 ...
分类:
编程语言 时间:
2017-09-05 00:08:16
阅读次数:
249
在windows系统中个,每个进程拥有自己独立的虚拟地址空间(Virtual Address Space)。这一地址空间的大小与计算机硬件、操作系统以及应用程序都有关系。 对于32位程序来说,最多能使用2GB空间(0x00010000-0x7FFEFFFF)。为了获得3GB的地址空间,在不同的win ...
1 基本知识 poll的机制与select类似,与select在本质上没有多大差别,管理多个描述符也是进行轮询,根据描述符的状态进行处理,但是poll没有最大文件描述符数量的限制。poll和select同样存在一个缺点就是,包含大量文件描述符的数组被整体复制于用户态和内核的地址空间之间,而不论这些文 ...
分类:
其他好文 时间:
2017-09-02 19:05:54
阅读次数:
200
一、 协程介绍 单线程下实现并发,提升运行效率, 1.自己控制切换,保存状态 2.遇到I/O切 (单纯的CPU切没意义,只有在遇到I/O的时候切才有效率) 一句话说明什么是线程:协程是一种用户态的轻量级线程,即协程是由用户程序自己控制调度的。、 需要强调的是: 对比操作系统控制线程的切换,用户在单线 ...
分类:
编程语言 时间:
2017-08-31 20:21:29
阅读次数:
288
主要内容 协程 协程,又称微线程,纤程。英文名Coroutine。一句话说明什么是线程:协程是一种用户态的轻量级线程。 协程拥有自己的寄存器上下文和栈。协程调度切换时,将寄存器上下文和栈保存到其他地方,在切回来的时候,恢复先前保存的寄存器上下文和栈。因此: 协程能保留上一次调用时的状态(即所有局部状 ...
分类:
编程语言 时间:
2017-08-31 12:32:17
阅读次数:
1439
协程协程(coroutine)最早由Melvin Conway在1963年提出并实现,一句话定义:协程是用户态的轻量级的线程线程和协程线程和协程经常被放在一起比较;线程一旦被创建出来,编写者是无法决定什么时候获得或者放出时间片的,是由操作系统进行统一调度的;而协程对编写者来说是可以控制切换的时机,并... ...
分类:
其他好文 时间:
2017-08-30 14:14:15
阅读次数:
135
公司的几台Redis服务器出现不明故障,查看Redis日志,发现如下提示: 1 [34145] 01 Jan 17:42:02 # WARNING overcommit_memory is set to 0! Background save may fail under low memory con ...
分类:
系统相关 时间:
2017-08-29 18:09:59
阅读次数:
179
init是用户空间第一个程序,在调用init前程序都运行在内核态,之后运行init时程序运行到用户态。 操作系统上,一些内核线程在内核态运行,它们永远不会进入用户态。它们也根本没有用户态的内存空间。它的线性地址空间就是共享内核的线性地址空间。一些用户进程通常在用户态运行。有时因为系统调用而进入内核态 ...
分类:
其他好文 时间:
2017-08-27 12:44:24
阅读次数:
214