计算机408+数据库学习

4.1数据库

1、文件系统和数据库系统还有什么区别?

1)文件系统把数据组织成相互独立的数据文件,实现了记录内的结构性,整体无结构。数据库系统整体有结构,这是数据库系统和文件系统的本质区别。

2)、文件系统中的文件是为某一应用程序服务的,当要修改数据的逻辑结构时,必须修改应用程序。而数据库有三级模式结构和两级映像功能,保证了数据的逻辑独立性和物理独立性。

3)数据库系统比文件系统的共享性高,支持多个用户和程序同一时间访问数据库中的数据。而且数据库系统容易扩充

4)文件系统中数据冗余大,不仅造成了存储空间的浪费还容易出现数据不一致的现象。

     数据库的数据冗余小。

2、简述数据库系统的结构

(1)模式:是数据库中全体数据的逻辑结构和特征的描述。是所有用户的公共数据视图。                        

(2)外模式:也称子模式或用户模式,它是数据库用户能够看见的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。

(3)内模式:也称存储模式,它是数据物理结构和存储方式的描述,是数据在数据库内部的组织方式。

3、简述数据的逻辑独立性和物理独立性

(1)当数据库的模式改变时,数据库管理员对外模式和模式映像作相应的改变,从而使外模式保持不变,而因应用程序是根据外模式编写的,所以应用程序不必改变,保证了数据与程序的逻辑独立性,简称逻辑独立性。

(2)当数据库的内模式发生改变时,数据库管理员对模式和内模式映像作相应的改变,从而使模式保持不变,从而应用程序不必改变,保证了数据与程序的物理独立性,简称物理独立性。

4.1 计算机网络

传输层主要是实现应用程序之间的通信,网络层主要实现主机之间的通信

1简述TCP和UDP,有什么区别

TCP的功能包括需要将传输的文件分段传输,(服务器和客户端)建立会话,可靠传输(编号+超时重传),流量控制(接收端可以设置滑动窗口的大小来进行流量控制)

拥塞控制(根据网络拥塞情况设置拥塞窗口大小)

UDP:一个数据包就能完成数据通信,不分段传输,不建立会话,不可靠传输,没有流量控制

UDP的使用举例:(域名解析)比如访问一个网站,需要用DNS将域名解析为IP地址,此时需要发送给DNS一个数据包就足够了,所以使用UDP协议

QQ聊天 用UDP协议、qq传文件用TCP协议

(1)TCP是面向连接的,UDP是面向无连接的

(2)TCP保证数据的正确性,UDP不保证

(3)TCP保证数据顺序,,UDP不保证

(4)TCP由于有三次握手所以没有UDP传输的快

(5)在模式上TCP为流模式,UDP为数据报模式。

2简述网络协议三要素

(1)语法:规定了传输数据的格式吧

(2)语义:即需要发出何种控制信息,完成何种动作以及做出何种响应

(3)同步:事件实现顺序的详细说明

3常见的路由选择协议以及区别

RIP协议:允许一条路由最多只能包含15个路由器,适用于小互联网

 

 

 

 

4.1操作系统

1、操作系统的发展历程

手工操作阶段、单道批处理阶段、多道批处理阶段、分时系统、实时系统。

2操作系统的基本特征:

并发性、共享性 、虚拟性、异步性

3操作系统的定义

操作系统是控制和管理计算机硬件与软件资源,合理组织和调度计算机工作和资源的分配,为用户和其他程序提供方便接口和环境的程序集合

4操作系统的功能:

举个例子:你要和朋友视频聊天

1)从各个文件夹里找到QQ.exe文件----体现了操作系统文件管理功能

2)双击qq.exe文件--操作系统把该程序的相关数据放入内存,放到内存的哪个地方?前面,中间,后面?--------体现了操作系统内存管理的功能

3)qq正常运行,只有程序放入内存并被分配处理机才能正常的运行,内存中有很多进程,处理机也就是CPU分配给哪个进程?------体现了操作系统的处理机管理功能

4)开始和朋友视频聊天,操作系统将摄像头硬件资源分配给QQ这个进程,摄像头使用完毕后还要将硬件资源进行资源回收------这体现了操作系统的设备管理功能

5进程通信方式:

(1)共享存储:用户进程的存储空间是相互独立的,一个进程在运行期间不能访问其他进程的存储空间,但进程之间的通信确实必不可少的,(比如分享一个图片)共享存储是在内存为通信的两个进程分配一个共享空间,这个共享空间呢,要求两个进程互斥的访问此共享空间,需要用到同步互斥工具(PV操作)

(2)管道通信是在内存中开辟一个缓冲区,进程1传递的数据以字符流的方式写入管道,当管道写满之后,进程2才能读数据,当进程2读完所有数据之后,进程1才能继续写数据。管道通信采取的是半双工通信(类似对讲机)

(3)消息传递:分为直接通信方式和间接通信方式,直接通信方式是发送方直接把格式化的消息发送给接收方,并将它挂在接收进程的消息缓冲队列上

间接发送方式是将消息发送到一个中间体相当于信箱,接受进程从中间体取得消息

4.1数据结构

数据结构是相互之间存在一种或多种特定关系的数据元素集合,算法是建立在特定数据结构的基础上,对数据进行操作的方法。算法的特性:有穷性 可行性,确定性、输入、输出

4.2数据库

1、数据库的安全性指什么?

数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄露,破坏或更改

2、安全性因素有哪些?

(1)非授权用户对数据库的恶意破坏或修改。

(2)数据库重要敏感文件的泄露

(3)安全环境的脆弱性

3解决措施:

针对安全因素(1)我们主要采取的措施有

用户身份鉴别:静态口令鉴别、动态口令鉴别、智能卡鉴别、生物特征鉴别。

自主存取控制:对不同的数据库对象授予不同的数据库权限

视图机制:将数据对没有授权的用户隐藏起来

针对安全因素(2)我们主要采取的措施有

强制存取控制即对不同敏感的数据授予不同的敏感程度

数据加密存储、

数据加密传输、

审计功能:把用户对数据库的所有操作自动的记录下来放到审计日志中,通过分析审计日志可以对潜在的威胁采取措施加以防范。

