应届秋招生,熬夜吃透华为架构师这份‘典藏级’计算机网络 + 计算机操作系统,成功上岸腾讯
前言
计算机网络、计算机操作系统这两个“兄弟”是所有开发岗位都需要“结拜”的,不管你是 Java、C++还是测试。对于后端开发的童鞋来说,计算机网络的重要性不亚于语言基础,毕竟平时开发经常会和网络打交道,比如:抓个包等等。所以对这一块知识点的准备还是要抱着敬畏之心,不要放过任何一个漏网之题。下面来看看华为工程师分享的计算机网络与操作系统吧:

操作系统概述

注:本章内容较长,请大家耐心看到最后。绝对有收获,文末后这两份《计算机操作系统》与《计算机网络协议》PDF 的获取方式,如果这篇文章对大家有帮助的话,也别忘记了,一键三连哦,你的支持就是我最大的创作鼓励。
操作系统
现代计算机系统由一个或多个处理器、主存、打印机、键盘、鼠标、显示器、网络接口以及各种输入/输出设备构成。
计算机硬件简介
操作系统与运行操作系统的内核硬件关系密切。操作系统扩展了计算机指令集并管理计算机的资源。因此,操作系统因此必须足够了解硬件的运行,这里我们先简要介绍一下现代计算机中的计算机硬件。
进程和线程

进程.
操作系统中最核心的概念就是进程,进程是对正在运行中的程序的一个抽象。操作系统的其他所有内容都是围绕着进程展开的。进程是操作系统提供的最古老也是最重要的概念之一。即使可以使用的 CPU 只有一个,它们也支持(伪) 并发操作。它们会将一个单独的 CPU 抽象为多个虚拟机的 CPU。可以说:没有进程的抽象,现代操作系统将不复存在。

进程模型
在进程模型中,所有计算机上运行的软件,通常也包括操作系统,被组织为若干顺序进程简称为进程。 一个进程就是一个正在执行的程序的实例,进程也包括程序计数器、寄存器和变量的当前值。从概念上来说,每个进程都有各自的虚拟 CPU,但是实际情况是 CPU 会在各个进程之间进行来回切换。

线程
在传统的操作系统中,每个进程都有一个地址空间和一个控制线程。事实上,这是大部分进程的定义。不过,在许多情况下,经常存在同一地址空间中运行多个控制线程的情形,这些线程就像是分离得进程。下面我们就着重探讨一下什么是线程
多线程解决方案

调度
当一个计算机是多道程序设计系统时,会频繁的有很多进程或者线程来同时竞争 CPU 时间片。当两个或两个以上的进程/线程处于就绪状态时,就会发生这种情况。如果只有一个 CPU 可用,那么必须选择接下来哪个进程/线程可以运行。操作系统中有一个叫做调度程序的角色存在,它就是做这件事儿的,该程序使用的算法叫做调度算法
尽管有一些不同,但许多适用于进程调度的处理方法同样也适用于线程调度。当内核管理线程的时候,调度通常会以线程级别发生,很少或者根本不会考虑线程属于哪个进程。下面我们会 首先专注于进程和线程的调度问题,然后会明确的介绍线程调度以及它产生的问题。
调度算法的目标
为了设计调度算法,有必要考虑一下什么是好的调度算法。有一些目标取决于环境(批处理、 交互式或者实时)但大部分是适用于所有情况的,下面是一些需要考量的因素,我们会在下面一起讨论。

内存

一种存储器抽象:地址空间
把物理内存暴露给进程会有几个主要的缺点:第-个问题是,如果用户程序可以寻址内存的每个字节,它们就可以很容易的破坏操作系统,从而使系统停止运行(除非使用 IBM 360 那种 lock-and-key 模式或者特殊的硬件进行保护)。即使在只有一个用户进程运行的情况下,这个问题也存在。第二点是,这种模型想要运行多个程序是很困难的(如果只有一个 CPU 那就是顺序执行)。在个人计算机上,一般会打开很多应用程序,比如输入法、电子邮件、浏览器,这些进程在不同时刻会有一个进程正在运行,其他应用程序可以通过鼠标来唤醒。在系统中没有物理内存的情况下很难实现。
页表


软件 TLB 管理
直到现在,我们假设每台电脑都有可以被硬件识别的页表,外加一个 TLB。在这个设计中,TLB 管理和处理 TLB 错误完全由硬件来完成。仅仅当页面不在内存中时,才会发生操作系统的陷入。
在以前,我们上面的假设通常是正确的。但是,许多现代的 RISC 机器,包括 SPARC、MIPS 和 HPPA,几乎所有的页面管理都是在软件中完成的。

文件系统

文件命名
文件是一种抽象机制,它提供了-种方式用来存储信息以及在后面进行读取。可能任何- -种机制最重要的特性就是管理对象的命名方式。在创建一个文件后, 它会给文件一个命名。 当进程终止时,文件会继续存在,并且其他进程可以使用名称访问该文件。
文件命名规则对于不同的操作系统来说是不一样的,但是所有现代操作系统都允许使用 1 - 8 个字母的字符串作为合法文件名。
某些文件区分大小写字母,而大多数则不区分。UNIX 属于第一类;历史悠久的 MS-DOS 属于第二类(顺便说一句,尽管 MS-DOS 历史悠久,但 MS-DOS 仍在嵌入式系统中非常广泛地使用,因此它绝不是过时的) ;因此,UNIX 系统会有三种不同的命名文件: maria 、Maria 、MARIA 。 在 MS-DOS,所有这些命名都属于相同的文件。


