电路交换、报文交换与分组交换首先我们来看看三种交换方式的示意图
对照上面的图,给出三种交换方式在数据传输阶段的主要特点:
电路交换:整个报文的比特流连续的从源点直达终点,好像在一个管道中传送。
报文交换:整个报文先传输到相邻的结点,全部存储下来后查找转发表,转发到下一个结点。
分组交换:单个分组(报文的一部分)传送到相邻结点,相邻结点存储下来后查找转发表,转发到下一个结点。
1、电路交换在进行数据传输前,两个结点之间必须先建立一条专用 (双方独占)的物理通信路径(由通信双方之间的交换设备和链路逐段连接而成),该路径可能经过许多中间结点。这一路径在整个数据传输期间一直被独占,直到通信...
链接编译系统以下是一个 hello.c 程序:
12345#include <stdio.h>int main(){ printf("hello, world\n"); return 0;}
在 Unix 系统上,由编译器把源文件转换为目标文件。
1gcc -o hello hello.c
这个过程大致如下:
预处理阶段:处理以 # 开头的预处理命令
编译阶段:翻译成汇编文件。
汇编阶段:将汇编文件翻译成可重定位目标文件。
链接阶段:将可重定位目标文件和 printf.o 等单独预编译好的目标文件进行合并,得到最终的可执...
5733. 最近的房间一个酒店里有 n 个房间,这些房间用二维整数数组 rooms 表示,其中 rooms[i] = [roomId~i~, size~i~] 表示有一个房间号为 roomId~i~ 的房间且它的面积为 size~i~ 。每一个房间号 roomId~i~ 保证是 独一无二 的。
同时给你 k 个查询,用二维数组 queries 表示,其中 queries[j] = [preferred~j~, minSize~j~] 。第 j 个查询的答案是满足如下条件的房间 id :
房间的面积 至少 为 minSize~j~ ,且abs(id - preferred~j~) 的值 最...
5732. 减小和重新排列数组后的最大元素给你一个正整数数组 arr 。请你对 arr 执行一些操作(也可以不进行任何操作),使得数组满足以下条件:
arr 中 第一个 元素必须为 1 。任意相邻两个元素的差的绝对值 小于等于 1 ,也就是说,对于任意的 1 <= i < arr.length (数组下标从 0 开始),都满足 abs(arr[i] - arr[i - 1]) <= 1 。abs(x) 为 x 的绝对值。你可以执行以下 2 种操作任意次:
减小 arr 中任意元素的值,使其变为一个 更小的正整数 。重新排列 arr 中的元素,你可以以任意顺序重新排列。请...
5731. 座位预约管理系统请你设计一个管理 n 个座位预约的系统,座位编号从 1 到 n 。
请你实现 SeatManager 类:
SeatManager(int n) 初始化一个 SeatManager 对象,它管理从 1 到 n 编号的 n 个座位。所有座位初始都是可预约的。
int reserve() 返回可以预约座位的 最小编号 ,此座位变为不可预约。
void unreserve(int seatNumber) 将给定编号 seatNumber 对应的座位变成可以预约。
示例 1:12345678910111213141516输入:["SeatManager&...
5730. 将所有数字用字符替换给你一个下标从 0 开始的字符串 s ,它的 偶数 下标处为小写英文字母,奇数 下标处为数字。
定义一个函数 shift(c, x) ,其中 c 是一个字符且 x 是一个数字,函数返回字母表中 c 后面第 x 个字符。
比方说,shift('a', 5) = 'f' 和 shift('x', 0) = 'x' 。
对于每个 奇数 下标 i ,你需要将数字 s[i] 用 shift(s[i-1], s[i]) 替换。
请你替换所有数字以后,将字符串 s 返回。题目 保证 shift(s[i...
设备管理磁盘结构
盘面(Platter):一个磁盘有一个或多个盘面。
磁道(Track):盘面上的圆形带状区域,每个盘面可以划分多个磁道,最外圈的磁道是 0 号磁道,向圆心增长依次为 1 磁道、2 磁道……磁盘的数据存放就是从最外圈开始的。
扇区(Track Sector):磁道上的一个弧段,一个磁道可以有多个扇区,它是最小的物理储存单位,目前主要有 512 bytes 与 4 K 两种大小。
柱面(Cylinder):是我们抽象出来的一个逻辑概念,简单来说就是处于同一个垂直区域的磁道称为柱面 ,即各盘面上面相同位置磁道的集合。
磁头(Head):与盘面非常接近,能够将盘面上的磁场转换为...
内存管理虚拟内存虚拟内存的基本思想每个进程拥有自己的地址空间,这个空间被分割为多个块,每个块称作一页。每一页有连续的地址范围。这些页被映射到物理内存,但并不是所有的页都必须在内存中才能运行程序。当程序引用到一部分在物理内存中的地址空间时,由硬件立刻执行必要的映射。当程序引用到一部分不在物理内存中的地址空间时,由操作系统负责将缺失的部分装入物理内存并重新执行失败的指令。
虚拟内存的目的是为了让物理内存扩充成更大的逻辑内存,从而让程序获得更多的可用内存。
虚拟内存的三个重要功能
它在主存中自动缓存最近使用的存放磁盘上的虚拟地址空间的内容。
虚拟内存简化了内存管理,进而又简化了连接,在进程间共...
死锁产生死锁的四个必要条件互斥进程要求对所分配的资源(如打印机)进行排他性控制,即在一段时间内某资源仅为一个进程所占有。此时若有其他进程请求该资源,则请求进程只能等待。
不可剥夺进程所获得的资源在未使用完毕之前,不能被其他进程强行夺走,即只能由获得该资源的进程自己来释放(只能是主动释放)。
请求与保持进程已经保持了至少一个资源,但又提出了新的资源请求,而该资源已被其他进程占有,此时请求进程被阻塞,但对自己已获得的资源保持不放。
环路等待有两个或者两个以上的进程组成一条环路,该环路中的每个进程都在等待下一个进程所占有的资源。
死锁的处理方法
鸵鸟策略:忽略死锁。
预防死锁:通过设置某些限制...
Cache与主存的地址映像Cache 和主存都被分成若干个大小相等的块,每块由若干个字节组成,主存和 Cache 的数据交换是以块为单位。
地址映像把主存地址空间映像到 Cache 地址空间,即按某种规则把主存的块复制到 Cache 中。
地址映射方式Cache 与主存分成大小相等若干块。
假设某台计算机主存容量为 1MB ,被分为 2048 块,每块为 512B 。
Cache 容量为 8KB,被分为 16 块,每块也是 512B 。
直接映射主存中的一个块只能映射到 Cache 中唯一指定的块中。就如每个人的停车位是固定分配好的,可以直接找到。
直接映射的缺点:因为人多车位少,很可能...