4数据库的完整性是什么?

数据库的完整性包括数据的正确性和相容性。

包括实体完整性、参照完整性、用户定义完整性

5触发器:

触发器的是用户定义在关系表上的一类由事件驱动的特殊过程

例如:对SC表中学生的成绩进行修改,如果修改后的成绩增加了10%

就把信息记录到另一个表中

触发时机可以分为After和Before

触发器类型有行级触发器和语句级触发器

4.2计算机网络

ARP协议(P155更全面!)

主机在发送消息时,将包含IP地址的ARP请求广播到局域网的所有主机上,并接受返回消息以确定目标主机的MAC地址,并将IP地址和MAC地址存放到本机ARP缓存中一段时间。

4.2操作系统

1进程和线程?

1)线程是被独立调度的基本单位。进程拥有资源的基本单位

2)一个进程内的线程的切换不会引起进程间的切换。对处于不同进程的两个线程切换回引起进程的切换。

3)同一进程的多个线程共享进程的地址空间。

举个例子:

还没有引入进程之前,程序只能串行的在内存中执行,即我们不能边聊QQ边听音乐

引入了进程之后呢,多个程序可以并发的在内存中执行,即我们能够边聊QQ边听音乐

但是我们不能边聊QQ边传输QQ文件,所以我们引入了线程这个概念,我们可以 边听音乐,边聊QQ ,边发送QQ文件。啊,时代是多么牛逼啊!

2处理机调度的层次

(1)作业调度:将外存中处于后备队列的作业调入内存,并为其建立PCB,分配资源。

(2)内存调度:为提高内存的利用率和系统的吞吐量,将暂时不能运行的进程调至外存等待,但是pcb常驻内存,此时进程的状态为挂起态,当他们已经具备运行条件并且内存中又空闲的空间时,内存调度把挂起态的进程调入内存并将其挂到就绪队列中

(3)进程调度:从就绪队列中为进程分配处理机的过程

3处理机调度进程的算法有哪些?

先来先服务、短作业优先、优先级调度算法、高响应比优先、

(等待时间+要求服务时间)/要求服务时间

时间片轮转调度算法、多级反馈队列调度算法(设置多个就绪队列,优先级依次降低,时间片依次增长,当一个新进程进入内存时,先将此进程放到第一级队列的末尾,按照先来先服务的原则进行调度,如果此进程在第一级队列所规定的的时间片内完成,便可撤离系统,如果没有执行完毕,则将此进程放到第二级队列的末尾,按照先来先服务的原则调度。若在第二级队列的一个是时间片仍未完成,再以同样的方法放入第3级队列中,直到运行完毕)

4.2数据结构

简述快速排序

首先为待排序队列选取一个基准一般就是第一个元素为基准,将所有比基准值小的元素放到左边,比基准值大的元素放到右边.

如何实现? 设置low 和high 标记,low指向第一个元素,high指向最后一个元素。

low<high的情况下

high标记从后往前找比基准值小的元素,然后将high标记的元素赋值给low标记

low标记从前往后找比基准值大的元素,然后将low标记的元素赋值给high标记

直到low标记>=high 标记,此时的low标记的位置就是基准的位置

递归的进行操作,知道所有元素都有序

各个排序的时间复杂度

 

4.3数据库

1、什么是事务?

事务就是一系列数据库操作序列,这些操作要么全做,要么全不做。

2、事务的特性(原子性、一致性、隔离性、持续性)

3、数据库系统发生故障的种类

(1)事物内部的故障(银行转账余额不足)

(2)系统故障(操作系统故障、系统断电)

(3)介质故障(磁盘损坏)

(4)计算机病毒

4、发生故障一般采用什么技术进行处理?

(1)数据转储分为动态转储和静态转储;动态转储不像静态转储那样必须等待正在运行的用户事务结束,也不会影响新事务的运行。但是容易出现转储错误。比如T1时刻,系统把数据A=100转储到磁盘上,但是T2时刻事务将A改为200.所以我们需要建立日志文件

(2)日志文件需要记录的内容有:各个事务的开始(Begin transaction  ),各个事物的结束(Commit 或rollback ),各个事务的操作。

日志文件需要遵循的原则:登记的次序严格按照并发事务执行的顺序,

   

 

                         必须先写日志文件,后写数据库

 

5、发生故障如何处理?

1)针对事务性故障:

反向扫描日志文件,对该事务的操作执行逆操作,直至读至事务开始的标记。

2)针对系统故障:

  正向扫描日志文件,找出已经完成的事务和未完成的事务;将已经完成的事务记入重做队列,将未完成的事务记入撤销队列。

对于撤销队列中的事务执行UNDO操作,即反向扫描日志文件,对每个撤销事务的的更新操作执行逆操作,直至事务的开始标记;

对于重做队列中的事务执行REDO操作,即正向扫描日志文件。将日志文件中更新后的值写入数据库。

(3)针对介质故障重装数据库

4.3计算机网络

(1)ICMP协议

用于询问网络连通状况和报告差错

4.4操作系统

(1)什么是进程控制?对系统中的所有进程实施有效的管理,它具有创建进程、撤销进程

实现进程之间的状态转换等功能。

4.6数据库原理

并发控制就是使一个用户事务的执行不受其他事务的干扰。

并发操作带来的数据不一致包括:丢失修改、不可重复度、读脏数据。

简单介绍丢失修改:两个事务,T1、T2读入同一数据并修改,T2提交的结果破坏了T1提交的结果,导致T1修改的数据被丢失。

不可重复读:事务T1读取了数据A,事务T2对数据A进行了更新操作,当事务T1再次读取数据A时发现与第一次读取数据A的结果不一样

读取脏数据:事务T1修改某一数据A并将其写回磁盘,事务T2读取了此数据A,但是事务T1由于某种原因,被撤销了(callback)此时数据A恢复原值,但是T2读的数据与数据库中的数据不一致。

一级封锁协议:事务T修改数据A之前必须先对其加X锁,直到事务结束时释放

