进程 进程是系统分配资源和调度的基本单位, 每个CPU同一时刻只能处理一个进程。进程拥有程序代码段、打开的文件、数据资源、独立的内存空间。 进程的局限性是创建、撤销、切换的开销比较大。 线程 线程是程序执行的最小单位,线程从属于进程,是程序的实际执行者。一个进程至少包含一个主线程,也可以有更多的子线 ...
分类:
编程语言 时间:
2020-05-22 17:20:38
阅读次数:
61
用户态和内核态 cas compare and swapcompare and exchangeCAS(比较并交换)是CPU指令级的操作,只有一步原子操作,所以非常快。而且CAS避免了请求操作系统来裁定锁的问题,不用麻烦操作系统,直接在CPU内部就搞定了。 重量级锁(创建锁需要惊动操作系统————0 ...
分类:
其他好文 时间:
2020-05-18 00:53:16
阅读次数:
99
synchronized 锁定的是一个对象,执行某段代码的时候必须锁定一个对象,不锁定就无法执行 一、概念介绍 1.1 用户态与内核态 内核态(kener):内核/操作系统可以做的一些操作。 用户态(APP):用户的程序可以做的一些操作。 用户态的程序要访问一些比较危险的操作的时候,比如格式化硬盘或 ...
分类:
其他好文 时间:
2020-05-17 16:04:20
阅读次数:
86
高效原因 1. CommitLog顺序写, 存储了MessagBody、message key、tag等信息 2. ConsumeQueue随机读 + 操作系统的PageCache + 零拷贝技术ZeroCopy 2.1 零拷贝技术 例子:将一个File读取并发送出去(Linux有两个上下文,内核态 ...
分类:
其他好文 时间:
2020-05-14 22:43:10
阅读次数:
94
1.多进程和多线程实现并发编程各自的优劣势是什么? 切换成本不一样,多进程的优势是一个进程挂了不会影响其他的进程,因为内存地址不一样,劣势是独立的地址空间通信比较复杂,一般使用socket编程,而多线程直接在内存中通信 2.协程为什么能实现更高的并发? 切换速度快,进程和线程上下文切换需要进入内核态 ...
分类:
其他好文 时间:
2020-05-13 23:02:06
阅读次数:
107
作者:韦东山。(有删改) 韦东山:我是1999年上的大学,物理专业。在大一时,我们班里普遍弥漫着对未来的不安,不知道学习了物理后出去能做什么。你当下的经历、当下的学习,在未来的一天肯定会影响到你。毕业后我们也各自找到了自己的职业:出国深造转行做金融、留校任教做科研、设计芯片、写程序、创办公司等等,这 ...
分类:
系统相关 时间:
2020-05-09 18:57:27
阅读次数:
84
同步IO 进程A发起一个 IO中断,进入内核态,操作系统通知 进行IO操作 当 操作完成, 发起一个中断通知操作系统已经读取完成 用户态进程A,可以读取数据 异步IO 进程A发起一个 IO中断,可以设置 或者 函数,进入内核态,操作系统通知控制器进行IO 操作 当 操作完成, 发起一个中断通知操作系 ...
分类:
其他好文 时间:
2020-05-08 18:34:11
阅读次数:
59
date命令作用:可以用来显示或设定系统的日期与时间。 date命令详细用法:https://www.cnblogs.com/asxe/p/9317811.html time命令:常用于测量一个命令的运行时间。 它能做的不仅仅是测量运行时间,还可以测量内存、I/O等的使用情况。一个程序在运行时使用的 ...
分类:
系统相关 时间:
2020-05-05 23:44:12
阅读次数:
146
一、TCP/IP协议体系的认知 (1)分层。一部分处于用户态,一部分处于内核态。数据链路层,网络层,传输层封装于操作系统内核态。应用层存在于操作系统的用户空间,包括DNS,FTP,HTTPS,HTTP,工作中接触较多的是应用层的部分。但其它层的原理必须理解,面试考察。 (2)层与层之间下层对上层是透 ...
分类:
其他好文 时间:
2020-05-05 18:25:23
阅读次数:
136
Python协程&asyncio&异步编程 1.协程 协程是微线程,是一种用户态上下文切换技术,通过一个线程实现代码块相互切换执行 实现协程有这么几种方法: greenlet,早期的模块 yield 关键字 asyncio python3.4引入的 async、await关键字 python3.5 ...
分类:
编程语言 时间:
2020-05-03 12:26:34
阅读次数:
62