读《码农翻身》(一)

读《码农翻身》(一)

什么是线程?

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

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

  • 就绪:拿到任务后准备去执行;
  • 运行:获取CPU使用权后,CPU执行线程中的指令;
  • 等待:碰到耗时的I/O任务时,线程会先让出CPU,处于等待I/O结果返回的状态;

TCP/IP

三次握手:

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

经过三次握手后,客户端就会开始向服务端传送数据。这三次握手的目的是为了在客户端和服务端之间建立一个信息传送通道,确认双方的收发信息能力是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运行指令之前,通过基址+指令地址来获取指令在内存中的实际位置;

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值