二级封锁协议:在一级封锁协议的基础上,增加事务T在读取数据R之前必须先对其加S锁,读完立即释放。

三级封锁协议:在一级封锁协议的基础上,增加事务T在读取数据R之前必须先对其加S锁,直到事务结束才释放。

一级封锁协议解决的问题是丢失修改

二级封锁协议解决的问题是读脏数据

三级封锁协议解决的问题是不可重复读。

但是封锁可能引起死锁和活锁

活锁类似于操作系统的饥饿现象:比如短作业优先,一直有短作业待处理,就会长时间使先来的长作业得不到处理。解决方法:先来先服务

死锁:比如说事务T1封锁了数据A,事务T2封锁了数据B,此时事务T1又想封锁数据B,事务T2又想封锁数据A,就会导致事务T1等待事务T2,事务T2等待事务T1,产生死锁

此类问题的解决方法有两种,一种是预防死锁,另一种是允许死锁发生

预防死锁的方法不太常用:第一种是一次封锁法,降低了并发度第二种是顺序封锁法

在解决死锁问题上主要采用诊断死锁并解除死锁的方法。

 

诊断死锁的方法有:(1)超时法 (2)等待图法

超时法主要是判断事务的等待时间,如果超过某个规定的时间就认为发生了死锁

缺点:(规定等待时间过短)在没有死锁的情况下,等待的时间超过规定的等待时间就会发生误判

(规定等待时间过长)当事务发生死锁后,没有达到规定等待时间,不能及时的发现死锁。

等待图法就是每隔一段时间生成事务等待图(类似于数据结构的拓扑结构)当发现有向图有回路时,判定死锁发生。

如何处理死锁呢?选择一个处理死锁代价最小的事务,将其撤销,释放该事物所持有的所有锁。使其他事物得以运行下去。

4.7 数据库

多个事务的并发执行是正确的,当且仅当其结果按某一次序串行的执行这些事务时的结果相同。这种调度策略称为可串行化调度。

冲突可串行化:一个调度S1,通过交换两个不冲突操作的顺序得到另一个调度S2,如果S2是串行的则S1是冲突可串化的。

如果一个调度是冲突可串行化的,一定是可串行化调度。

如果一个调度是可串行化调度,他不一定是冲突可串行化的。

4.7操作系统

什么叫死锁?

在一组进程发生死锁时,该组的每一个进程都在等待另一个死锁的进程所占有的资源

产生死锁的原因

(1)竞争不可剥夺性资源

(2)进程推进顺序不当

(3)信号量使用不当

产生死锁的必要条件

1)互斥条件

(2) 不可剥夺条件

(3) 请求和保持条件

(4) 循环等待条件

【注】:发生这四个条件也不一定产生死锁,但是产生死锁必然有这四个条件

如何处理死锁?

1预防死锁2避免死锁3死锁的检测和解除

1预防死锁:(1)破坏互斥条件:将独享设备在逻辑上改造为共享设备,比如SPOOLing技术,系统利用SPOOLing技术将独享打印机改造为共享打印机。

2)破坏不可剥夺性资源:

方案一:当一个保持某些不可剥夺性资源的进程提出了新的资源请求而得不到满足时,他必须释放掉所有已经拥有的不可剥夺性资源,以后再申请

方案二:当一个进程提出新的资源请求而得不到满足时,操作系统会帮他剥夺其他进程的该资源,但是操作系统会考虑到进程的优先级。

(4)破坏请求和保持资源

采用静态分配法:进程在运行前一次性申请它所需要的全部资源,如果申请不到就不会让此进程运行。

(5)破坏循环等待条件

为每个资源编号,每个进程必须按照从小到大的编号来申请资源

避免死锁?------银行家算法

这里把操作系统视为银行家,操作系统管理的资源视为银行家资金,进程向操作系统请求分配资源时相当于银行家贷款给用户,当进程首次分配资源时,操作系统会测试该进程所需要的最大资源,若现存的资源能够满足该进程,就按该进程所申请的资源分配给它,否则就推迟分配。当进程继续申请资源时,先测试该进程本次所申请的资源和所拥有的资源之和是否超过该进程所需要的最大资源数,若超过操作系统拒绝分配资源,若未超过,将之与操作系统现存的资源数比较,若能满足则按申请量分配,否则推迟分配。

4.7 计算机网络

物理层是干什么的?

物理层解决如何在连接各种计算机的传输媒体上透明的传输数据比特流。,而不是指具体的传输媒体。

具体的工作:

机械特性:指明接线器的形状和尺寸、引线的数目和排列等。

电气特性:指明在接口电缆上传输信号的电压范围、传输的速率、距离限制等

功能特性:指明某条线上出现的某一电平的电压表示何种意义。

规程特性:指明对于不同功能的各种事件出现的顺序

计算机通过交换机来进行数据通信的话,传输过程全都是数字比特流。

码元:在一个固定时长的数字脉冲,每个数字脉冲代表不同的离散数值,K进制码元相当于有K个离散数值

单工通信:只有一个方向的通信比如电视广播

半双工通信:通信双方都可以发数据和收数据但不能同时发或者收,比如对讲机

全双工通信:通信双方可以同时发数据和接受数据;比如QQ聊天

4.8数据库原理

两段锁协议     

两段锁协议是可串行化的充分条件

如果事务遵循两段锁协议就一定是可串行化的,反之不一定。

遵循两段锁协议有可能发生死锁。

封锁对象的大小称为封锁粒度

封锁对象可以是逻辑单元也可以是物理单元。

逻辑单元包括属性值,元组,甚至是数据库

物理单元包括页面等

封锁粒度与系统的并发度和开销密切相关

封锁粒度越大,系统的并发度就越小,系统的封锁  开销就越小

封锁粒度越小,系统的并发度就越大,系统的封锁开销就越大

 

显示封锁:直接加到数据对象上的封锁。

隐示封锁:是指该数据对象没有独立加锁,是由于其上级节点加锁而是该数据对象加上了锁。

当对关系R1加锁时,要先看其祖先节点有没有锁与锁之间的冲突,再看其子孙节点有没有锁与锁之间的冲突,比较麻烦,所以引进了意向锁来提高对某个数据对象加锁时系统的检查效率。意向锁:如果对一个结点加意向锁则表示该节点的下层节点正在被加锁

 

