协程 :是单线程下的并发,又称微线程。 什么是线程?: 协程是一种用户态的轻量级线程,即协程是由用户程序自己控制调度的。 协程的本质 协程的本质就是在单线程下,由用户自己控制一个任务遇到io阻塞了就切换另外一个任务去执行,以此来提升效率 对于不涉及io的操作,单纯的切换反而会降低效率 总结协程的优缺 ...
分类:
编程语言 时间:
2018-03-11 20:55:10
阅读次数:
189
pid_t fork(void) 父进程创建一个子进程,父进程和子进程的PCB完全相同,除了pid,具有相同的用户态代码和数据,占用不同的内存地址。 before fork0 --> parent0 --> child1 --> parent1 --> child2 --> parent2 --> ...
分类:
系统相关 时间:
2018-03-11 17:11:44
阅读次数:
200
一、重量级锁 上篇文章中向大家介绍了Synchronized的用法及其实现的原理。现在我们应该知道,Synchronized是通过对象内部的一个叫做监视器锁(monitor)来实现的。但是监视器锁本质又是依赖于底层的操作系统的Mutex Lock来实现的。而操作系统实现线程之间的切换这就需要从用户态 ...
分类:
编程语言 时间:
2018-03-08 17:28:49
阅读次数:
165
在学习块设备原理的时候,我最关系块设备的数据流程,从应用程序调用Read或者Write开始,数据在内核中到底是如何流通、处理的呢?然后又如何抵达具体的物理设备的呢?下面对一个带Cache功能的块设备数据流程进行分析。 1、 用户态程序通过open()打开指定的块设备,通过systemcall机制陷入 ...
分类:
系统相关 时间:
2018-03-03 18:11:44
阅读次数:
225
事件驱动编程思想 范式: 一种写代码的方式 ,这里程序的执行是由外部事件来决定的。它的特点是包含一个事件循环,当外部事件发生时使用回调机制来触发相应的处理。 触发事件发送到队列,然后提取事件任务,发送到执行任务函数当CPU指令集为 0的时候对应的是内核态(拥有硬件,软件所有权限), 1为用户态用户态: 用户所运行的程序,?内核态: 操作系统进程阻塞:正在执行的进程,由于期待的事件未发生,
分类:
编程语言 时间:
2018-02-28 18:32:42
阅读次数:
208
1.1 多线程 在传统操作系统中,每个进程有一个地址空间,而且默认就有一个控制线程 线程顾名思义,就是一条流水线工作的过程,一条流水线必须属于一个车间,一个车间的工作过程是一个进程 车间负责把资源整合到一起,是一个资源单位,而一个车间内至少有一个流水线 流水线的工作需要电源,电源就相当于cpu 所以 ...
分类:
数据库 时间:
2018-02-28 17:35:14
阅读次数:
181
1、特权级 Intel x86架构的cpu一共有0~4四个特权级,0级最高,3级最低,ARM架构也有不同的特权级,硬件上在执行每条指令时都会对指令所具有的特权级做相应的检查。硬件已经提供了一套特权级使用的相关机制,软件自然要好好利用,这属于操作系统要做的事情,对于UNIX/LINUX来说,只使用了0 ...
分类:
系统相关 时间:
2018-02-27 19:30:29
阅读次数:
528
1.协程(微线程)协程是一种用户态的轻量级线程。协程拥有自己的寄存器上下文和栈。协程调度切换时,将寄存器上下文和栈保存到其他地方,在切回来的时候,恢复先前保存的寄存器上下文和栈。因此: 协程能保留上一次调用时的状态(即所有局部状态的一个特定组合),每次过程重入时,就相当于进入上一次调用的状态,换种说 ...
分类:
编程语言 时间:
2018-02-27 01:06:05
阅读次数:
153
本节内容 Python协程 Select\Poll\Epoll异步IO与事件驱动 IO多路复用 一、Python协程 协程,又称微线程,纤程。英文名Coroutine。一句话说明什么是线程:协程是一种用户态的轻量级线程。 协程拥有自己的寄存器上下文和栈。协程调度切换时,将寄存器上下文和栈保存到其他地 ...
分类:
编程语言 时间:
2018-02-25 19:12:54
阅读次数:
258
1、基本知识 poll的机制与select类似,与select在本质上没有多大差别,管理多个描述符也是进行轮询,根据描述符的状态进行处理,但是poll没有最大文件描述符数量的限制。poll和select同样存在一个缺点就是,包含大量文件描述符的数组被整体复制于用户态和内核的地址空间之间,而不论这些文 ...
分类:
其他好文 时间:
2018-02-25 15:51:53
阅读次数:
200