资讯专栏INFORMATION COLUMN

读《码农翻身》(一)

everfight / 1177人阅读

摘要:读码农翻身一什么是线程线程属于进程,与该进程中的其它线程共享该进程的资源变量指令等。因为处于线程池中的线程实际上是自由状态,处于等待分配任务状态。而前面讲到的三个状态是针对带有任务的线程而言。

读《码农翻身》(一) 什么是线程?

线程属于进程,与该进程中的其它线程共享该进程的资源(变量、指令等)。
线程可以理解为计算机中处理任务的最小单位。

线程有三个状态: 就绪运行等待。理论上,线程在被创建并执行完分配给它的任务后就会被销毁。所以线程只有这三个状态。
所以,线程池中的线程不算在内。因为处于线程池中的线程实际上是自由状态,处于等待分配任务状态。而前面讲到的三个状态是针对带有任务的线程而言。

就绪:拿到任务后准备去执行;

运行:获取CPU使用权后,CPU执行线程中的指令;

等待:碰到耗时的I/O任务时,线程会先让出CPU,处于等待I/O结果返回的状态;

TCP/IP

三次握手:

客户端向服务端发送建立连接的请求;

服务端收到客户端请求建立连接的请求后,向客户端发送同意建立连接的请求;

客户端收到服务端发送的同意连接请求后,向服务端发送收到信息的确认;

经过三次握手后,客户端就会开始向服务端传送数据。这三次握手的目的是为了在客户端和服务端之间建立一个信息传送通道,确认双方的收发信息能力是OK的。实际上,经过第二次握手后,已经可以断定双发的收发信息能力OK,第三次握手只是为了消除服务端对自己的发信能力和客户端的收信能力的担忧而已。

在TCP/IP连接中,较大的数据会拆分成较小的数据块分开传送。每个数据块都有相应的序号,如果某个数据快传输失败,则会再重新传送一次。在接收端,只有在成功接收到前一个序号的数据块,才会对客户端发送收到当前数据的确认信息。否则,即使收到了也不会发送确认信息,而是等待接收前面的数据块。

CPU

CPU是一个思考速度飞快但是记忆能力非常脆落的大脑。它的时间单位是纳秒,一个时间单位内就能执行一个指令。

CPU可以看作一个工人,一个个的进程可以看作不同的工作台,工作台上存储着进程被分配的资源。 不同的工作台处理不同的任务,CPU在不同的进程间切换,就好比这个工人在不同的工作台之间来回变动。

CPU在工作台处理任务的时候, 实际上就是在执行程序员编写的程序。这里的程序实际上就是由:顺序分支循环组成的任务流程。

我们都知道,CPU执行的程序,都来自内存。但是内存的读取速度远远落后于CPU,为此对于那些在近期内经常用到的数据会存在CPU的缓存中。CPU中的寄存器便是用来做这个的。进一步提高效率,CPU实际结构体系远比这个复杂。CPU还存在L1,L2和L3三级缓存。

多任务系统

实际生活中,我们都知道CPU可以同时处理大多个任务。这实际上是内存中被装入多个程序,CPU在这些程序之间来回切换执行。因为程序在内存中存储的位置不同,所以CPU执行每个程序中指令时,都需要获取指令在内存中的实际地址。获取实际地址的方法分为两种:

静态地址定位:在指令进入CPU前,将地址提前计算好一并交给CPU;CPU拿到后直接执行即可;

动态地址定位: 在CPU运行指令之前,通过基址+指令地址来获取指令在内存中的实际位置;

以上三点仅仅书中很少的一部分内容啦,实际上在我看过这段内容中,还有更多的计算机科学相关的设计思想,等待有合适 的时机在补回来。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/62049.html

相关文章

  • 漫画 | 为什么面向对象糟透了!

    摘要:原来这是之父写的一篇战斗檄文,里边充满了对面向对象的批判。没想到支持函数式编程的居然给自己出了一道面向对象的题,大为惊讶。拼手速了我的图书策划人说这个应该是今年最后一次粉丝福利,错过了再等一年也未必有了 又是周末,编程语言三巨头Java, Lisp 和C语言照例在Hello World咖...

    不知名网友 评论0 收藏0
  • 假如我是计算机系老师

    摘要:看完了编码,我会推荐我的学生再深入一步,看一看深入理解计算机系统,它把操作系统,计算机组成原理,数字电路,编译原理,网络,计算机体系结构等程序员需要了解的核心知识汇集在一起,让你迅速的打下扎实的基础。 假如我是计算机系老师, 我会先让我的学生先去读一下《编码:隐匿在计算机软硬件背后的语言》这本书, 搞明白一个个简单的逻辑门电路到底是怎么组成计算机的, 弄清楚计算机软件语言和硬件之间到底...

    Sourcelink 评论0 收藏0
  • 假如时光倒流,我会这么学习Java

    摘要:看起来没有集合框架,线程,等那么耀眼,但它可是很多框架的基础啊回复反射查看相关文章,先把基础学会,后面的得用到它。 回头看看, 我进入Java 领域已经快15个年头了, 虽然学的也一般, 但是分享下我的心得,估计也能帮大家少走点弯路。[入门]我在2001年之前是C/C++阵营, 有C和面向对象的基础, 后来转到Java ,发现没有指针的Java真是好简单, 另外Java 的类库好用的让...

    bladefury 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<