4.8计算机网络

基带信号:来自信源的信号,比如人的声音,频率较低,在空气中传播距离较近容易受外界干扰,需要把基带信号经过调制把基带信号调制为带通信号(调幅、调频、调相)。(短距离通信用基带信号通信)

 

基带信号的编码格式:

曼彻斯特编码

一个码元分成两部分,前高后低或者前低后高

差分曼彻斯特编码

若码元为1则前半个码元的电平和上一个码元的后半个码元电平相同,若为0则相反。并且抗干扰性强于曼彻斯特编码

码元在信道上传输数据时,码元传输速率有一定的上限,否则出现码间串扰,接收方识别不出信息所以引入了奈氏准则(无信号干扰)。

物理层下面的传输媒体:双绞线,同轴电缆,光纤

物理层设备集线器:采用广播的形式,它在网络中起到信号放大和重发的作用,目的是扩大网络的传输范围

为了不浪费带宽:可以在一个信道上传输多个用户发送的数据信息采用的是信道复用技术,为了区分各个用户发送的数据,采用频分复用技术、时分复用技术、波分复用技术

4.8操作系统

临界资源:一次 仅允许一个进程使用的资源

临界区每个进程中访问临界资源的那段代码称为临界区

进程的异步性:每个进程何时得到处理机运行,以怎样的速度推进都是不可预知的,也就是说,进程以不可预知的速度向前推进

进程具有异步性,但在实际应用中,进程又必须按照“写数据->读数据”的顺序,所以解决进程的异步性问题就是进程同步所讨论的内容

原语是一种特殊的程序段,这些操作只能一气呵成,不可被中断.

信号量分为整形信号量(不满足让权等待的原则,一直占用处理机)和记录型信号量

如果一个进程想要访问某个临界资源,他必须在访问前必须先执行wait原语操作(进入进入区,如果信号量>=0, 将信号量-1),进入临界区访问临界资源,访问完之后执行signal原语(进入退出区将信号量+1 )

 

 

举个例子,系统有两台打印机,信号量为2,一共有4个进程p0p1p2p3都需要打印机,p0执行一个wait原语,立即将信号量-1。然后切换到p1,同样执行wait原语,信号量减1。接着p2p3执行同样的操作,此时信号量变为-2p2p3由运行态变为阻塞态,进入该信号量所对应的等待队列中。

接着p0执行一个signal原语,立即将信号量+1,此时信号量为-1<=0,说明在等待队列中存在进程,p0进程在signal原语中将执行一个wakeup原语,用来唤醒p2并且将刚刚释放的打印机资源给p2p2执行signal原语信号量+1,此时信号量=0<=0,同时在signal原语中执行wakeup原语唤醒p3进程,当p3进程执行signal原语时信号量变为1>0,将不再执行wakeup原语。

4.9计算机网络

 

数据链路层使用的信道有两种:一种是点对点信道,另一种是广播信道

什么叫数据链路?:数据链路除了有物理线路之外,还得有通信协议来控制线路上数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。

数据链路层的任务主要是:

 

 

ip数据报安全的发送给接收方

1)将网络层传输的IP数据报,加帧头、加帧尾、加物理地址(MAC地址)、加校验值-------封装成帧。

(2)透明传输:数据链路层就相当于快递小哥,看不到快递里面的内容。

当数据比特流与帧头或者帧尾相同时,容易导致数据的不透明传输。我们应该怎么办呢?

通常采用的是零比特传输法。每次遇到51后面添加0.为啥这样做呢?因为帧头和帧尾都是01111110.这样就很好的实现透明传输。还有一种方法是违规编码法,采用曼彻斯特的编码方式时,假设规定前高后低为0,前低后高为1,我们可以采用高高电平和低低电平这种违规的电平来当做帧头和帧尾。实现透明传输。

3)流量控制:

4)差错检测: 一般采用奇偶校验、循环冗余检验方法CRC算出帧检验序列--------> (传输的数据+帧检验序列FCS

 

 (广域网)点到点协议:我们家的猫和网通网之间的连接就是点到点的,使用的协议为PPP协议

PPP协议不具有纠错功能,不具有重传功能。当他利用循环冗余法检验出帧出错时,直接丢弃该帧,所以是不可靠传输协议,支持身份验证

(以太局域网)使用广播信道:之前考虑用多路复用技术,但是每次添加一个计算机就得让这台计算机与每一台计算机建立不同的频率。所以采用的是 CSMD/CD协议(载波监听,多点接入)

 引入最小帧长

帧长/传输速率>2τ,如果不规定最小帧长,就会出现,数据传输完毕,没检测到发生冲突

4.9操作系统

进程同步:由于进程之间是并发执行的,导致进程具有异步性,但有些进程之间有先后顺序关系,进程同步就要解决此问题

前操作之后执行V操作,后操作之前执行P操作

比如说代码1和代码2 的执行要在代码4之前。首先我们先初始化信号量为0,假设1:先执行P1VS),此时信号量+1,在执行P2PS),将信号量减10,发现信号量>=0,所以继续执行代码4,保证了代码4的执行在代码12之后。

假设2:先执行P2P(S),将信号量-1-1,信号量<0;表示现在没有可用的资源,阻塞并且将P2进程挂到信号量S所对应的阻塞队列中。当执行P1操作至V(s)时,将信号量+10(说明此时其他进程正在试图此临界资源)并且执行Wakeup原语将P2进程唤醒。保证了进程同步。

4.10计算机网络

 网卡中的MAC地址也成物理地址,由48位二进制数字组成

网卡能够接收的三种帧;单播帧(111111),广播帧(FFFFFFFFFFFF);多播帧

最小帧长问题:从AB传输数据,再从BA传播时间为2τ,如果帧太小,可能导致在没收到冲突信号之前,数据帧已经发送完毕。所以CSMA/CD也就失去了意义

.

 

 

 

数据帧

 

精辟:MAC地址是你计算机的名字,IP是地址 ,你寄快递写了地址不写名字吗?