文件类型
很多操作系统支持多种文件类型。例如,UNIX (同样包括 OS X)和 Windows 都具有常规的文件和目录。除此之外,UNIX 还具有字符特殊文件 和块特殊文件。常规文件是包含有用户信息的文件。用户一般使用的文件大都是常规文件,常规文件一般包括可执行文件、文本文件、图像文件,从常规文件读取数据或将数据写入时,内核会根据文件系统的规则执行操作,是写入可能被延迟,记录日志或者接受其他操作。
字符特殊文件和输入/输出有关,用于串行 I/O 类设备,如终端、打印机、网络等。块特殊文件用于磁盘类设备。我们主要讨论的是常规文件。


目录
文件系统通常提供目录或者文件夹用于记录文件的位置, 在很多系统中目录本身也是文件,下面我们会讨论关于文件,他们的组织形式、属性和可以对文件进行的操作。
一级目录系统
目录系统最简单的形式是有一个能够包含所有文件的目录。这种目录被称为根目录,由于根目录的唯一性,所以其名称并不重要。在最早期的个人计算机中,这种系统很常见,部分原因是因为只有一个用户。下面是一个单层目录系统的例子

文件系统布局



文件的实现

链表分配

I/O

中断处理程序


错误处理
磁盘在制造的过程中可能会有瑕疵,如果瑕疵比较小,比如只有几位,那么使用坏扇区并且每次只是让 ECC 纠正错误是可行的,如果瑕疵较大,那么错误就不可能被掩盖。
一般坏块有两种处理办法,一种是在控制器中进行处理; 一种是在操作系统层面进行处理。
这两种方法经常替换使用,比如一个具有 30 个数据扇区和两个备用扇区的磁盘,其中扇区 4 是有瑕疵的。


死锁

资源
大部分的死锁都和资源有关,在进程对设备、文件具有独占性(排他性)时会产生死锁。我们把这类需要排他性使用的对象称为资源。资源主要分为可抢占资源和不可抢占资源
可抢占资源和不可抢占资源

死锁检测和恢复
第二种技术是死锁的检测和恢复。这种解决方式不会尝试去阻止死锁的出现。相反,这种解决方案会希望死锁尽可能的出现,在监测到死锁出现后,对其进行恢复。下面我们就来探讨一下死锁的检测和恢复的几种方式

破坏死锁

计算机网络
注:笔记文档知识点过多,若要全部展示出来比较困难,以下以部分截图的方式展示给大家作为参考学习,大家一键三连之后【见下图即可获取】这两份文档,有需要的朋友可以自取

HTTP 常见面试题

HTTP 基本概念

HTTP 与 HTTPS


IP 全家桶

IP 基本认识
IP 在 TCP/IP 参考模型中处于第三层,也就是网络层。
网络层的主要作用是:实现主机与主机之间的通信,也叫点对点通信。


TCP 三次握手和四次挥手面试题
TCP 基本认识
我们先来看看 TCP 头的格式,标注颜色的表示与本文关联比较大的字段,其他字段不做详细阐述。

TCP 三次握手过程和状态变迁
TCP 是面向连接的协议,所以使用 TCP 前必须先建立连接,而建立连接是通过三次握手来进行的。


TCP 四次挥手过程和状态变迁
天下没有不散的宴席,对于 TCP 连接也是这样,TCP 断开连接是通过四次挥手方式。
双方都可以主动断开连接,断开连接后主机中的「资源」将被释放。

针对 TCP 应该如何 Socket 编程?



图解 TCP 重传、滑动窗口、流量控制、拥塞控制

超时重传
重传机制的其中一个方式,就是在发送数据时,设定一个定时器, 当超过指定的时间后,没有收到对方的 ACK 」确认应答报文,就会重发该数据,也就是我们常说的超时重传。

流量控制



「看得见」TCP

解密 TCP 三次握手和四次挥手
既然学会了 tcpdump 和 Wireshark 两大网络分析利器,那我们快马加鞭,接下用它俩抓取和分析 HTTP 协议网络包,并理解 TCP 三次握手和四次挥手的工作原理。


TCP 快速建立连接
客户端在向服务端发起 HTTP GET 请求时,一个完整的交互过程,需要 2.5 个 RTT 的时延。
由于第三次握手是可以携带数据的,这时如果在第三次握手发起 HTTP GET 请求,需要 2 个 RTT 的时延。
但是在下一次(不是同个 TCP 连接的下一次)发起 HTTP GET 请求时,经历的 RTT 也是一样,如下图:


零窗口通知与窗口探测
假设接收方处理数据的速度跟不上接收数据的速度,缓存就会被占满,从而导致接收窗口为 0,当发送方接收到零窗口通知时,就会停止发送数据。

由于笔记涉及到的知识点与内容极多,就不一一展示给大家了,这份《计算机网络操作系统》《图解网络》需要完整版笔记的朋友,可以一键三连之后,【见下图】来获取!!

当然,单单有文档看是远远不够的,还有视频和相匹配的课件进行学习提升,努力把计算机网络这一块儿给搞明白,相信一定会有不凡的人生!!
TCP/IP/网络 IO 学习视频

TCP/IP 网络协议

网络 IO
华为鸿蒙操作系统学习视频


还有课件分享

IO 课件

TCP/IP 课件
TCP/IP/IO 网络通信视频和课件获取,一键三连之后【见下图】获取!

好了,今天就分享到这里了,希望大家能够好好学习,把计算机网络这一块儿给提升上来,也希望本文能够得到大家的喜欢!!
评论