计算机网络 TCP

TCP的特点

TCP的全称是指传输控制协议(Transmission Control Protocol)。它是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。

  • 具备的特点
    • TCP是面向连接的传输层协议。
    • TCP连接是点对点的(套接字–IP:Port到套接字)。
    • TCP提供可靠交付的服务。
    • TCP提供全双工通信。
    • 面向字节流。
阅读更多

计算机网络 ARQ

什么是ARQ协议

  • ARQ协议(自动重传请求)是OSI模型中数据链路层和传输层的错误纠正协议之一。它通过使用确认和超时这两个机制,在不可靠服务的基础上实现可靠的信息传输。

停止等待ARQ

  • 发送点对接收点发送数据包,然后等待接收点回复ACK并且开始计时。
  • 在等待过程中,发送点停止发送新的数据包。
  • 当数据包没有成功被接收点接收时候,接收点不会发送ACK.这样发送点在等待一定时间后,重新发送数据包。
阅读更多

计算机网络 数据包处理

案例

  • 假设甲给乙发送邮件,内容为:“早上好”。而从 TCP/IP 通信上看,是从一台计算机 A 向另一台计算机 B 发送邮件。我们通过这个例子来讲解一下 TCP/IP 通信的过程。
    • image

数据包的发送处理

阅读更多

计算机组成原理 概述

计算机系统

计算机系统由硬件(Hardware)系统和软件系统两大部分组成。

img

计算机发展历史:
第一代计算机(1946-1957):电子管时代
第二代计算机(1958-1964):晶体管时代
第三代计算机(1965-1970):集成电路时代
第四代计算机(1871以后):大规模继承电路时代

阅读更多

计算机组成原理 CPU MESI协议 缓存一致性问题

多核CPU里的每一个CPU核,都有独立的属于自己的L1 Cache和L2 Cache。多个CPU之间,只是共用L3 Cache和主内存。

我们说,CPU Cache解决的是内存访问速度和CPU的速度差距太大的问题。而多核CPU提供的是,在主频难以提升的时候,通过增加CPU核心来提升CPU的吞吐率的办法。我们把多核和CPU Cache两者一结合,就给我们带来了一个新的挑战。因为CPU的每个核各有各的缓存,互相之间的操作又是各自独立的,就会带来缓存一致性(Cache Coherence)的问题。

阅读更多

计算机操作系统 设备管理

磁盘结构

  • 盘面(Platter):一个磁盘有多个盘面;
  • 磁道(Track):盘面上的圆形带状区域,一个盘面可以有多个磁道;
  • 扇区(Track Sector):磁道上的一个弧段,一个磁道可以有多个扇区,它是最小的物理储存单位,目前主要有 512 bytes 与 4 K 两种大小;
  • 磁头(Head):与盘面非常接近,能够将盘面上的磁场转换为电信号(读),或者将电信号转换为盘面的磁场(写);
  • 制动手臂(Actuator arm):用于在磁道之间移动磁头;
  • 主轴(Spindle):使整个盘面转动。
阅读更多

计算机操作系统 内存管理

虚拟内存

虚拟内存的目的是为了让物理内存扩充成更大的逻辑内存,从而让程序获得更多的可用内存。

为了更好的管理内存,操作系统将内存抽象成地址空间。每个程序拥有自己的地址空间,这个地址空间被分割成多个块,每一块称为一页。这些页被映射到物理内存,但不需要映射到连续的物理内存,也不需要所有页都必须在物理内存中。当程序引用到不在物理内存中的页时,由硬件执行必要的映射,将缺失的部分装入物理内存并重新执行失败的指令。

从上面的描述中可以看出,虚拟内存允许程序不用将地址空间中的每一页都映射到物理内存,也就是说一个程序不需要全部调入内存就可以运行,这使得有限的内存运行大程序成为可能。例如有一台计算机可以产生 16 位地址,那么一个程序的地址空间范围是 0~64K。该计算机只有 32KB 的物理内存,虚拟内存技术允许该计算机运行一个 64K 大小的程序。

阅读更多

计算机操作系统 进程管理

进程与线程

1. 进程

进程是资源分配的基本单位。

进程控制块 (Process Control Block, PCB) 描述进程的基本信息和运行状态,所谓的创建进程和撤销进程,都是指对 PCB 的操作。

下图显示了 4 个程序创建了 4 个进程,这 4 个进程可以并发地执行。

a6ac2b08-3861-4e85-baa8-382287bfee9f

阅读更多

计算机操作系统 死锁

必要条件

c037c901-7eae-4e31-a1e4-9d41329e5c3e

  • 互斥:每个资源要么已经分配给了一个进程,要么就是可用的。
  • 占有和等待:已经得到了某个资源的进程可以再请求新的资源。
  • 不可抢占:已经分配给一个进程的资源不能强制性地被抢占,它只能被占有它的进程显式地释放。
阅读更多