扩展的以太网:

距离上的扩展

(1)通过集线器来连接多台计算机,使得在局域网内,发送信息的距离延长

(2)可以将调制解配器比如说光猫,连接在集线器上,使得传输距离更加远

              

计算机数量上的扩展

 

1)集线器级联系。将3个集线器连接起来,但是冲突域变大,而且采用广播的形式比较麻烦,而且还不安全

2)引入了网桥

 

MA要把数据帧发送给MB,网桥的作用:记下MA在哪个接口,并且采用广播的形式发送给各个计算机。

接着MB要把数据帧发送给MA,此时网桥知道MA在左边哪个接口 ,所以直接点对点发送给MA,不影响ME传递给MF

网桥连接多个冲突域,网桥通过自学习的方式,将转发表填写完整,最终实现冲突域之间的通信互不影响

(3)随着网桥口越来越多,就将计算机直接连接在网桥(现在叫交换机)上了。

交换机可以识别连在网络上的节点的网卡MAC地址实现点对点通信。并且每个接口有按顺序存储转发的功能。全双工通信、独享带宽

 

网络层(路由器)的作用,负责在不同的网络尽力发送数据,如果数据包丢了不负责数据包的重传,和数据包的传输顺序

在同一个局域网下IP地址相同

IP10.0.0.0

子网掩码:255.0.0.0         只有一个255说明IP地址第一位是网络号,剩下是主机号

主机A要想实现两个网络之间的通信必须配备网关,当发现目的地址不在本地网络,就会把数据发送给网关

 

每个路由器都会有一个路由表决定下一跳。下一跳需要提前配置

4.10数据库新技术篇

巨量、多样、快变、价值

4.11计算机网络

同一个网段通信:

 ARP协议通过广播的形式获得同网段其他主机的MAC地址

 

主机A要向主机B发送数据时,主机A的应用层准备要发送的数据,传输层将其数据分段,变成一个一个的数据段,网络层将数据段加目标ip地址和源ip地址,并且根据子网掩码判断目标IP地址的是否和自己一个网段,如果是主机A就会发送一个ARP包,主机B识别出这个ARP包是给自己的,就会将自己的MAC地址封装在ARP数据包内,并传递给主机A,主机A知道了主机BMAC地址,将封装成帧,透明传输,差错检验------>在物理层以信号的方式传播,经过集线器(放大信号),传递交换机,交换机有存储转发功能,它是数据链路层设备,可以识别目标MAC地址,于是数据传递给主机B,主机B再逐层的解封装,得到主机A发送的数据。

如果主机A通过子网掩码发现,目标ip地址和自己不在同一网段,就会以广播的形式发送ARP包,网关接收到数据包后,就会返回他的MAC地址给AA封装成帧,透明传输,差错检验------>发送给网关,网关收到后,根据目标IP地址来决定发送的下一跳的MAC地址是谁?最终终于到了主机B

ICMP协议用于检验主机与路由器之间是否能够建立连接。“Ping”的过程实际上就是ICMP协议工作的过程

在网络层传输数据时,如果Ip数据报过大,在传输过程中就会对数据报分片。

IP协议是让路由器知道下一跳去哪里

 没有网关就没有办法去其他网段

静态路由器:通过手动配置路由器,告诉路由器下一跳给谁,来使两个不同网段的主机进行通信。当网络发生变化时,需要管理员再次配置路由器

 

动态路由RIP协议,每30秒的向相邻路由器交换路由信息,寻找跳数最少的路由路线,一条网络最多只能包含15个路由器,适用于小型互联网  

OSFP算法是基于链路状态的路由选择协议,只有当链路状态发生变化时发生 ,路由器向其他路由器交换路由器的链路状态,包括时延、带宽等

TCP传输有三个阶段:连接建立、数据传输、连接释放

先说一些连接建立,一般是客户服务器方式

 

 三次握手:1、客户端向服务器端发送连接请求报文段,此过程不携带应用层的数据

2、服务端接受到了客户端发送的请求报文段,为该TCP连接分配接收缓存,并向客户端返回确认报文段,允许连接

3、客户端收到了服务器发来的确认报文段,并返回服务器确认报文段,此过程携带应用层的数据

四次松手:

1、客户端发送释放报文段,并且停止发送数据

2、服务器接收到客户端发来的释放报文段,回复一个确认报文段,此时客户端到服务器端的TCP连接已经关闭,但是服务器和客户端的连接还在继续

3、服务器端发送完数据也会发送释放报文段给客户端。

4、客户端回复一个确认报文段,等待一段时间后,连接释放

TCP可靠连接

TCP是面向字节流连接的,但是在发送的时候是按照多个字节流为一组发送的,每发送一组数据就会接收到一个确认帧,当确认帧迟迟没有收到,就会启动超时重传机制。

TCP流量控制:主要通过滑动窗口机制实现,接收端根据接收缓冲剩余的大小,来动态 控制滑动窗口的大小

TCP拥塞控制

拥塞窗口是发送方自己估算网络的拥塞程度而设置的窗口值

主要的方法是慢开始,一开始随着传输轮次(发送一批报文段并收到它们的确认时间是一个传输轮次)增加拥塞窗口以指数的形式增加,当到达拥塞窗口到达一个门限值,拥塞窗口以单个形式增长,当TCP传输出现丢包现象,门限值变为一开始的一半,并且拥塞窗口从0开始。重复上述操作。

快重传和快恢复:一开始随着传输轮次增加拥塞窗口以指数的形式增加,当接收端收到3个冗余的ack时,就会实现快重传技术,重新发送此数据报,不用等待超时重传,省下了时间,然后拥塞窗口的门限值降为一半,并且拥塞窗口变为新的门限值不用从0开始,实现了快恢复,此后拥塞窗口变为线性增长

应用层

是干啥的:应用层是为应用程序的通信提供服务的

功能:文件传输、电子邮件

重要协议:FTPSMTPPOP3HTTPDNS

