thumbnail
Ostep 36 Io Device
第三part持久化,开始讲设备I/O了。 体系结构 整个I/O的体系结构基本如图。 CPU通过一些专门的高速线路,直接连接显卡和内存 再通过DMI(Direct Media Interface),与专门的IO芯片相连 其他设备通过与IO芯片相连,以此连接到CPU(如网络的PCIE,USB的键鼠,eSATA硬盘) 硬件连接相关 硬件如何和OS交互? …
Ostep Second Part Summary
第二部分到此也就结束了。这边按照惯例做一下总结。 并发整块内容包括整章,主要还是描述了并发为什么会产生,以及操作系统如何结合CPU硬件去一步步构造一些使用的api来供开发者避免或者解决这些并发问题。 第二部分主要是通过一些思路来介绍的,更加详细的内容推荐美团技术团队的一篇文章,会有一些细节的补充 基本功 | 一文讲清多线程和多线程同步 其实博客总结…
关于房价和房贷一个突然的感慨

之前房价高企并且一直涨的时候,有好多人和同事都说后面工资会一直更高,每个月那点房贷相对收入来说就越来越少了。
按照国家统计局的数据来看,从2000年开始,国民人均收入到2010翻了4倍,2010年到2020年翻了近3倍,如果能保持这个增长,那么每个月那点房贷确实会越来越少。
但是走到时至今日这个节点再回头看,不禁有点讽刺了

719 日 , 2024 10:48
Ostep 33 Event Based Concurrency
这章详细描述了之前20年看netty源码时就了解过的一个概念:eventloop,Netty以及Eventloop eventloop实际上是一个并发模型,基于事件驱动,用于实现在单线程或者单进程上的并发执行(是的,单线程也可以并发执行,没想到吧。 redis,node.js,浏览器,都大量使用到了这个并发模型。它的代码可能如下: while (1…
thumbnail
Ostep 32 Common Concurrency Problems
这章主要介绍并发场景下常见的bug,并发场景下主要常见的bug分2类:非死锁bug和死锁bug。文中列出了之前 Lu研究的目前常见的主流数据库和web server中包含的一些并发bug,并对其做了分类。 非死锁bug Atomicity-Violation Bugs 原子性违反 bug描述 这类bug的特点就是多线程之间,忽略了对共享变量的原子性…
thumbnail
Ostep 31 Semaphores
这章主要介绍了信号量的使用,如何使用信号量来实现并发编程。 信号量的定义 sem_init(&s, 0, 1); 初始化语句,第二个参数0表示是线程间的(信号量也存在进程间的),1表示信号量的值value int sem_wait(sem_t *s) { // Decrement the value of semaphore s by on…
Ostep 30 Condition Variables
除了锁之外,并发程序中另一个最重要的模式就是条件变量,与锁不同,条件变量用于解决线程间的同步问题。 条件变量的基本api 主要由2个方法就可以实现, pthread_cond_wait(pthread_cond_tc, pthread_mutex_tm); pthread_cond_signal(pthread_cond_t*c); 一个wait,…
外国人写书也是有点小幽默的

还押韵呢~

711 日 , 2024 13:23
Ostep 29 Lock Based ConcurConcurrency Data Structure
这章比较简单简短,主要介绍了并发数据结构的实现。 总结下的话,实现并发的数据结构,我们需要考虑主要2个点: 正确性。这个毋庸置疑,并发情况操作下,要保证数据的正确性。 性能。并发数据结构的性能其实分两部分 在实现正确性的情况下,结构本身的性能 在线程越来越多(并发越来越高)的情况下,性能下降的程度 从这些点来考虑的话,我们直接总结下这章说道的并发数…