专栏名称: 码农翻身
工作15年的前IBM架构师分享好玩有趣的编程知识和职场的经验教训, 不容错过。
目录
相关文章推荐
逸言  ·  数据库选型对领域建模的影响 ·  21 小时前  
伯乐在线  ·  黄仁勋怒怼 Anthropic ... ·  昨天  
伯乐在线  ·  黄仁勋怒怼 Anthropic ... ·  昨天  
老刘说NLP  ·  纯Prompt提示LLM的多阶段知识图谱三元 ... ·  3 天前  
玉伯  ·  这张配图看着不错 ☘️ ·  2 天前  
51好读  ›  专栏  ›  码农翻身

你必须理解的计算机核心概念

码农翻身  · 公众号  · 程序员  · 2017-07-13 19:39

正文

请到「今天看啥」查看全文



这些基本的指令组成了顺序、循环、分支等基本的程序结构,形成了更为强大的编程语言的基础。


CPU和内存、硬盘等设备的速度不匹配,是冯·诺依曼结构计算机的一个核心问题,为了解决这个问题,科学家们绞尽脑汁,想尽了办法, 又引出了一堆概念: 缓存,DMA, 同步,异步,阻塞....


扩展阅读:

从1加到100:一道简单的数学题挑战下你的大脑

CPU阿甘

书籍:《编码》 《穿越计算机的迷雾》


2

进程和线程


这俩家伙的重要性不言而喻,因为你写的所有的程序要么会成为一个独立的进程去执行,要么是被一个进程中的线程收编,没有例外 。


几乎所有的编程语言都会涉及到对多进程或者多线程编程的支持, 特别是多线程的并发编程, 所以你必须得搞明白它的本质是什么。


进程是对一个运行中的程序的抽象,没有这个概念,我们是无法实现一边听歌、一边上网的惬意生活。


对于CPU来讲, 它只是“浑浑噩噩”地从某个地方取指令,译码执行,但是它不会意识到在某一刻整个世界已经变了天, 它执行的程序已经发生了切换,另外一个程序(准确地讲叫进程)已经成功地抢班夺权。


每个进程都有一个被操作系统老大维护的进程控制块, 里边保存了这个进程在运行时的重要信息,是进程能来回切换的重要保证。


而线程则寄居于进程之内 , 共享进程提供福利(代码和数据)的同时, 还拥有自己的一亩三分地。



线程的出现,提升了系统的性能、吞吐量和响应性。  但是多进程/多线程编程也带来了一系列问题: 同步,通信,锁, 死锁。。。


扩展阅读:

我是一个进程







请到「今天看啥」查看全文