DNS系统:当某个应用进程需要把名解析为ip地址时,以UDP数据报方式发给本地域名服务器,查找域名所对应的ip地址后用报文返回,如果本地域名服务器不能解析,就向根域名服务器发送请求,根域名服务器接着发送给顶级域名服务器,顶级服务器再发送给权限域名服务器,查找成功后依次返回到本地域名,这就是递归查询。

迭代查询是本地域名服务器如果不能解析,就会发送给根域名服务器,如果根域名服务器还是无法解析完整这个域名的话,就会返回给本地域名服务器顶级域名服务器的地址,让本地域名服务器访问顶级域名服务器。权限服务器以此类推

FTP采用客户端和服务器的工作方式,它使用两个TCP连接,一个是控制连接,标准端口为21,用于发送FTP命令信息,如上传、下载。一个是数据连接,标准端口为20,用于上传下载数据。数据连接的类型分为主动模式和被动模式。主动模式是服务器连接客户端,被动模式是客户端连接服务器。

电子邮件的发送过程
1)发件人调用用户代理把邮件使用smtp协议发给发件方邮件服务器
2)发送方邮件服务器收到邮件后,把邮件放在邮件缓存队列里,等待发送到对方的邮件服务器中
3)发送方邮件服务器的smtp客户与接收方邮件服务器的SMTP服务器建立TCP连接,然后依次发送邮件
4)接收方邮件服务器将邮件放入收件人用户邮箱中等待用户使用pop3协议读取邮件。

http协议是浏览器和服务器之间交互的一种规则。http协议有两种报文,分为请求报文和响应报文

http是无状态的,也就是说,同一个客户第二次访问同一个服务器上的页面时,服务器不记得这个用户曾经访问过此页面,为了跟踪用户活动方便数据分析和个性化服务,使用cookie来记录客户访问记录。

http既可以是持久性连接也可以是非持久性连接

非持久性连接服务器每传输一次文档需要两倍的RTT

持久连接是指连接在一定时间内不中断,持久连接又分为非流水线连接(与停止等待协议有关)和流水线连接(GBNSR协议有关)

用户上网的过程:用户单击鼠标后,浏览器对URL(统一资源定位符)进行分析,然后浏览器向DNS请求解析IP地址,浏览器得到IP地址后与服务器建立TCP连接,浏览器发出http请求报文,服务器回复给浏览器http响应报文,然后释放掉TCP连接,浏览器解析响应报文,并将web页面显示给用户

DHCP协议:DHCP协议采用客户端/服务器模型连接方式是UDP,是一个自动大型局域网网机器动态分配IP地址等信息的协议。

DHCP的工作原理:需要ip地址的主机在开机时向DHCP服务器采取广播的形式向DHCP服务器发送报文,DHCP服务器首先在本地数据库查找此计算机的IP地址,若找到了则返回找到的信息,若找不到,则从服务器IP地址池中取出一个地址分配给该计算机并返回。

操作系统的功能:

作为系统资源的管理者:

         文件管理、存储管理、处理机管理、设备管理

作为用户与计算机硬件的接口:

         命令接口(面向用户)、程序接口(系统调用、面向应用程序的)、GUI图形界面

命令接口分为交互式命令接口和批处理命令接口。

作为扩充机器(虚拟机):

           计算机硬件没有操作系统的支持只是裸机,只有有了操作系统这个软件的支持,才能更方便用户的使用,比如计算机硬件就是各种工具,操作系统就相当于工人,工人与工具结合才能制造出有价值的东西。

操作系统可以将CPU状态分为目态和管态,目态是用来执行用户程序的非特权命令,管态是用来执行内核程序的特权命令。

内核分为大内核和小内核

小内核分包括:时钟管理、原语、中断机制

大内核包括:时钟管理、原语、中断机制、进程管理、存储器管理、设备管理等。

当中断发生时,CPU会由用户态转换为核心态,当前运行的进程会停止运行并有操作系统内核进行处理,操作系统会根据不同的中断信号做出不同的处理,比如(进程切换,设备分配等),有了中断才能实现多道程序并发执行。

计算机对外部中断的处理:用户程序在用户态每执行一条指令,CPU就会检查是否有外部中断信号,如果有的话,用户程序需要暂停运行,保护被中断进程的CPU环境。然后处理机进入核心态,操作系统内核执行中断处理程序,处理完后CPU进入用户态,继续执行用户程序

系统调用:用户程序在用户态执行陷入命令,来发起系统调用,请求操作系统提供服务。

陷入指令是唯一一个只能在用户态执行而不能在核心态执行的指令          

电话拨号上网过程。

QQ上发送消息,计算机会转换为比特流的形式,通过网卡发送到调制解调器中,也就是猫,猫将数字信号转换为模拟信号通过电话线传播,经过接收端的调制解调器将模拟信号转换为数字信号经过网卡输入到另一台电脑上。

计算机网络

由于有码间串扰,规定了奈氏准则即最大码元传输速率,要想提高信息的传输速率,必须让码元携带更多的比特位。

香农定理定义在有噪声的情况下,信号(比特)传输速率,引入了信噪比的这个概念。如果噪声太大,会影响接收方识别比特,就会使降低信息传输速率

计算机通过网卡发出数字信号

 

操作系统

实现进程的互斥一般信号量设置为1,实现进程的同步设置信号量为0

生产者消费者问题

生产者和消费者共享一个初始为空、大小为n的缓冲区。

生产者进程每次想缓冲区放入一个产品,消费者进程每次从缓冲区取出一个产品。

条件是:只有缓冲区不满时,生产者才能把产品放入缓冲区,否则必须等待。只有缓冲区不空时,消费者才能从缓冲区中取出产品,否则等待。

消费者和生产者必须互斥的访问缓冲区。

所欲一共有三对PV操作。互斥信号量为1,空缓冲区信号量为n,满缓冲区信号量为0

实现互斥的P操作一定要在实现同步的P操作之后,否则会引起死锁

 

同步关系前VP。前面的事件发生之后要执行V操作,后面的事件发生之前需要执行P操作

我们需要注意找出各个事件的同步关系,确定信号量,根据同步关系执行前VP.

管程:

为什么要引入管程?

程序员编写信号量代码困难,易出错  

管程的作用?

管程是用来实现进程的互斥和同步的

什么是管程?管程的组成?具有什么特点?

管程类似于面向对象的抽象类。

 

这个抽象类有好几个成员变量。

对这些成员变量操作的一系列成员函数。

 

一个进程只有通过调用管程内部的函数,才能实现对对该管程内的数据的访问

每次只允许一个进程在管程内执行某个操作

哲学家进餐问题?

 

哲学家进餐,哲学家一生只干两件事,一件事是思考,另一件是吃饭

假设一共有五个哲学家在圆桌上吃饭,并且有5根筷子。

分别对哲学家和筷子进行编号,第i号哲学家左边的筷子号为i,右边的筷子号为(i+1%5

解决思路:(1)、最多只允许4个哲学家进餐

2对于奇数号的哲学家必须先抢左边的筷子

对于偶数号的哲学家必须先抢右边的筷子,如果其中一方没有抢到资源就进入阻塞序列,不会出现某一进城在占用资源的同时出现死锁。

3仅当哲学家两边都有筷子才可以拿起

 计算机网络

物理层的传输介质 双跤线,同轴电缆,光纤

中继器的作用是对信号进行放大和再生,提高信号的传输距离

集线器是一个多端口的中继器,采用星型拓扑结构和广播的方式传播信号

操作系统

程序运行前有三个步骤

1编译:将程序的源代码由编译程序编译为许多个目标模块

2链接:

静态链接:在程序运行之前,将各个目标模块以及它们所需要的库函数

          链接成一个完整的可执行的程序,以后不再拆开。

        装入时动态链接:将目标模块,边装入边链接

        运行时动态链接:在程序运行的过程中,需要某个目标模块时才进行链接。

3装入:

        绝对装入:在编译时,如果知道程序将驻留在内存的某个位置,编译程序就会产生绝对地址的目标代码,装入程序就会按照这个代码将装入模块装入内存。

        静态重定位:装入程序会根据目标代码的逻辑地址和当前内存情况,将装入模块装入到内存合适的位置。

        动态重定位:装入程序将装入模块装入内存后,不会立即将装入模块中的相对地址转换为绝对地址,而是等到程序运行时才进行转换。

操作系统对内存管理的具体工作:

1 操作系统负责对内存空间的分配与回收

2操作系统需要提供某种技术从逻辑上对内存空间进行扩充。(覆盖、交换)

3操作系统需要将逻辑地址转换为物理地址

4操作系统要提供内存保护功能(各个进程需要在各自的内存空间内进行执行)

当一个程序大小超过内存大小时

覆盖技术:内存中有固定区和覆盖区,常用的进程放入固定区,不常用的进程只有被需要执行的时候放入覆盖区。

交换技术:当内存空间紧张的时候,系统将内存中某些进程(阻塞态)暂时换出到外存,把外存中已经具备运行条件的进程换入内存

磁盘分为对换区和文件区

对换区追求的换入换出的速度,所以要连续存储

文件区追求的是存储空间的利用率,采用离散存储的方式。

操作系统负责对内存空间的分配与回收:

单一连续分配:只支持单道程序,内存分为系统区和用户区

              无外部碎片,有内部碎片

固定分区分配:分为分区大小相等和分区大小不等。

              每个分区只能存放一个作业

              无外部碎片,有内部碎片

动态分配:无内部碎片,有外部碎片 (内存空间太小,不能将某个进程放入内存)

动态分区分配算法

1首次适应算法,将空闲分区链按地址递增顺序链接,每次分配内存时顺序查找空闲分区链,找到一个大小满足要求的空闲分区。优点是空闲分区分配后不需要对空闲分区链进行重新排列,算法的开销比较小

循环首次适应算法:由首次适应算法演变而来的,查找的时候是从上次查找结束的位置开始的。优点是减小了查找的开销,空闲分区分配后不需要对空闲分区链进行重新排列,算法的开销比较小。会使高地址的大分区也被用完

最佳适应算法:空闲分区大小从小到大递增排列。优点是大分区被保留,缺点是会产生外部碎片。空闲分区分配后需要对空闲分区链进行重新排列,算法的开销比较大

最坏适应算法:空闲分区大小从大到小递减排列。优点是减少外部碎片,缺点大作业不容易得到满足。

 

非连续分配的方式

充分利用内存,也不需要用紧凑技术

如何求物理地址呢?

第一步找出逻辑地址对应的页号

第二步找出页面在内存中的起始地址

第三步算出逻辑地址在页面内的偏移量

求和:物理地址= 页面在内存中的起始地址+偏移量

 

页表是存放在内存中的

根据逻辑地址求出页号和页面偏移量

判断页号和页表长度的值,看看是否越界,如果不越界就会根据页表寄存器的页表始值和所求页号以及页表项长度求出所求页号对应的内存快号,将内存快号和页内偏移量相加就会得出物理地址。

快表

 

根据逻辑地址求出页号和页面偏移量

判断页号和页表长度的值,看看是否越界,如果不越界就看一下快表,如果快表中命中,就直接去访问内存,如果快表中没有命中,就会会根据页表寄存器的页表始值和所求页号以及页表项长度求出所求页号对应的内存快号,将内存快号和页内偏移量相加就会得出物理地址。

快表命中成功一次访问内存

快表命中失败两次访问内存

为啥要引入两级页表呢?(3次访问内存)

问题一:页表必须连续存放,当页表很大的时候,需要占用多个连续的页框

我们可以把一个大的页面拆分成很多个小的页表,然后为这些小的页表,建立顶级页表。

所以实现地址转换:

1 按地址将逻辑地址拆分为3部分(顶级页号、二级页号、页内偏移量)

2根据页表寄存器找出顶级页表的页表始址,再根据一级页号找出二级页号

3结合页内偏移量访问物理地址

基于分段的存储管理方式

根据逻辑地址得到段号和段内地址,根据段表寄存器判断段号是否越界,如果不越界,根据段表始址和段号找到对应的段表项,然后让段长和段内地址比较,看是否发生地址越界,如果没发生地址越界,将基址+段内地址就是物理地址

 

分段比分页更容易实现信息的共享和保护:(可以把实现进程之间共享的代码按代码大小单独分成一个段)

页是信息的物理单位。分页的目的就是为了实现离散分配,提高内存的利用率,对用户是不可见的。

段是信息的逻辑单位。分段的目的是为了更好的满足用户的需求,分段对用户是可见的。

分段是1维的,分页是2维的

 

分页管理的优点:内存利用率高,不会产生外部碎片,只有少量外部碎片,但是他不方便按照逻辑模块实现信息的共享和 保护。

分段管理的优点是:很方便的按照逻辑模块实现信息的共享和保护,但如果段长过大,在内存中占用连续的内存空间会很不方便,而且会产生外部碎片。

段页式管理方式

 

虚拟内存技术?

为什么要引入虚拟内存呢?

因为传统的作业运行时要将作业一次性全部装入内存才开始运行,这会造成两个问题;第一作业很大时,无法全部装入内存,第二内存无法容纳很多大作业,导致程序并发度下降

。第二驻留性,一旦作业被装入内存,就会一直驻留在内存中,导致内存中有很多用不到的数据。

所以我想用虚拟技术来实现:多次性、对换性、虚拟性。

虚拟内存技术,允许一个作业分多步调入内存,如果采用连续分配,不容易实现。

所以我们采用非连续分配

 

 

 

 

 

 

 

数据链路层对网络层的数据报进行封装成帧透明传输,并且提供流量控制和可靠传输,而且有差错检验和纠正功能(海明码)。

网络层:负责在不同的网络之间尽力

发送数据包,不负责丢包重传,不负责数据报的顺序

报文交换有存储转发的时延

静态路由算法:需要网络管理员手工配置路由信息

动态路由算法:通过路由器之间彼此交换信息,按照路由算法优化出路由表。

RIP协议是基于距离向量的路由选择协议,传递使用的协议是UDP

每隔30秒向相邻的路由器交换路由表的全部信息,跳数少的就是最佳路径

最大跳数是15,适合小型的网络。

OSPF是基于链路状态的路由选择协议,传递使用的协议是IP

当链路状态发生变化时,使用洪泛法向自治系统所有路由器交换链路状态信息,路径最短的就是最佳路径

 

 

 

文件的逻辑结构是指在用户来文件内部的数据是如何被组织起来的,而文件的逻辑结构呢?是文件的数据是如何存放在外存之中的?

按文件是否有结构分类?,可以分为无结构文件和有结构文件无结构文件呢,比如说我们啊,WINDOWS操作系统里的.txt文件是无结构文件的,比如说像我们数据库中的二维表,这也是一种啊有结构的文件

顺序文件指的是文件中的记录是在逻辑上一个接一个的顺序排列,但是他在外存中存储的是可以顺序存储也可以是式存储但是一般顺序文件指的是顺序存储。


顺序文件一般分为链式存储和顺序存储链式存储

链式存储无法实现随机存取,每次只能从第一个记录开始依次往后寻找

顺序存储它又分为可变记录每个记录大小不一样和定长记录,咱们说,可变长记录,他无法实现随机存取,也和链式存储差不多也只能从第一个记录依次往寻找,而定长记录呢,它可以实现随机存取

但是对于可变长文件,怎么才能提高存取效率呢?

引入了索引文件

索引文件就是根据可变长文件的关键字建立一个等长的顺序存储的索引表,每次查找记录时,可以根据关键字从索引表中查找,索引表中记录着某条记录的地址。

但是索引表有时候太大了,甚至比可变长文件都大,所以我们引入了索引顺序文件。

 

索引顺序文件是一个索引项对应着一组可变长文件,然后根据索引项提供的记录地址,找到该组可变长文件,然后采取顺序查找的方法,依次查找。

计算机网络:

主机A向主机B发送时数据:

应用程序准备发送的数据,在传输层将数据分段,并且编号,在网络层将这些分段加目的ip地址和源ip地址。

如果目的主机和发送主机是在同一个网段的话,主机在发送消息时,将包含IP地址的ARP请求广播到局域网的所有主机上,并接受返回消息以确定目标主机的MAC地址,并将IP地址和MAC地址存放到本机ARP缓存中一段时间。

数据链路层会根据mac地址封装成帧,变成数字信号的形式在物理层传输,通过集线器 ,交换机

操作系统:

目录本身就是一种有结构的文件

文件在磁盘是连续存放时存取速度最快,因为磁头移动的距离小

计算机网络:

链式分配分为隐式连接和显式链接

隐式链接就和数据结构学的链表差不多,查找磁盘第i块时要顺序访问i之前的所有磁盘块,十分麻烦

显示链接就是为每一个磁盘建立一个文件分配表,查找磁盘第i块时可以先查询文件分配表,通过文件分配表找到第i块磁盘所存放的物理位置。实现随机访问

索引分配就是为每一个文件建立一个索引表。实现随机访问 ,每个文件目录中都会有索引表存放的磁盘块号,如果一张索引表装不下,我们可以采用链接方案,将多个索引表采用指针的方式链接起来。如果索引表达到一定的数量,就无法满足高效率的存取,比如共有256个索引表,我要找第256个索引表的数据,需要顺序的访问前面255个索引快。所以我们采用多级索引,但是对于小文件也需要多次读磁盘的操作

现在主要采用的是混合索引

包含直接地址索引、一级地址索引、二级地址索引等。

假脱机技术:

(共享打印机)首先各个进程都要申请打印的情况下,系统同意所有进程的打印要求,输出进程将各个进程需要打印的数据放入磁盘中的输入井中,为每个进程申请一个打印表,用来存放用户的打印要求,并且各个进程的打印表放入请求打印队列中,当打印机空闲时,从请求打印队列中获取打印表依次打印数据。

 

奇偶校验码:在每一个二进制码元中设置一个校验位,如果一个码元中1的个数为奇数个,则在该码元中设置为奇校验码,如果一个码元中1的个数为偶数个,则在该码元中设置偶校验码,不能检验偶数个比特的错误。

 

posted @ 2021-03-08 19:00  11111ghm  阅读(221)  评论(0编辑  收藏  举报