StudyTonight-计算机系统中文教程-一-
StudyTonight 计算机系统中文教程(一)
原文:StudyTonight
OS
操作系统简介
操作系统简介
原文:https://www.studytonight.com/operating-system/introduction-operating-systems
计算机系统有许多资源(硬件和软件),完成一项任务可能需要这些资源。通常需要的资源是输入/输出设备、内存、文件存储空间、CPU 等。操作系统充当上述资源的管理者,并在需要执行特定任务时将它们分配给特定的程序和用户。因此,操作系统是资源管理器,即它可以在内部管理计算机系统的资源。资源是处理器、内存、文件和输入/输出设备。简单来说,操作系统就是计算机用户和机器之间的接口。
对你来说非常重要的是,每台计算机都必须有一个操作系统,以便运行其他程序。操作系统主要协调各种用户的各种系统程序和应用程序之间的硬件使用。
一个操作系统的行为类似于政府的意思是一个操作系统自己不执行任何有用的功能;虽然它提供了一个环境,其他程序可以在其中做有用的工作。
下面我们有一个计算机系统组件的抽象视图:
在上图中:
-
计算机硬件包含 CPU(CPU)、存储器和输入/输出(I/O)设备,并为系统提供基本的计算资源。
-
像电子表格、网络浏览器、文字处理器等应用程序。用于定义这些资源用于解决用户计算问题的方式。系统程序主要由编译器、加载器、编辑器、操作系统等组成。
-
操作系统主要用于控制硬件,并协调不同用户的各种应用程序之间的使用。
-
基本上,计算机系统主要由硬件、软件和数据组成。
操作系统主要设计用于两个基本目的:
-
操作系统主要控制计算系统资源在各种用户和任务之间的分配和使用。
-
它主要提供计算机硬件和程序员之间的接口,简化了编码、应用程序的创建和调试,并使之成为可能
操作系统的两种观点
-
用户视图
-
系统视图
操作系统:用户视图
计算机的用户视图是指正在使用的界面。这样的系统是为一个用户独占其资源而设计的,以最大化用户正在执行的工作。在这些情况下,操作系统主要是为了易用性而设计的,有些关注性能,而没有关注资源利用率。
操作系统:系统视图
操作系统也可以被视为资源分配器。计算机系统由许多资源组成,如硬件和软件,它们必须得到有效的管理。操作系统充当资源的管理者,在冲突的请求之间做出决定,控制程序的执行,等等。
操作系统管理任务
-
进程管理包括将任务按顺序排列,并在任务进入 CPU 之前将其配对成可管理的大小。
-
内存管理协调进出随机存取存储器的数据,并确定虚拟内存的必要性。
-
设备管理提供连接设备之间的接口。
-
存储管理指导永久数据存储。
-
一个允许软件和你的计算机之间进行标准通信的应用程序。
-
用户界面可以和电脑进行通讯。
操作系统的类型
下面给出了不同类型的操作系统:
-
简单批量系统
-
多道程序批处理系统
-
多处理机系统
-
桌面系统
-
分布式操作系统
-
集群系统
-
实时操作系统
-
手持系统
操作系统的功能
-
它启动电脑
-
它执行基本的计算机任务,例如管理各种外围设备,例如鼠标、键盘
-
它提供用户界面,例如命令行、图形用户界面
-
它处理系统资源,如计算机内存和各种应用程序或外围设备共享 CPU 时间。
-
它提供文件管理,指的是操作系统操作、存储、检索和保存数据的方式。
-
错误处理由操作系统完成。每当需要避免错误时,它都会采取预防措施。
操作系统的优势
下面给出了操作系统的一些优点:
-
操作系统有助于提高工作效率,并通过降低复杂性来节省大量时间。
-
系统的不同组件相互独立,因此一个组件的故障不会影响另一个组件的功能。
-
操作系统主要充当硬件和软件之间的接口。
-
用户无需编写大型程序即可轻松访问硬件。
-
在操作系统的帮助下,与大量用户共享数据变得更加容易。
-
我们可以轻松地在操作系统上安装任何游戏或应用程序,并且可以运行它们
-
一个操作系统可以很容易地随时刷新而没有任何问题。
-
操作系统很容易更新。
-
开源环境中有各种各样的操作系统。例子:Unix/Linux 这些可以很容易地在个人电脑上运行,不需要任何费用,这意味着免费。
-
操作系统主要用于隐藏硬件的复杂性。
-
随着编程变得更加容易,操作系统可以轻松管理计算机。
-
在操作系统的帮助下,多任务处理变得更加容易。
操作系统的缺点
下面给出了使用操作系统的缺点:
-
昂贵
有一些开源平台,比如 Linux。但是有些操作系统很贵。此外,用户可以使用免费的操作系统,但一般来说,运行它们比运行其他操作系统有一点困难。另一方面,像微软视窗这样具有图形用户界面功能和其他内置功能的操作系统非常昂贵。 -
病毒威胁
操作系统容易受到病毒攻击,有时会发生许多用户在他们的系统上下载恶意软件包的情况,这会暂停操作系统的运行,并使其变慢。 -
复杂性
有些操作系统本质上是复杂的,因为用来建立它们的语言并不清晰,定义也不明确。如果操作系统出现问题,用户将无法解决该问题。 -
系统故障
操作系统是计算机系统的心脏,如果由于任何原因它将停止运行,那么整个系统将崩溃。
操作系统示例
-
Windows 操作系统
-
机器人
-
ios
-
Mac OS 系统
-
Linux 操作系统
-
窗口电话操作系统
-
铬作业系统
操作系统的演变
原文:https://www.studytonight.com/operating-system/evolution-of-os
操作系统的进化直接取决于计算机系统的发展和用户如何使用它们。以下是过去五十年时间线中计算系统的快速浏览。
早期进化
- 1945 年:宾夕法尼亚大学摩尔工程学院 ENIAC 。
- 1949 年: EDSAC 和 EDVAC
- 1949 年:BINAC——ENIAC 的继承者
- 1951 年:雷明顿的《UNIVAC》
- 1952 年: IBM 701
- 1956 年:中断
- 1954-1957 年: FORTRAN 开发完成
操作系统-20 世纪 50 年代末
到 20 世纪 50 年代末,操作系统得到了很好的改进,并开始支持以下用途:
- 它能够执行单流批处理。
- 它可以使用通用的、标准化的输入/输出例程来访问设备。
- 增加了程序转换功能,以减少启动新作业的开销。
- 错误恢复添加异常终止的作业后进行清理。
- 允许用户指定作业定义和资源要求的作业控制语言成为可能。
操作系统——20 世纪 60 年代
- 1961 年:小型计算机的黎明
- 1962 年:麻省理工学院的兼容分时系统
- 1963 年:用于 B5000 系统的巴勒斯主控制程序
- 1964 年:IBM 系统/360
- 20 世纪 60 年代:磁盘成为主流
- 1966 年:小型机变得更便宜,更强大,而且非常有用。
- 1967-1968 年:鼠标发明。
- 1964 年及以后:多胞胎
- 1969 年:贝尔电话实验室的 UNIX 分时系统。
20 世纪 70 年代支持的操作系统功能
- 引入多用户和多任务。
- 动态地址翻译硬件和虚拟机进入画面。
- 模块化架构应运而生。
- 个人互动系统应运而生。
1970 年后的成就
- 1971 年:英特尔宣布微处理器
- 1972 年:IBM 推出虚拟机:虚拟机操作系统
- 1973 年:UNIX 第四版出版
- 1973 年:以太网
- 1974 年,个人电脑时代开始
- 1974 年:盖茨和艾伦为《牛郎星》写 BASIC
- 1976 年:苹果 II
- 1981 年 8 月 12 日:IBM 推出 IBM 个人电脑
- 1983 年,微软开始研发微软视窗系统
- 1984 年苹果麦金塔问世
- 1990 年微软视窗 3.0 问世
- 1991 GNU/Linux
- 1992 年,第一个视窗病毒问世
- 1993 年视窗 NT
- 2007 年:iOS
- 2008 年:Android 操作系统
随着研发工作的继续,我们看到正在开发新的操作系统,现有的操作系统正在得到改进和修改,以提高整体用户体验,使操作系统变得前所未有的快速和高效。
此外,随着包括智能手表、智能眼镜、虚拟现实齿轮等新设备的出现,对非常规操作系统的需求也在上升。
操作系统的类型
原文:https://www.studytonight.com/operating-system/types-of-os
以下是一些最广泛使用的操作系统类型。
如果你不知道什么是操作系统,可以从这里学习。
- 简单批量系统
- 多道程序批处理系统
- 多处理机系统
- 桌面系统
- 分布式操作系统
- 集群系统
- 实时操作系统
- 手持系统
简单批处理系统
- 在这种类型的系统中,用户和计算机之间没有直接交互。
- 用户必须向计算机操作员提交作业(写在卡片或磁带上)。
- 然后计算机操作员在输入设备上放置一批几个作业。
- 根据语言和需求的类型,作业被分批放在一起。
- 然后一个特殊的程序,监视器,管理批处理中每个程序的执行。
- 监视器始终在主内存中,可供执行。
简单批处理系统的优势
- 用户和计算机之间没有交互。
- 没有确定进程优先级的机制。
多道程序批处理系统
- 在这种情况下,操作系统从内存中获取并开始执行其中一个作业。
- 一旦这个作业需要一个输入/输出操作,操作系统就会切换到另一个作业(CPU 和操作系统总是很忙)。
- 内存中的作业总是少于磁盘上的作业数量(作业池)。
- 如果几个作业准备同时运行,那么系统通过 CPU 调度 的进程选择运行哪一个。
- 在非多道程序系统中,有时 CPU 处于空闲状态,不做任何工作。
- 在多道程序设计系统中,CPU 永远不会空闲并继续处理。
分时系统与多道程序批处理系统非常相似。事实上,分时系统是多道程序系统的延伸。
在分时系统中,主要关注的是最小化响应时间,而在多道程序设计中,主要关注的是最大化 CPU 的使用。
多处理器系统
多处理器系统由共享一个公共物理内存的几个处理器组成。多处理器系统提供了更高的计算能力和速度。在多处理器系统中,所有处理器都在单一操作系统下运行。处理器的多样性以及它们如何协同工作对其他处理器来说是透明的。
多处理器系统的优势
- 增强的性能
- 不同处理器同时执行几个任务,在不加快单个任务执行速度的情况下提高了系统的吞吐量。
- 如果可能,系统将任务分成许多子任务,然后这些子任务可以在不同的处理器中并行执行。从而加快单个任务的执行速度。
桌面系统
早些时候,CPU 和个人电脑缺乏保护操作系统免受用户程序攻击所需的功能。因此,个人电脑操作系统既不是多用户也不是多任务。然而,这些操作系统的目标随着时间而改变;这些系统没有最大限度地提高 CPU 和外围设备的利用率,而是选择最大限度地提高用户的便利性和响应能力。这些系统被称为桌面系统,包括运行Microsoft Windows
和Apple Macintosh
的电脑。这些计算机的操作系统在几个方面受益于主机操作系统的开发。
微型计算机能够立即采用为更大的操作系统开发的一些技术。另一方面,微型计算机的硬件成本足够低,个人可以单独使用计算机,CPU 的利用率不再是首要考虑的问题。因此,在大型机操作系统中做出的一些设计决策可能不适合较小的系统。
分布式操作系统
开发分布式操作系统背后的动机是强大而廉价的微处理器的可用性和通信技术的进步。
这些技术进步使得设计和开发分布式系统成为可能,该系统由许多通过通信网络相互连接的计算机组成。分布式系统的主要好处是它的低性价比。
分布式操作系统的优势
- 由于涉及多个系统,一个站点的用户可以利用其他站点的系统资源来执行资源密集型任务。
- 快速处理。
- 主机上的负载更少。
分布式操作系统的类型
下面是使用的两种分布式操作系统:
- 客户端-服务器系统
- 对等系统
客户端-服务器系统
集中式系统今天充当服务器系统,以满足客户端系统生成的请求。客户端-服务器系统的一般结构如下图所示:
服务器系统可以大致分为:计算服务器和文件服务器。
- 计算服务器系统提供了一个接口,客户端可以向该接口发送执行操作的请求,作为响应,它们执行操作并将结果发送回客户端。
- 文件服务器系统,提供了一个文件系统界面,客户端可以在其中创建、更新、读取和删除文件。
对等系统
计算机网络的发展——尤其是互联网和万维网——对操作系统的最新发展产生了深远的影响。当个人电脑在 20 世纪 70 年代推出时,它们是为个人使用而设计的,通常被认为是独立的电脑。随着 20 世纪 90 年代互联网开始广泛用于电子邮件和 FTP 协议,许多个人电脑连接到计算机网络。
与紧密耦合的系统不同,这些应用中使用的计算机网络由不共享内存或时钟的处理器集合组成。相反,每个处理器都有自己的本地内存。处理器通过各种通信线路相互通信,例如高速总线或电话线。这些系统通常被称为松耦合系统(或分布式系统)。客户端-服务器系统的一般结构如下图所示:
集群系统
- 像并行系统一样,集群系统聚集多个 CPU 来完成计算工作。
- 然而,集群系统与并行系统的不同之处在于,它们由两个或多个耦合在一起的独立系统组成。
- 术语集群的定义是不是具体的;普遍接受的定义是集群计算机共享存储,并通过局域网紧密连接。
- 通常执行集群以提供高可用性。
- 一层集群软件在集群节点上运行。每个节点可以监控一个或多个其他节点。如果受监控机器发生故障,监控机器可以获得其存储的所有权,并重新启动在故障机器上运行的应用程序。出现故障的机器可以保持停机,但是应用程序的用户和客户端只能看到短暂的服务中断。
- 非对称集群- 在这种情况下,一台机器处于热备用模式,而另一台机器正在运行应用程序。热备用主机(机器)除了监视活动服务器之外什么也不做。如果该服务器出现故障,热备用主机将成为活动服务器。
- 对称集群- 在这种情况下,两台或多台主机正在运行应用程序,并且它们正在相互监视。这种模式显然更有效,因为它使用了所有可用的硬件。
- 并行集群- 并行集群允许多个主机访问共享存储上的相同数据。因为大多数操作系统缺乏对多台主机同时进行数据访问的支持,所以并行集群通常由特殊版本的软件和特殊版本的应用程序来完成。
集群技术正在迅速变化。随着存储区域网络的发展,集群系统的使用和功能应该会大大扩展。San 允许多个主机轻松连接到多个存储单元。由于将主机连接到共享存储的复杂性,当前的群集通常仅限于两台或四台主机。
实时操作系统
它被定义为一个操作系统,已知它为它执行的每个关键操作提供最大的时间,如操作系统调用和中断处理。
保证关键操作的最大时间并按时完成的实时操作系统被称为硬实时操作系统。
而实时操作系统只能保证最大的时间,即关键任务将优先于其他任务,但不能保证在规定的时间内完成。这些系统被称为软实时操作系统。
手持系统
手持系统包括个人数字助理(PDAs) ,如Palm-Pilots
或Cellular Telephones
,可连接互联网等网络。它们通常尺寸有限,因此大多数手持设备都只有少量内存,包括慢速处理器,并且具有小显示屏。
- 很多手持设备的内存在 512 KB 到 8 MB 之间。因此,操作系统和应用程序必须有效地管理内存。这包括当内存不再被使用时,将所有分配的内存返回给内存管理器。
- 目前,许多手持设备不使用虚拟内存技术,因此迫使程序开发人员在有限的物理内存范围内工作。
- 大多数手持设备的处理器运行速度通常只有个人电脑处理器的一小部分。更快的处理器需要更多的功率。在手持设备中加入更快的处理器需要更大的 T2 电池,而这需要更频繁的更换。
- 手持设备的程序设计人员面临的最后一个问题是通常可用的小显示屏。在网页中显示内容的一种方法是网页剪辑,其中只有网页的一小部分被传送并显示在手持设备上。
一些手持设备可能使用无线技术,如蓝牙,允许远程访问电子邮件和网页浏览。与互联网连接的手机就属于这一类。随着网络连接变得更加可用,以及其他选项(如cameras
和MP3 players
)扩大了它们的效用,它们的使用继续扩大。
进程和多线程
操作系统中的进程
原文:https://www.studytonight.com/operating-system/operating-system-processes
进程是一个正在执行的程序,它构成了所有计算的基础。这个进程和程序代码不一样,但要比它多得多。一个进程是一个“主动”实体,而不是被认为是“被动”实体的程序。进程持有的属性包括硬件状态、内存、CPU 等。
进程记忆为高效工作分为四个部分:
-
文本部分由编译后的程序代码组成,在程序启动时从非易失性存储器中读入。
-
数据段由全局变量和静态变量组成,在执行 main 之前进行分配和初始化。
-
堆用于动态内存分配,通过调用 new、delete、malloc、free 等进行管理。
-
栈用于局部变量。声明局部变量时,堆栈上的空间会保留给它们。
不同的进程状态
操作系统中的进程可以处于以下任何状态:
-
NEW
-正在创建进程。 -
READY
-进程正在等待分配给处理器。 -
RUNNING
-指令正在执行。 -
WAITING
-进程正在等待某个事件发生(如输入/输出完成或信号接收)。 -
TERMINATED
-进程已经执行完毕。
进程控制块
每个进程都有一个进程控制块,包含了关于进程的所有信息。它也被称为任务控制块。它是一种数据结构,包含以下内容:
-
进程状态:可以是运行、等待等。
-
进程标识和父进程标识。
-
CPU 寄存器和程序计数器。程序计数器保存该进程要执行的下一条指令的地址。
-
CPU 调度信息:如优先级信息、调度队列指针等。
-
内存管理信息:例如页表或段表。
-
计费信息:消耗的用户和内核 CPU 时间、账号、限额等。
-
输入输出状态信息:设备分配、打开文件表等。
进程与程序
让我们来看看进程和计划之间的区别:
进程 | 程序 |
---|---|
该进程基本上是正在执行的计算机程序的一个实例。 | 程序基本上是指令的集合,当由计算机执行时,主要执行特定的任务。 |
一个进程的寿命较短。 | 程序的寿命更长。 |
一个进程需要内存、CPU、输入输出设备等资源。 | 程序由硬盘存储,不需要任何资源。 |
进程有一个代码和数据的动态实例 | 程序有静态代码和静态数据。 |
基本上,一个进程就是代码的运行实例。 | 另一方面,程序是可执行代码。 |
进程调度
当有两个或多个可运行的进程时,由操作系统决定先运行哪个进程,然后称为进程调度。
调度器用于通过使用一些调度算法来做出决策。
下面给出了一个好的调度算法的属性:
-
用户的响应时间应该最短。
-
每小时处理的作业数量应该是最大的,即好的调度算法应该提供最大的吞吐量。
-
CPU 的利用率应该是 100%。
-
每个进程都应该得到一个公平的 CPU 份额。
什么是进程调度?
原文:https://www.studytonight.com/operating-system/process-scheduling
确定哪个进程处于就绪状态,并且应该移动到运行状态的动作称为进程调度。
进程调度系统的主要目标是让 CPU 一直忙碌,并为所有程序提供最短的响应时间。为了实现这一点,调度程序必须为交换进程IN
和OUT
应用适当的规则。
日程安排分为两大类:
- 非优先调度:当前执行进程主动放弃 CPU 时。
- 抢占式调度:当操作系统决定偏向另一个进程时,抢占当前正在执行的进程。
什么是调度队列?
- 所有进程进入系统后,都存储在作业队列中。
- 处于
Ready
状态的进程被置于就绪队列中。 - 等待设备可用的进程被放置在设备队列中。每个输入/输出设备都有唯一的设备队列。
一个新的进程最初被放入就绪队列。它在就绪队列中等待,直到被选择执行(或调度)。一旦进程被分配给 CPU 并正在执行,就会发生以下几个事件之一:
- 该进程可以发出一个输入/输出请求,然后被放入输入/输出队列。
- 该进程可以创建一个新的子进程并等待其终止。
- 作为中断的结果,该进程可以被强制从 CPU 中移除,并被放回就绪队列。
在前两种情况下,进程最终从等待状态切换到就绪状态,然后被放回就绪队列。一个进程继续这个循环,直到它终止,此时它从所有队列中被移除,并且它的印刷电路板和资源被解除分配。
调度程序的类型
有三种类型的调度程序可用:
- 长期调度程序
- 短期调度程序
- 中期调度程序
让我们详细讨论所有不同类型的调度器:
长期调度程序
长期调度程序运行频率较低。长期调度器决定哪个程序必须进入作业队列。作业处理器从作业队列中选择进程,并将其加载到内存中执行。作业调度器的主要目的是保持良好的多道程序设计程度。多道程序设计的最佳程度意味着进程创建的平均速率等于进程离开执行内存的平均速率。
短期调度程序
这也称为 CPU 调度程序,运行非常频繁。该调度器的主要目的是提高 CPU 性能和进程执行速度。
中期调度程序
这个调度程序从内存(以及对 CPU 的主动争用)中移除进程,从而降低多道程序设计的程度。在稍后的某个时间,该进程可以被重新引入内存,并且它的执行可以在它停止的地方继续。这个方案叫做交换。中期调度程序将进程换出,然后再换入。
交换可能是改善进程组合所必需的,或者因为内存需求的变化过度使用了可用内存,需要释放内存。下图描述了整个进程:
排队图增加中期调度。
什么是语境转换?
- 将 CPU 切换到另一个进程需要保存旧进程的状态,加载新进程的保存状态。该任务被称为上下文切换。
- 进程的上下文在进程的进程控制块(PCB) 中表示;它包括 CPU 寄存器的值、进程状态和内存管理信息。当上下文切换发生时,内核将旧进程的上下文保存在其印刷电路板上,并加载计划运行的新进程的保存上下文。
- 上下文切换时间是纯开销,因为系统在切换时没有任何有用的工作。它的速度因机器而异,取决于内存速度、必须复制的寄存器数量以及特殊指令的存在(例如加载或存储所有寄存器的单个指令)。典型的速度范围从 1 到 1000 微秒。
- 上下文切换已经成为这样一个性能瓶颈,以至于程序员在任何可能的时候和任何可能的地方都在使用新的结构(线程)来避免它。
工艺操作
下面我们讨论了两个主要操作进程创建和进程终止。
进程创建
通过适当的系统调用,如分叉或派生,进程可以创建其他进程。创建其他进程的进程称为其他进程的父进程,而创建的子进程称为其子进程。
每个进程都有一个整数标识符,称为进程标识符或 PID。还为每个进程存储父进程号(PPID)。
在典型的 UNIX 系统上,进程调度器被称为sched
,并且被赋予 PID 0。它在系统启动时做的第一件事是启动init
,这给了该进程 PID 1。进一步初始化启动所有系统守护程序和用户登录,并成为所有其他进程的最终父进程。
根据系统实现,子进程可能会与其父进程接收一定数量的共享资源。为了防止失控的子进程消耗某个系统的所有资源,子进程可以或可以不局限于最初分配给父进程的资源子集。
创建子进程后,父进程有两个选项:
- 继续之前,请等待子进程终止。父进程对特定的子进程或任何特定的子进程进行
wait()
系统调用,导致父进程阻塞,直到wait()
返回。UNIX shells 通常会等待其子进程完成,然后再发出新的提示。 - 与子进程并发运行,无需等待即可继续处理。当 UNIX shell 运行一个进程作为后台任务时,这就是所看到的操作。父进程也可能运行一段时间,然后等待子进程,这可能发生在某种并行处理操作中。
就新进程的地址空间而言,还有两种可能性:
- 子进程是父进程的副本。
- 子进程中加载了一个程序。
为了说明这些不同的实现,让我们考虑一下 UNIX 操作系统。在 UNIX 中,每个进程由它的进程标识符标识,这是一个唯一的整数。一个新的进程由分叉系统调用创建。新进程由原始进程地址空间的副本组成。这种机制允许父进程与其子进程轻松通信。两个进程(父进程和子进程)在分叉系统调用后继续在指令上执行,只有一个区别:对于新(子)进程,分叉系统调用的返回代码为零,而子进程的(非零)进程标识符返回给父进程。
通常情况下, execlp 系统调用在两个进程中的一个进行分叉系统调用后使用,以新程序替换进程内存空间。execlp 系统调用将一个二进制文件加载到内存中,破坏包含 execlp 系统调用的程序的内存映像,并开始其执行。通过这种方式,这两个进程能够相互交流,然后分道扬镳。
下面是一个 C 程序来说明使用 UNIX(使用 Ubuntu 制作)分叉一个单独的进程:
#include<stdio.h>
void main(int argc, char *argv[])
{
int pid;
/* Fork another process */
pid = fork();
if(pid < 0)
{
//Error occurred
fprintf(stderr, "Fork Failed");
exit(-1);
}
else if (pid == 0)
{
//Child process
execlp("/bin/ls","ls",NULL);
}
else
{
//Parent process
//Parent will wait for the child to complete
wait(NULL);
printf("Child complete");
exit(0);
}
}
GATE 数值提示: 如果 fork 被调用
n
次,则创建的子进程或新进程数为:2<sup>n</sup> – 1
。
进程终止
通过进行exit
(系统调用),通常返回一个 int,进程可以请求自己的终止。如果父进程正在执行wait()
,这个 int 将被传递给父进程,如果成功完成,这个 int 通常为零,如果出现任何问题,这个 int 将传递给一些非零代码。
系统也可能出于各种原因终止进程,包括:
- 系统无法提供必要的系统资源。
- 响应 KILL 命令或其他未处理的进程中断。
- 如果分配给孩子的任务不再需要,即不再需要孩子,父母可以杀死孩子。
- 如果父进程退出,系统可能允许也可能不允许子进程在没有父进程的情况下继续(在 UNIX 系统中,孤立进程通常由
init
继承,然后由init
继续杀死它们。)
当一个进程结束时,它的所有系统资源都被释放,打开的文件被刷新和关闭,等等。如果父进程正在等待子进程终止,则进程终止状态和执行时间将返回给父进程,如果进程已经成为孤立进程,则最终返回到 init。
试图终止但由于其父进程没有等待而无法终止的进程被称为僵尸。这些最终被 init 作为孤儿继承并杀死。
操作系统中的 CPU 调度
原文:https://www.studytonight.com/operating-system/cpu-scheduling
CPU 调度是一个进程,它允许一个进程使用 CPU,而另一个进程的执行由于任何资源(如输入/输出等)不可用而被搁置(处于等待状态),从而充分利用 CPU。CPU 调度的目的是使系统高效、快速、公平。
每当 CPU 空闲时,操作系统必须选择就绪队列中的一个进程来执行。选择进程由短期调度程序(或 CPU 调度程序)执行。调度程序从内存中准备执行的进程中进行选择,并将 CPU 分配给其中一个进程。
CPU 调度:调度程序
CPU 调度功能涉及的另一个组件是调度器。调度程序是一个模块,它将 CPU 的控制权交给由短期调度程序选择的进程。该功能包括:
- 切换上下文
- 切换到用户模式
- 跳到用户程序中的适当位置,从上次离开的地方重新启动该程序。
调度程序应该尽可能快,因为它在每个进程切换期间都会被调用。调度程序停止一个进程并启动另一个进程所花费的时间称为调度延迟。调度延迟可以用下图来解释:
CPU 调度的类型
CPU 调度决策可能在以下四种情况下发生:
-
当一个进程从运行状态切换到等待状态时(对于输入/输出请求或等待一个子进程终止的调用)。
-
当进程从运行状态切换到就绪状态时(例如,当中断发生时)。
-
当进程从等待状态切换到就绪状态时(例如,输入输出完成)。
-
当进程终止时。
在情况 1 和 4 中,在调度方面没有选择。必须选择一个新进程(如果就绪队列中存在)来执行。但是,在情况 2 和情况 3 下,有一个选择。
当调度只在情况 1 和 4 下发生时,我们说调度方案是非抢占;否则,调度方案是抢先。
非抢占式调度
在非抢先调度下,一旦 CPU 被分配给一个进程,该进程就会保留 CPU,直到它通过终止或切换到等待状态来释放 CPU。
微软视窗 3.1 和苹果麦金塔操作系统都使用这种调度方法。
这是唯一可以在某些硬件平台上使用的方法,因为它不需要抢先调度所需的特殊硬件(例如定时器)。
在非抢占式调度中,它不会在执行进程中中断运行 CPU 的进程。相反,它会一直等到进程完成它的 CPU 爆发时间,然后它可以将 CPU 分配给任何其他进程。
基于非抢占式调度的一些算法有:最短作业优先(SJF 基本非抢占式)调度和优先级(非抢占式)调度等。
抢先调度
在这种调度中,任务通常被分配优先级。有时,有必要在另一个任务之前运行某个优先级较高的任务,尽管它正在运行。因此,正在运行的任务会被中断一段时间,并在稍后优先级任务完成执行时继续运行。
因此,这种类型的调度主要在进程从运行状态切换到就绪状态或者从等待状态切换到就绪状态时使用。资源(即 CPU 周期)主要在有限的时间内分配给该进程,然后被取走,此后,如果该进程仍剩余 CPU 突发时间,则该进程再次被放回到就绪队列中。该进程将保留在就绪队列中,直到下一次有机会执行。
基于抢占式调度的算法有循环调度、最短剩余时间优先(SRTF)、优先级(抢占式)调度等。
CPU 调度:调度标准
在考虑“最佳”调度算法时,有许多不同的标准需要检查,它们是:
CPU 利用率
为了充分利用 CPU,不浪费任何 CPU 周期,CPU 大部分时间都在工作(理想情况下是 100%的时间)。考虑到一个真实的系统,CPU 使用率应该在 40%(轻负载)到 90%(重负载)之间。)
生产能力
它是单位时间内完成的进程总数,或者说是单位时间内完成的工作总量。这可能在 10/秒到 1/小时之间,具体取决于具体的进程。
解题时间
它是执行特定进程所花费的时间,即从进程提交到进程完成的时间间隔(挂钟时间)。
等待时间
在就绪队列中等待的时间的总和一个进程在就绪队列中等待获得对 CPU 的控制的时间量。
平均负载
它是驻留在就绪队列中等待进入 CPU 的平均进程数。
响应时间
从提交请求到产生第一个响应所需的时间。请记住,这是第一次响应的时间,而不是进程执行(最终响应)完成的时间。
一般来说,CPU 利用率和吞吐量最大化,其他因素减少,以实现适当的优化。
调度算法
为了决定首先执行哪个进程,最后执行哪个进程,以实现最大的 CPU 利用率,计算机科学家定义了一些算法,它们是:
我们将在接下来的教程中逐一详细讨论所有的调度算法。
先到先得的服务调度
原文:https://www.studytonight.com/operating-system/first-come-first-serve
在“先到先服务”的调度算法中,顾名思义,先到达的进程先执行,或者我们可以说先请求 CPU 的进程,先得到分配的 CPU。
- 先来先服务,就像 FIFO (先进先出)队列数据结构一样,先加入队列的数据元素是先离开队列的。
- 这在批处理系统中使用。
- 使用 Queue 数据结构通过编程很容易理解和实现,其中一个新的进程通过队列的尾部进入,调度器从队列的头部选择进程。
- FCFS 调度的一个完美现实例子是在售票柜台购票。
计算平均等待时间
对于每一种调度算法来说,平均等待时间是判断其性能的关键参数。
AWT 或 Average waiting time 是队列中进程的平均等待时间,等待调度程序挑选它们执行。
平均等待时间越低,调度算法越好。
考虑下表中给出的进程 P1、P2、P3、P4,按照相同的顺序到达执行,其中到达时间为0
,给定突发时间,让我们使用 FCFS 调度算法求出平均等待时间。
平均等待时间为18.75 ms
对于上述给定的进程,首先将为 P1 提供 CPU 资源,
- 因此,P1 的等待时间将是
0
- P1 要求
21 ms
完成,因此 P2 的等待时间为21 ms
- 同样,进程 P3 的等待时间为 P1 的执行时间+P2的执行时间,为
(21 + 3) ms
=24 ms
。 - 进程 P4 为P1P2P3执行次数之和。
上面的甘特图完美的代表了每个进程的等待时间。
FCFS 调度的问题
以下是 FCFS 调度算法的一些缺点或问题:
-
It is Non Pre-emptive algorithm, which means the process priority doesn't matter.
如果一个优先级最低的进程正在执行,更像日常例行备份进程,需要更多的时间,突然其他一些高优先级进程到来,像中断避免系统崩溃,高优先级进程将不得不等待,因此在这种情况下,系统将崩溃,只是因为进程调度不当。
-
不是最佳平均等待时间。
-
无法并行利用资源,导致护航效应,资源(CPU、I/O 等)利用不佳。
什么是护航效应?
护航效应是指许多需要短时间使用资源的进程被一个长时间持有该资源的进程阻塞的情况。
这本质上导致资源利用率低,从而导致性能差。
FCFS 调度程序
这里我们有一个简单的 C++程序,用于将到达时间作为0
的进程。
如果你不熟悉 C++语言,我们建议你先学习 C++语言。
在程序中,我们将计算进程列表中突发时间的给定array
的平均等待时间和平均周转时间。
/* Simple C++ program for implementation
of FCFS scheduling */
#include<iostream>
using namespace std;
// function to find the waiting time for all processes
void findWaitingTime(int processes[], int n, int bt[], int wt[])
{
// waiting time for first process will be 0
wt[0] = 0;
// calculating waiting time
for (int i = 1; i < n ; i++)
{
wt[i] = bt[i-1] + wt[i-1];
}
}
// function to calculate turn around time
void findTurnAroundTime( int processes[], int n, int bt[], int wt[], int tat[])
{
// calculating turnaround time by adding
// bt[i] + wt[i]
for (int i = 0; i < n ; i++)
{
tat[i] = bt[i] + wt[i];
}
}
// function to calculate average time
void findAverageTime( int processes[], int n, int bt[])
{
int wt[n], tat[n], total_wt = 0, total_tat = 0;
// function to find waiting time of all processes
findWaitingTime(processes, n, bt, wt);
// function to find turn around time for all processes
findTurnAroundTime(processes, n, bt, wt, tat);
// display processes along with all details
cout << "Processes "<< " Burst time "<< " Waiting time " << " Turn around time\n";
// calculate total waiting time and total turn around time
for (int i = 0; i < n; i++)
{
total_wt = total_wt + wt[i];
total_tat = total_tat + tat[i];
cout << " " << i+1 << "\t\t" << bt[i] <<"\t "<< wt[i] <<"\t\t " << tat[i] <<endl;
}
cout << "Average waiting time = "<< (float)total_wt / (float)n;
cout << "\nAverage turn around time = "<< (float)total_tat / (float)n;
}
// main function
int main()
{
// process ids
int processes[] = { 1, 2, 3, 4};
int n = sizeof processes / sizeof processes[0];
// burst time of all processes
int burst_time[] = {21, 3, 6, 2};
findAverageTime(processes, n, burst_time);
return 0;
}
进程突发时间等待时间周转时间 1 21 0 21 2 3 21 24 3 6 24 30 4 2 30 32 平均等待时间= 18.75 平均周转时间= 26.75
这里我们有简单的公式来计算给定进程的不同时间:
完成时间:从到达时间开始,执行完成所花费的时间。
周转时间:到达后完成所花费的时间。简单来说,就是完成时间和到达时间的区别。
等待时间:进程开始执行前必须等待的总时间。它是进程的周转时间和突发时间之间的差异。
对于上面的程序,我们考虑了到达时间为0
对于所有的进程,尝试实现一个可变到达时间的程序。
最短作业优先(SJF)调度
原文:https://www.studytonight.com/operating-system/shortest-job-first
最短作业优先调度首先处理具有最短突发时间或持续时间的进程。
- 这是减少等待时间的最佳方法。
- 这在批处理系统中使用。
- 它有两种类型:
- 非预防性
- 抢先
- 为了成功地实现它,进程的突发时间/持续时间应该预先为处理器所知,这实际上并不总是可行的。
- 如果所有作业/进程同时可用,则此调度算法是最佳的。(要么所有人的到达时间为
0
,要么所有人的到达时间相同)
非优先最短作业优先
考虑就绪队列中可供执行的以下进程,其中到达时间为所有进程的0
,给定突发时间。
在上面的甘特图中可以看到,进程 P4 会因为爆发时间最短而先被拾取,然后是 P2 ,接着是 P3 ,最后是 P1 。
我们在前面的教程中使用先来先服务算法安排了相同的一组进程,得到的平均等待时间为18.75 ms
,而对于 SJF,平均等待时间为4.5 ms
。
非先发制人的 SJF 的问题
如果进程的到达时间不同,这意味着所有进程在时间0
都不在就绪队列中可用,并且一些作业在一段时间后到达,在这种情况下,有时突发时间短的进程必须等待当前进程的执行完成,因为在非先发制人的 SJF,当持续时间短的进程到达时,现有作业/进程的执行不会暂停/停止以首先执行短的作业。
这就导致了饥饿的问题,较短的进程需要等待很长时间,直到当前较长的进程被执行。如果更短的工作不断出现,就会出现这种情况,但这可以通过老化的概念来解决。
先发制人的最短作业优先
在抢占式最短作业优先调度中,作业到达时被放入就绪队列,但当短突发时间的进程到达时,现有进程被抢占或从执行中移除,较短的作业被首先执行。
平均等待时间为((5-3)+(6-2)+(12-1))/4=8.75
抢先最短作业优先调度的平均等待时间小于非抢先 SJF 调度和 FCFS 调度
在上面的甘特图中可以看到,由于 P1 先到达,因此立即开始执行,但是就在1 ms
之后,进程 P2 到达时3 ms
的突发时间小于 P1 的突发时间,因此进程 P1 (完成 1 毫秒,还剩 20 毫秒)被抢占,进程 P2 被执行。
随着 P2 被执行,在1 ms
之后, P3 到达,但是其爆发时间大于 P2 ,因此 P2 的执行继续。但是又过了一毫秒, P4 到达,突发时间为2 ms
,结果 P2 (2 毫秒完成,还剩 1 毫秒)被抢占,执行 P4 。
P4 完成后,拿起 P2 完成,然后 P2 执行,最后 P1 。
先发制人的 SJF 也被称为最短剩余时间优先,因为在任何给定的时间点,剩余时间最短的作业都会首先执行。
SJF 计划
在下面的程序中,我们将所有工作的到达时间视为0
。
此外,在程序中,我们将根据所有作业的爆发时间对它们进行排序,然后逐个执行它们,就像我们在 FCFS 调度程序中所做的那样。
// c++ program to implement Shortest Job first
#include<bits/stdc++.h>
using namespace std;
struct Process
{
int pid; // process ID
int bt; // burst Time
};
/*
this function is used for sorting all
processes in increasing order of burst time
*/
bool comparison(Process a, Process b)
{
return (a.bt < b.bt);
}
// function to find the waiting time for all processes
void findWaitingTime(Process proc[], int n, int wt[])
{
// waiting time for first process is 0
wt[0] = 0;
// calculating waiting time
for (int i = 1; i < n ; i++)
{
wt[i] = proc[i-1].bt + wt[i-1] ;
}
}
// function to calculate turn around time
void findTurnAroundTime(Process proc[], int n, int wt[], int tat[])
{
// calculating turnaround time by adding bt[i] + wt[i]
for (int i = 0; i < n ; i++)
{
tat[i] = proc[i].bt + wt[i];
}
}
// function to calculate average time
void findAverageTime(Process proc[], int n)
{
int wt[n], tat[n], total_wt = 0, total_tat = 0;
// function to find waiting time of all processes
findWaitingTime(proc, n, wt);
// function to find turn around time for all processes
findTurnAroundTime(proc, n, wt, tat);
// display processes along with all details
cout << "\nProcesses "<< " Burst time "
<< " Waiting time " << " Turn around time\n";
// calculate total waiting time and total turn around time
for (int i = 0; i < n; i++)
{
total_wt = total_wt + wt[i];
total_tat = total_tat + tat[i];
cout << " " << proc[i].pid << "\t\t"
<< proc[i].bt << "\t " << wt[i]
<< "\t\t " << tat[i] <<endl;
}
cout << "Average waiting time = "
<< (float)total_wt / (float)n;
cout << "\nAverage turn around time = "
<< (float)total_tat / (float)n;
}
// main function
int main()
{
Process proc[] = {{1, 21}, {2, 3}, {3, 6}, {4, 2}};
int n = sizeof proc / sizeof proc[0];
// sorting processes by burst time.
sort(proc, proc + n, comparison);
cout << "Order in which process gets executed\n";
for (int i = 0 ; i < n; i++)
{
cout << proc[i].pid <<" ";
}
findAverageTime(proc, n);
return 0;
}
进程执行的顺序 4 2 3 1 进程突发时间等待时间周转时间 4 2 0 2 3 5 3 6 5 11 21 11 32 平均等待时间= 4.5 平均周转时间= 12.5
试着为不同的工作,你自己,用可变的到达时间为 SJF 实现这个程序。
优先级 CPU 调度
原文:https://www.studytonight.com/operating-system/priority-scheduling
在本教程中,我们将了解优先级调度算法,它的工作原理及其优缺点。
在最短作业优先调度算法中,进程的优先级一般是 CPU 突发时间的倒数,即突发时间越大,该进程的优先级越低。
在优先级调度的情况下,优先级并不总是设置为 CPU 突发时间的倒数,而是可以在内部或外部设置,但是是的,调度是基于进程的优先级来完成的,其中最紧急的进程首先被处理,其次是优先级较低的进程。
具有相同优先级的进程以 FCFS 方式执行。
内部定义的进程优先级可以根据内存需求、时间限制、打开文件数量、输入/输出突发与 CPU 突发的比率等来决定。
然而,外部优先级是基于操作系统之外的标准来设置的,例如进程的重要性、为计算机资源使用支付的资金、makrte 因素等。
优先级调度算法的类型
优先级调度可以有两种类型:
- 抢占优先级调度:如果到达就绪队列的新进程优先级高于当前正在运行的进程,则 CPU 被抢占,这意味着当前进程的处理停止,优先级较高的传入新进程得到 CPU 执行。
- 非抢占式优先级调度:在非抢占式优先级调度算法的情况下,如果一个新的进程以比当前正在运行的进程更高的优先级到达,那么传入的进程将被放在就绪队列的头部,这意味着在当前进程执行之后,它将被处理。
优先级调度算法示例
考虑下表中的进程及其各自的 CPU 突发时间和优先级。
正如您在甘特图中看到的那样,进程只是根据优先级被分配了 CPU 时间。
优先级调度算法的问题
在优先级调度算法中,无限期阻塞或饥饿的几率。
当一个进程准备好运行时,它被认为是阻塞的,但必须等待 CPU,因为其他进程正在运行。
但是在优先级调度的情况下,如果新的更高优先级的进程不断进入就绪队列,那么在具有较低优先级的就绪队列中等待的进程可能必须等待很长的持续时间,然后才能让 CPU 执行。
1973 年,当 IBM 7904 机器在麻省理工学院关闭时,发现了一个 1967 年提交但尚未运行的低优先级进程。
使用优先调度的老化技术
为了防止任何进程的饥饿,我们可以使用老化的概念,其中我们根据低优先级进程的等待时间不断增加其优先级。
例如,如果我们将等待的每一天的老化因子确定为 0.5 ,那么如果优先级为 20 的进程(其优先级相对较低)进入就绪队列。经过一天的等待,其优先级提升至 19.5 等。
这样做,我们可以确保没有进程需要等待无限的时间来获取 CPU 时间进行处理。
C++中优先级调度算法的实现
实现优先级调度算法很容易。我们要做的就是根据进程的优先级和 CPU 爆发时间进行排序,然后对其应用 。
下面是优先级调度算法的 C++代码:
// Implementation of Priority scheduling algorithm
#include<bits/stdc++.h>
using namespace std;
struct Process
{
// this is the process ID
int pid;
// the CPU burst time
int bt;
// priority of the process
int priority;
};
// sort the processes based on priority
bool sortProcesses(Process a, Process b)
{
return (a.priority > b.priority);
}
// Function to find the waiting time for all processes
void findWaitingTime(Process proc[], int n,
int wt[])
{
// waiting time for first process is 0
wt[0] = 0;
// calculating waiting time
for (int i = 1; i < n ; i++ )
wt[i] = proc[i-1].bt + wt[i-1] ;
}
// Function to calculate turn around time
void findTurnAroundTime( Process proc[], int n,
int wt[], int tat[])
{
// calculating turnaround time by adding
// bt[i] + wt[i]
for (int i = 0; i < n ; i++)
tat[i] = proc[i].bt + wt[i];
}
//Function to calculate average time
void findavgTime(Process proc[], int n)
{
int wt[n], tat[n], total_wt = 0, total_tat = 0;
//Function to find waiting time of all processes
findWaitingTime(proc, n, wt);
//Function to find turn around time for all processes
findTurnAroundTime(proc, n, wt, tat);
//Display processes along with all details
cout << "\nProcesses "<< " Burst time "
<< " Waiting time " << " Turn around time\n";
// Calculate total waiting time and total turn
// around time
for (int i=0; i<n; i++)
{
total_wt = total_wt + wt[i];
total_tat = total_tat + tat[i];
cout << " " << proc[i].pid << "\t\t"
<< proc[i].bt << "\t " << wt[i]
<< "\t\t " << tat[i] <<endl;
}
cout << "\nAverage waiting time = "
<< (float)total_wt / (float)n;
cout << "\nAverage turn around time = "
<< (float)total_tat / (float)n;
}
void priorityScheduling(Process proc[], int n)
{
// Sort processes by priority
sort(proc, proc + n, sortProcesses);
cout<< "Order in which processes gets executed \n";
for (int i = 0 ; i < n; i++)
cout << proc[i].pid <<" " ;
findavgTime(proc, n);
}
// Driver code
int main()
{
Process proc[] = {{1, 10, 2}, {2, 5, 0}, {3, 8, 1}};
int n = sizeof proc / sizeof proc[0];
priorityScheduling(proc, n);
return 0;
}
循环调度
原文:https://www.studytonight.com/operating-system/round-robin-scheduling
循环调度算法主要是为分时系统设计的。这种算法类似于 FCFS 调度,但是在 Round Robin(RR)调度中,增加了抢占,使得系统能够在进程之间切换。
-
每个进程都有一个固定的执行时间,称为时间量。
-
一旦一个进程在给定的时间周期内被执行,该进程被抢占,另一个进程在给定的时间周期内被执行。
-
上下文切换用于保存被抢占进程的状态。
-
这个算法简单,容易实现,最重要的是这个算法是无饥饿的,因为所有进程都获得了公平的 CPU 份额。
-
这里需要注意的是,时间量的长度一般为 10 到 100 毫秒。
循环算法的一些重要特征如下:
-
循环调度算法属于抢先算法的范畴。
-
该算法是最古老、最简单、最公平的算法之一。
-
该算法是一种实时算法,因为它在特定的时间限制内响应事件。
-
在该算法中,时间片应该是分配给需要处理的特定任务的最小值。尽管它可能因不同的操作系统而异。
-
这是一个混合模型,本质上是时钟驱动的。
-
这是传统操作系统中广泛使用的调度方法。
重要术语
-
完成时间
它是任何进程完成其执行的时间。 -
周转时间
这主要表示完工时间和到达时间的时间差。计算公式相同为:周转时间=完成时间-到达时间 -
等待时间(W.T):
表示掉头时间和突发时间的时间差。
计算为等待时间=掉头时间-突发时间
现在让我们举一个同样的例子:
上图中没有提到到达时间,所以所有进程都取 0。
注:如果没有给出任何问题陈述的到达时间,则所有进程的到达时间均为 0;如果给出了,那么问题就可以相应地解决了。
说明
上例中的时间量值为 5。现在让我们为上面的例子计算周转时间和等待时间:
| 处理 | 突发时间 |
解题时间
周转时间=完成时间-到达时间
|
等待时间
等待时间=周转时间-突发时间
|
| --- | --- | --- | --- |
| 第一亲代 | Twenty-one | 32-0=32 | 32-21=11 |
| P2 | three | 8-0=8 | 8-3=5 |
| P3 | six | 21-0=21 | 21-6=15 |
| P4 | Two | 15-0=15 | 15-2=13 |
平均等待时间的计算方法是将所有进程的等待时间相加,然后除以进程数。
平均等待时间=所有进程的等待时间/进程数
平均等待时间= 11+5+15+13/4 = 44/4 =11 毫秒
RR 调度的 C++实现
// Program implementation in C++ for Round Robin scheduling
#include<iostream>
using namespace std;
//The Function to find the waiting time for all processes
void fWaitingTime(int processes[], int n,
int bt[], int wt[], int quantum)
{
// Let us Make a copy of burst times bt[] to store remaining burst times
int rem_bt[n];
for (int i = 0 ; i < n ; i++)
rem_bt[i] = bt[i];
int t = 0; // for Current time
// Let us keep traverse the processes in the round robin manner until all of them are not done.
while (1)
{
bool done = true;
//let us Traverse all processes one by one repeatedly
for (int i = 0 ; i < n; i++)
{
// If burst time of a process is greater than 0 then there is a need to process further
if (rem_bt[i] > 0)
{
done = false; // indicates there is a pending process
if (rem_bt[i] > quantum)
{
// By Increasing the value of t it shows how much time a process has been processed
t += quantum;
// Decreasing the burst_time of current process by the quantum
rem_bt[i] -= quantum;
}
// If burst time is smaller than or equal to the quantum then it is Last cycle for this process
else
{
// Increase the value of t to show how much time a process has been processed
t = t + rem_bt[i];
// Waiting time is current time minus time used by this process.
wt[i] = t - bt[i];
// As the process gets fully executed thus remaining burst time becomes 0.
rem_bt[i] = 0;
}
}
}
// If all the processes are done
if (done == true)
break;
}
}
// Function used to calculate the turn around time
void fTurnAroundTime(int processes[], int n,
int bt[], int wt[], int tat[])
{
// calculating turnaround time by adding bt[i] + wt[i]
for (int i = 0; i < n ; i++)
tat[i] = bt[i] + wt[i];
}
// Function to calculate the average time
void findavgTime(int processes[], int n, int bt[],
int quantum)
{
int wt[n], tat[n], total_wt = 0, total_tat = 0;
// Function to find waiting time of all processes
fWaitingTime(processes, n, bt, wt, quantum);
// Function to find turn around time for all processes
fTurnAroundTime(processes, n, bt, wt, tat);
// Display processes along with all details
cout << "Processes "<< " Burst time "
<< " Waiting time " << " Turn around time\n";
// Calculate the total waiting time and total turn
// around time
for (int i=0; i<n; i++)
{
total_wt = total_wt + wt[i];
total_tat = total_tat + tat[i];
cout << " " << i+1 << "\t\t" << bt[i] <<"\t "
<< wt[i] <<"\t\t " << tat[i] <<endl;
}
cout << "Average waiting time = "
<< (float)total_wt / (float)n;
cout << "\nAverage turn around time = "
<< (float)total_tat / (float)n;
}
//Given below is the Driver Code
int main()
{
// process id's
int processes[] = { 1, 2, 3,4};
int x = sizeof processes / sizeof processes[0];
// Burst time of all processes
int burst_time[] = {21, 13, 6,12};
// Time quantum
int quantum = 2;
findavgTime(processes, x, burst_time, quantum);
return 0;
}
输出
上述代码的输出如下:
循环调度算法的优势
循环调度算法的一些优点如下:
-
在执行该调度算法时,特定的时间段被分配给不同的作业。
-
就平均响应时间而言,该算法的性能最好。
-
在这个算法的帮助下,所有的作业都得到了公平的 CPU 分配。
-
在这个算法中,不存在饥饿或车队效应的问题。
-
该算法处理所有进程,没有任何优先级。
-
该算法本质上是循环的。
-
在这种情况下,新创建的进程被添加到就绪队列的末尾。
-
此外,在这种情况下,循环调度器通常采用分时方式,这意味着为每个作业提供一个时隙或时间段。
-
在这个调度算法中,每个进程都有机会在特定的时间段后重新调度。
循环调度算法的缺点
循环调度算法的一些缺点如下:
-
该算法在上下文切换上花费更多的时间。
-
对于小量子来说,是耗时的调度。
-
该算法提供了更长的等待时间和响应时间。
-
在这种情况下,吞吐量较低。
-
如果调度的时间量较少,那么它的甘特图就显得太大了。
需要记住的几点
1。时间量递减值
随着时间量的减少
-
上下文切换的数量会增加。
-
响应时间缩短
-
在这种情况下,挨饿的机会减少了。
对于较小的时间量值,在响应时间方面变得更好。
2。时间量增加值
随着时间量子价值的增加
-
上下文切换的次数减少
-
响应时间增加
-
在这种情况下,饥饿的几率会增加。
对于时间量的较高值,它在上下文切换的数量方面变得更好。
3.如果时间量的值增加,则循环调度趋向于成为 FCFS 调度。
4.在这种情况下,当时间量的值趋于无穷大时,循环调度变为 FCFS 调度。
5.因此,循环调度的性能主要取决于时间量的值。
6.而时间量子的值应该是既不太大也不太小。
多级队列调度算法
原文:https://www.studytonight.com/operating-system/multilevel-queue-scheduling
另一类调度算法已经被创建用于进程容易被分类到不同组的情况。
例如,在前台(或交互)进程和后台(或批处理)进程之间进行共同的划分。这两种类型的进程有不同的响应时间要求,因此可能有不同的调度需求。此外,前台进程可能优先于后台进程。
多级队列调度算法将就绪队列分成几个独立的队列。通常根据进程的某些属性,如内存大小、进程优先级或进程类型,进程被永久分配到一个队列。每个队列都有自己的调度算法。
例如,单独的队列可能用于前台和后台进程。前台队列可能由循环算法调度,而后台队列由 FCFS 算法调度。
此外,队列之间必须有调度,这通常被实现为固定优先级抢先调度。例如,前台队列相对于后台队列可能具有绝对的优先级。
让我们考虑一个具有五个队列的多级队列调度算法的例子:
-
系统进程
-
互动进程
-
交互式编辑进程
-
批处理
-
学生进程
每个队列相对于低优先级队列都有绝对的优先级。例如,批处理队列中的任何进程都不能运行,除非系统进程、交互进程和交互编辑进程的队列都是空的。如果在批处理运行时交互编辑进程进入就绪队列,批处理将被抢占。
在这种情况下,如果高优先级队列中没有进程,那么只有低优先级队列中的进程才会运行。对于示例:一旦系统队列、交互队列和交互编辑队列上的进程变为空,批处理队列上的进程才会运行。
上图中的进程描述如下:
-
系统进程
操作系统本身有自己的进程要运行,被称为系统进程。 -
互动进程
互动进程是一个应该有同样互动的进程(基本上是一个网络游戏)。 -
批处理
批处理基本上是操作系统中的一种技术,在处理开始之前,以批处理的形式将程序和数据收集在一起。 -
学生进程
系统进程总是获得最高优先级,而学生进程总是获得最低优先级。
在一个操作系统中,有很多进程,为了获得结果我们不能把所有的进程都放在一个队列中;因此,这个进程通过多级队列调度来解决。
履行
下面给出了多级队列调度的 C 实现:
#include<stdio.h>
int main()
{
int p[20],bt[20], su[20], wt[20],tat[20],i, k, n, temp;
float wtavg, tatavg;
printf("Enter the number of processes:");
scanf("%d",&n);
for(i=0;i<n;i++)
{
p[i] = i;
printf("Enter the Burst Time of Process%d:", i);
scanf("%d",&bt[i]);
printf("System/User Process (0/1) ? ");
scanf("%d", &su[i]);
}
for(i=0;i<n;i++)
for(k=i+1;k<n;k++)
if(su[i] > su[k])
{
temp=p[i];
p[i]=p[k];
p[k]=temp;
temp=bt[i];
bt[i]=bt[k];
bt[k]=temp;
temp=su[i];
su[i]=su[k];
su[k]=temp;
}
wtavg = wt[0] = 0;
tatavg = tat[0] = bt[0];
for(i=1;i<n;i++)
{
wt[i] = wt[i-1] + bt[i-1];
tat[i] = tat[i-1] + bt[i];
wtavg = wtavg + wt[i];
tatavg = tatavg + tat[i];
}
printf("\nPROCESS\t\t SYSTEM/USER PROCESS \tBURST TIME\tWAITING TIME\tTURNAROUND TIME");
for(i=0;i<n;i++)
printf("\n%d \t\t %d \t\t %d \t\t %d \t\t %d ",p[i],su[i],bt[i],wt[i],tat[i]);
printf("\nAverage Waiting Time is --- %f",wtavg/n);
printf("\nAverage Turnaround Time is --- %f",tatavg/n);
return 0;
}
输出
上述代码的输出如下:
多级队列调度的优势
在这种调度的帮助下,我们可以为不同类型的进程应用不同类型的调度:
对于系统进程:先到先得(FCFS)调度。
对于交互进程:最短作业优先(SJF)调度。
对于批处理:循环调度
对于学生进程:优先级调度
多级队列调度的缺点
多级队列调度的主要缺点是低级进程的饥饿问题。
让我们明白什么是饥饿?
饥饿:
由于饥饿,较低级别的进程要么永远不执行,要么因为较低优先级或较高优先级的进程占用大量时间而不得不等待很长时间。
多级反馈队列调度
原文:https://www.studytonight.com/operating-system/multilevel-feedback-queue-scheduling
在多级队列调度算法中,进程在进入系统时被永久分配给一个队列。进程不会在队列之间移动。这种设置的优点是调度开销低,但缺点是不灵活。
然而,多级反馈队列调度允许进程在队列之间移动。其思想是分离具有不同 CPU 突发特性的进程。如果一个进程使用太多的 CPU 时间,它将被移动到一个低优先级队列。类似地,在低优先级队列中等待太久的进程可能会被移动到高优先级队列。这种形式的衰老可以防止饥饿。
通常,多级反馈队列调度器由以下参数定义:
-
队列的数量。
-
每个队列的调度算法。
-
用于确定何时将进程升级到更高优先级队列的方法。
-
用于确定何时将进程降级到低优先级队列的方法。
-
用于确定进程需要服务时将进入哪个队列的方法。
多级反馈队列调度器的定义使其成为最通用的 CPU 调度算法。它可以配置为匹配设计中的特定系统。不幸的是,它还需要一些为所有参数选择值的方法来定义最佳调度程序。虽然多级反馈队列是最通用的方案,但也是最复杂的。
上图可以看到一个多级反馈队列的例子。
说明:
首先,假设队列 1 和 2 分别遵循时间量为 8 和 16 的循环,队列 3 遵循 FCFS。多级反馈队列调度的实现之一如下:
-
如果任何进程开始执行,那么它首先进入队列 1。
-
在队列 1 中,该进程执行 8 个单元,如果它在这 8 个单元中完成,或者它在这 8 个单元中为输入/输出操作提供了 CPU,则该进程的优先级不会改变,并且如果由于某些原因它再次进入就绪队列,则它再次在队列 1 中开始执行。
-
如果队列 1 中的进程没有在 8 个单元内完成,那么它的优先级会降低,并转移到队列 2。
-
以上第 2 点和第 3 点同样适用于队列 2 中的进程,但时间量为 16 个单位。通常,如果任何进程没有在给定的时间段内完成,那么它将被转移到较低优先级的队列中。
-
之后,在最后一个队列中,所有进程都以 FCFS 方式进行调度。
-
需要注意的是,低优先级队列中的进程只能在高优先级队列为空时执行。
-
低优先级队列中的任何正在运行的进程都可能被到达高优先级队列的进程中断。
此外,对于最后一个队列将遵循循环调度的示例,上述实现可能有所不同。
在上面的实现中,有一个问题,那就是;由于一些短进程占用了所有的 CPU 时间,处于低优先级队列中的任何进程都必须遭受饥饿。
而这个问题的解决方案是:
有一个解决方案是在有规律的间隔后提升所有进程的优先级,然后将所有进程放在优先级最高的队列中。
多级反馈队列调度的需求(MFQS)
以下是理解这种复杂调度需求的一些要点:
-
这种调度比多级队列调度更灵活。
-
该算法有助于缩短响应时间。
-
为了优化周转时间,需要 SJF 算法,该算法基本上需要进程的运行时间来调度它们。众所周知,进程的运行时间是事先不知道的。此外,这种调度主要在一个时间段内运行一个进程,之后,如果进程很长,它可以改变进程的优先级。因此,该调度算法主要从进程的过去行为中学习,然后可以预测进程的未来行为。通过这种方式,MFQS 试图先运行一个更短的进程,从而优化周转时间。
MFQS 的优势
-
这是一种灵活的调度算法
-
这种调度算法允许不同的进程在不同的队列之间移动。
-
在该算法中,在较低优先级队列中等待太久的进程可以被移动到较高优先级队列,这有助于防止饥饿。
MFQS 的缺点
-
这个算法太复杂了。
-
由于进程在不同的队列中移动,这导致产生更多的 CPU 开销。
-
为了选择最佳调度器,该算法需要一些其他手段来选择值
调度算法的比较
原文:https://www.studytonight.com/operating-system/comparision-scheduling-algorithms
到目前为止,您一定已经了解了 CPU 如何应用不同的调度算法来调度进程。现在,让我们检查一下到目前为止我们所研究的每种调度算法的优缺点。
先到先得
先说优势:
- FCFS 算法不包含任何复杂的逻辑,只是将进程请求放入队列中,逐一执行。
- 因此,FCFS 非常简单,易于实现。
- 最终,每个进程都有机会运行,所以不会出现饥饿。
是时候劣势了:
- 没有优先选择进程的选项。如果一个进程被启动,那么 CPU 执行该进程,直到它结束。
- 因为没有先发制人,如果一个进程执行了很长时间,队列后面的进程要等很长时间才有机会执行。
最短工作优先(SJF)
从最短作业优先调度算法的优势:开始。
- 根据定义,先执行短进程,然后执行长进程。
- 吞吐量增加是因为可以在更短的时间内执行更多的进程。
而的缺点:
- 一个进程所花费的时间必须事先被 CPU 知道,这是不可能的。
- 更长的进程会有更多的等待时间,最终它们会挨饿。
注:抢占式最短作业优先调度将与 SJF 调度有相同的优缺点。
循环赛
以下是使用循环调度的一些优势::
- 每个进程都由 CPU 在固定的时间段内提供服务,因此所有进程都被赋予相同的优先级。
- 饥饿不会发生,因为对于每个循环周期,每个进程都有固定的执行时间。没有一个进程被落下。
缺点来了:
- RR 中的吞吐量很大程度上取决于时间量长度的选择。如果时间量比需要的长,它往往会表现出与 FCFS 相同的行为。
- 如果时间量比需要的短,那么 CPU 从一个进程切换到另一个进程的次数就会增加。这导致了 CPU 效率的降低。
基于优先级的调度
优先调度的优势:
- 进程的优先级可以根据内存需求、时间需求或用户偏好来选择。例如,高端游戏会有更好的图形,这意味着游戏中更新屏幕的进程会有更高的优先级,以实现更好的图形性能。
一些缺点:
- 需要第二调度算法来调度具有相同优先级的进程。
- 在抢占式优先级调度中,优先级较高的进程可以先于已经在执行的优先级较低的进程执行。如果低优先级进程一直等待高优先级进程,就会出现饥饿。
调度算法在不同情况下的使用
每种调度算法都有一种它是最佳选择的情况。让我们看看不同的这种情况:
情况 1:
传入的进程很短,不需要进程以特定的顺序执行。
在这种情况下,与 SJF 和 RR 相比,FCFS 的效果最好,因为进程很短,这意味着没有进程会等待更长的时间。当一个个进程被执行时,每个进程最终都会被执行。
情况 2:
进程是长进程和短进程的混合,只有在给定时间内成功执行所有进程,任务才能完成。
循环调度在这里工作效率很高,因为它不会导致饥饿,并且为每个进程提供相等的时间量。
情况 3:
这些进程混合了基于用户和基于内核的进程。
在这种情况下,基于优先级的调度有效,因为与基于用户的进程相比,基于内核的进程通常具有更高的优先级。
例如,调度程序本身是一个基于内核的进程,它应该首先运行,这样它就可以调度其他进程。
什么是线程?
原文:https://www.studytonight.com/operating-system/multithreading
Thread 是一个执行单元,由自己的程序计数器、栈和一组寄存器组成,其中程序计数器主要跟踪下一条执行的指令,一组寄存器主要保存其当前的工作变量,栈主要包含执行历史
线程也被称为轻量级进程。线程是通过并行性提高应用程序性能的一种流行方式。线程主要用于表示软件方法,以便通过减少线程开销来提高操作系统的性能,线程开销主要相当于经典进程。
CPU 在线程之间快速来回切换,给人一种线程并行运行的错觉。
因为每个线程都有自己独立的进程执行资源;因此,可以通过增加线程数量来并行执行多个进程。
这里需要注意的是,每个线程只属于一个进程,在一个进程之外不存在线程。每个线程基本上分别代表控制流。在网络服务器和 web 服务器的实现中,线程已经被成功使用。线程为应用程序在共享内存多处理器上的并行执行提供了合适的基础。
下图显示了单线程和多线程进程的工作情况:
在继续之前,让我们先了解一下进程和线程之间的区别。
进程 | 线程 |
---|---|
进程只是指任何正在执行的程序。 | 线程只是指进程的一部分。 |
这个进程消耗更多的资源 | 线程消耗更少的资源。 |
这个进程需要更多的时间来创造。 | 线程比进程需要更少的创建时间。 |
这个进程是一个重量级的进程 | 线程被称为轻量级进程 |
终止该进程需要更多时间 | 线程终止的时间更短。 |
进程有独立的数据和代码段 | 一个线程主要共享数据段、代码段、文件等。它的对等线程。 |
这个进程需要更多的时间进行上下文切换。 | 线程切换上下文花费的时间更少。 |
与线程相比,进程之间的通信需要更多的时间。 | 与进程相比,线程之间的通信需要更少的时间。 |
由于某种原因,如果一个进程被阻塞,那么剩下的进程可以继续执行 | 万一用户级线程被阻塞,它的所有对等线程也会被阻塞。 |
螺纹的优点
螺纹的一些优点如下:
-
响应性
-
资源共享,因此可以更好地利用资源。
-
经济。创建和管理线程变得更加容易。
-
可扩展性。一个线程运行在一个 CPU 上。在多线程进程中,线程可以分布在一系列处理器上进行扩展。
-
上下文切换是平滑的。上下文切换是指 CPU 从一个任务切换到另一个任务所遵循的进程。
-
提高系统的吞吐量。我们举一个例子:假设一个进程被分成多个线程,每个线程的功能被认为是一个作业,那么单位时间内完成的作业数量就会增加,进而导致系统吞吐量的增加。
螺纹类型
有两种类型的线程:
-
用户线程
-
内核线程
用户线程在内核之上,没有内核支持。这些是应用程序程序员在程序中使用的线程。
内核线程在操作系统本身的内核中得到支持。所有现代操作系统都支持内核级线程,允许内核同时执行多个任务和/或同时服务多个内核系统调用。
现在让我们了解用户级线程和内核级线程之间的基本区别:
用户级线程 | 内核级线程 |
---|---|
这些线程由用户实现。 | 这些线程由操作系统实现 |
操作系统无法识别这些线程, | 这些线程被操作系统识别, |
在用户级线程中,上下文切换不需要硬件支持。 | 在内核级线程中,需要硬件支持。 |
这些线程主要设计为依赖线程。 | 这些线程主要设计为独立的线程。 |
在用户级线程中,如果一个用户级线程执行阻塞操作,那么整个进程都将被阻塞。 | 另一方面,如果一个内核线程执行阻塞操作,那么另一个线程可以继续执行。 |
用户级线程的例子:Java 线程,POSIX 线程。 | 内核级线程的例子:窗口 Solaris。 |
用户级线程的实现由一个线程库完成,并且很容易。 | 而内核级线程的实现是由操作系统完成的,并且很复杂。 |
这个线程本质上是通用的,可以在任何操作系统上运行。 | 这是特定于操作系统的。 |
多线程模型
用户线程必须通过以下策略之一映射到内核线程:
-
多对一模式
-
一对一模式
-
多对多模型
多对一模式
-
在多对一模型中,许多用户级线程都被映射到一个内核线程上。
-
线程管理由用户空间中的线程库处理,这在本质上是高效的。
-
在这种情况下,如果用户级线程库在操作系统中以某种系统不支持的方式实现,那么内核线程使用这种多对一的关系模型。
一对一模式
-
一对一模型创建一个单独的内核线程来处理每个用户线程。
-
该模型的大多数实现都对可以创建的线程数量进行了限制。
-
从 95 到 XP 的 Linux 和 Windows 实现了线程的一对一模型。
-
该模型比多对一模型提供更多的并发性。
多对多模型
-
多对多模型将任意数量的用户线程复用到相同或更少数量的内核线程上,结合了一对一和多对一模型的最佳特性。
-
用户可以创建任意数量的线程。
-
阻止内核系统调用不会阻止整个进程。
-
进程可以在多个处理器上分割。
什么是线程库?
线程库为程序员提供了创建和管理线程的 API。
线程库可以在用户空间或内核空间中实现。用户空间涉及仅在用户空间内实现的 API 函数,没有内核支持。内核空间涉及系统调用,需要一个支持线程库的内核。
三种类型的螺纹
-
POSIX Pideds可以作为用户或内核库提供,作为 POSix 标准的扩展。
-
Win32 线程在 Windows 系统上作为内核级库提供。
-
Java 线程:由于 Java 一般运行在 Java 虚拟机上,线程的实现是基于 JVM 运行在什么操作系统和硬件上的,也就是说,根据系统的不同,要么是 Pitheads,要么是 Win32 线程。
多线程问题
下面我们提到了几个与多线程相关的问题。嗯,这是一句老话,一切美好的事物,都是有代价的。
线程取消
线程取消意味着在线程完成工作之前终止它。对此可以有两种方法,一种是异步取消,立即终止目标线程。另一个是延迟取消允许目标线程定期检查是否应该取消。
信号处理
在 UNIX 系统中,信号用于通知进程某个特定事件已经发生。现在,当多线程进程接收到一个信号时,它必须被传递给哪个线程?它可以传递给所有线程或单个线程。
fork()系统调用
fork()是在内核中执行的系统调用,进程通过它创建自己的副本。现在多线程进程的问题是,如果一个线程分叉,整个进程会不会被复制?
安全问题
是的,由于多线程之间资源的广泛共享,可能会有安全问题。
在多线程进程中,您可能会面临许多其他问题,但是有合适的解决方案可供使用。在这里指出一些问题只是为了研究硬币的两面。
进程同步
原文:https://www.studytonight.com/operating-system/process-synchronization
在本教程中,我们将介绍操作系统中进程同步的概念。
引入进程同步是为了处理多个进程执行时出现的问题。
基于同步,进程分为两种类型,如下所示:
-
独立进程
-
合作进程
独立进程
如果一个进程的执行不影响另一个进程的执行,则称两个进程是独立的。
合作进程
如果一个进程的执行影响了另一个进程的执行,那么这两个进程被称为是合作的。这些进程需要同步,这样才能保证执行的顺序。
进程同步
它是以这样一种方式协调进程执行的任务现象,即没有两个进程可以访问相同的共享数据和资源。
-
这是一个为了保持合作进程的适当执行顺序而涉及的进程。
-
为了同步进程,有各种同步机制。
-
多进程系统中,当多个进程同时运行,多个进程试图同时访问同一共享资源或任何数据时,主要需要进程同步。
竞态条件
当多个进程执行相同的代码或访问相同的内存或任何共享变量时;在这种情况下,共享变量的输出或值有可能是错误的,因此为了这个目的,所有进程都争着说我的输出是正确的。这种情况通常被称为比赛状态。由于多个进程以并发方式访问和处理对同一数据的操作,因此结果取决于数据访问发生的特定顺序。
主要是这种情况可能发生在临界区内。当多个线程执行的结果根据线程执行的顺序不同时,就会出现临界区的竞争情况。但这种情况是临界区可以避免的,如果临界区被视为原子指令。使用锁或原子变量进行适当的线程同步也可以防止争用情况。
临界区问题
关键部分是访问共享变量的代码段,必须作为原子操作来执行。这意味着在一组协作的进程中,在给定的时间点,只有一个进程必须执行其关键部分。如果任何其他进程也想执行它的关键部分,它必须等到第一个进程完成。进入临界区主要由wait()
功能控制,而离开临界区则由signal()
功能控制。
带卷送进段
在这一节中,主要是进程请求进入关键部分。
出口部分
本节之后是关键部分。
临界截面问题的解决方案
临界区问题的解决方案必须满足以下三个条件:
1.互斥现象
在一组协作进程中,在给定的时间点,只有一个进程可以处于其关键部分。
2.进步
如果没有进程在其关键部分,并且如果一个或多个线程想要执行它们的关键部分,那么必须允许这些线程中的任何一个进入其关键部分。
3.有界等待
在一个进程请求进入其关键部分之后,在这个进程的请求被批准之前,有一个限制,即有多少其他进程可以进入它们的关键部分。因此,达到限制后,系统必须授予进程进入其关键部分的权限。
关键部分的解决方案
关键部分在进程同步中起着重要作用,因此必须解决这个问题。
一些广泛使用的解决临界截面问题的方法如下:
1.彼得森的解决方案
这是一种广泛使用的基于软件的解决关键部分问题的方法。彼得森的解决方案是由计算机科学家彼得森开发的,这就是为什么它被如此命名。
在这个解决方案的帮助下,当一个进程在任何关键状态下执行时,另一个进程只执行剩余的代码,反之亦然。这种方法还有助于确保在特定时间只有一个进程可以在关键部分运行。
该解决方案保留了所有三个条件:
-
互斥得到了安慰,因为在任何时候只有一个进程可以访问关键部分。
-
进展也得到安慰,因为关键部分之外的进程无法阻止其他进程进入关键部分。
-
有界等待是有保证的,因为每个进程都有公平的机会进入临界区。
以上是彼得森解中 Pi 进程的结构。
-
假设有 N 个进程(P1,P2,...PN) 并且在某个时间点,每个进程都需要进入临界区
-
这里维护一个大小为 N 的 FLAG[] 数组,默认为 false。每当一个进程需要进入临界区时,它必须将其标志设置为真。例如:如果圆周率想要进入,它将设置标志【1】=真。
-
另一个变量叫做 TURN ,用来表示当前等待进入临界区的工序号。
-
退出时进入临界区的进程会将 TURN 从准备好的进程列表中更改为另一个数字。
-
例如:如果转弯是 3,那么 P3 进入临界区,当离开时,转弯=4,因此 P4 打破了等待循环。
同步硬件
许多系统为关键部分代码提供硬件支持。如果我们可以禁止在修改共享变量或资源时发生中断,那么在单处理器环境中,临界区问题可以很容易地解决。
以这种方式,我们可以确定当前的指令序列将被允许按顺序执行,而没有先发制人。不幸的是,这种解决方案在多处理器环境中不可行。
在多处理器环境中禁用中断可能很耗时,因为消息会传递给所有处理器。
这种消息传输延迟会延迟线程进入临界区,从而降低系统效率。
互斥锁
由于同步硬件解决方案对每个人来说都不容易实现,引入了一种称为互斥锁的严格软件方法。在这种方法中,在代码的入口部分,在关键部分内修改和使用的关键资源上获取锁,在出口部分释放锁。
当一个进程执行其关键部分时,资源被锁定,因此没有其他进程可以访问它。
同步的经典问题
原文:https://www.studytonight.com/operating-system/classical-synchronization-problems
在本教程中,我们将讨论各种经典的同步问题。
除了互斥之外,信号量还可以用于其他同步问题。
下面是一些经典问题,描述了存在协作进程的系统中进程同步的缺陷。
我们将讨论以下三个问题:
-
有界缓冲区(生产者-消费者)问题
-
哲学家就餐问题
-
读写器问题
有界缓冲区问题
因为缓冲池有一个最大大小,这个问题通常被称为有界缓冲问题。
-
这个问题被概括为生产者消费者问题,其中有限缓冲池被用来在生产者和消费者进程之间交换消息。
-
这个问题的解决方案是,创建两个计数信号量“满”和“空”,分别跟踪当前已满和空缓冲区的数量。
-
在这种情况下,生产者主要生产产品,消费者消费产品,但两者每次都可以使用其中一个容器。
-
这个问题的主要复杂性在于,我们必须保持可用的空容器和满容器的计数。
哲学家就餐问题
-
哲学家就餐的问题涉及以无死锁和无饥饿的方式将有限的资源分配给一组进程。
-
有五个哲学家围坐在一张桌子上,桌子旁边放着五根筷子/叉子,中间放着一碗米饭,当一个哲学家想吃饭时,他用两根筷子——一根从他们的左边,一根从他们的右边。当一个哲学家想思考时,他会把两根筷子都放在原来的位置。
读写器问题
-
在这个问题中,有一些进程(称为读取器)只读取共享数据,从不更改数据,还有一些进程(称为写入器)可能会在读取数据之外更改数据,或者不读取数据。
-
有各种类型的读取器-写入器问题,大多数集中在读取器和写入器的相对优先权。
-
这个问题的主要复杂性来自于允许多个读取器同时访问数据。
有界缓冲区问题
原文:https://www.studytonight.com/operating-system/bounded-buffer
有界缓冲区问题,又称生产者消费者问题,是同步的经典问题之一。在继续讨论解决方案和程序代码之前,让我们从理解这个问题开始。
什么是问题陈述?
有一个n
槽的缓冲器,每个槽能够存储一个单位的数据。有两个进程在运行,即生产者和消费者,它们在缓冲区上运行。
有界缓冲区问题
生产者试图将数据插入缓冲区的空槽中。使用者试图从缓冲区中已填充的槽中移除数据。正如您现在可能已经猜到的,如果这两个进程同时执行,它们将不会产生预期的输出。
需要有一种方法让生产者和消费者以独立的方式工作。
这里有一个解决方案
这个问题的一个解决方案是使用信号量。这里将使用的信号量有:
m
,一种用于获取和释放锁的二进制信号量。empty
,一种计数信号量的,其初始值是缓冲区中的槽数,因为最初所有槽都是空的。full
,初始值为0
的计数信号量。
在任何时刻,当前值“空”表示缓冲区中的空槽数,“满”表示缓冲区中已占用的槽数。
生产者经营
生产者函数的伪代码如下所示:
do
{
// wait until empty > 0 and then decrement 'empty'
wait(empty);
// acquire lock
wait(mutex);
/* perform the insert operation in a slot */
// release lock
signal(mutex);
// increment 'full'
signal(full);
}
while(TRUE)
- 查看上面的生产者代码,我们可以看到生产者首先等待,直到至少有一个空槽。
- 然后它递减空信号量,因为现在将少一个空槽,因为生产者将在其中一个槽中插入数据。
- 然后,它获取缓冲区的锁,这样,直到生产者完成操作,消费者才能访问缓冲区。
- 在执行插入操作之后,锁被释放并且 full 的值递增,因为生产者刚刚填充了缓冲器中的一个槽。
消费者行动
消费函数的伪代码如下所示:
do
{
// wait until full > 0 and then decrement 'full'
wait(full);
// acquire the lock
wait(mutex);
/* perform the remove operation in a slot */
// release the lock
signal(mutex);
// increment 'empty'
signal(empty);
}
while(TRUE);
- 使用者等待,直到缓冲区中至少有一个满槽。
- 然后它递减满信号量,因为在消费者完成其操作后,占用的槽数将减少 1。
- 之后,消费者获得缓冲区的锁。
- 随后,使用者完成删除操作,以便删除其中一个完整插槽中的数据。
- 然后,消费者释放锁。
- 最后,空信号量递增 1,因为消费者刚刚从一个被占用的槽中移除了数据,从而使其为空。
哲学家就餐问题
原文:https://www.studytonight.com/operating-system/dining-philosophers-problem
哲学家就餐问题是另一个经典的同步问题,用于评估需要将多个资源分配给多个进程的情况。
什么是问题陈述?
假设有五个哲学家围坐在一张圆形餐桌旁。餐桌中间有五根筷子和一碗米饭,如下图所示。
哲学家就餐问题
在任何时刻,哲学家不是在吃饭就是在思考。当一个哲学家想吃饭时,他用两根筷子——一根从他们的左边,一根从他们的右边。当一个哲学家想思考时,他会把两根筷子都放在原来的位置。
这是解决方案
从问题陈述中可以清楚地看出,哲学家可以无限期地思考。但是当一个哲学家开始吃饭时,他必须在某个时间点停下来。哲学家处于无休止的思考和进食的循环中。
五根筷子各有一组五个信号量stick[5]
。
每个哲学家的代码如下:
while(TRUE)
{
wait(stick[i]);
/*
mod is used because if i=5, next
chopstick is 1 (dining table is circular)
*/
wait(stick[(i+1) % 5]);
/* eat */
signal(stick[i]);
signal(stick[(i+1) % 5]);
/* think */
}
当一个哲学家想吃米饭时,他会等他左边的筷子,然后拿起那根筷子。然后他等待合适的筷子出现,然后也拿起它。吃完后,他放下了两根筷子。
但是如果五个哲学家同时饥饿,并且每个人都拿起一根筷子,那么就会出现僵局,因为他们将永远等待另一根筷子。对此,可能的解决方案是:
- 哲学家必须被允许拿起筷子,只要左筷子和右筷子都有。
- 只允许四个哲学家坐在桌旁。这样,如果四个哲学家都拿起四根筷子,桌子上就剩下一根筷子了。所以,一个哲学家可以开始吃饭,最终,会有两根筷子。这样可以避免死锁。
什么是读写器问题?
原文:https://www.studytonight.com/operating-system/readers-writer-problem
读写器问题是另一个经典同步问题的例子。这个问题有许多变体,下面将研究其中一种。
问题陈述
有一个共享资源应该被多个进程访问。在这种情况下有两种类型的进程。他们是读取器和写入器。任意数量的读取器可以同时从共享资源读取,但是只有一个写入器可以写入共享资源。当写入器向资源写入数据时,没有其他进程可以访问资源。如果当时有非零数量的读取器访问资源,则写入程序无法写入资源。
解决方案
从上面的问题陈述中,很明显读取器比作者有更高的优先权。如果编写器想要写入资源,它必须等到当前没有读取器访问该资源。
这里,我们使用一个互斥体 m
和一个信号量 w
。整数变量read_count
用于维护当前访问资源的读取器数量。变量read_count
被初始化为0
。1
的值最初赋予m
和w
。
我们使用互斥体m
使进程在更新read_count
变量时获取和释放锁,而不是让进程获取共享资源的锁。
编写器进程的代码如下:
while(TRUE)
{
wait(w);
/* perform the write operation */
signal(w);
}
并且,阅读器进程的代码如下所示:
while(TRUE)
{
//acquire lock
wait(m);
read_count++;
if(read_count == 1)
wait(w);
//release lock
signal(m);
/* perform the reading operation */
// acquire lock
wait(m);
read_count--;
if(read_count == 0)
signal(w);
// release lock
signal(m);
}
这是未编码的代码(已解释)
- 如上面针对编写器的代码所示,编写器只是等待 w 信号量,直到有机会写入资源。
- 在执行写操作之后,它递增 w ,以便下一个写入器可以访问资源。
- 另一方面,在读取器的代码中,每当通过进程更新 read_count 时,获取锁。
- 当读取器想要访问资源时,它首先递增 read_count 值,然后访问资源,然后递减 read_count 值。
- 进入临界区的第一个读取器和退出临界区的最后一个读取器使用信号量 w 。
- 这样做的原因是,当第一批读取器进入关键部分时,作者被阻止访问资源。现在只有新读取器才能访问该资源。
- 类似地,当最后一个读取器退出临界区时,它使用 w 信号量向写入器发出信号,因为现在没有读取器,写入器可以有机会访问资源。
信号量介绍
原文:https://www.studytonight.com/operating-system/introduction-to-semaphores
1965 年,Dijkstra 提出了一种新的非常重要的管理并发进程的技术,通过使用一个简单的整数变量值来同步交互进程的进度。这个整数变量被称为信号量。所以它基本上是一个同步工具,只能通过两个低标准的原子操作来访问,等待和信号分别由P(S)
和V(S)
指定。
简单来说,信号量是一个只能保存非负整数值的变量,由所有线程共享,操作等待和信号,工作如下:
P(S): if S >= 1 then S := S - 1
else <block and enqueue the process>;
V(S): if <some process is blocked on the queue>
then <unblock a process>
else S := S + 1;
等待和信号的经典定义是:
- 等待:一旦变得非负(大于或等于
1
),该操作就递减其参数S
的值。此操作主要帮助您控制任务进入关键部分。在负值或零值的情况下,不执行任何操作。wait()
手术最初被称为 P;所以也被称为 P(S)操作。等待操作的定义如下:
wait(S)
{
while (S<=0);//no operation
S--;
}
注:
当一个进程修改一个信号量的值时,没有其他进程可以同时修改同一个信号量的值。在上述情况下,必须不间断地执行整数值 S(S<=0)以及可能的修改 S。
- 信号:增加其参数
S
的值,因为队列中不再有进程被阻塞。此操作主要用于控制任务从关键部分的退出。signal()
手术最初称为 V;所以也被称为 V(S)操作。信号操作的定义如下:
signal(S)
{
S++;
}
此外,注意在wait()
和signal()
操作中对信号量整数值的所有修改必须不可分割地执行。
信号量的性质
-
很简单,总是有一个非负的整数值。
-
适用于许多进程。
-
可以有许多不同的临界区,有不同的信号量。
-
每个关键部分都有唯一的访问信号量。
-
如果需要,可以允许多个进程同时进入关键部分。
我们现在将介绍操作系统中信号量的类型;
信号量的类型
信号量在操作系统中主要有两种类型:
-
二进制信号量:
这是一种用于实现互斥的特殊形式的信号量,因此它通常被称为互斥体。二进制信号量被初始化为
1
,并且在程序执行期间只取值0
和1
。在二进制信号量中,只有当信号量的值= 1 时,等待操作才有效,当信号量= 0 时,信号操作成功。二进制信号量比计数信号量更容易实现。 -
计数信号量:
这些用于实现有界并发。计数信号量可以覆盖一个不受限制的域。这些可用于控制对由有限数量的实例组成的给定资源的访问。这里信号量计数用于指示可用资源的数量。如果添加了资源,那么信号量计数会自动递增,如果移除了资源,则计数会递减。计数信号量没有互斥。
使用示例
这是一个简单的分步实现,涉及信号量的声明和使用。
Shared var mutex: semaphore = 1;
Process i
begin
.
.
P(mutex);
execute CS;
V(mutex);
.
.
End;
信号量的优势
使用信号量的好处如下:
-
在信号量的帮助下,资源得到了灵活的管理。
-
信号量是独立于机器的,它们应该在微内核的独立于机器的代码中运行。
-
信号量不允许多个进程进入临界区。
-
它们允许多个线程访问关键部分。
-
由于信号量严格遵循互斥原则,因此它们比其他一些同步方法更有效。
-
信号量中的资源不会因为信号量中的繁忙等待而浪费,因为处理器时间不会不必要地浪费在检查是否满足任何条件以允许进程访问关键部分上。
信号量的缺点
-
最大的限制之一是信号量可能导致优先级反转;其中低优先级进程可以首先访问关键部分,而高优先级进程可以稍后访问关键部分。
-
为了避免信号量中的死锁,等待和信号操作需要以正确的顺序执行。
-
大规模使用信号量是不切实际的;因为它们的使用导致模块性的丧失,这是因为 wait()和 signal()操作阻止了系统结构化布局的创建。
-
它们的使用并没有强制执行,只是按照惯例。
-
如果使用不当,进程可能会无限期阻塞。这样的情况叫做死锁。在接下来的课程中,我们将详细研究死锁。
操作系统中的死锁介绍
死锁是一组阻塞的进程,每个进程都持有一个资源,并等待获取另一个进程持有的资源。
在上图中,进程 T0 有资源 1,它需要资源 2 来完成它的执行。同样,进程 T1 有资源 2,它也需要获取资源 1 来完成它的执行。这样,T0 和 T1 就陷入了僵局,因为它们都需要别人的资源来完成它们的执行,但它们都不愿意放弃自己的资源。
一般来说,进程必须在使用资源之前请求它,并且在使用资源之后释放它。为了完成指定的任务,任何进程都可以请求所需的资源。并且有一个条件,即请求的资源数量不能超过系统中可用资源的总数。
基本上,在正常操作模式下,进程对资源的利用顺序如下:
-
请求:
首先,进程请求资源。在这种情况下,如果不能立即批准请求(例如:资源正被任何其他进程使用),则请求进程必须等待,直到它可以获取资源。 -
使用:
进程可以对资源进行操作(例如:如果资源是打印机,那么在这种情况下进程可以在打印机上打印)。 -
释放:
进程释放资源。
让我们来看看饥饿和僵局之间的区别。
饥饿 vs 死锁
饿死 | 僵局 |
---|---|
当所有低优先级进程被阻塞,而高优先级进程执行时,这种情况被称为饥饿。 | 死锁是当其中一个进程被阻塞时发生的情况。 |
饥饿是一个漫长的等待,但它不是一个无限的进程。 | 死锁是一个无限的进程。 |
没有必要说每一次饥饿都是僵局。 | 每个僵局都有饥饿。 |
饥饿是由于不受控制的优先级和资源管理。 | 在死锁期间,抢占和循环等待不会同时发生。 |
资源调度程序可以检测到死锁的发生。
在下一节中,我们将讨论导致死锁的条件。
必要条件
只有当以下四个条件同时成立时,才会出现死锁情况:
1.互斥现象
根据此条件,至少有一个资源应该是不可共享的(不可共享的资源是一次只能由一个进程使用的资源。)
2.保持等待
根据这种情况,进程至少持有一个资源,并且正在等待其他资源。
3.禁止抢占
不能从进程中获取资源,因为资源只能由持有它们的进程自愿释放。
4.循环等待
在这种情况下,一组进程以循环形式相互等待。
上述四个条件并不是完全独立的,因为循环等待条件意味着保持和等待条件。我们强调,所有四个条件都必须适用于僵局。
死锁情况可以通过许多方法来避免。让我们来看看其中的一些方法。
处理死锁的方法
用于处理死锁问题的方法如下:
1.忽略死锁
根据这种方法,假设死锁永远不会发生。这种方法被许多操作系统使用,它们假设死锁永远不会发生,这意味着操作系统完全忽略死锁。这种方法对于那些仅用于浏览和正常任务的系统是有益的。因此,忽略死锁方法在许多情况下可能是有用的,但是为了从操作系统中消除死锁,它并不完美。
2.死锁预防
正如我们在上面一节中所讨论的,所有四个条件:互斥、保持和等待、无抢占和循环等待,如果被系统保持,就会导致死锁的发生。死锁预防方法的主要目的是违反四个条件中的任何一个;因为如果任何一个条件被违反,那么死锁的问题将永远不会发生。因为这种方法背后的思想很简单,但是在系统中物理实现这种方法的进程中会出现困难。
3.避免僵局
操作系统使用此方法来检查系统是处于安全状态还是不安全状态。此方法检查操作系统执行的每个步骤。任何进程都会继续执行,直到系统处于安全状态。一旦系统进入不安全状态,操作系统就必须后退一步。
基本上,在这种方法的帮助下,操作系统会关注每一次分配,并确保分配不会在系统中造成任何死锁。
4.死锁检测和恢复
该方法首先利用资源分配图的一些算法来检测死锁。该图主要用于表示各种资源对不同进程的分配。检测到死锁后,可以使用许多方法来从死锁中恢复。
一种方法是抢占,借助于此,一个进程持有的资源被提供给另一个进程。
第二种方式是回滚,因为操作系统保存了进程状态的记录,它可以很容易地使进程回滚到其先前的状态,从而可以很容易地消除死锁情况。
克服死锁情况的第三种方法是杀死一个或多个进程。
在接下来的教程中,我们将逐一详细介绍每种方法。
同步的经典问题
原文:https://www.studytonight.com/operating-system/classical-problems-of-synchronization
在本教程中,我们将讨论进程同步的各种经典问题。
除了互斥之外,信号量还可以用于其他同步问题。
下面是一些经典问题,描述了存在协作进程的系统中进程同步的缺陷。
我们将讨论以下三个问题:
-
有界缓冲区(生产者-消费者)问题
-
哲学家就餐问题
-
读写器问题
【有界缓冲区问题】
因为缓冲池有一个最大大小,这个问题通常被称为有界缓冲问题。
-
这个问题被概括为生产者-消费者问题,其中有限缓冲池被用来在生产者和消费者进程之间交换消息。
-
这个问题的解决方案是,创建两个计数信号量“满”和“空”,分别跟踪当前已满和空缓冲区的数量。
-
生产者主要生产产品,消费者消费产品,但两者每次都可以使用其中一个容器。
-
这个问题的主要复杂性在于,我们必须保持可用的空容器和满容器的计数。
哲学家就餐问题
-
哲学家就餐的问题涉及以无死锁和无饥饿的方式将有限的资源分配给一组进程。
-
有五个哲学家围坐在一张桌子上,桌子旁边放着五根筷子/叉子,中间放着一碗米饭,当一个哲学家想吃饭时,他用两根筷子——一根从他们的左边,一根从他们的右边。当一个哲学家想思考时,他会把两根筷子都放在原来的位置。
读写器问题
-
在这个问题中,有一些进程(称为读取器)只读取共享数据,从不更改,还有一些其他进程(称为写入器)可能会在读取之外更改数据,或者不读取数据。
-
有各种类型的读取器-写入器问题,大部分集中在读取器和写入器的相对优先权。
-
这个问题的主要复杂性来自于允许多个读取器同时访问数据。
操作系统中的死锁预防
原文:https://www.studytonight.com/operating-system/deadlock-prevention-in-operating-system
在本教程中,我们将详细介绍死锁预防方法。
因为我们已经熟悉了僵局的所有必要条件。简而言之,条件如下:
-
互斥现象
-
等待
-
没有优先权
-
循环等待
操作系统中的死锁预防
让我们举一个椅子的例子,因为我们知道椅子总是用四条腿站立。同样,对于死锁问题,上述所有给定的四个条件都是需要的。如果椅子的任何一条腿断了,那么它肯定会掉下来。死锁的情况也是如此,如果我们能够违反四个条件中的任何一个,并且不让它们同时发生,那么就可以避免死锁问题。
我们将通过分别检查四个必要条件来阐述死锁预防方法。
互斥现象
对于不可共享的资源,此条件必须成立。例如,一台打印机不能由多个进程同时共享。相比之下,可共享资源不需要互斥访问,因此不会陷入死锁。可共享资源的一个很好的例子是只读文件,因为如果几个进程试图同时打开一个只读文件,那么它们可以被授权同时访问该文件。
进程不需要等待共享资源。通常,不能通过拒绝互斥条件来防止死锁,因为有些资源本质上是不可共享的。
等待
当一个进程持有一个资源,并且还在等待其他资源来完成它的执行时,就会出现保持和等待状态。因此,如果我们不希望出现这种情况,那么我们必须保证当一个进程请求一个资源时,它不持有任何其他资源。
有一些协议可以用来确保保持和等待状态永远不会发生:
-
根据第一协议;每个进程必须在开始执行之前请求并获得所有资源。
-
第二种协议只允许进程在不占用任何资源的情况下请求资源。
让我们来说明这两种协议之间的区别:
我们将考虑一个进程,主要是将数据从 DVD 驱动器复制到磁盘上的文件,对文件进行排序,然后将结果打印到打印机上。如果根据第一个协议,在进程开始时必须请求所有资源,那么进程最初会请求 DVD 驱动器、磁盘文件和打印机。它将在整个执行进程中保持打印机,即使打印机只在最后才需要。
而第二种方法允许进程最初只请求 DVD 驱动器和磁盘文件。它将数据从 DVD 驱动器复制到磁盘,然后释放 DVD 驱动器和磁盘文件。然后,该进程必须再次请求磁盘文件和打印机。将磁盘文件复制到打印机后,该进程也会释放这两个资源,然后终止。
两种协议的缺点
-
资源利用率可能较低,因为资源可能已分配但长时间未使用。例如,在上面给出的例子中,我们可以释放 DVD 驱动器和磁盘文件,并且仅当我们能够确定我们的数据将保留在磁盘文件上时,才再次请求磁盘文件和打印机。否则,我们必须在两个协议开始时请求所有资源。
-
有饿死的可能。一个需要几个流行资源的进程可能不得不无限期等待,因为它需要的资源中至少有一个总是被分配给其他进程。
没有优先权
死锁的第三个必要条件是不应该抢占已经分配的资源。为了确保此条件不成立,可以使用以下协议:
-
根据第一协议:“如果已经持有一些资源的进程请求另一个资源,并且如果所请求的资源不能被分配给它,那么它必须释放当前分配给它的所有资源。”
-
根据第二个协议:“当一个进程请求一些资源时,如果它们可用,那么就分配它们。如果请求的资源不可用,那么我们将检查它是否正在被使用,或者是否被分配给等待其他资源的其他进程。如果该资源没有被使用,则操作系统从等待进程中抢占该资源,并将其分配给请求进程。如果该资源正在被使用,则请求进程必须等待”。
第二种协议可以应用于那些状态可以很容易保存和以后恢复的资源,例如 CPU 寄存器和内存空间,而不能应用于像打印机和磁带驱动器这样的资源。
循环等待
导致死锁的第四个必要条件是循环等待,为了确保违反这个条件我们可以做以下事情:
为每个资源分配一个优先级编号。将有一个条件,即任何进程都不能请求较低优先级的资源。这种方法确保没有任何一个进程可以请求正被任何其他进程使用的资源,并且不会形成循环。
示例:假设 R5 资源分配给 P1,如果下次 P1 请求 R4,R3 小于 R5;那么这种请求将不会被批准。只有超过 R5 的资源请求才会被批准。
S.No | 必要条件 | 方法 | 实际执行 |
---|---|---|---|
one | 互斥现象 | 违反这一条件的方法是假脱机。 | 不可能 |
Two | 保持等待 | 为了违反这个条件,方法是最初请求一个进程的所有资源 | 不可能 |
three | 没有优先权 | 为了违反这个条件,办法是:从进程中抢夺所有资源。 | 不可能 |
four | 循环等待 | 这种方法是给每个资源分配优先级,并按数字顺序排列 | 可能 |
操作系统中死锁避免
原文:https://www.studytonight.com/operating-system/deadlock-avoidance-in-operating-system
在本教程中,我们将介绍如何在操作系统中避免死锁。
操作系统使用死锁避免方法来检查系统是处于安全状态还是不安全状态,为了避免死锁,进程必须告诉操作系统进程可以请求的最大资源数量,以便完成其执行。
死锁避免是如何工作的?
在这种方法中,对任何资源的请求只有在系统的最终状态不会导致系统死锁的情况下才会被授予。此方法检查操作系统执行的每个步骤。任何进程都会继续执行,直到系统处于安全状态。一旦系统进入不安全状态,操作系统就必须后退一步。
借助死锁避免算法,您可以动态评估资源分配状态,这样就永远不会出现循环等待的情况。
根据最简单和有用的方法,任何进程都应该声明它将需要的每种类型的资源的最大数量。避免死锁的算法主要检查资源分配,以便永远不会出现循环等待条件。
死锁避免主要可以借助银行家算法来完成。
让我们首先理解安全和不安全状态的概念
安全状态和不安全状态
如果系统能够以某种顺序为每个进程分配资源(达到其最大需求),并且仍然避免死锁,则状态是安全的。从形式上来说,系统只有在存在安全序列的情况下才处于安全状态。所以安全状态不是死锁状态,相反死锁状态是不安全状态。
在不安全状态下,操作系统无法阻止进程以任何死锁发生的方式请求资源。不一定所有的不安全状态都是死锁;不安全的状态可能会导致死锁。
上图显示了安全、不安全和死锁状态空间
避免死锁示例
让我们考虑一个有 12 盘磁带和三个进程的系统 P1、P2、P3。P1 进程需要 10 盘磁带,P2 进程可能需要多达 4 盘磁带,P3 进程可能需要多达 9 盘磁带。假设在时间 t0,进程 P1 持有 5 盘磁带,进程 P2 持有 2 盘磁带,进程 P3 持有 2 盘磁带。(有 3 盘免费磁带)
处理 | 最大需求 | 当前需求 |
---|---|---|
第一亲代 | Ten | five |
P2 | four | Two |
P3 | nine | Two |
所以在时间 t0,系统处于安全状态。顺序为
系统可以从安全状态进入不安全状态。假设在时间 t1,处理 P3 请求,并被分配多一个磁带。系统不再处于安全状态。此时,只有进程 P2 可以分配其所有磁带。当它返回时,系统将只有 4 个可用磁带。由于 P1 被分配了 5 个磁带,但最多有 10 个磁带,因此它可能会请求另外 5 个磁带。如果这样做,它将不得不等待,因为它们不可用。同样,进程 P3 可能会请求其额外的 6 盘磁带,并且必须等待,这将导致死锁。
错误在于答应了 P3 再要一盘磁带的请求。如果我们让 P3 等到其他进程完成并释放其资源,那么我们就可以避免僵局
注意:在一种情况下,如果系统不能满足所有进程的请求,那么系统的状态被称为不安全。
死锁避免方法的主要关键是每当请求资源时,只有在结果状态是安全状态的情况下,请求才必须被批准。
在下一个教程中,我们将介绍避免死锁的银行家算法的概念。
操作系统中的死锁检测和恢复
原文:https://www.studytonight.com/operating-system/deadlock-detection-and-recovery-in-os
在本教程中,我们将介绍死锁检测和恢复的概念。
如果系统没有采用死锁预防或死锁避免算法,那么就有可能发生死锁。
在这种情况下,系统可能会提供两件事:
-
一种算法用于检查系统的状态,以便确定是否发生了死锁。
-
用于从死锁中恢复的算法。
因此,为了摆脱死锁,操作系统定期检查系统是否有死锁。找到死锁后,操作系统将使用恢复技术从中恢复。
现在,操作系统的主要任务是检测死锁,这是借助资源分配图来完成的。
每种资源类型的单一实例
如果所有资源只有一个实例,那么可以定义一个死锁检测算法,它主要使用资源分配图的变体,称为等待图。这个等待图是从资源分配图中通过移除其资源节点并折叠其适当的边而获得的。
等待图中从 Pi 到 Pj 的一条边仅仅意味着进程 Pi 基本上是在等待进程 Pj,以便释放它需要的资源。当且仅当对应的资源分配图包含资源 Rq 的两条边 Pi,Rq 和 Rq,Pj 时,等待图中存在边 Pi,Pj。
当且仅当等待图中有周期时,系统中存在死锁。为了检测死锁,系统需要维护等待图,并且周期性地系统调用在等待图中搜索循环的算法。
用来检测图中循环的算法主要需要 n 次运算;其中 n 表示图中顶点的数量。
每种资源类型的多个实例
作为等待图的上述方案不适用于具有每种资源类型的多个实例的资源分配系统。现在,我们将转向适用于此类系统的死锁检测算法。
该算法主要使用几种时变数据结构,类似于银行家算法中使用的数据结构,如下所示:
1.有空的
这是一个长度为m
的阵。它表示每种类型的可用资源数量。
2.分配
它是一个n x m
矩阵,表示当前分配给每个进程的每种类型的资源数量。
3.请求
它是一个 n*m 矩阵,用来表示每个进程的请求;如果请求[i][j]等于 k,那么进程 Pi 请求更多的资源类型 Ri 的实例。
分配和请求作为向量,称为分配和请求。给定的检测算法仅用于调查剩余待完成进程的每个可能的分配序列。
1.让Work
和Finish
分别是长度为 m 和 n 的向量。初始化:
Work = Available
Finish[i] =false for i = 0, 1, ... , n - 1.
如果分配 i 不等于 0 ,则完成[i] =假;否则完成【I】=真
2.找到一个索引 i 这样两者
Finish[i] ==false
Requesti <= Work
如果不存在这样的 i ,则转到步骤 4。
3.执行以下操作:
Work = Work + Allocationi
Finish[i] = true
转到步骤 2。
4.如果Finish[i] == false
对于某个 I, 0 < =i < n ,则表示系统处于死锁状态。
而且,如果 Finish[i]==false,那么进程 Pi 就陷入了僵局。
该算法可能需要 mxn 操作的顺序,以确定系统是否处于死锁状态。
从死锁中恢复
当检测算法确定存在死锁时,有几种可供选择的方法。有一种可能性,那就是通知操作员死锁,让他手动处理这个问题。
另一种可能是让系统自动从死锁中恢复。这是两个主要用来打破僵局的选项。
现在我们将讨论进程终止和资源抢占
进程终止
为了通过中止进程来消除死锁,我们将使用下面给出的两种方法之一。在这两种方法中,系统回收分配给终止进程的所有资源。
-
中止所有陷入僵局的进程
显然,这种方法有助于打破僵局的循环,但这是一种昂贵的方法。这种方法不是建议性的,但是如果问题变得非常严重,可以使用。如果所有进程都被终止,那么系统中可能会出现不足,所有进程将从启动时重新执行。 -
一次中止一个进程,直到消除死锁循环
这个方法可以使用,但是我们必须决定杀死哪个进程,这个方法会产生相当大的开销。工作量最少的进程首先被操作系统杀死。
资源抢占
为了利用资源抢占来消除死锁,我们会相继抢占进程中的一些资源,并将这些资源交给其他一些进程,直到死锁周期被打破,系统有可能从死锁中恢复。但是系统有可能陷入饥饿。
CPU 调度
最高响应比优先(HRRN)调度
原文:https://www.studytonight.com/operating-system/highest-response-ratio-next-hrrn-scheduling
HRRN (最高响应比优先)调度是操作系统中的一种非抢占式调度算法。它是用于调度的最佳算法之一。
由于 HRRN 是一种非抢占式调度算法,所以如果有任何进程当前正在与 CPU 一起执行,并且在其执行期间,如果任何新的进程以小于当前正在运行的进程的突发时间到达存储器,那么此时当前正在运行的进程将不会被放入就绪队列&中,没有任何中断地完成其执行。
HRRN 基本上是最短作业 Next(SJN) 为了减少饥饿问题的修改。
在 HRRN 调度算法中,CPU 被分配给下一个具有最高响应比的进程,而不是具有较少突发时间的进程。
现在,让我们先来看看如何计算响应比。
响应比= (W+S)/S
哪里,
W=表示等待时间。
S=表示服务时间为突发时间。
HRNN 算法
-
在 HRNN 调度算法中,一旦一个进程被选择执行,它将一直运行到完成。
-
第一步是计算所有进程的等待时间。等待时间只是指进程在就绪队列中等待的时间总和。
-
每次都安排进程执行,以便找到每个可用进程的响应比率。
-
然后在处理器首先执行具有最高响应率的处理之后。
-
在一种情况下,如果两个进程具有相同的响应比率,则使用 FCFS 调度算法断开连接。
现在我们来看一个同样的例子:
HRRN 调度示例
这里,我们有几个具有不同突发和数组时间的进程,以及一个代表 CPU 分配时间的甘特图。
说明
下面是对上述例子的解释
-
在时间=0 时,就绪队列中没有可用的进程,因此从 0 到 1 的 CPU 处于空闲状态。因此,0 到 1 被认为是 CPU 空闲时间。
-
在时间=1 时,就绪队列中只有进程 P1 可用。因此,P1 进程一直执行到完成。
-
在进程 P1 之后,在时间=4 时,只有进程 P2 到达,因此进程 P2 被执行,因为操作系统没有任何其他选项。
-
在时间=10 时,进程 P3、P4 和 P5 在就绪队列中。因此,为了安排 P2 会议后的下一个进程,我们需要计算响应率。
-
在这一步中,我们将计算 P3、P4 和 P5 的响应率。
响应比= W+S/S
RR(P3) = [(10-5) +8]/8
= 1.625
RR(P4) = [(10-7) +4]/4
= 1.75
RR(P5) = [(10-8) +5]/5
= 1.4
从以上结果可以看出,P4 进程的响应率最高,因此 P4 进程排在 P2 之后。
-
在时间 t=10 时,由于响应比的值较大,执行进程 P4。
-
现在在就绪队列中,我们有两个进程 P3 和 P5,在执行 P4 之后让我们计算 P3 和 P5 的响应比率
RR (P3) = [(14-5) +8]/8
=2.125
RR (P5) = [(14-8) +5]/5
=2.2
从以上结果可以看出,进程 P5 的响应率最高,因此进程 P5 排在 P4 之后
-
在 t=14 时,执行进程 P5。
-
在 P5 完全执行之后,P3 在就绪队列中,因此在时间 t=19,P3 被执行。
在下表中,我们将计算所有进程的周转时间、等待时间和完成时间。
| 进程 | 到达时间 | 突发时间 | 完成时间 |
解题时间
周转时间=完成时间-到达时间
|
等待时间
等待时间=周转时间-突发时间
|
| --- | --- | --- | --- | --- | --- |
| 第一亲代 | one | three | four | 4-1=3 | 3-3=0 |
| P2 | three | six | Ten | 10-3=7 | 7-6=1 |
| P3 | five | eight | Twenty-seven | 27-5=22 | 22-8=14 |
| P4 | seven | four | Fourteen | 14-7=7 | 7-4=3 |
| 孕烯醇酮 | eight | five | Nineteen | 19-8=11 | 11-5=6 |
平均等待时间的计算方法是将所有进程的等待时间相加,然后除以进程数。
平均等待时间=所有进程的等待时间/进程数
平均等待时间= 0+1+14+3+6/5 = 24/5 =4.8 毫秒
C 语言中的 HRRN 调度示例
下面是 HRRN 调度的 C 程序:
// C program for the Highest Response Ratio Next (HRRN) Scheduling
#include <stdio.h>
// This structure defines the details of the process
struct process {
char name;
int at, bt, ct, wt, tt;
int complete;
float ntt;
} p[10];
int m;
//The Sorting of Processes by Arrival Time
void sortByArrival()
{
struct process temp;
int i, j;
// Selection Sort applied
for (i = 0; i < m - 1; i++) {
for (j = i + 1; j < m; j++) {
// This condition is used to Check for the lesser arrival time
if (p[i].at > p[j].at) {
// Swaping of earlier process to front
temp = p[i];
p[i] = p[j];
p[j] = temp;
}
}
}
}
void main()
{
int i, j, t, sum_bt = 0;
char c;
float avgwt = 0, avgtt = 0;
m = 5;
// the predefined arrival times
int arriv[] = { 1, 3, 5, 7, 8 };
// the predefined burst times
int burst[] = { 3, 7, 8, 4, 2};
// Initialize the structure variables
for (i = 0, c = 'A'; i < m; i++, c++) {
p[i].name = c;
p[i].at = arriv[i];
p[i].bt = burst[i];
// Variable for Completion status
// for Pending = 0
// for Completed = 1
p[i].complete = 0;
// the Variable for the sum of all Burst Times
sum_bt += p[i].bt;
}
// Let us Sort the structure by the arrival times
sortByArrival();
printf("\nName\tArrival Time\tBurst Time\tWaiting Time");
printf("\tTurnAround Time\t Normalized TT");
for (t = p[0].at; t < sum_bt;) {
// Now Set the lower limit to response ratio
float hrr = -9999;
//The Response Ratio Variable
float temp;
// Variable used to store the next processs selected
int loc;
for (i = 0; i < m; i++) {
// Check if the process has arrived and is Incomplete
if (p[i].at <= t && p[i].complete != 1) {
// Calculating the Response Ratio
temp = (p[i].bt + (t - p[i].at)) / p[i].bt;
// Checking for the Highest Response Ratio
if (hrr < temp) {
// Storing the Response Ratio
hrr = temp;
// Storing the Location
loc = i;
}
}
}
// Updating the time value
t += p[loc].bt;
// Calculation of the waiting time
p[loc].wt = t - p[loc].at - p[loc].bt;
// Calculation of the Turn Around Time
p[loc].tt = t - p[loc].at;
// Sum of Turn Around Time for the average
avgtt += p[loc].tt;
// Calculation of the Normalized Turn Around Time
p[loc].ntt = ((float)p[loc].tt / p[loc].bt);
// Updating the Completion Status
p[loc].complete = 1;
// Sum of the Waiting Time to calculate the average
avgwt += p[loc].wt;
printf("\n%c\t\t%d\t\t", p[loc].name, p[loc].at);
printf("%d\t\t%d\t\t", p[loc].bt, p[loc].wt);
printf("%d\t\t%f", p[loc].tt, p[loc].ntt);
}
printf("\nThe Average waiting time:%f\n", avgwt / m);
printf("The Average Turn Around time:%f\n", avgtt / m);
}
输出
HRNN 调度的优势
HRNN 调度算法的优点如下:
-
HRRN 调度算法比最短作业优先调度算法具有更好的性能。
-
有了这个算法,等待更长工作的时间减少了,同时也鼓励了更短的工作。
-
使用该算法,吞吐量增加。
HRNN 时间表的缺点
HRNN 调度算法的缺点如下:
-
HRRN 调度的实际实现是不可能的,因为我们不能提前知道每个进程的突发时间。
-
在这种调度中,处理器上可能会产生开销。
最短剩余时间优先(SRTF)调度算法
原文:https://www.studytonight.com/operating-system/shortest-remaining-time-first-scheduling-algorithm
最短作业优先(SJF)调度的抢先版本被称为最短剩余时间优先(SRTF)。在 SRTF 算法的帮助下,具有最短剩余时间的进程被首先选择来执行。
所以基本上在 SRTF,进程是根据最短的剩余时间来安排的。
然而,SRTF 算法比最短作业优先(SJF)调度涉及更多的开销,因为在 SRTF 操作系统经常需要监控就绪队列中作业的 CPU 时间并执行上下文切换。
在 SRTF 调度算法中,任何进程的执行都可以在一定时间后停止。在每个进程到达时,短期调度器从可用进程列表&中调度那些剩余突发时间最少的运行进程。
在就绪队列中的所有进程都可用之后,就不会进行抢占,然后算法将像 SJF 调度一样工作。在进程控制块中,当进程从执行中移除时,以及当调度下一个进程时,进程的上下文被保存。印刷电路板在下一次执行该进程时被访问。
SRTF 的优势
SRTF 算法的主要优点是它使作业的处理比 SJF 算法更快,提到它的间接费用不计算在内。
SRTF 的缺点
在 SRTF,上下文切换的次数要比在 SJN 多得多,这是因为 CPU 的宝贵处理时间被消耗得更多。CPU 消耗的时间加起来就是它的处理时间,这就减少了该算法快速处理的优势。
例子
说明
-
在 CPU 的第 0 个单位,只有一个进程是 P1 ,所以 P1 被执行了 1 个时间单位。
-
在 CPU 的第一个单元,进程 P2 到达。现在, P1 需要多执行 6 个单位, P2 只需要 3 个单位。所以, P2 先被抢先 P1 执行。
-
第 3 个时间单位,进程 P3 到达,P3 的爆发时间是 4 个单位,比 P2 的完成时间多 1 个单位,所以 P2 继续执行。
-
现在 P2 完工后, P3 的爆发时间为 4 台也就是说只需要 4 台就能完工,而 P1 需要 6 台才能完工。
-
因此,由于 P3 的完成时间少于 P1 的原因,该算法选取了 P1 上方的 P3
-
P3 在时间单元 8 完成,没有新的进程到达。
-
再次, P1 被送去执行,在第 14 单元完成。
由于上图中给出了 P1、P2 和 P3 三个进程的到达时间和爆发时间。让我们计算周转时间、完成时间和等待时间。
|
进程
|
到达时间
|
突发时间
|
完成时间
|
解题时间
周转时间=完成时间-到达时间
|
等待时间
等待时间=周转时间-突发时间
|
| --- | --- | --- | --- | --- | --- |
| 第一亲代 | Zero | seven | Fourteen | 14-0=14 | 14-7=7 |
| P2 | one | three | four | 4-1=3 | 3-3=0 |
| P3 | three | four | eight | 8-3=5 | 5-4=1 |
平均等待时间的计算方法是将所有进程的等待时间相加,然后除以进程数。
平均等待时间=所有进程的等待时间/进程数
平均等待时间= 7+0+1 = 8/3 =2.66 毫秒
履行
下面是最短剩余时间优先调度的 C++实现:
#include <iostream>
#include <algorithm>
#include <iomanip>
#include <string.h>
using namespace std;
struct process {
int pid;
int arrival_time;
int burst_time;
int start_time;
int completion_time;
int turnaround_time;
int waiting_time;
int response_time;
};
int main() {
int x;
struct process p[100];
float avg_turnaround_time;
float avg_waiting_time;
float avg_response_time;
float cpu_utilization;
int total_turnaround_time = 0;
int total_waiting_time = 0;
int total_response_time = 0;
int total_idle_time = 0;
float throughput;
int burst_remaining[100];
int is_completed[100];
memset(is_completed,0,sizeof(is_completed));
cout << setprecision(2) << fixed;
cout<<"Enter the number of processes: ";
cin>>x;
for(int i = 0; i < x; i++) {
cout<<"Enter arrival time ofthe process "<<i+1<<": ";
cin>>p[i].arrival_time;
cout<<"Enter burst time of the process "<<i+1<<": ";
cin>>p[i].burst_time;
p[i].pid = i+1;
burst_remaining[i] = p[i].burst_time;
cout<<endl;
}
int current_time = 0;
int completed = 0;
int prev = 0;
while(completed != x) {
int idx = -1;
int mn = 10000000;
for(int i = 0; i < x; i++) {
if(p[i].arrival_time <= current_time && is_completed[i] == 0) {
if(burst_remaining[i] < mn) {
mn = burst_remaining[i];
idx = i;
}
if(burst_remaining[i] == mn) {
if(p[i].arrival_time < p[idx].arrival_time) {
mn = burst_remaining[i];
idx = i;
}
}
}
}
if(idx != -1) {
if(burst_remaining[idx] == p[idx].burst_time) {
p[idx].start_time = current_time;
total_idle_time += p[idx].start_time - prev;
}
burst_remaining[idx] -= 1;
current_time++;
prev = current_time;
if(burst_remaining[idx] == 0) {
p[idx].completion_time = current_time;
p[idx].turnaround_time = p[idx].completion_time - p[idx].arrival_time;
p[idx].waiting_time = p[idx].turnaround_time - p[idx].burst_time;
p[idx].response_time = p[idx].start_time - p[idx].arrival_time;
total_turnaround_time += p[idx].turnaround_time;
total_waiting_time += p[idx].waiting_time;
total_response_time += p[idx].response_time;
is_completed[idx] = 1;
completed++;
}
}
else {
current_time++;
}
}
int min_arrival_time = 10000000;
int max_completion_time = -1;
for(int i = 0; i < x; i++) {
min_arrival_time = min(min_arrival_time,p[i].arrival_time);
max_completion_time = max(max_completion_time,p[i].completion_time);
}
avg_turnaround_time = (float) total_turnaround_time / x;
avg_waiting_time = (float) total_waiting_time / x;
avg_response_time = (float) total_response_time / x;
cpu_utilization = ((max_completion_time - total_idle_time) / (float) max_completion_time )*100;
throughput = float(x) / (max_completion_time - min_arrival_time);
cout<<endl<<endl;
cout<<"Process\t"<<"Arrival Time\t"<<"Burst Time\t"<<"ST\t"<<"CT\t"<<"TAT\t"<<"WT\t"<<"RT\t"<<"\n"<<endl;
for(int i = 0; i < x; i++) {
cout<<p[i].pid<<"\t"<<p[i].arrival_time<<"\t"<<p[i].burst_time<<"\t"<<p[i].start_time<<"\t"<<p[i].completion_time<<"\t"<<p[i].turnaround_time<<"\t"<<p[i].waiting_time<<"\t"<<p[i].response_time<<"\t"<<"\n"<<endl;
}
cout<<"Average Turnaround Time = "<<avg_turnaround_time<<endl;
cout<<"Average Waiting Time = "<<avg_waiting_time<<endl;
cout<<"Average Response Time = "<<avg_response_time<<endl;
cout<<"CPU Utilization = "<<cpu_utilization<<"%"<<endl;
cout<<"Throughput = "<<throughput<<" process/unit time"<<endl;
}
输出
上述代码的输出如下;
最长作业优先(LJF)调度算法
原文:https://www.studytonight.com/operating-system/longest-job-first-scheduling-algorithm
最长作业优先 (LJF) 调度属于非抢占式调度算法范畴。该算法主要跟踪在到达时间本身可用的所有进程的突发时间,然后将处理器分配给具有最长突发时间的进程。在这种算法中,一旦一个进程开始执行,它就不能在两次处理之间被中断。只有在分配的进程完成其处理并被终止后,才能执行任何其他进程。
该调度类似于 SJF 调度算法。但是,在该调度算法中,优先级被给予具有最长突发时间的进程。
尽管这种调度算法被认为不是调度进程的有效方式,因为它有许多缺点:
-
第一个是它显示的护航效果
-
第二个是这个算法有非常大的平均周转时间和平均等待时间。由于这两个原因,系统的有效性降低,处理变得缓慢。
在一种情况下,如果两个进程具有相同的突发时间,则使用 FCFS 断开连接,即首先到达的进程被首先处理。
让我们看一下在 LJF 调度中使用的程序:
-
在第一步中,算法根据到达时间的递增顺序对进程进行排序。
-
在第二步中,它将在所有到达该时间的进程中选择具有最高突发时间的进程。
-
之后,它将在给定的突发时间内处理它。LJF 还会检查是否有其他进程到达,直到该进程完成执行。
-
最后但同样重要的是,它将重复上述所有步骤,直到所有的进程都被执行。
现在是时候看看 LJF 调度的例子了:
最长作业优先调度示例
在上面的例子中,给出了四个进程 P1、P2、P3、P4 以及它们的突发时间和到达时间。
解释
让我们从上面给出的甘特图中了解 LJF 的工作;
-
在 t = 0 时,有一个进程具有 2 个单位的突发时间。因此,选择 P1 并执行 2 毫秒
-
在 t = 2 时,即 P1 被执行后,可用的进程是 P3 的 P2。如你所见,P3 的爆发时间超过了 P2。因此,选择 P3 并执行 5 分钟。
-
在 t = 7 时,即执行 P3 之后,可用的进程是 P4 P2。如你所见,P4 的爆发时间超过了 P2。因此,选择 P4 并执行 7ms。
-
最后,P4 完成后,执行 P2 3 毫秒的进程。
借助甘特图,您可以轻松确定完成时间。让我们计算等待时间和周转时间。
| 进程 | 到达时间 | 突发时间 | 完成时间 |
解题时间
周转时间=完成时间-到达时间
|
等待时间
等待时间=周转时间-突发时间
|
| --- | --- | --- | --- | --- | --- |
| 第一亲代 | Zero | Two | Two | 2-0=2 | 2-2=0 |
| P2 | one | three | Seventeen | 17-1=16 | 16-3=13 |
| P3 | Two | five | seven | 7-2=5 | 5-5=0 |
| P4 | three | seven | Fourteen | 14-3=11 | 11-7=4 |
平均等待时间的计算方法是将所有进程的等待时间相加,然后除以进程数。
平均等待时间=等待所有进程的时间/进程数
平均等待时间= 0+13+0+4/4 = 17/4 = 4.25 毫秒
LJF 时间表的缺点
-
这种算法导致处理速度的降低,从而降低了系统的效率和利用率。
-
由于该算法,对于给定的一组进程,平均等待时间和平均周转时间增加。
-
这种算法导致了车队效应。
-
使用这种算法,有可能一个短进程可能永远不会被执行,而系统继续执行长进程。
最长剩余时间优先(LRTF)调度算法
原文:https://www.studytonight.com/operating-system/longest-remaining-time-first-scheduling-algorithm
最长剩余时间优先 (LRTF) 调度是最长作业优先 (LJF) 调度的抢先版。操作系统使用这种调度算法来调度传入的进程,以便以系统的方式执行它们。
利用该算法,首先处理具有最大剩余时间的进程。在这种情况下,我们将检查一段时间间隔(比如 1 个单位)后的最大剩余时间,即是否有另一个进程在这段时间之前到达了更多的突发时间。
现在让我们了解 LRTF 调度算法遵循的程序;
LRTF 调度是如何工作的?
-
第一步是按照到达时间的递增顺序对进程进行排序
-
下一步是选择到达时间最少但突发时间最多的进程。之后处理 1 个单位。在一个单元之后,您需要检查在该执行时间之前;任何其他进程是否到达
-
只需重复上述步骤,直到所有进程执行完毕。
LRTF 调度的特点
以下是 LRTF 的一些特点:
-
它是一种 CPU 调度算法,用于系统地确定所有传入进程中首先执行的进程。
-
这种算法遵循抢占式方法,因为在这种方法中,CPU 只在固定的时间段内分配给任何进程。
-
在该算法中,根据最高突发时间选择进程(首先处理具有最高突发时间的进程),并且该进程一直运行到固定的时间片。之后,选择进程再次发生。
-
由于平均等待时间值较高,该算法不是最优的。
现在是时候讲述 LRTF 的例子了。
LRTF 调度示例
在上面的例子中,给出了四个进程 P1、P2、P3、P4 以及它们的到达时间和突发时间。
借助甘特图,让我们计算完成时间、等待时间和周转时间。
| 进程 | 到达时间 | 爆发时间 | 完成时间 |
解题时间
周转时间=完成时间-到达时间
|
等待时间
等待时间=周转时间-突发时间
|
| --- | --- | --- | --- | --- | --- |
| 第一亲代 | Zero | three | Eleven | 11-0=11 | 11-3=8 |
| P2 | one | six | Twelve | 12-1=11 | 11-6=5 |
| P3 | three | Two | Thirteen | 13-2=11 | 13-2=11 |
| P4 | five | three | Fourteen | 14-5=11 | 11-3=8 |
平均等待时间的计算方法是将所有进程的等待时间相加,然后除以进程数。
平均等待时间=所有进程的等待时间/进程数
平均等待时间= 8+5+11+8/4 =4 毫秒
LRTF 的优势
-
该算法易于实现且简单
-
这个算法是无饥饿的,因为所有进程都获得了公平的 CPU 份额。
-
所有的进程都在最长的作业完成时完成。
LRTF 的缺点
-
使用该算法,即使每个进程的突发时间较少,平均等待时间和周转时间也过高。
-
在这种突发时间较少的进程中(较小的进程),需要等待 CPU 来完成突发大小较大的进程。
-
上下文切换消耗了 CPU 的宝贵时间;其可用于执行进程。
内存管理
操作系统中的分区分配方法
原文:https://www.studytonight.com/operating-system/partition-allocation-methods-in-operating-system
在本教程中,我们将介绍操作系统中分区分配方法的概念。
作为由分散在整个存储器中的一组不同大小的孔组成的可用存储器块。每当一个进程到达并需要内存时,系统会在集合中搜索一个足够大的洞来容纳到达的进程。
如果孔太大,它会把孔分成两部分。一部分分配给到达的进程,另一部分返回到孔组。
每当该进程终止时,它释放存储器的块,然后释放的块被放回该组孔中。如果新孔与其他孔相邻,则这些相邻的孔会合并在一起,形成一个大的单孔。
此时,系统可能需要检查是否有进程在等待内存,以及这个新释放和合并的内存是否能够满足等待队列中任何进程的需求。
上面给出的进程是一般动态存储分配问题的一个特定实例,它涉及如何满足自由洞列表中大小为 n 的请求。
因为这个问题有很多解决方法。
分区分配(内存分配)策略
在下图中,有一些策略用于从可用孔集中选择一个孔。
让我们逐一讨论这些策略:内存管理
1.首次拟合分配
按照这个策略,把第一个孔或者第一个自由分区分配给足够大的进程。该搜索可以从孔组的开始处开始,也可以从先前第一次拟合搜索结束的位置开始。
一旦我们发现一个足够大的自由洞,就可以停止搜索。
让我们看看下面给出的例子:
尺寸为 10KB 的工艺 P1 已经到达,然后选择足以满足尺寸为 20KB 的要求的第一个孔并分配给该工艺。
2.最佳分配
通过这种策略,将足够大并满足进程要求的最小空闲分区/孔分配给进程。该策略搜索整个空闲分区/孔列表,以便找到大小大于或等于进程大小的孔。
让我们看看下面给出的例子:
到达 10 KB 大小的工艺 P1,然后选择满足 10KB 大小要求的最小孔并分配给该工艺。
3.最不适合分配
通过这种策略,满足进程要求的最大自由分区/孔被分配给进程。这样做是为了让剩下的部分足够大而有用。这个策略正好与最差匹配相反。
该策略搜索整个孔列表,以便找到最大的孔,然后分配最大的孔进行处理。
让我们看看下面给出的例子:
大小为 10KB 的进程 P1 已经到达,然后选择大小为 80 KB 的最大孔并分配给该进程。
4.下次拟合分配
该策略是第一次拟合的修改版本,因为在下一次拟合中以及在该存储器中搜索空白空间,类似于第一次拟合存储器分配方案。但它不同于第一次拟合,因为当调用下一次时,它从它开始的地方开始,而不是从开始。
内存管理导论
原文:https://www.studytonight.com/operating-system/memory-management
主内存指的是计算机内部的物理内存。主这个词是用来区别于外部大容量存储设备,如磁盘驱动器。主存储器也被称为随机存取存储器。计算机只能改变主存储器中的数据。因此,我们执行的每个程序和访问的每个文件都必须从存储设备复制到主内存中。
所有的程序都被加载到主存储器中执行。有时完整的程序加载到内存中,但有时程序的某个部分或例程只有在被程序调用时才加载到主内存中,这种机制称为动态加载,这增强了性能。
另外,有时一个程序依赖于另一个程序。在这种情况下,CPU 不是加载所有的从属程序,而是在需要时将从属程序链接到主执行程序。这种机制被称为动态链接。
交换
进程需要在内存中才能执行。但是有时没有足够的主内存来保存分时系统中所有当前活动的进程。因此,多余的进程被保存在磁盘上,并被引入动态运行。交换是将每个进程引入主内存,运行一段时间,然后将其放回磁盘的过程。
连续内存分配
在连续内存分配中,每个进程都包含在一个连续的内存块中。内存被分成几个固定大小的分区。每个分区恰好包含一个进程。当一个分区空闲时,从输入队列中选择一个进程并加载到其中。内存的空闲块被称为孔。搜索该组孔以确定哪个孔最好分配。
存储保护
内存保护是一种我们控制计算机内存访问权限的现象。它的主要目的是防止进程访问尚未分配给它的内存。因此,防止进程内的错误影响其他进程或操作系统本身,而是导致分段错误或存储违规异常被发送到干扰进程,通常会杀死进程。
存储器分配
内存分配是一个为计算机程序分配内存或空间的过程。它有三种类型:
-
First Fit:
第一个足够大的洞被分配给程序。
-
Best Fit:
足够大的最小孔被分配给程序。
-
Worst Fit:
足够大的最大洞被分配给程序。
分裂
当大多数空闲块太小而不能满足任何请求时,动态内存分配系统中就会出现碎片。这通常被称为无法使用可用内存。
在这种情况下,进程被加载并从内存中移除。因此,存在满足请求的自由孔,但这些自由孔是不连续的,即内存被分割成大量的小孔。这种现象被称为外部碎裂。
此外,有时物理内存被分成固定大小的块,内存以块大小为单位进行分配。分配给某个空间的内存可能略大于请求的内存。已分配内存和所需内存之间的差异被称为内部碎片,即位于分区内部但无用的内存。
分页
碎片问题的一个解决方案是分页。分页是一种内存管理机制,它允许进程的物理地址空间是非传染性的。这里,物理内存被分成大小相等的块,称为页。属于某个进程的页面被加载到可用的内存框架中。
页表
页表是计算机操作系统中虚拟内存系统用来存储虚拟地址和物理地址之间映射的数据结构。
虚拟地址也称为逻辑地址,由 CPU 生成。而物理地址是内存中实际存在的地址。
分割
分段是另一种支持内存用户视图的内存管理方案。分段允许将单个进程的虚拟地址空间分解成可以放在物理内存的非连续区域中的段。
带分页的分段
分页和分段各有优缺点,最好将这两种方案结合起来进行改进。这种组合方案被称为“页面元素”。该方案中的每个段被分成页面,并且每个段被维护在页面表中。因此,逻辑地址分为以下 3 个部分:
- 段号
- 页码
- 位移或偏移数(D)
什么是虚拟内存?
原文:https://www.studytonight.com/operating-system/virtual-memory
在本教程中,我们将介绍操作系统中虚拟内存的概念。
虚拟内存是一个空间,大型程序可以在执行时以页面的形式存储自己,并且只有所需的页面或进程部分被加载到主内存中。这种技术非常有用,因为当用户程序只有很小的物理内存时,它会提供很大的虚拟内存。因此,虚拟内存是一种允许完全不在物理内存中的进程执行的技术。
虚拟内存主要是在按需分页的帮助下,给人一种物理内存比实际内存多的错觉。
在实际场景中,大多数进程从来不需要同时拥有所有页面,原因如下:
-
除非出现特定的错误,否则不需要错误处理代码,有些错误非常罕见。
-
在最坏的情况下,数组的规模往往过大,实际上只有一小部分数组被使用。
-
某些程序的某些功能很少使用。
在操作系统中,内存通常以称为页的单元形式存储。基本上,这些是用于存储大型程序的原子单元。
虚拟内存可以通过以下方式实现
-
请求页面调度
-
需求分段
虚拟内存的需求
以下是需要虚拟内存的原因:
-
在这种情况下,如果运行 Windows 操作系统的计算机需要比系统中安装的内存更多的内存或内存,那么它会为此使用一小部分硬盘。
-
假设有一种情况,当您的计算机在物理内存中没有空间时,它会将需要记住的内容写入硬盘的交换文件中,并将其作为虚拟内存。
拥有虚拟内存的好处
-
可以编写大型程序,因为与物理内存相比,可用的虚拟空间非常大。
-
所需的输入/输出越少,进程交换就越快越容易。
-
更多的物理内存可用,因为程序存储在虚拟内存上,所以它们在实际物理内存上占用的空间非常少。
-
因此,逻辑地址空间可以比物理地址空间大得多。
-
虚拟内存允许多个进程共享地址空间。
-
在进程创建期间,虚拟内存允许:写时复制和内存映射文件
程序在虚拟内存中的执行
在操作系统的帮助下,程序的一些部分被带入主存储器:
- 进入主存储器的进程的一部分称为驻留集。
每当需要一个不在主存储器中的地址时,它就会产生一个中断。操作系统将进程置于阻止状态。包含逻辑地址的进程片段被带入主存储器。
请求页面调度
需求分页背后的基本思想是,当一个进程被换入时,它的页面不会同时被换入。相反,只有当进程需要它们时,它们才会被交换进来(按需)。最初,只加载进程立即需要的那些页面。
未移入内存的页面在页面表中标记为无效。对于无效条目,表的其余部分为空。对于加载到内存中的页面,它们会被标记为有效,同时还会显示在哪里可以找到换出的页面。
页面替换
正如在需求分页中所研究的,只有进程的某些页面最初被加载到内存中。这允许我们同时将更多数量的进程放入内存。但是,当一个进程请求更多的页面,而没有可用的空闲内存来容纳它们时,会发生什么呢?可以采取以下步骤来解决这个问题:
-
将进程放入等待队列,直到任何其他进程完成其执行,从而释放帧。
-
或者,从内存中完全移除一些其他进程来释放帧。
-
或者,找到一些目前没有使用的页面,将它们移动到磁盘上以获取空闲帧。这种技术被称为页面替换,是最常用的。我们有一些很好的算法来有效地进行页面替换。
痛打
花在分页上的时间比执行时间多的进程被称为抖动。换句话说,这意味着进程没有足够的框架来保存所有的页面以供执行,所以它频繁地交换页面以保持执行。有时,不久的将来需要的页面必须被换出。
最初,当 CPU 利用率低时,进程调度机制为了提高多道程序设计的水平,会同时将多个进程加载到内存中,为每个进程分配有限数量的帧。当内存填满时,进程开始花费大量时间换入所需的页面,这再次导致 CPU 利用率低,因为大多数进程都在等待页面。因此,调度程序会加载更多的进程来提高 CPU 利用率,因为这种情况会持续到整个系统停止的时候。
虚拟内存的优势
下面给出了使用虚拟内存的优势:
-
虚拟内存允许您一次运行更多的应用程序。
-
在虚拟内存的帮助下,您可以轻松地将许多大型程序装入较小的程序中。
-
借助虚拟内存,可以轻松实现多道程序环境。
-
因为应该在主存储器中维护更多的进程,这导致了 CPU 的有效利用。
-
数据应该在需要时从磁盘读取。
-
公共数据可以在内存之间轻松共享。
-
在虚拟内存的帮助下,当程序的执行只需要程序的一个特定段时,速度就提高了。
-
该进程甚至可能变得比所有物理内存都大。
虚拟内存的缺点
下面给出了使用虚拟内存的缺点:
-
虚拟内存降低了系统的稳定性。
-
虚拟内存的性能不如内存。
-
如果系统使用虚拟内存,则应用程序可能运行较慢。
-
虚拟内存会对系统的整体性能产生负面影响。
-
虚拟内存占用了存储空间,否则可能会用于长期数据存储。
-
为了在应用程序之间切换,内存需要更多的时间。
文件系统简介
原文:https://www.studytonight.com/operating-system/file-system
一个文件可以是“自由形成的”、索引的或相关字节的结构化集合,只对创建它的人有意义。或者换句话说,目录中的一个条目就是文件。该文件可能具有名称、创建者、日期、类型、权限等属性。
文件结构
文件有各种各样的结构。其中一些可能是:
- 简单记录结构具有固定或可变长度的行。
- 复杂结构如格式化文档或可重新加载的加载文件。
- 无确定结构如单词和字节序列等。
文件的属性
以下是文件的一些属性:
- 名称。这是人类可读形式的唯一信息。
- 标识符。文件由文件系统中唯一的标签(编号)标识。
- 类型。支持不同类型文件的系统需要它。
- 位置。指向设备上文件位置的指针。
- 尺寸。文件的当前大小。
- 保护。这控制和分配了读、写、执行的权力。
- 时间、日期和用户标识。这是用于保护、安全和使用监控的数据。
文件访问方法
文件访问和读入内存的方式由访问方法决定。通常系统支持单一访问方法,而操作系统支持多种访问方法。
1.顺序存取
- 一个记录接一个记录地访问数据是一个命令。
- Read 命令使指针向前移动一位。
- Write 命令为记录分配空间,并将指针移动到新的文件结尾。
- 这样的方法对胶带来说是合理的。
2.直接存取
- 这种方法对磁盘很有用。
- 该文件被视为块或记录的编号序列。
- 对读/写哪些块没有限制,可以按任何顺序写。
- 用户现在说“读 n”而不是“读下一个”。
- “n”是相对于文件开头的数字,而不是相对于绝对物理磁盘位置的数字。
3.索引顺序存取
- 它建立在顺序访问的基础上。
- 它在访问文件时使用索引来控制指针。
什么是目录?
关于文件的信息由目录维护。一个目录可以包含多个文件。它甚至可以有目录在里面。在 Windows 中,我们也将这些目录称为文件夹。
以下是目录中维护的信息:
- 名称:用户可见的名称。
- 类型:目录的类型。
- 位置:设备和文件头所在设备上的位置。
- 大小:文件中的字节数/字数/块数。
- 位置:当前下一读/下一写指针。
- 保护:读/写/执行/删除的访问控制。
- 用法:创建、访问、修改等时间。
- 挂载:当一个文件系统的根被“嫁接”到另一个文件系统的现有树中时,称为挂载。
操作系统中的银行家算法
原文:https://www.studytonight.com/operating-system/bankers-algorithm
庄家算法是一种死锁避免算法。之所以这样命名,是因为这种算法在银行系统中用于确定是否可以发放贷款。
假设银行中有n
个账户持有人,他们所有账户中的资金总和为S
。每次银行必须发放贷款时,都会从银行拥有的总金额中减去贷款金额。然后它检查这个差值是否大于S
。之所以这样做,是因为只有这样,即使所有n
账户持有人一次性提现,银行才有足够的资金。
银行家算法在计算机中的工作原理类似。
每当创建一个新的进程时,它必须确切地指定它需要的每种资源类型的最大实例数。
银行家算法的特点
银行家算法的特点如下:
-
如果任何进程请求资源,那么它必须等待。
-
该算法由最大化资源分配的高级特性组成。
-
我们的系统资源有限。
-
在这个算法中,如果任何进程获得了所有需要的资源,那么它应该在一个受限的时间内返回资源。
-
该算法维护各种资源,可以满足至少一个客户端的需求。
假设有n
进程和m
资源类型。
用于实现银行家算法的数据结构
用于实现银行家算法的一些数据结构是:
1.Available
这是一个长度为m
的阵。它表示每种类型的可用资源数量。如果Available[j] = k
,则有资源类型Rj
的k
实例可用。
2.Max
这是一个n x m
矩阵,表示一个进程可以请求的每个资源的最大实例数。如果Max[i][j] = k
,则进程Pi
可以请求资源类型Rj
的 atmost】实例。
3.Allocation
它是一个n x m
矩阵,表示当前分配给每个进程的每种类型的资源数量。如果Allocation[i][j] = k
,则进程Pi
当前被分配k
资源类型Rj
的实例。
4.Need
它是一个二维数组。它是一个n x m
矩阵,表示每个进程的剩余资源需求。如果Need[i][j] = k
,那么进程Pi
可能需要k
更多的资源类型实例Rj
来完成其任务。
Need[i][j] = Max[i][j] - Allocation [i][j]
银行家算法由两种算法组成:
-
安全算法
-
资源请求算法
安全算法
安全算法是一种用于发现系统是否处于安全状态的算法。算法如下:
-
Let
Work
andFinish
be vectors of length m and n, respectively. Initially,Work = Available Finish[i] =false for i = 0, 1, ... , n - 1.
这意味着,最初没有进程完成,可用资源的数量由可用数组表示。
-
Find an index i such that both
Finish[i] ==false Needi <= Work
如果没有这样的我在场,那么进行到步骤 4。
这意味着,我们需要找到一个未完成的进程,其需求可以通过可用的资源来满足。如果不存在这样的进程,只需转到步骤 4。
-
Perform the following:
Work = Work + Allocationi Finish[i] = true
转到步骤 2。
当发现一个未完成的进程时,资源被分配,进程被标记为完成。然后,重复该循环,检查所有其他进程是否相同。
-
If
Finish[i] == true
for all i, then the system is in a safe state.这意味着如果所有进程都完成了,那么系统就处于安全状态。
该算法可能需要 mxn 操作的顺序,以确定状态是否安全。
资源请求算法
现在下一个算法是资源请求算法,它主要用于确定请求是否可以被安全地授予。
让 Requesti 成为进程 Pi 的请求向量。如果 Requesti[j]==k,那么进程 Pi 需要资源类型 Rj 的 k 个实例。当进程 Pi 请求资源时,将采取以下操作:
1.如果 Requesti <= Needi,则转到步骤 2;否则会引发错误情况,因为进程已经超过了它的最大声明。
2.如果 Requesti < = Availablei,则转到步骤 3;否则 Pi 必须等待,因为资源不可用。
3.现在,我们将假设资源被分配给进程 Pi,从而执行以下步骤:
可用=可用-请求;
allocation I = allocation I+Requesti;
Needi = Needi - Requesti;
如果得到的资源分配状态是安全的,那么事务就完成了,进程 Pi 被分配了它的资源。但是在这种情况下,如果新的状态不安全,那么 Pi 等待 Requesti,旧的资源分配状态被恢复。
银行家算法的缺点
该算法的一些缺点如下:
-
在处理期间,该算法不允许进程改变其最大需求。
-
这种算法的另一个缺点是,所有进程都必须提前知道最大资源需求。
-
该算法允许在有限的时间内提供请求,但以一年为固定期限。
现在是时候看看银行家算法的例子了:
示例:
为了理解庄家的算法,让我们考虑以下快照:
| 进程 | 分配T2甲乙丙 | MaxT2A B C | 可用T2甲乙丙 |
| P0 | 1 1 2 | 4 3 3 | 2 1 0 |
| P1 | 2 1 2 | 3 2 2 | |
| P2 | 4 0 1 | 9 0 2 | |
| P3 | 0 2 0 | 7 5 3 | |
| P4 | 1 1 2 | 1 1 2 | |
- 计算需求矩阵的内容?
- 检查系统是否处于安全状态?
- 确定每种资源的总和?
解决方案:
1 。需求矩阵的内容可以使用下面给出的公式计算:
需求=最大-分配
2 。现在让我们检查一下安全状态。
安全顺序:
- 对于进程 P0,需要= (3,2,1)和
可用= (2,1,0)
需要< =可用=假
因此,系统将进入下一个进程。
2。对于进程 P1,需要= (1,1,0)
可用= (2,1,0)
需求< =可用=真
P1 的请求被批准了。
可用=可用+分配
= (2, 1, 0) + (2, 1, 2)
= (4,2,2)(新可用)
3。对于进程 P2,需要= (5,0,1)
可用= (4,2,2)
需要< =可用=假
因此,系统将进入下一个进程。
4。对于进程 P3,需要= (7,3,3)
可用= (4,2,2)
需要< =可用=假
因此,系统将进入下一个进程。
5。对于进程 P4,需要= (0,0,0)
可用= (4,2,2)
需求< =可用=真
P4 的请求被批准了。
可用=可用+分配
= (4, 2, 2) + (1, 1, 2)
= (5,3,4)现在,(新可用)
6。现在再次检查进程 P2,需要= (5,0,1)
可用= (5,3,4)
需求< =可用=真
P2 的请求被批准了。
可用=可用+分配
= (5, 3, 4) + (4, 0, 1)
= (9,3,5)现在,(新可用)
7。现在再次检查进程 P3,需要= (7,3,3)
可用= (9,3,5)
需求< =可用=真
P3 的请求被批准了。
可用=可用+分配
= (9, 3, 5) + (0, 2, 0) = (9, 5, 5)
8。现在再次检查进程 P0,=需要(3,2,1)
=可用(9、5、5)
需求< =可用=真
因此,请求将被授予 P0。
安全顺序:< P1, P4, P2, P3, P0>
系统将所有需要的资源分配给每个进程。所以,我们可以说系统处于安全状态。
3。资源总量将通过以下公式计算:
资源总量=分配列的总和+可用
= [8 5 7] + [2 1 0] = [10 6 7]
银行家算法在 C 语言中的实现
下面给出了银行家算法实现的代码:
//C program for Banker's Algorithm
#include <stdio.h>
int main()
{
// P0, P1, P2, P3, P4 are the names of Process
int n, r, i, j, k;
n = 5; // Indicates the Number of processes
r = 3; //Indicates the Number of resources
int alloc[5][3] = { { 0, 0, 1 }, // P0 // This is Allocation Matrix
{ 3, 0, 0 }, // P1
{ 1, 0, 1 }, // P2
{ 2, 3, 2 }, // P3
{ 0, 0, 3 } }; // P4
int max[5][3] = { { 7, 6, 3 }, // P0 // MAX Matrix
{ 3, 2, 2 }, // P1
{ 8, 0, 2 }, // P2
{ 2, 1, 2 }, // P3
{ 5, 2, 3 } }; // P4
int avail[3] = { 2, 3, 2 }; // These are Available Resources
int f[n], ans[n], ind = 0;
for (k = 0; k < n; k++) {
f[k] = 0;
}
int need[n][r];
for (i = 0; i < n; i++) {
for (j = 0; j < r; j++)
need[i][j] = max[i][j] - alloc[i][j];
}
int y = 0;
for (k = 0; k < 5; k++) {
for (i = 0; i < n; i++) {
if (f[i] == 0) {
int flag = 0;
for (j = 0; j < r; j++) {
if (need[i][j] > avail[j]){
flag = 1;
break;
}
}
if (flag == 0) {
ans[ind++] = i;
for (y = 0; y < r; y++)
avail[y] += alloc[i][y];
f[i] = 1;
}
}
}
}
printf("Th SAFE Sequence is as follows\n");
for (i = 0; i < n - 1; i++)
printf(" P%d ->", ans[i]);
printf(" P%d", ans[n - 1]);
return (0);
}
输出:
以下是上述程序的输出:
至此,银行家算法教程结束。我们希望你能理解,如果不能,请到我们的论坛询问你的疑问。
辅助存储和磁盘调度算法
原文:https://www.studytonight.com/operating-system/secondary-storage
辅助存储设备是那些内存非易失性的设备,也就是说,即使系统关闭,存储的数据也将保持不变。这里有一些关于二级存储值得注意的事情。
- 二级存储也称为辅助存储。
- 与 ram 等主存储器相比,二级存储器更便宜。
- 辅助存储的速度也低于主存储。
- 因此,不太频繁访问的数据被保存在辅助存储器中。
- 一些例子是磁盘、磁带、可移动拇指驱动器等。
磁盘结构
在现代计算机中,大部分二级存储器是磁盘形式的。因此,了解磁盘的结构对于理解计算机如何访问磁盘中的数据是必要的。
磁盘的结构
一个磁盘包含几个盘片。每个盘子被分成圆形的轨道。靠近中心的轨道长度小于远离中心的轨道长度。如图所示,每个轨道进一步划分为扇区。
离中心相同距离的轨道形成一个圆柱体。读写头用于从磁盘的扇区读取数据。
磁盘的速度分为两部分:
- 传输速率:这是数据从磁盘移动到计算机的速率。
- 随机访问时间:是寻道时间和旋转延迟的总和。
寻道时间是手臂移动到所需轨迹所需的时间。旋转延迟定义为机械臂到达轨道中所需扇区的时间。
即使磁盘在物理上被安排为扇区和磁道,数据在逻辑上被安排和寻址为固定大小的块数组。块的大小可以是 512 或 1024 字节。每个逻辑块都与磁盘上的一个扇区顺序映射。这样,磁盘中的每个扇区都将有一个逻辑地址。
磁盘调度算法
在典型的多道程序设计系统中,通常在任何时间点都会有多个磁盘访问请求。因此,必须安排这些请求以实现良好的效率。磁盘调度类似于进程调度。下面介绍一些磁盘调度算法。
先到先得
该算法按照系统要求的相同顺序执行请求。让我们举一个例子,其中队列有如下带有柱面编号的请求:
98、183、37、122、14、124、65、67
假设气缸盖最初位于气缸 56 处。头部按照队列中的给定顺序移动,即 56→98→183→...→67 。
最短寻道时间优先(SSTF)
这里,首先选择最接近当前头部位置的位置。考虑前面磁盘队列的例子,
98、183、37、122、14、124、65、67
假设气缸盖最初位于气缸 56 处。距离 56 最近的下一个气缸是 65 ,然后是 67 ,然后是 37 、 14 等等。
扫描算法
由于它的行为,这个算法也被称为电梯算法。这里,首先头部在一个方向上移动(比如向后),并覆盖路径中的所有请求。然后,它向相反的方向移动,并覆盖路径中的其余请求。这种行为类似于电梯。让我们举前面的例子,
98、183、37、122、14、124、65、67
假设气缸盖最初位于气缸 56 处。头部向后移动,进入 37 和 14 。然后它以相反的方向前进,并在圆柱体进入路径时进入圆柱体。
操作系统中的资源分配图
原文:https://www.studytonight.com/operating-system/resource-allocation-graph-in-operating-system
在本教程中,我们将介绍操作系统中的资源分配图。
为了以更精确的方式描述死锁,使用了称为系统资源分配图的有向图。
-
该图作为系统状态的图形表示。
-
资源分配图主要由一组顶点和一组边组成****
-
该图主要包含与持有一些资源的进程相关的所有信息,还包含等待系统中更多资源的进程的信息。
-
此外,该图包含与资源的所有实例相关的所有信息,这意味着关于可用资源和进程正在使用的资源的信息
-
在该图中,圆圈用于表示进程,矩形用于表示资源。
现在让我们讨论资源分配图的组成部分。
资源分配图的组成部分
下面给出了 RAG 的组件:
-
头顶
-
优势
1.头顶
资源分配图中使用了两种顶点,它们是:
-
处理顶点
-
资源顶点
处理顶点
这些顶点用于表示进程顶点。圆圈用于绘制进程顶点,圆圈内提到进程的名称。
资源顶点
这些顶点用于表示资源顶点。矩形用于绘制资源顶点,我们使用圆圈内的点来表示该资源的实例数。
在系统中,可能存在多个实例,根据它们,有两种类型的资源顶点,它们是单个实例和多个实例。
单个实例
在单个实例资源类型中,框内只有一个点。单点主要表示资源有一个实例。
多实例
在多实例资源类型中,框内有多个点,这些多个点表示资源有多个实例。
2.优势
在资源分配图中,边进一步分为两类:
1。分配边
分配边主要用于表示进程的资源分配。我们可以借助箭头来绘制分配边,箭头主要指向进程,进程主要指向资源实例。
在上图中,资源被分配给了进程
2。请求边
请求边缘主要用于表示进程的等待状态。同样,在指定边中,箭头用于绘制箭头边。但是这里箭头指向资源的实例,进程的尾部指向进程。
在上图中,进程正在请求资源
单实例 RAG 示例
假设有四个进程 P1、P2、P3、P4 和两个资源 R1 和 R2,其中 P1 持有 R1,P2 持有 R2,P3 等待 R1 和 R2,而 P4 等待资源 R1。
在上面的例子中,没有循环依赖,所以不会出现死锁。
因此,在单实例资源类型中循环一定是死锁的充分条件。
多实例 RAG 示例
假设有四个进程 P1、P2、P3、P4,并且有两个资源 R1 的实例和两个资源 R2 的实例:
R2 的一个实例被分配到进程 P1,R2 的另一个实例被分配到进程 P4,进程 P1 正在等待资源 R1。
R1 的一个实例被分配给 P2 进程,而 R2 的另一个实例被分配给 P3 进程,P3 进程正在等待资源 R2。
系统调用简介
原文:https://www.studytonight.com/operating-system/system-calls
要理解系统调用,首先需要理解一个 CPU 的内核模式和用户模式的区别。每个现代操作系统都支持这两种模式。
操作系统支持的模式
核心态
- 当 CPU 处于内核模式时,正在执行的代码可以访问任何内存地址和任何硬件资源。
- 因此内核模式是一种非常特权和强大的模式。
- 如果一个程序在内核模式下崩溃,整个系统将被暂停。
用户状态
- 当 CPU 处于用户模式时,程序不能直接访问内存和硬件资源。
- 在用户模式下,如果任何程序崩溃,只有那个特定的程序被暂停。
- 这意味着即使处于用户模式的程序崩溃,系统也将处于安全状态。
- 因此,操作系统中的大多数程序都以用户模式运行。
系统调用
当处于用户模式的程序需要访问内存或硬件资源时,它必须请求内核提供对该资源的访问。这是通过一个叫做系统调用的东西来完成的。
当程序进行系统调用时,模式从用户模式切换到内核模式。这被称为上下文切换。
然后内核提供程序请求的资源。之后,另一个上下文切换发生,导致模式从内核模式改变回用户模式。
通常,系统调用由用户级程序在以下情况下进行:
- 在文件系统中创建、打开、关闭和删除文件。
- 创建和管理新进程。
- 在网络中建立连接,发送和接收数据包。
- 请求访问硬件设备,如鼠标或打印机。
在典型的 UNIX 系统中,大约有 300 个系统调用。下文介绍了其中一些在这方面很重要的问题。
叉子()
fork()
系统调用用于创建进程。当进程(执行中的程序)发出fork()
调用时,会创建该进程的精确副本。现在有两个进程,一个是父进程,另一个是子进程。
调用fork()
调用的进程称为父进程,新创建的进程称为子进程。子进程将与父进程完全相同。请注意父进程的状态,即地址空间、变量、打开的文件等。被复制到子进程中。这意味着父进程和子进程具有相同但物理上不同的地址空间。父母进程中价值观的改变不会影响孩子,反之亦然。
两个进程都从下一行代码开始执行,即fork()
调用后的那一行。让我们看一个例子:
// example.c
#include <stdio.h>
void main()
{
int val;
val = fork(); // line A
printf("%d", val); // line B
}
执行上述示例代码时,当执行行时,会创建一个子进程。现在两个进程都从B 线开始执行。为了区分子进程和父进程,我们需要查看fork()
调用返回的值。
不同的是,在父进程中,fork()返回一个代表子进程的进程标识的值。但是在子进程中,fork()
返回值 0。
这意味着根据上面的程序,父进程的输出将是子进程的进程 ID ,子进程的输出将是 0。
Exec()
exec()
系统调用也用于创建进程。但是fork()
和exec()
通话有一个很大的区别。fork()
调用在保留父进程的同时创建一个新进程。但是,exec()
调用代替了地址空间、文本段、数据段等。当前进程与新进程的对比。
这意味着,在一个exec()
调用之后,只有新的进程存在。进行系统调用的进程是不存在的。
UNIX 中的exec()
有很多种口味,一种是exec1()
,下面以此为例:
// example2.c
#include <stdio.h>
void main()
{
execl("/bin/ls", "ls", 0); // line A
printf("This text won't be printed unless an error occurs in exec().");
}
如上图所示,execl()函数的第一个参数是需要执行的程序的地址,在本例中是 UNIX 中 ls 实用程序的地址。然后是程序名,在这种情况下是 ls ,后面是可选参数。那么列表应该由空指针(0)终止。
当执行上述示例时,在行 A 处,调用并执行 ls 程序,并且当前进程被暂停。因此printf()
函数永远不会被调用,因为进程已经停止。唯一的例外是,如果 execl() 函数导致错误,则执行printf()
函数。
操作系统中的内存管理
原文:https://www.studytonight.com/operating-system/memory-management-in-os
计算机内存基本上是以二进制格式表示的数据集合。主存储器是指作为计算机内部存储器的物理存储器。主这个词是用来区别于外部大容量存储设备,如磁盘驱动器。主存储器也被称为随机存取存储器。计算机只能改变主存储器中的数据。因此,我们执行的每个程序和访问的每个文件都必须从存储设备复制到主内存中。
所有的程序都被加载到主存储器中执行。有时将完整的程序加载到内存中,但有时程序的某个部分或例程只有在被程序调用时才加载到主内存中,这种机制称为动态加载,增强了性能。
另外,有时一个程序依赖于另一个程序。在这种情况下,CPU 不是加载所有的从属程序,而是在需要时将从属程序链接到主执行程序。这种机制被称为动态链接。
让我们了解数据是如何存储在计算机系统中的。
什么是操作系统中的内存管理?
内存管理是协调和控制计算机内存的过程,块是分配给各种运行程序的部分,以优化系统的整体性能。这项技术有助于跟踪每个内存位置,无论该内存位置是分配给某个进程还是空闲的。
这项技术决定了哪个进程将在什么时间获得内存。它还记录了可以分配给进程的内存数量。因为它跟踪所有的事情,所以每当一些内存被释放或未分配时,它就相应地更新状态。
操作系统内存管理的需求
出于以下原因,需要内存管理技术:
-
这种技术有助于将程序放在内存中,以便最大限度地利用内存。
-
这种技术有助于保护不同的进程,使它们不会相互干扰。
-
它有助于为不同的应用程序例程分配空间。
-
这种技术允许您检查需要分配给进程的内存量,这些进程决定了哪个处理器应该在什么时间获得内存。
-
它跟踪每个内存位置,不管它是空闲的还是已分配的。
-
每当内存释放或未分配时,这种技术都会跟踪清单,并相应地更新状态。
内存管理中涉及的方法
有多种方法,在它们的帮助下,操作系统可以智能地进行内存管理:
换入操作系统
进程需要在内存中才能执行。但是有时没有足够的主内存来保存分时系统中所有当前活动的进程。因此,多余的进程被保存在磁盘上,并被引入动态运行。交换是将每个进程引入主内存,运行一段时间,然后将其放回磁盘的过程。
连续内存分配
在连续内存分配中,每个进程都包含在一个连续的内存块中。内存被分成几个固定大小的分区。每个分区恰好包含一个进程。当一个分区空闲时,从输入队列中选择一个进程并加载到其中。内存的空闲块被称为孔。搜索该组孔以确定哪个孔最好分配。
存储保护
内存保护是一种我们控制计算机内存访问权限的现象。它的主要目的是防止进程访问尚未分配给它的内存。因此,防止进程内的错误影响其他进程或操作系统本身,而是导致分段错误或存储违规异常被发送到干扰进程,通常会杀死进程。
操作系统中的内存分配
内存分配是一个为计算机程序分配内存或空间的过程。它有三种类型:
-
First Fit Allocation
第一个足够大的洞被分配给程序。
-
Best Fit Allocation
足够大的最小孔被分配给程序。
-
Worst Fit Allocation
足够大的最大洞被分配给程序。
操作系统中的碎片
当大多数空闲块太小而不能满足任何请求时,动态内存分配系统中就会出现碎片。它通常被称为无法使用可用内存。
在这种情况下,进程被加载并从内存中移除。因此,存在满足请求的自由孔,但它们是非连续的,即内存被分割成大量的小孔。这种现象被称为外部碎裂。
此外,有时物理内存被分成固定大小的块,内存以块大小为单位进行分配。分配给空间的内存可能略大于请求的内存。已分配内存和所需内存之间的差异被称为内部碎片,即位于分区内部但无用的内存。
分页
碎片问题的解决方案是分页。分页是一种内存管理机制,它允许进程的物理地址空间是非传染性的。这里,物理内存被分成大小相等的块,称为页。属于某个进程的页面被加载到可用的内存框架中。
页表
页表是计算机操作系统中虚拟内存系统用来存储虚拟地址和物理地址之间映射的数据结构。
虚拟地址也称为逻辑地址,由 CPU 生成。而物理地址是内存中实际存在的地址。
操作系统中的分段
分段是另一种支持内存用户视图的内存管理方案。分段允许将单个进程的虚拟地址空间分解成可以放在物理内存的非连续区域中的段。
带分页的分段
分页和分段各有优缺点,最好将这两种方案结合起来进行改进。这种组合方案被称为“页面元素”。该方案中的每个段被分成页面,并且每个段被维护在页面表中。所以逻辑地址分为以下 3 个部分:
-
段号
-
页码
-
位移或偏移数(D)
我们将在即将到来的教程中逐一介绍上述所有方法。
操作系统中的逻辑和物理地址空间
原文:https://www.studytonight.com/operating-system/os-logical-and-physical-address-space
在本教程中,我们将介绍逻辑和物理地址空间的概念。
由 CPU 产生的地址通常被称为逻辑地址。它基本上是一个虚拟地址。逻辑地址基本上是任何程序使用的指令或数据的地址。
由任何程序生成的所有逻辑地址的集合被称为逻辑地址空间。
加载到存储器的存储器地址 寄存器中的地址通常被称为物理地址。用户不能直接访问物理地址,但用户可以借助逻辑地址计算物理地址。
用户的程序主要生成逻辑地址,用户认为程序在这个逻辑地址运行,但程序主要需要物理内存才能完成执行。
对应于逻辑地址的所有物理地址的集合通常被称为物理地址空间。
操作系统中的内存管理单元
它是一个硬件设备,执行从虚拟地址到物理地址的运行时映射。它位于 CPU 内。
让我们借助一个简单的 MMU 方案来理解映射的概念,这就是基寄存器方案。
在上图中,基本寄存器被称为重定位寄存器。重定位寄存器是 CPU 中的一个特殊寄存器,用于将程序使用的逻辑地址映射到系统主存储器的物理地址。
当地址被发送到存储器时,重定位寄存器中的值被加到用户进程生成的每个地址上。
内存管理单元示例
假设基地在 14000 ,则用户对地址位置 0 的尝试被动态地重新定位到14000;因此对位置 356 的访问被映射到 14356。
需要注意的是,用户程序永远看不到真实的物理地址。该程序可以创建一个指向位置 356 的指针,并将其存储在内存中,然后在此之后对其进行操作,将其与其他地址(如数字 356)进行比较。
用户程序总是处理逻辑地址。内存映射单元主要将逻辑地址转换为物理地址。引用的存储器地址的最终位置直到引用时才确定。
我们有两种类型的地址:
逻辑地址(范围从 0 到最大值)。
物理地址(位于基值 R 的 R+0 至 R+最大值范围内)
如上所述,用户只生成一个逻辑地址,然后认为进程在位置 0 到 max 运行。但是,这些逻辑地址在使用前必须映射到物理地址。
逻辑地址和物理地址的区别
现在让我们讨论一下操作系统中逻辑地址和物理地址之间的区别
S.No | 逻辑地址 | 物理地址 |
---|---|---|
1. | 用户可以访问程序的逻辑地址。 | 用户永远不能访问程序的物理地址 |
2. | 逻辑地址由 CPU 生成。 | 物理地址位于存储单元中。 |
3. | 用户可以在逻辑地址的帮助下访问物理地址。 | 用户可以间接访问物理地址,但不能直接访问。 |
4. | 逻辑地址在物理上不存在于存储器中,因此被称为虚拟地址。 | 另一方面,物理地址是内存中的一个位置。因此它可以被物理访问。 |
5. | 由任何程序生成的所有逻辑地址的集合被称为逻辑地址空间。 | 对应于逻辑地址的所有物理地址的集合通常被称为物理地址空间。 |
6. | 该地址由 CPU 生成。 | 它由内存管理单元计算。 |
操作系统中的交换
原文:https://www.studytonight.com/operating-system/swapping-in-operating-system
在本教程中,我们将介绍操作系统中交换的概念。
交换是一种内存管理技术,用于从计算机系统的主内存中暂时删除不活动的程序。任何进程都必须在内存中才能执行,但可以暂时从内存中交换到后备存储中,然后再放回内存中完成执行。进行交换是为了让其他进程获得执行所需的内存。
由于交换技术,性能通常会受到影响,但它也有助于并行运行多个大型进程。交换过程也称为记忆压缩技术。基本上,低优先级进程可以被换出,使得具有较高优先级的进程可以被加载和执行。
让我们借助下图来理解这项技术:
上图显示了磁盘用作后备存储的两个进程的交换。
在上图中,假设有一个采用循环调度算法的多道程序环境;每当时间量到期时,内存管理器就开始换出那些刚刚完成的进程,并将另一个进程换入已经释放的内存。同时,CPU 调度器将时间片分配给内存中的其他进程。
内存管理器交换进程的速度足够快,当 CPU 调度器想要重新调度 CPU 时,一些进程会在内存中,准备执行。
交换技术的一种变体是基于优先级的调度算法。如果有更高优先级的进程到达并需要服务,那么内存管理器会换出较低优先级的进程,然后加载较高优先级的进程并执行它们。当优先级较高的进程完成时。那么具有较低优先级的进程交换回来并继续执行。这种变体有时被称为滚入和滚出。
交换技术中还有两个概念,它们是:换入和换出。
在操作系统中换入和换出
将任何进程从硬盘中取出并放入主内存或内存的过程,通常称为换入。
另一方面,换出是从主存或 RAM 中取出一个进程,然后将其添加到硬盘中的方法。
交换的优势
交换技术的优势/好处如下:
-
交换技术主要帮助 CPU 在一个主内存中管理多个进程。
-
这项技术有助于创建和使用虚拟内存。
-
借助这种技术,CPU 可以同时执行几项任务。因此,流程在执行之前不需要等待太长时间。
-
这种技术很经济。
-
这种技术可以很容易地应用于基于优先级的调度,以提高其性能。
交换的缺点
交换技术的缺点如下:
-
如果资源或变量通常被参与交换过程的那些过程所使用,那么在这种情况下可能会出现低效率。
-
如果用于交换的算法不好,那么整个方法会增加页面错误的数量,从而降低处理的整体性能。
-
如果计算机系统在高交换活动时断电,那么用户可能会丢失与程序相关的所有信息。
操作系统中的连续内存分配
原文:https://www.studytonight.com/operating-system/contiguous-memory-allocation-in-operating-system
在本教程中,我们将介绍操作系统中连续内存分配的概念。
在连续内存分配中,每个进程都包含在内存的单个连续部分中。在这种内存分配中,所有可用的内存空间一起保留在一个地方,这意味着自由可用的内存分区不会分散在整个内存空间中。
在连续内存分配中,这是一种内存管理技术,每当用户进程请求内存时,就会根据该进程的要求将连续内存块的单个部分分配给该进程。连续内存分配只需将内存划分到固定大小的分区中即可实现。
为了给用户进程分配连续的空间,内存可以分为固定大小的分区或可变大小的分区。
我们将逐一介绍不同连续内存分配技术的概念。
固定大小的分区方案
这种技术也被称为静态分区。在这个方案中,系统将内存划分为固定大小的分区。分区大小可能相同,也可能不同。每个分区的大小是固定的,如技术名称所示,不能更改。
在这个分区方案中,每个分区可以恰好包含一个进程。有一个问题是,这种技术将限制多道程序设计的程度,因为分区的数量将基本上决定进程的数量。
每当任何进程终止时,该分区就可用于另一个进程。
例子
让我们举一个固定大小分区方案的例子,我们将把 15 KB 的内存大小分成固定大小的分区:
需要注意的是,这些分区是在进程到达时分配给它们的,分配给到达进程的分区基本上取决于所遵循的算法。
如果分区内存在一些浪费,则称之为内部碎片。
固定大小分区方案的优点
-
该方案简单,易于实现
-
它支持多道程序设计,因为多个进程可以存储在主内存中。
-
使用这个方案管理起来很容易
固定大小分区方案的缺点
使用该方案的一些缺点如下:
1。内部碎片
假设进程的大小小于分区的大小,在这种情况下,某个大小的分区会被浪费并保持未使用。内存中的这种浪费通常被称为内部碎片
如上图所示,70 KB 分区用于加载 50 KB 的进程,因此剩余的 20 KB 被浪费了。
2 。对进程规模的限制
如果一个进程的大小大于最大分区的大小,那么这个进程就不能被加载到内存中。因此,对进程的大小强加了一个条件:进程的大小不能大于最大分区的大小。
3。外部碎片
固定大小分区方案的另一个缺点是各种分区的总未用空间不能用于加载进程,即使有可用空间,但不是以连续的方式。
4。多道程序的程度更少
在这种分区方案中,由于分区的大小不能根据进程的大小而改变。因此,多道程序设计的程度非常低,而且是固定的。
可变大小分区方案
这个方案也被称为动态分区,它的出现是为了克服静态分区造成的内部碎片的缺点。在这种划分中,方案分配是动态完成的。
分区的大小最初没有声明。每当任何进程到达时,都会创建一个大小等于该进程大小的分区,然后将其分配给该进程。因此,每个分区的大小等于进程的大小。
由于分区大小根据进程的需要而变化,因此在该分区方案中不存在内部碎片。
可变大小分区方案的优点
使用这种分区方案的一些优点如下:
-
无内部碎片
由于在这个分区方案中,主内存中的空间是严格按照进程的要求分配的,因此没有内部碎片的可能。此外,分区中将没有未使用的空间。 -
多道程序设计的程度是动态的
因为在这个分区方案中没有内部碎片,因此内存中没有未使用的空间。因此,更多的进程可以同时加载到内存中。 -
对进程大小没有限制
在这个分区方案中,由于分区是动态分配给进程的,因此进程的大小不能受到限制,因为分区大小是根据进程大小决定的。
可变大小分区方案的缺点
使用这种分区方案的一些缺点如下:
-
外部碎片
由于没有内部碎片,这是使用这种分区方案的一个优点,但这并不意味着没有外部碎片。让我们借助一个例子来理解这一点:在上图中,进程 P1(3MB)和进程 P3(8MB)完成了它们的执行。因此,剩下两个空间,即 3MB 和 8MB。让我们有一个大小为 15 MB 的进程 P4 来了。但是不能分配内存中的空白空间,因为在连续分配中不允许跨越。因为规则规定进程必须持续存在于主内存中才能被执行。因此,它导致外部碎片。 -
难以实现
与固定分区方案相比,该分区方案的实现是困难的,因为它涉及运行时而不是系统配置期间的内存分配。正如我们所知,操作系统跟踪所有分区,但在这里,分配和解除分配非常频繁,分区大小每次都会改变,因此操作系统很难管理一切。
操作系统中的分页
原文:https://www.studytonight.com/operating-system/paging-in-operating-systems
在本教程中,我们将介绍操作系统中分页的概念。
分页允许进程的物理地址空间是非连续的。是固定大小分区方案。在分页技术中,辅助内存和主内存被分成相等的固定大小的分区。
分页解决了将不同大小的内存块放在后备存储上的问题,许多内存管理方案都遇到了这个问题。
分页有助于避免外部碎片和需要压缩。
分页的基本方法
分页技术将物理内存(主内存)划分为固定大小的块,称为帧,也将逻辑内存(辅助内存)划分为相同大小的块,称为页。
这项技术跟踪所有的空闲帧。
框架的大小与页面的大小相同。框架基本上是(逻辑)页面可以(物理)放置的地方。
每个进程主要分为几个部分,每个部分的大小与页面大小相同。
最后一部分的大小可能小于页面大小。
-
一个进程的页面只有在有要求时才被放入主存储器,否则它们就驻留在辅助存储器中。
-
一个进程的一页主要存储在存储器的一个帧中。此外,页面可以存储在内存的不同位置,但首要任务始终是找到连续的帧。
现在让我们讨论一下将逻辑地址转换为物理地址的概念:
逻辑地址到物理地址的转换
在继续之前,有一些要点需要注意:
-
CPU 总是生成一个逻辑地址。
-
为了访问主存储器,总是需要一个物理地址。
CPU 生成的逻辑地址总是由两部分组成:
-
页码
-
页面偏移量(d)
哪里,
页码用于指定 CPU 要从中读取数据的进程的具体页面。它也被用作页表的索引。
而页面偏移量主要用于指定 CPU 想要读取的页面上的具体单词。
现在让我们了解什么是页表?
操作系统中的页表
页表主要包含物理内存中每页的基址。然后将基址与页面偏移量相结合,以定义物理存储器地址,然后将其发送到存储器单元。
因此,页表主要提供相应的帧号(帧的基址),其中该页存储在主存储器中。
如上所述,帧号与页面偏移量相结合,形成了所需的物理地址。
所以,物理地址由两部分组成:
-
页面偏移量(d)
-
帧号(f)
哪里,
帧号用于指示存储所需页面的具体帧。
页面偏移表示必须从该页面读取的特定单词。
页面大小(如框架大小)是在硬件的帮助下定义的。这里需要注意的是,页面的大小通常是 2 的幂,每页在 512 字节和 16 MB 之间变化,它主要取决于计算机的架构。
如果逻辑地址空间的大小是 2 的幂 m,而页面大小是的 2 的幂 n 寻址单元,那么逻辑地址的高位m-n
位表示页码,低位n
位表示页面偏移量。
逻辑地址如下:
其中 p 表示进入页面表的索引, d 表示页面内的位移。
上图显示了逻辑地址到物理地址的转换。上图中的 PTBR 是指页表基址寄存器,它基本上保存了当前进程页表的基址。
PTBR 主要是处理器寄存器,由操作系统管理。通常,处理器上运行的每个进程都需要自己的逻辑地址空间。
但是这种方法有一个问题,那就是访问用户存储位置所需的时间。假设如果我们想找到位置 I,我们必须首先通过使用 PTBR 中的值加上 I 的页码来找到页表中的索引。然后,它向我们提供帧号,帧号与页面偏移量相结合,以产生实际地址。之后,我们就可以访问内存中想要的位置了。
利用上述方案,需要两次存储器访问来访问一个字节(一次用于页表条目,一次用于字节)。因此,内存访问速度慢了 2 倍,在大多数情况下,该方案慢了 2 倍。
后备缓冲器的翻译(TLB)
对于上述问题,有一个标准的解决方案,那就是使用一个特殊的、小的、快速查找的硬件缓存,也就是通常所说的后备缓冲区转换(TLB)。
-
TLB 是联想和高速记忆。
-
TLB 中的每个条目主要由两部分组成:一个键(即标签)和一个值。
-
当关联记忆中出现一个项目时,该项目将同时与所有键进行比较。如果找到该项,则返回相应的值。
-
尽管硬件昂贵,但 TLB 的搜索速度很快。
-
TLB 的条目数量很少,一般在 64 到 1024 个之间。
TLB 与页表的使用方式如下:
TLB 号只包含了几个页表条目。每当逻辑地址由 CPU 生成时,它的页码就会呈现给 TLB。
-
如果找到了页码,则它的帧号立即可用,并用于访问存储器。与使用未映射的内存引用相比,上述整个任务花费的时间可能少于 10%。
-
如果页码不在 TLB(称为 TLB 错过,则必须对页表进行内存引用。
-
当获得帧号时,它可以用来访问存储器。此外,页码和帧号被添加到 TLB,以便在下一次引用时可以快速找到它们。
-
如果 TLB 已经满了条目,那么操作系统必须选择 o ne 进行替换。
-
TLB 允许一些条目通过有线连接到“T1”,这意味着它们不能从 TLB 移除。典型地,内核代码的 TLB 条目是有线连接的。
带 TLB 的寻呼硬件
分页的优点
下面给出了操作系统中分页技术的一些优点:
-
分页主要允许以不连续的方式存储单个进程的部分。
-
借助分页,解决了外部碎片的问题。
-
分页是最简单的内存管理算法之一。
分页的缺点
分页技术的缺点如下:
-
在分页中,有时页表会消耗更多的内存。
-
内部碎片是由这种技术引起的。
-
由于现在需要两次存储器访问,提取指令所花费的时间增加了。
寻呼硬件
CPU 生成的每个地址主要由两部分组成:
-
页码
-
页面偏移量(d)
哪里,
页号作为索引进入页表,页表一般包含物理内存中每页的基址。
页面偏移量与基址相结合,以定义物理内存地址,然后发送到内存单元。
如果逻辑地址空间的大小是 2 的幂 m,而页面大小是的 2 的幂 n 寻址单元,那么逻辑地址的高位m-n
位表示页码,低位n
位表示页面偏移量。
逻辑地址如下:
其中 p 表示页表中的索引,d 表示页内的位移。页面大小通常由硬件定义。页面的大小通常是 2 的幂,每页在 512 字节和 16 MB 之间变化。
现在我们来看一个分页的例子:
分页示例
为了实现分页,最简单的方法之一是将页表实现为一组寄存器。由于寄存器的大小有限,但页表的大小通常很大,因此页表保存在主存储器中。
此方案不会导致外部碎片;任何空闲的帧都可以分配给任何需要它的进程。但内部的割裂依然存在。
-
如果任何进程需要 n 个页面,那么至少需要 n 个帧。
-
进程的第一页是加载到自由帧列表中列出的第一帧,然后帧数放入页表中。
帧表是一种数据结构,它保存了哪些帧被分配或哪些帧可用等信息。该表主要针对每个物理页面帧有一个条目。
操作系统维护每个进程的页表副本的方式与维护指令计数器和寄存器内容的副本的方式相同。此外,每当操作系统手动将逻辑地址映射到物理地址时,该副本用于将逻辑地址转换为物理地址。
CPU 调度程序也使用这个副本,以便在进程分配给 CPU 时定义硬件页表。
操作系统中页表的结构
原文:https://www.studytonight.com/operating-system/structure-of-page-table-in-operating-systems
在本教程中,我们将介绍一些最常用的构建页面表的技术。
计算机操作系统中虚拟内存系统用来存储物理地址和逻辑地址之间映射的数据结构通常称为页表。
正如我们已经告诉你的,由 CPU 产生的逻辑地址在页表的帮助下被转换成物理地址。
- 因此,页表主要提供相应的帧号(帧的基址),其中该页存储在主存储器中。
上图显示了物理和逻辑内存的分页模型。
页表的特征
页表的一些特征如下:
-
它存储在主存储器中。
-
一般情况下;页表中的条目数=进程被划分的页数。
-
PTBR 表示页表基址寄存器,基本上是用来保存当前进程页表的基址。
-
每个进程都有自己独立的页表。
用于构建页表的技术
用于构建页表的一些常用技术如下:
-
分级分页
-
散列页表
-
倒排页表格
让我们逐一介绍这些技巧;
分级分页
分层分页的另一个名称是多级分页。
-
可能会出现页表太大而无法容纳在连续空间中的情况,因此我们可能有一个包含多个级别的层次结构。
-
在这种类型的分页中,逻辑地址空间被分成多个页表。
-
分层分页是最简单的技术之一,为此,可以使用两级页表和三级页表。
两级页面表
考虑一个具有 32 位逻辑地址空间和 1 KB 页面大小的系统,它进一步分为:
-
页码由 22 位组成。
-
由 10 位组成的页面偏移量。
当我们对页面表进行分页时,页码进一步分为:
-
页码由 12 位组成。
-
由 10 位组成的页面偏移量。
因此,逻辑地址如下:
在上图中,
P1 是外页表格的索引。
P2 表示内页表格页面内的位移。
由于地址转换是从外部页表向内进行的,因此被称为前向映射页表。
下图显示了两级页面表的地址转换方案
三级页面表
对于具有 64 位逻辑地址空间的系统,两级分页方案是不合适的。让我们假设页面大小,在这种情况下,是 4KB。如果在这种情况下,我们将使用两页级别的方案,那么地址将如下所示:
因此为了避免这么大的表,有一个解决方案,那就是划分外部页表,然后会产生一个三级页表:
散列页表
这种方法用于处理大于 32 位的地址空间。
-
在这个虚拟页面中,数字被散列到一个页面表中。
-
这个页面表主要包含一个散列到相同元素的元素链。
每个元素主要包括:
-
虚拟页码
-
映射页面框架的值。
-
指向链表中下一个元素的指针。
下图显示了哈希表的地址转换方案:
上图显示了散列页表
在此链中比较虚拟页码以寻找匹配;如果找到匹配,则提取相应的物理帧。
在该方案中,64 位地址空间的变体通常使用聚集页表。
聚集页表
-
这些类似于哈希表,但这里每个条目指的是几页(即 16 页)而不是 1 页。
-
主要用于内存引用不连续且分散的稀疏地址空间
倒排页表格
倒排页表基本上将页表和框架表组合成一个单一的数据结构。
-
每个虚拟页码有一个条目,内存有一个真实页面
-
该条目主要由存储在真实内存位置的页面虚拟地址以及拥有该页面的进程的相关信息组成。
-
虽然这种技术减少了存储每个页表所需的内存;但是它也增加了每当发生页面引用时搜索表所需的时间。
下图显示了倒排页表的地址转换方案:
在这种情况下,我们需要跟踪每个条目的进程 id,因为许多进程可能具有相同的逻辑地址。
此外,在通过哈希函数后,许多条目可以映射到页表中的同一索引中。因此,使用链接来处理这个问题。
操作系统中的分段
原文:https://www.studytonight.com/operating-system/segmentation-in-operating-systems
在本教程中,我们将介绍操作系统中的分段。
分段是划分可寻址内存的另一种方式。这是内存管理的另一种方案,它通常支持内存的用户视图。逻辑地址空间基本上是段的集合。每个片段都有名称和长度。
基本上,一个进程被分成几个部分。像分页一样,分段会分割内存。但是有一个区别,那就是当分页将内存划分为固定大小的时,另一方面,分段将内存划分为可变段,然后这些可变段被加载到逻辑内存空间中。
一个程序基本上是一个片断的集合。段是一个逻辑单元,例如:
-
主程序
-
程序
-
功能
-
方法
-
目标
-
局部变量和全局变量。
-
符号表
-
公共块
-
堆
-
数组
分割的类型
下面给出了分段的类型:
-
虚拟内存分割
有了这种类型的分割,每个进程都被分割成 n 个分区,最重要的是它们不会一次全部分割。 -
简单分割
借助于这种类型,每个进程被分割成 n 个分割,并且它们都被一次准确地分割在一起,但是在运行时,并且可以是非连续的(也就是说,它们可能分散在内存中)。
分割的特征
分割技术的一些特征如下:
-
分段划分方案是可变大小的。
-
辅助存储器的分区通常被称为段。
-
分区大小主要取决于模块的长度。
-
因此,在这种技术的帮助下,辅助存储器和主存储器被分成大小不等的分区。
分段需求
操作系统中内存管理的一个重要缺点是用户对内存的看法与实际物理内存相分离。分页是一种分离这两种存储器的技术。
用户视图基本上被映射到物理存储上。这种映射允许区分物理内存和逻辑内存。
操作系统可能会将同一功能分成不同的页面,这些页面可能会也可能不会同时加载到内存中,而且操作系统也不关心用户对进程的看法。由于这种技术,系统的效率降低。
分段是一种更好的技术,因为它将进程分成多个部分。
用户对程序的看法
下图显示了用户对分段的看法:
逻辑地址
基本方法
使用分段的计算机系统有一个逻辑地址空间,可以看作是多个分段。线段的大小是可变的,它可能会增长,也可能会收缩。正如我们已经告诉你的,在执行进程中,每个片段都有一个名称和长度。地址主要指定段的事物名称和段内的位移。
因此,用户借助两个量来指定每个地址:段名和偏移量。
对于简化的实施,对分段进行编号;因此被称为段号而不是段名。
因此,逻辑地址由两个元组组成:
<段-号,偏移>
哪里,
段号:
段号用于表示表示段所需的位数。
偏移量(d)
段偏移量用于表示表示段大小所需的位数。
分段架构
段表
用于存储进程所有环节信息的表通常称为环节表。通常,在该方案中,逻辑地址和物理地址之间没有简单的关系。
-
二维逻辑地址到一维物理地址的映射是使用段表完成的。
-
该表主要作为独立的段存储在主存储器中。
-
存储段表基址的表通常称为段表基址寄存器
在段表中,每个条目都有:
-
段基/基址:
段基主要包含 s 段驻留在内存中的起始物理地址。 -
线段限制:
线段限制主要用于指定线段的长度。
段表基址寄存器(STBR)
STBR 寄存器用于指向段表在内存中的位置。
段表长度寄存器(STLR)
该寄存器指示程序使用的段数。如果 s < STLR 分段编号 s 是合法的
分割硬件
下图显示了分割硬件:
CPU 产生的逻辑地址由两部分组成:
段号:用作段表的索引。
偏移量(d):它必须在“0”和“段限制”之间。在这种情况下,如果偏移超过段限制,则生成陷阱。
因此;校正偏移量+段基址=物理内存中的地址
而段表基本上是基限制寄存器对数组。
分段的优势
分割技术的优势如下:
-
在分段技术中,段表主要用于保存段的记录。此外,与分页表相比,段表占用的空间更少。
-
没有内部碎片。
-
分段通常允许我们将程序分成提供更好可视化的模块。
-
线段大小不一。
分割的缺点
这种技术的一些缺点如下:
-
为每个进程维护一个段表会导致开销
-
这项技术很昂贵。
-
由于现在需要两次存储器访问,提取指令所花费的时间增加了。
-
分段大小不等,因此不适合交换。
-
这种技术会导致外部碎片,因为随着进程被加载并从主内存中移除,空闲空间被分解成更小的块,这将导致大量内存浪费。
分割示例
下面是分段的例子,有五个分段,编号从 0 到 4。这些段将存储在物理内存中,如图所示。段表中的每个段都有一个单独的条目,它包含物理内存中该段的起始条目地址(表示为基数),还包含该段的长度(表示为限制)。
段 2 有 400 字节长,从位置 4300 开始。因此,在这种情况下,对段 2 的字节 53 的引用被映射到位置 4300 (4300+53=4353)。对段 3 的引用,字节 85 被映射到 3200(段 3 的基数)+852=4052。
对段 0 的字节 1222 的引用将导致对操作系统的陷阱,因为该段的长度是 1000 字节。
分页和分段的区别
原文:https://www.studytonight.com/operating-system/difference-between-paging-and-segmentation
在本教程中,我们将介绍分页和分段的区别,这是操作系统中两种不同的内存管理技术。
操作系统中的分页
分页基本上是操作系统内存管理的一种技术。在这种技术中,操作系统将进程从辅助存储器检索到主存储器中,并且该存储器是页面形式的。分页是一个逻辑概念。
在这种技术的帮助下,主内存被分割成物理内存的小块,通常称为帧。在分页中,帧的大小是固定的。为了防止外部碎片并最大限度地利用主内存,帧大小必须与页面大小相同。这项技术有助于更快地访问数据。
操作系统中的分段
分段是内存管理的另一种技术。这种技术类似于分页,除了在分段中进程的段是可变长度的,但是在分页中页面是固定大小的。
在分段中,内存被分成可变长度的部分。每个部分通常被称为段。与每个段相关的信息存储在一个表中,该表通常被称为段表。与分页表相比,段表一般占用较少的空间。
分页和分段的区别
现在,我们将在下表中介绍分页和分段之间的区别:
分页 | 分割 |
---|---|
分页是一种内存管理技术,其中内存被划分为固定大小的块,通常称为页。 | 分段也是一种内存管理技术,其中内存被划分为大小可变的块,通常称为段。 |
在分页的帮助下,逻辑地址被分成一个页码和页偏移。 | 借助分段,将逻辑地址分为段号和段偏移量。 |
这种技术可能会导致内部分裂。 | 分割可能导致外部碎片化。 |
在分页中,页面大小由硬件决定。 | 而在分段中,分段的大小由用户决定。 |
为了维护页面数据,页面表是在分页中创建的 | 为了维护段数据,在分页中创建段表 |
页表主要包含每页的基址。 | 段表主要包含段号和偏移量。 |
这种技术比分段更快。 | 另一方面,分段比分页慢。 |
在分页中,操作系统维护一个空闲帧列表。 | 在分段中,漏洞列表由操作系统维护。 |
在这种技术中,为了计算绝对地址页码和偏移量,两者都是必需的。 | 在这种技术中,为了计算绝对地址段号和偏移量,两者都是必需的。 |
连续和非连续内存分配的区别
在本教程中,我们将介绍连续内存分配和非连续内存分配的区别。
在操作系统中,内存分配有两种技术,如下所示:
-
连续内存分配
-
非连续内存分配
连续内存分配
在连续内存分配中,每当任何用户进程请求内存时,就会根据进程的要求将连续内存块的单个部分分配给该进程。连续内存分配只需通过将内存划分到固定大小分区即可实现。
在这种情况下,所有可用的内存空间一起保留在一个地方并且自由可用的内存分区不在整个内存空间中到处分布。
非连续内存分配
在非连续内存分配的帮助下,一个进程可以根据需要在内存的不同位置获取多个内存块。在非连续内存分配中,可用的空闲内存空间分布在各处,这意味着所有的空闲内存空间不在一个地方。
在这种技术中,进程获取的内存空间不在一个地方,而是根据进程的要求在不同的位置。
现在是时候看看连续和非连续内存分配之间的区别了。
连续内存分配 | 非连续内存分配 |
---|---|
连续内存分配技术将一个连续的内存块分配给进程,内存以连续的方式分配给进程。 | 非连续内存分配技术将进程分成几个块,然后将它们放在内存的不同地址空间中,即内存以非连续方式分配给进程。 |
在这个分配方案中,在进程执行时,地址转换中没有开销。 | 而在该方案中,进程执行时的地址转换存在开销。 |
在连续内存分配中,进程执行得更快,因为整个进程都在一个顺序块中。 | 在非连续内存分配中进程的执行缓慢,因为进程位于内存的不同位置。 |
连续内存分配更容易被操作系统控制。 | 非连续内存分配方案操作系统难以控制。 |
在这种情况下,内存空间被划分为个固定大小的分区,每个分区只分配给一个进程。 | 在该方案中,进程被分成几个块,然后这些块根据内存空间的可用性被放置在内存的不同部分。 |
连续内存分配包括单分区分配和多分区分配。 | 非连续内存分配包括分页和分段。 |
在这种类型的内存分配中,通常由操作系统维护一个表,该表维护内存空间中所有可用和占用分区的列表。 | 在这种类型的内存分配中,通常必须为每个进程维护一个表,该表主要携带由内存中的进程获取的每个块的基址。 |
连续内存分配会浪费内存。 | 非连续内存分配不会浪费内存。 |
在这种类型的分配中,换入的进程被安排在最初分配的空间中。 | 在这种类型的分配中,换入进程可以安排在内存中的任何位置。 |
分页和交换的区别
原文:https://www.studytonight.com/operating-system/difference-between-paging-and-swapping
在本教程中,我们将介绍操作系统中分页和交换的区别。
操作系统中的分页
分页基本上是操作系统内存管理的一种技术。在这种技术中,操作系统将进程从辅助存储器检索到主存储器中,并且该存储器是页面形式的。分页是一个逻辑概念。
在这种技术的帮助下,主内存被分割成物理内存的小块,通常称为帧。在分页中,帧的大小是固定的。为了防止外部碎片并最大限度地利用主内存,帧大小必须与页面大小相同。这项技术有助于更快地访问数据。
换入操作系统
交换是一种内存管理技术,用于从计算机系统的主内存中暂时删除不活动的程序。任何进程都必须在内存中才能执行,但可以暂时从内存中交换到后备存储中,然后再放回内存中完成执行。进行交换是为了让其他进程获得执行所需的内存。
由于交换技术,性能通常会受到影响,但它也有助于并行运行多个大型进程。交换过程也称为记忆压缩技术。基本上,低优先级进程可以被换出,使得具有较高优先级的进程可以被加载和执行。
上图显示了磁盘用作后备存储的两个进程的交换。
分页和交换的区别
让我们讨论一下操作系统中分页和交换的区别。
分页 | 交换 |
---|---|
分页是一种内存管理技术,在这种技术中,计算机从辅助存储器中存储和检索数据,以便在主存储器中使用。 | 交换是一种用于从计算机系统的主存储器中暂时删除非活动程序的技术 |
这种技术允许更多的进程驻留在主内存中 | 交换允许较少的进程驻留在主内存中。 |
分页遵循非连续内存管理。 | 交换无需任何内存管理技术即可完成。 |
分页更灵活,因为在这种情况下,进程的页面会移动。 | 交换不太灵活,因为整个过程在主内存和后台存储中来回移动。 |
当进程的某些部分转移到磁盘时,就会发生分页。 | 而交换发生在整个过程转移到磁盘时。 |
对于中等工作负载,分页技术是合适的。 | 对于繁重的工作负载,交换技术是合适的。 |
这种技术允许进程的内存地址空间不连续。 | 借助交换,多个进程可以在操作系统中并行运行 |
这项技术有助于实现虚拟内存。 | 交换有助于 CPU 更快地访问进程。 |
内部和外部碎片的区别
原文:https://www.studytonight.com/operating-system/difference-between-internal-and-external-fragmentation
在本教程中,我们将介绍操作系统中内部和外部碎片的区别。
让我们首先了解什么是碎片化以及碎片化的原因。
操作系统中的碎片
在计算机的存储系统中,当进程被加载时,空间被分配给它们,并且该空间基于固定分区(其中分区的大小在任何进程被加载到内存中之前是固定的)和动态分区(其中分区的大小在运行时决定,并且它主要根据进程的大小来决定)。
同样,进程被加载,然后从内存中移除,因此内存中的空闲空间被分解成更小的块。这主要会产生很小的未被利用的碎片内存空间,由于这些空间太小,正常的进程无法容纳它们。
内存空间根本得不到利用的问题在操作系统中通常被称为碎片。
碎片进一步分为两种类型:
操作系统中的内部碎片
内部碎片是当进程被分配给一个内存块时出现的问题,该内存块的大小大于该进程的大小,因此内存的某些部分未被使用。因此,分配的内存块内浪费的空间是由于对分配的块的允许大小的限制。
上图为操作系统内部碎片
在上图中,进程分配的内存与所需空间或内存之间的差异称为内部碎片。
操作系统中的外部碎片
当系统中的内存空间很容易满足进程的需求,但是这个可用的内存空间是不连续的,所以不能进一步利用。那么这个问题就被称为外部碎片化。
上图为操作系统中的外部碎片
假设,我们想为大小为 8 MB 的进程分配内存,如上图所示,我们可以看到,有足够的 9 MB 空间来运行大小为 8MB 的进程,但是碎片内存不连续。
外部碎片问题有一个解决方案,就是压实。主要目标是对内存内容进行洗牌,以便将所有空闲内存放在一个大块中。
此外,压缩并不总是可能的。假设重新定位是静态的,并且是在加载时完成的,那么在这种情况下就不能进行压缩。因为只有当重新定位是动态的并且在执行时完成时,压缩才是可能的。
内部和外部碎片的区别
现在让我们讨论一下内部碎片和外部碎片之间的主要区别。
内部碎片 | 外部碎片 |
---|---|
当固定大小的内存块分配给进程时,就会发生内部碎片。 | 当可变大小的内存块被动态分配给进程时,就会发生外部碎片。 |
这种类型的碎片主要发生在当固定大小的分区被分配给一个进程时,该进程的大小小于该分区的大小,因此该分区中的剩余空间变得不可用。 | 当系统中的内存空间很容易满足进程的需求,但是这个可用的内存空间是不连续的,所以不能进一步利用。 |
已分配内存和进程所需内存之间的差异称为内部碎片。 | 非连续内存片段之间未使用的内存空间太小,无法为新进程提供服务,称为外部碎片。 |
主要指分区中驻留在已分配区域的未使用空间;如名字所示。 | 它主要是指内存中不连续的未使用的块,因此无法满足进程的要求。 |
最佳拟合块可用于克服内部碎片问题。 | 压缩、分段和分页可以用来克服外部碎片问题。 |
分页受到内部碎片的影响。 | 第一适合和最佳适合遭受外部分裂。 |
操作系统中的虚拟内存
原文:https://www.studytonight.com/operating-system/virtual-memory-in-operating-systems
在本教程中,我们将介绍操作系统中虚拟内存的概念。
虚拟内存是一个空间,大型程序可以在执行时以页面的形式存储自己,并且只有所需的页面或进程部分被加载到主内存中。这种技术非常有用,因为当用户程序只有很小的物理内存时,它会提供很大的虚拟内存。因此,虚拟内存是一种允许完全不在物理内存中的进程执行的技术。
虚拟内存主要是在按需分页的帮助下,给人一种物理内存比实际内存多的错觉。
在实际场景中,大多数进程从来不需要同时拥有所有页面,原因如下:
-
除非出现特定的错误,否则不需要错误处理代码,有些错误非常罕见。
-
在最坏的情况下,数组的规模往往过大,实际上只有一小部分数组被使用。
-
某些程序的某些功能很少使用。
在操作系统中,内存通常以称为页的单元形式存储。基本上,这些是用于存储大型程序的原子单元。
虚拟内存可以通过以下方式实现
-
请求页面调度
-
需求分段
虚拟内存的需求
以下是需要虚拟内存的原因:
-
在这种情况下,如果运行 Windows 操作系统的计算机需要比系统中安装的内存更多的内存或内存,那么它会为此使用一小部分硬盘。
-
假设有一种情况,当您的计算机在物理内存中没有空间时,它会将需要记住的内容写入硬盘的交换文件中,并将其作为虚拟内存。
拥有虚拟内存的好处
-
可以编写大型程序,因为与物理内存相比,可用的虚拟空间非常大。
-
所需的输入/输出越少,进程交换就越快越容易。
-
更多的物理内存可用,因为程序存储在虚拟内存中,所以它们在实际物理内存中占据的空间非常小。
-
因此,逻辑地址空间可以比物理地址空间大得多。
-
虚拟内存允许多个进程共享地址空间。
-
在创建过程中,虚拟内存允许:写时复制和内存映射文件
程序在虚拟内存中的执行
在操作系统的帮助下,程序的一些部分被带入主存储器:
- 进入主存储器的进程的一部分称为驻留集。
每当需要一个不在主存储器中的地址时,它就会产生一个中断。操作系统将进程置于阻止状态。包含逻辑地址的进程片段被带入主存储器。
请求页面调度
需求分页背后的基本思想是,当一个进程被换入时,它的页面不会同时被换入。相反,只有当进程需要它们时,它们才会被交换进来(按需)。最初,只加载进程立即需要的那些页面。
未移入内存的页面在页面表中标记为无效。对于无效条目,表的其余部分为空。对于加载到内存中的页面,它们会被标记为有效,同时还会显示在哪里可以找到换出的页面。
页面替换
正如在需求分页中所研究的,只有进程的某些页面最初被加载到内存中。这允许我们同时将更多的进程放入内存。但是,当一个进程请求更多的页面,而没有可用的空闲内存来容纳它们时,会发生什么呢?可以采取以下步骤来解决这个问题:
-
将进程放入等待队列,直到任何其他进程完成其执行,从而释放帧。
-
或者,从内存中完全移除一些其他进程来释放帧。
-
或者,找到一些目前没有使用的页面,将它们移动到磁盘上以获取空闲帧。这种技术被称为页面替换,是最常用的。我们有一些很好的算法来有效地进行页面替换。
痛打
花在分页上的时间比执行时间多的进程被称为抖动。换句话说,这意味着进程没有足够的框架来保存所有的页面以供执行,所以它频繁地交换页面以保持执行。有时,不久的将来需要的页面必须被换出。
最初,当 CPU 利用率低时,进程调度机制为了提高多道程序设计的水平,会同时将多个进程加载到内存中,为每个进程分配有限数量的帧。当内存填满时,进程开始花费大量时间换入所需的页面,这再次导致 CPU 利用率低,因为大多数进程都在等待页面。因此,调度程序会加载更多的进程来提高 CPU 利用率,因为这种情况会持续到整个系统停止的时间点。
虚拟内存的优势
下面给出了使用虚拟内存的优势:
-
虚拟内存允许您一次运行更多的应用程序。
-
在虚拟内存的帮助下,您可以轻松地将许多大型程序装入较小的程序中。
-
借助虚拟内存,可以轻松实现多道程序环境。
-
因为应该在主存储器中维护更多的进程,这导致了 CPU 的有效利用。
-
数据应该在需要时从磁盘中读取。
-
公共数据可以在内存之间轻松共享。
-
在虚拟内存的帮助下,当程序的执行只需要程序的一个特定段时,速度就提高了。
-
该进程甚至可能变得比所有物理内存都大。
虚拟内存的缺点
下面给出了使用虚拟内存的缺点:
-
虚拟内存降低了系统的稳定性。
-
虚拟内存的性能不如内存。
-
如果系统使用虚拟内存,则应用程序可能运行较慢。
-
虚拟内存会对系统的整体性能产生负面影响。
-
虚拟内存占用了存储空间,否则可能会用于长期数据存储。
-
为了在应用程序之间切换,内存需要更多的时间。
操作系统中的按需分页
原文:https://www.studytonight.com/operating-system/os-demand-paging
在本教程中,我们将介绍操作系统中需求分页的概念。
虚拟内存中的每个进程都包含大量页面,在某些情况下,一次为该进程交换所有页面可能效率不高。因为程序可能只需要某个页面就可以运行。这里我们举一个例子,假设有一个 500 MB 的应用程序,它可能只需要 100MB 的页面就可以交换,所以在这种情况下,不需要一次交换所有的页面。
按需分页系统在某种程度上类似于带有交换的分页系统,其中进程主要驻留在主内存中(通常在硬盘中)。因此,按需分页是仅通过按需交换页面来解决上述问题的过程。这也被称为惰性交换程序(除非需要,否则它不会将页面交换到内存中)。
处理进程中各个页面的分页器被称为分页器。
按需分页是一种技术,其中页面通常仅在 CPU 需要或要求时才被带入主内存。最初,只加载进程立即需要的那些页面。那些从未被访问过的页面因此从未被加载到物理内存中。
图:将分页内存传输到连续磁盘空间。
什么时候需要一页?引用它;
- 如果引用无效,则中止引用。
*** 如果页面不在内存中,则将其带入内存。**
**## 有效-无效位
某种形式的硬件支持用于区分内存中的页面和磁盘上的页面。因此,为此目的,使用了有效-无效方案:
- 对于每个页表条目,有效-无效位是相关联的(其中 1 表示存储器中的,而 0 表示存储器中没有的
*** 最初,所有表条目的有效-无效位都设置为 0。**
1. 如果该位被设置为“有效,则相关页面是合法的并且在内存中。**
- 如果该位设置为“无效,则表示页面无效或页面有效但当前不在磁盘上。
-
对于被带入内存、的页,页表照常设置。
-
但是对于当前不在内存中的页****,则页表要么被简单地标记为无效,要么包含磁盘上该页的地址。
在地址转换过程中,如果页表条目中的有效-无效位为 0,则导致页错误。
上图是为了表示一些页面不在主存时的页表。
按需分页是如何工作的?
首先,需求分页过程中涉及的组件如下:
-
主存储器
-
CPU
-
辅助存贮器
-
中断
-
物理地址空间
-
逻辑地址空间
-
操作系统
-
页表
-
如果页面在其活动状态下在主存储器中不可用;则可以向 CPU 请求该页面。因此,为此,它必须产生一个中断。
-
此后,当中断发生时,操作系统将进程移动到阻塞状态。
-
然后,操作系统在逻辑地址空间中搜索给定的页面。
-
最后,在页面替换算法的帮助下,在物理地址空间中进行替换。页表同时更新。
-
之后,CPU 被告知该更新,然后被要求继续执行,并且进程返回到其就绪状态。
当该过程需要任何未加载到存储器中的页面时,触发页面错误陷阱并遵循以下步骤,
-
首先检查进程请求的内存地址,以验证进程发出的请求。
-
如果发现无效,则终止该过程。
-
如果进程的请求是有效的,则可能从自由框架列表中找到一个自由框架,所需页面将被移动到其中。
-
计划执行一项新操作,将必要的页面从磁盘移动到指定的内存位置。(这通常会在输入/输出等待时阻止进程,同时允许一些其他进程使用 CPU。)
-
当输入/输出操作完成时,进程的页表用新的帧号更新,无效位变为有效。
-
导致页面错误的指令现在必须从头重新启动。
按需分页的优势
使用按需分页技术的好处如下:
-
在按需分页的帮助下,内存得到了有效利用。
-
按需分页避免了外部碎片。
-
按需分页需要较少的输入/输出。
-
这个过程不受物理内存大小的限制。
-
通过按需分页,共享页面变得更加容易。
-
使用这种技术,进程中从未被调用的部分永远不会被加载。
-
按需分页不需要压缩。
按需分页的缺点
按需分页的缺点如下:
-
由于中断和页表,开销增加了。
-
按需分页中的内存访问时间更长。
纯需求分页
在一些情况下,当最初没有页面被加载到存储器中时,在这种情况下的页面仅在进程通过产生页面错误来要求时才被加载。然后称之为纯需求寻呼。
-
在纯请求分页的情况下,最初甚至没有一个页面加载到内存中。因此纯请求分页导致了页面错误。
-
当进程的执行在内存中没有页面的情况下开始时,操作系统将指令指针设置为进程的第一条指令,该指令位于非内存驻留页面上,然后在这种情况下,进程立即为该页面出错。
-
之后,当这个页面进入内存时,进程继续执行,页面错误是必要的,直到它需要的每个页面都在内存中。
-
在这一点上,它可以在没有更多错误的情况下执行。
-
这种方案被称为纯需求分页:意味着在需要之前,永远不要将页面带入内存。****
操作系统中的写时复制
原文:https://www.studytonight.com/operating-system/copyonwrite-in-operating-system
在本教程中,我们将介绍写时复制,这是资源管理技术之一。
写时复制(CoW) 主要是一种资源管理技术,允许父进程和子进程最初共享相同的内存页面。如果任何父进程或子进程修改了共享页面,则仅复制该页面。
coW基本上是一种高效复制计算机系统中数据资源的技术。在这种情况下,如果一个数据单元被复制但没有被修改,那么“复制”可以主要作为对原始数据的引用而存在。
但是当复制的数据被修改时,这时它的副本被创建(新字节被实际写入的地方),正如技术名称所建议的那样。
这种技术的主要用途是实现分叉系统调用,其中它共享操作系统的虚拟内存/页面。
回想一下在 UNIX(OS) 中,fork()
系统调用用于创建父进程的复制进程,该进程被称为子进程。
-
像 Linux、Solaris 和 Windows XP 这样的几个操作系统都使用了 CoW 技术。
-
CoW 技术是一种高效的进程创建技术,因为只有被修改的页面才会被复制。
这种技术中的空闲页面是从清零页面池中分配的。
写时复制技术
CoW 技术背后的主要意图是,每当父进程创建子进程时,父进程和子进程最初将在内存中共享相同的页面。
- 父进程和子进程之间的这些共享页面将被标记为写时复制,这意味着如果父进程或子进程将尝试修改共享页面,则将创建这些页面的副本,并且修改将仅在该进程的页面副本上进行,并且不会影响其他进程。
现在是时候来看看这个技术的基本例子了:
让我们举一个例子,进程 A 创建了一个新的进程,即进程 B,最初这两个进程将共享相同的内存页面。
图:上图表示共享同一页面的父进程和子进程
现在,让我们假设进程 A 想要修改内存中的一个页面。当使用写时复制(CoW) 技术时,只复制那些被任一进程修改的页面;父进程和子进程可以轻松共享所有未修改的页面。
图:进程 A 修改 Z 页后
无论何时确定要使用写时复制技术复制页面,都需要注意分配空闲页面的位置。对于此类请求,有一个免费页面池;由许多操作系统提供。
这些空闲页面通常是在进程的堆栈/堆必须扩展或者有写时复制页面需要管理时分配的。
这些页面通常使用称为按需零填充的技术来分配。并且按需零填充页面在被分配之前被清零,从而擦除先前的内容。
操作系统中的页面错误
原文:https://www.studytonight.com/operating-system/page-fault-in-operating-system
在本教程中,我们将介绍页面错误的概念以及如何在操作系统中处理页面错误。
操作系统中的页面错误
页面错误更像是一个错误。它主要发生在任何程序试图访问程序地址空间中的数据或代码,但该数据当前不在系统的内存中时。
-
所以基本上,当 CPU 引用的页面在主内存中找不到时,这种情况被称为页面错误。
-
无论何时发生任何页面错误,都必须将所需页面从辅助存储器提取到主存储器中。
如果所需页面没有加载到内存中,则会出现页面错误陷阱
页面错误主要产生异常,用于通知操作系统必须从虚拟内存中检索“页面”才能继续执行。一旦所有数据被移动到物理内存中,程序就继续正常执行。页面错误过程发生在后台,因此不会被用户注意到。
-
计算机的硬件跟踪到内核,程序计数器(PC)通常保存在堆栈上。CPU 寄存器存储指令当前状态的信息。
-
启动一个汇编程序,通常保存通用寄存器,也保存其他易失性信息,以防止操作系统破坏它。
处理页面错误
下面给出了处理页面错误的简单步骤:
图:处理页面故障的步骤
如果您将访问标记为无效的页面,那么它也会导致页面错误。然后,在通过页表转换地址的过程中,分页硬件会注意到设置了无效位,这会给操作系统造成陷阱。
此陷阱主要是操作系统无法将所需页面带入内存的结果。
借助上图,让我们了解处理页面错误的过程:
- 首先,这个进程的内部表(通常是进程控制块),以便确定引用是有效的还是无效的内存访问。
- 如果引用无效,我们将终止该过程。如果引用是有效的,但是我们没有在那一页购买,所以现在我们只是把它页进去。
- 然后我们定位自由帧列表 t,以便找到自由帧。
- 现在安排磁盘操作,以便将所需页面读入新分配的 fram e。
- 当磁盘被完全读取后,随进程保存的内部表被修改,主要表示该页的页表现在在内存中。
- 现在我们将重新启动由于陷阱而中断的指令。现在,进程可以访问页面,就像它一直在内存中一样。
操作系统中的页面替换算法
原文:https://www.studytonight.com/operating-system/page-replacement-algorithms-in-operating-system
在本教程中,我们将介绍操作系统中页面替换的概念及其算法。
正如在需求分页中所研究的,只有进程的某些页面最初被加载到内存中。这允许我们同时将更多的进程放入内存。但是,当一个进程请求更多的页面,而没有可用的空闲内存来容纳它们时,会发生什么呢?可以采取以下步骤来解决这个问题:
-
将进程放入等待队列,直到任何其他进程完成其执行,从而释放帧。
-
或者,从内存中完全移除一些其他进程来释放帧。
-
或者,找到一些目前没有使用的页面,将它们移动到磁盘上以获取空闲帧。这种技术被称为页面替换,是最常用的。
在这种情况下,如果一个进程请求一个新的页面,并且假设没有空闲的框架,那么操作系统需要决定替换哪个页面。操作系统必须使用任何页面替换算法来选择受害框架。然后,操作系统必须将受害者框架写入磁盘,然后将所需页面读入框架,然后更新页面表。所有这些都需要双倍的磁盘访问时间。
-
页面替换通过修改页面错误服务例程来防止内存的过度分配。
-
为了减少页面替换的开销,使用了一个修改位(脏位)来指示每个页面是否被修改。
-
这种技术提供了逻辑内存和物理内存之间的完全分离。
操作系统中的页面替换
在虚拟内存管理中,页面替换算法起着重要的作用。所有页面替换策略的主要目标是减少页面错误的最大数量。
页面错误–基本上是内存错误,当当前程序试图访问内存页面映射到虚拟地址空间,但无法加载到物理内存中时,就会出现这种情况,这就是所谓的页面错误。
操作系统中的基本页面替换算法
页面替换技术使用以下方法。如果没有空闲帧,那么我们会找到当前没有使用的帧,然后释放它。通过将其内容写入交换空间,然后更改页表以指示该页已不在内存中,可以释放-frame。
-
首先,在磁盘上找到所需页面的位置。
-
找到一个空闲帧:
a)如果有空闲帧,那就使用它。
b)如果没有空闲帧,则使用页面替换算法来选择受害帧。
c)然后在此之后将受害者帧写入磁盘,然后相应地对页表和帧表进行更改。 -
之后,将所需页面读入新释放的框架,然后更改页面和框架表。
-
重新启动进程。
图:页面替换
操作系统中的页面替换算法
这个算法有助于决定哪些页面必须从主内存中换出,以便为传入的页面创建一个空间。该算法需要最低的页面错误率。
操作系统中使用的各种页面替换算法如下;
让我们在接下来的章节中逐一讨论所有算法:
1.先进先出页面替换算法
这是一种非常简单的页面替换方式,被称为先进先出。该算法主要替换主存储器中存在时间最长的最老页面。
-
该算法通过跟踪队列中的所有页面来实现。
-
随着新页面被请求和交换,它们被添加到队列的尾部,位于头部的页面成为受害者。
-
这不是一种有效的页面替换方式,但它可以用于小型系统。
优势
-
该算法简单易用。
-
先进先出不会导致更多的开销。
不足之处
-
该算法不使用最后使用时间的频率,而是它只是替换最旧的页面。
-
随着页面框架的增加,页面错误会增加。
-
这个算法的性能是最差的。
2.后进先出页面替换算法
该页面替换算法代表“后进先出”。该算法的工作方式类似于后进先出法原理。
-
在这种情况下,最后到达主存储器的最新页面被替换
-
该算法利用堆栈来监控所有页面。
3.操作系统中的 LRU 页面替换算法
该算法代表“最近最少使用”,并且该算法帮助操作系统搜索那些在短时间内使用的页面。
-
将选择主存储器中最长时间未使用的页面进行替换。
-
该算法易于实现。
-
该算法利用计数器和偶数页。
LRU 优势
-
这是一种有效的技术。
-
有了这个算法,很容易识别出长时间不需要的错误页面。
-
这有助于全面分析。
LRU 的劣势
-
它很贵,而且更复杂。
-
需要一个额外的数据结构。
4.最优页面替换算法
这个算法主要是替换未来最长时间不会使用的页面。该算法的实际实现是不可能的。
-
实际实现是不可能的,因为我们无法提前预测那些在未来最长时间内不会被使用的页面。
-
该算法导致较少的页面错误,因此是最著名的算法
此外,该算法可以用来衡量其他算法的性能。
OPR 的优势
-
这个算法很容易使用。
-
这种算法效率很高,而且不太复杂。
-
为了获得最佳结果,数据结构的实现非常容易
OPR 的缺点
-
在这种算法中,需要对程序有进一步的了解。
-
实际实现是不可能的,因为操作系统无法跟踪未来的请求
5.随机页面替换算法
如名字所示,该算法随机替换页面。该算法可以像任何其他页面替换算法一样工作,即后进先出、先进先出、最优和 LRU。
操作系统中的抖动
原文:https://www.studytonight.com/operating-system/thrashing-in-operating-system
在本教程中,我们将介绍操作系统中抖动的概念。
在这种情况下,如果页面错误和交换以更高的速率频繁发生,那么操作系统必须花费更多的时间来交换这些页面。操作系统中的这种状态称为抖动。由于抖动,CPU 利用率将会降低。
让我们通过一个例子来理解,如果任何进程没有支持活动页面所需的帧数,那么它将很快出现页面错误。而此时,进程必须替换一些页面。由于进程的所有页面都在使用中,它必须立即替换一个需要的页面。因此,这个进程很快就会一次又一次地出错,替换掉它必须立即返回的页面。进程的这种高分页活动称为抖动。
在颠簸期间,CPU 花在一些实际生产工作上的时间更少,花在交换上的时间更多。
图:颠簸
颠簸的原因
抖动会影响操作系统的执行性能。此外,抖动会导致操作系统出现严重的性能问题。
当 CPU 利用率较低时,进程调度机制会尝试同时将多个进程加载到内存中,这样可以提高多道程序设计的程度。现在在这种情况下,与内存中可用的帧数相比,内存中有更多的进程。将有限数量的帧分配给每个进程。
每当任何具有高优先级的进程到达存储器时,并且如果该帧在那个时候不是自由可用的,那么已经占用该帧的另一个进程驻留在该帧中,将移动到二级存储器,并且在那之后,该自由帧将被分配给更高优先级的进程。
我们还可以说,一旦内存填满,这个进程就开始花费大量时间来交换所需的页面。同样,由于大多数进程都在等待页面,CPU 的利用率变得很低。
因此,高度的多道程序设计和缺少帧是操作系统抖动的两个主要原因。
颠簸的影响
此时,当系统颠簸开始时,操作系统会尝试应用全局页面替换算法或本地页面替换算法。
全局页面替换
全局页面替换可以带来任何页面,只要系统发现它试图带来更多的页面。实际上,由于这一点,没有任何进程可以获得足够的帧,结果,抖动会越来越大。因此,每当发生抖动时,全局页面替换算法是不合适的。
本地页面替换
与全局页面替换不同,本地页面替换将选择仅属于该进程的页面。因此,系统颠簸有可能会减少。事实也证明,本地页面替换有很多缺点。因此,本地页面替换只是全局页面替换的一种替代。
用于处理颠簸的技术
正如我们已经告诉你的,本地页面替换比全局页面替换好,但是本地页面替换也有很多缺点,所以它不是受暗示的。因此,下面给出了一些使用的其他技术:
工作集模型
这个模型是基于局部性的假设。它利用了参数?以便定义工作集窗口。主要思路是考察最近的?页面参考。什么地方在说,最近使用的页面可以再次使用,并且在这个页面附近的页面也会被使用?
1.工作组
最近的一组页面?页面引用被称为工作集。如果一个页面正在使用中,那么它将在工作集中。如果页面不再被使用,那么它将从工作集中删除?上次引用后的时间。
工作集主要给出程序局部性的近似值。
工作集的准确性主要取决于?选择什么?
这种工作集模型避免了抖动,同时保持了尽可能高的多道程序设计程度。
2.页面故障频率
图:页面故障频率
工作集模型是成功的,它的知识在准备中是有用的,但是为了避免颠簸,它是一种非常笨重的方法。还有一种技术用于避免抖动,这就是页面故障频率(PFF),这是一种更直接的方法。
主要问题是如何防止颠簸。由于抖动具有较高的页面错误率,我们还希望控制页面错误率。
当页面错误太高时,我们知道这个进程需要更多的帧。相反,如果页面错误率太低,那么进程可能有太多的帧。
我们可以建立期望页面错误的上限和下限。如果实际页面错误率超过上限,那么我们将把进程分配给另一个帧。如果页面错误率低于下限,那么我们可以从进程中删除该帧。
因此,有了这个,我们可以直接测量和控制页面错误率,以防止颠簸。
网络
计算机网络基础
计算机网络导论
原文:https://www.studytonight.com/computer-networks/overview-of-computer-networks
现代世界的场景是不断变化的。数据通信和网络改变了商业和其他日常事务的工作方式。现在,他们高度依赖计算机网络和互联网。
通常被称为通过媒体链接连接的节点的一组设备称为网络。
节点可以是能够发送或接收网络上其他节点(如计算机、打印机等)生成的数据的设备。这些连接设备的链路称为通信通道。
计算机网络是一种电信信道,通过它我们可以与连接到同一网络的其他计算机或设备共享数据。它也被称为数据网络。计算机网络最好的例子是互联网。
计算机网络并不意味着一个系统的一个控制单元连接到多个其他系统作为其从属。那是分布式系统,不是计算机网络。
网络必须能够满足某些标准,这些标准在下面提到:
- 表演
- 可靠性
- 可量测性
计算机网络:性能
可以通过以下方式进行测量:
- 传输时间:是将消息从一台设备传输到另一台设备所需的时间。
- 响应时间:定义为查询到响应之间经过的时间。
衡量绩效的其他方法有:
- 软件效率
- 用户数量
- 连接硬件的能力
计算机网络:可靠性
它决定了网络故障发生的频率。故障越多,网络的可靠性就越低。
计算机网络:安全性
它指的是保护数据免受任何未经授权的用户或访问。当通过网络传输时,数据通过网络的许多层,如果尝试,数据可以被跟踪。因此,安全性也是网络非常重要的特征。
良好网络的性质
- 人际交往:我们可以高效轻松地进行交流。例如:电子邮件、聊天室、视频会议等,所有这些都是可能的,因为计算机网络。
- 资源可以共享:我们可以通过使物理资源在网络上可用来共享物理资源,例如打印机、扫描仪等。
- 共享文件、数据:允许授权用户在网络上共享文件。
基本沟通模式
通信模型用于在双方之间交换数据。例如:计算机、服务器和电话之间的通信(通过调制解调器)。
传播模式:来源
要传输的数据由该设备生成,例如:电话、个人计算机等。
通信模式:发射机
源系统生成的数据不会以其生成的形式直接传输。发射器以这种形式对数据进行转换和编码,以产生电磁波或信号。
通信模式:传输系统
传输系统可以是连接源和目的地的单一传输线或复杂网络。
通信模型:接收器
接收器接受来自传输系统的信号,并将其转换为目的设备易于管理的形式。
沟通模式:目的地
目的地接收来自接收器的输入数据。
数据通信
两个设备之间通过传输介质进行的数据交换称为数据通信。数据以0和1的形式交换。使用的传输介质是电线电缆。为了进行数据通信,通信设备必须是通信系统的一部分。数据通信有两种类型- 本地和远程,下面讨论:
数据通信:本地
当通信设备位于同一地理区域、同一建筑物或面对面等时,就会发生本地通信。
数据通信:远程
远程通信在一段距离内进行,即设备距离较远。数据通信的有效性可以通过以下特征来衡量:
- 发货:发货要送到正确的目的地。
- 及时性:发货要准时。
- 准确性:传递的数据要准确。
数据通信的组成部分
- 消息:是要传递的信息。
- 发送者:发送者是发送消息的人。
- 接收者:接收者是消息被发送到的人。
- 媒介:是发送消息的媒介。例如:调制解调器。
- 协议:这些是管理数据通信的一些规则。
计算机网络的用途
原文:https://www.studytonight.com/computer-networks/uses-of-computer-networks
如果不是非常重要,没有人会费心通过网络连接计算机。让我们开始探索计算机网络在公司和个人的一些传统用例中的用途,然后进入移动用户和家庭网络领域的最新发展。
计算机网络:商业应用
以下是计算机网络的一些商业应用:
1.资源共享:
目标是使所有程序、设备(如打印机等)尤其是数据对网络上的任何人可用,而不考虑资源和用户的物理位置。
2.服务器-客户端模型:
人们可以想象一个公司的信息系统由一个或多个数据库和一些需要远程访问的员工组成。在这个模型中,数据存储在名为服务器的强大计算机上。这些通常由系统管理员集中存放和维护。相比之下,员工的办公桌上有简单的机器,称为客户端,他们可以使用这些机器访问远程数据。
3.沟通媒介:
计算机网络可以在员工之间提供强大的沟通媒介。几乎每家拥有两台或多台计算机的公司现在都有电子邮件,员工通常使用它进行大量的日常交流
4.电子商务:
在商业中开始变得越来越重要的一个目标是通过互联网与消费者做生意。航空公司、书店和音乐供应商发现,许多顾客喜欢在家购物的便利。预计该行业未来将快速增长。
下图列出了最流行的形式:
计算机网络:家庭应用
家庭用户对互联网的一些最重要的用途如下:
- 远程信息访问
- 人与人的交流
- 互动娱乐
- 电子商务
计算机网络:移动用户
笔记本电脑和手机等移动电脑是整个计算机行业中增长最快的分段市场之一。尽管无线网络和移动计算经常相关,但它们并不完全相同,如下图所示。
计算机网络中的线路配置
原文:https://www.studytonight.com/computer-networks/line-configuration
网络只不过是通过两个或多个设备之间的连接链路建立的连接。设备可以是计算机、打印机或任何其他能够发送和接收数据的设备。连接设备有两种方式:
- 点对点连接
- 多点连接
点对点连接
这是一种用作两个设备之间的通信链路的协议。建立起来很简单。点对点连接最常见的例子是通过电话线连接的计算机。我们可以通过一对电线或使用微波或卫星连接来连接这两个设备。
示例:遥控器和电视之间的点对点连接,用于更改频道。
多点连接
也称为多点配置。在这种连接中,两个或多个设备共享一条链路。
有两种多点连接:
- 如果在许多设备之间同时使用链路,则是空间共享线路配置。
- 如果用户在使用链接时轮流使用,则是分时(临时)线路配置。
网络拓扑的类型
原文:https://www.studytonight.com/computer-networks/network-topology-types
网络拓扑是网络布置的示意图,通过连接线连接各种节点(发送方和接收方)。
总线拓扑
总线拓扑是一种网络类型,其中每台计算机和网络设备都连接到一根电缆。当它正好有两个端点时,则称为线性总线拓扑。
总线拓扑的特点
- 它只向一个方向传输数据。
- 每台设备都连接到一根电缆
总线拓扑的优势
- 它具有成本效益。
- 与其他网络拓扑相比,所需电缆最少。
- 用于小型网络。
- 这很容易理解。
- 易于扩展,将两根电缆连接在一起。
总线拓扑的缺点
- 电缆出现故障,然后整个网络出现故障。
- 如果网络流量较大或节点较多,网络性能会下降。
- 电缆长度有限。
- 它比环形拓扑慢。
环形拓扑
它被称为环形拓扑,因为它形成一个环,因为每台计算机都连接到另一台计算机,最后一台计算机连接到第一台计算机。每个设备正好有两个邻居。
环形拓扑的特征
- 大量的中继器用于具有大量节点的环形拓扑,因为如果有人想要向具有 100 个节点的环形拓扑中的最后一个节点发送一些数据,那么数据将必须通过 99 个节点才能到达第 100 个节点。因此,为了防止数据丢失,网络中使用中继器。
- 传输是单向的,但每个网络节点之间有 2 个连接就可以双向传输,称为双环拓扑。
- 在双环拓扑中,形成了两个环网,其中数据流方向相反。此外,如果一个环出现故障,第二个环可以作为备份,以保持网络正常运行。
- 数据以一点一点的顺序方式传输。传输的数据必须经过网络的每个节点,直到目的节点。
环形拓扑的优点
- 传输网络不受高流量或添加更多节点的影响,因为只有具有令牌的节点才能传输数据。
- 安装和扩展成本低廉
环形拓扑的缺点
- 在环形拓扑中很难排除故障。
- 添加或删除计算机会干扰网络活动。
- 一台计算机的故障会扰乱整个网络。
星形布局
在这种拓扑中,所有计算机都通过电缆连接到一个集线器。该集线器是中心节点,所有其他节点都连接到该中心节点。
星型拓扑的特征
- 每个节点都有自己专用的集线器连接。
- 集线器充当数据流的中继器。
- 可用于双绞线、光纤或同轴电缆。
星型拓扑的优势
- 快速性能,节点少,网络流量低。
- 集线器可以轻松升级。
- 易于排除故障。
- 易于设置和修改。
- 只有出现故障的节点受到影响,其余节点才能顺利工作。
星型拓扑的缺点
- 安装成本高。
- 使用起来很贵。
- 如果集线器出现故障,整个网络就会停止运行,因为所有节点都依赖于集线器。
- 性能基于集线器,也就是说,它取决于集线器的容量
网状拓扑
它是到其他节点或设备的点对点连接。所有网络节点都相互连接。Mesh 有n(n-1)/2
物理通道连接n
设备。
通过网状拓扑传输数据有两种技术,它们是:
- 选择途径
- 泛滥
网状拓扑:路由
在路由中,根据网络要求,节点具有路由逻辑。像路由逻辑一样,引导数据以最短的距离到达目的地。或者,路由逻辑,其具有关于断开的链路的信息,并且它避开那些节点等。我们甚至可以使用路由逻辑来重新配置故障节点。
网状拓扑:泛洪
在泛洪中,相同的数据被传输到所有网络节点,因此不需要路由逻辑。网络是强大的,它不太可能丢失数据。但是它会导致网络上不必要的负载。
网状拓扑的类型
- 部分网状拓扑:在该拓扑中,一些系统以与网状拓扑相同的方式连接,但是一些设备仅连接到两个或三个设备。
- 全网状拓扑:每个节点或设备都相互连接。
网状拓扑的特征
- 完全连接。
- 健壮。
- 不灵活。
网状拓扑的优势
- 每个连接都可以承载自己的数据负载。
- 它是健壮的。
- 故障容易诊断。
- 提供安全性和隐私。
网状拓扑的缺点
- 安装和配置很困难。
- 布线成本更高。
- 需要大量布线。
树形布局
它有一个根节点,所有其他节点都连接到它,形成一个层次结构。它也被称为分层拓扑。它至少应该有三个层次。
树形拓扑的特征
- 如果工作站成组放置,则非常理想。
- 用于广域网。
树形拓扑的优点
- 总线和星形拓扑的扩展。
- 节点的扩展是可能且容易的。
- 易于管理和维护。
- 错误检测很容易完成。
树形拓扑的缺点
- 电缆很紧。
- 代价高昂。
- 如果增加更多的节点,维护就很困难。
- 中央枢纽故障,网络故障。
混合拓扑
两种不同类型的拓扑是两种或多种拓扑的混合。例如,如果在一个部门的办公室中使用环形拓扑,而在另一个部门中使用星形拓扑,连接这些拓扑将产生混合拓扑(环形拓扑和星形拓扑)。
混合拓扑的特征
- 它是两种或多种拓扑的组合
- 继承了包含的拓扑的优点和缺点
混合拓扑的优势
- 可靠的错误检测和故障排除很容易。
- 有效。
- 可扩展,因为大小可以轻松增加。
- 灵活。
混合拓扑的缺点
- 设计复杂。
- 代价高昂。
计算机网络中的传输模式
原文:https://www.studytonight.com/computer-networks/transmission-mode
传输模式是指通过网络连接的两个设备之间传输数据的机制。也叫通信模式。这些模式指引着信息流动的方向。有三种传输模式。它们是:
- 单工模式
- 半双工模式
- 全双工模式
单工模式
在这种类型的传输模式下,数据只能在一个方向上发送,即通信是单向的。我们无法将消息发送回发件人。单向通信是在单工系统中完成的,在单工系统中,我们只需要发送一个命令/信号,不需要任何回应。
单工模式的例子有扬声器、电视广播、电视和遥控器、键盘和监视器等。
半双工模式
半双工数据传输意味着数据可以在信号载波上双向传输,但不能同时传输。
例如,在使用半双工传输技术的局域网上,一个工作站可以在线路上发送数据,然后立即从刚刚传输数据的同一方向在线路上接收数据。因此,半双工传输意味着双向线路(可以双向传输数据),但一次只能向一个方向发送数据。
半双工的一个例子是对讲机,其中一次发送一条消息,但消息是双向发送的。
全双工模式
在全双工系统中,我们可以同时双向发送数据,换句话说,数据可以同时双向发送。
全双工的一个例子是电话网络,其中两个人通过电话线进行通信,两个人可以同时通话和收听。
在全双工系统中,可以有两条线,一条用于发送数据,另一条用于接收数据。
计算机网络中的传输介质
原文:https://www.studytonight.com/computer-networks/transmission-mediums
数据由计算机和其他使用信号的电信设备来表示。信号以电磁能的形式从一个设备传输到另一个设备。电磁信号通过真空、空气或其他传输介质从一点传播到另一点(从发送者到接收者)。
电磁能(包括电场和磁场)由能量、声音、可见光、无线电波、紫外线、伽马射线等组成。
传输媒介是我们将数据从一个地方传送到另一个地方的手段。通信网络的第一层(物理层)OSI 七层模型是专门针对传输介质的,我们后面会研究 OSI 模型。
选择传输介质时要考虑的因素
- 传输速率
- 安装成本和简易性
- 对环境条件的抵抗力
- 距离
有界或引导传输媒体
原文:https://www.studytonight.com/computer-networks/bounded-transmission-media
引导介质,即提供从一个设备到另一个设备的导管的介质,包括双绞线、同轴电缆和光纤电缆。
沿着这些介质中的任何一种传播的信号都是由介质的物理极限所引导和包含的。双绞线和同轴电缆使用金属(铜)导体来接受和传输电流形式的信号。光纤是以光的形式接受和传输信号的电缆。
双绞线电缆
这种电缆是最常用的,比其他电缆便宜。它重量轻,价格便宜,易于安装,并且它们支持许多不同类型的网络。一些要点:
- 它的频率范围是 0 到 3.5 千赫。
- 在 1kHz 时,典型衰减为 0.2 dB/Km。
- 典型延迟为 50 秒/公里。
- 中继器间距为 2 公里。
双绞线由两根导线(通常为铜)组成,每根导线都有自己的塑料绝缘层,并绞合在一起。其中一根导线用于将信号传输至接收器,另一根仅用作接地参考。接收器利用两者之间的差异。除了发送方在其中一条线路上发送的信号之外,干扰(噪声)和串扰可能会影响两条线路并产生不想要的信号。如果两条导线平行,则这两条导线中的无用信号的影响并不相同,因为它们相对于噪声或串扰源位于不同的位置。这导致接收器处的差异。
双绞线有两种类型:
- 非屏蔽双绞线(UTP)
- 屏蔽双绞线(STP)
非屏蔽双绞线电缆
与屏蔽双绞线电缆相比,它是最常见的电信类型,屏蔽双绞线电缆由两个导体组成,通常是铜,每个导体都有自己的彩色塑料绝缘体。标识是彩色塑料绝缘背后的原因。
UTP 电缆由 2 或 4 对双绞线组成。2 对电缆使用 RJ-11 连接器,4 对电缆使用 RJ-45 连接器。
非屏蔽双绞线电缆的优点
- 安装很容易
- 灵活的
- 便宜的
- 它具有高速容量,
- 百米极限
- 更高等级的 UTP 被用于像以太网这样的局域网技术。
它由两根绝缘铜线(1 毫米厚)组成。电线以螺旋状缠绕在一起,以减少来自相似线对的电干扰。
非屏蔽双绞线电缆的缺点
- 与同轴电缆相比,带宽较低
- 提供较少的抗干扰保护。
屏蔽双绞线电缆
这种电缆有一个金属箔或编织网覆盖,包裹每对绝缘导线。金属外壳可防止电磁噪声穿透。屏蔽还可以消除串扰(在关键术语一章中解释)。
它的衰减与非屏蔽双绞线相同。它比无屏蔽同轴电缆更快。它比同轴和非屏蔽双绞线贵。
屏蔽双绞线电缆的优点
- 易于安装
- 性能足够
- 可用于模拟或数字传输
- 提高信令速率
- 比非屏蔽双绞线容量更高
- 消除串扰
屏蔽双绞线电缆的缺点
- 难以制造
- 沉重的
屏蔽双绞线电缆的性能
测量双绞线性能的一种方法是比较衰减与频率和距离的关系。如下图所示,双绞线可以通过很宽的频率范围。然而,随着频率的增加,衰减(单位为分贝/公里)会随着频率超过 100 千赫而急剧增加。请注意,规格是电线厚度的量度。
屏蔽双绞线电缆的应用
- 在电话线路中提供语音和数据通道。电话公司用来提供高数据速率连接的 DSL 线路也使用非屏蔽双绞线电缆的高带宽能力。
- 局域网,如 10Base-T 和 100Base-T,也使用双绞线电缆。
同轴电缆
同轴电缆之所以叫这个名字,是因为它包含两个相互平行的导体。铜在这里用作中心导体,可以是实心线,也可以是标准线。它被聚氯乙烯装置包围,这是一个包裹在金属箔、barid 或两者的外导体中的护套。
外部金属包裹用作噪声屏蔽和完成电路的第二导体。外导体也包裹在绝缘护套中。最外面的部分是保护整个电缆的塑料盖。
这里最常见的同轴标准。
- 50 欧姆 RG-7 或 RG-11:用于厚以太网。
- 50 欧姆 RG-58:用于薄以太网
- 75 欧姆 RG-59:用于有线电视
- 93 欧姆 RG-62:与 ARCNET 一起使用。
同轴电缆标准
同轴电缆按其无线电政府等级分类。每个 RG 编号表示一组独特的物理规格,包括内导体的线规、内绝缘体的厚度和类型、屏蔽层的结构以及外壳的尺寸和类型。RG 额定值定义的每根电缆都适用于特定功能,如下表所示:
同轴电缆连接器
要将同轴电缆连接到设备,我们需要同轴连接器。今天使用的最常见的连接器类型是卡口尼尔-康塞尔曼(BNC)连接器。下图显示了这种连接器的三种流行类型:BNC 连接器、BNC T 连接器和 BNC 终结器。
BNC 连接器用于将电缆末端连接到设备,如电视机。BNC 测试连接器用于以太网中,以分支到计算机或其他设备的连接。BNC 终结器用于电缆末端,以防止信号反射。
同轴电缆有两种类型:
1.基带
这是一根 50 欧姆(ω)同轴电缆,用于数字传输。它主要用于局域网。基带以非常高的速度一次传输一个信号。主要缺点是每 1000 英尺后需要放大。
2.宽带
这在标准有线电视电缆上使用模拟传输。它使用不同的频率同时发送几个信号。与基带同轴电缆相比,它占地面积大。
同轴电缆的优点
- 带宽很高
- 用于长途电话线路。
- 以 10Mbps 的极高速率传输数字信号。
- 更高的抗噪能力
- 数据传输无失真。
- 与双绞线电缆相比,它们具有更好的屏蔽性能,因此可以在更高的速度下跨越更长的距离
同轴电缆的缺点
- 单根电缆故障可能会导致整个网络出现故障。
- 与双绞线相比,安装困难,价格昂贵。
- 如果屏蔽层不完善,会导致回路接地。
同轴电缆的性能
我们可以用测量双绞线电缆的方法来测量同轴电缆的性能。从下图可以看出,同轴电缆的衰减比双绞线高得多。换句话说,虽然同轴电缆具有高得多的带宽,但信号会迅速减弱,需要频繁使用中继器。
同轴电缆的应用
- 同轴电缆广泛用于模拟电话网络,一个同轴网络可以传输 10,000 个语音信号。
- 有线电视网络也使用同轴电缆。在传统的有线电视网络中,整个网络都使用同轴电缆。有线电视采用 RG-59 同轴电缆。
- 在传统的以太局域网中。由于同轴电缆的高带宽和随之而来的高数据速率,在早期的以太局域网中,同轴电缆被选择用于数字传输。10Base-2,或薄以太网,使用 RG-58 同轴电缆和 BNC 连接器,以 10 兆位/秒的速度传输数据,传输范围为 185 米
光缆
光缆由玻璃或塑料制成,以光的形式传输信号。
为了更好地理解,我们首先需要探索光的本质的几个方面。
只要光穿过单一的均匀物质,它就沿着直线传播。如果穿过一种物质的光线突然进入另一种物质(密度不同),光线会改变方向。
下图显示了光线从密度较大的物质变为密度较小的物质时如何改变方向。
光线弯曲
如图所示:
- 如果入射角 I (光线与垂直于两物质界面的直线所成的角度)小于临界角,则光线折射并向表面靠近。
- 如果入射角大于临界角,光线反射(转向)并在密度较大的物质中再次传播。
- 如果入射角等于临界角,光线折射,平行于移动到表面,如图所示。
注: 临界角是物质的一个性质,其值因物质而异。
光纤利用反射引导光线通过通道。玻璃或塑料芯由密度较低的玻璃或塑料包层包围。这两种材料的密度差必须使得穿过纤芯的光束被包层反射,而不是折射到包层中。
光纤内部视图
光缆的传播模式
目前的技术支持两种模式(多模和单模,用于沿光通道传播光,每种模式都需要具有不同物理特性的光纤。多模式可以以两种形式实现:步进指数和分级指数。
多模传播模式
多模之所以如此命名,是因为来自光源的多束光束以不同的路径穿过纤芯。这些梁如何在电缆内移动取决于芯的结构,如下图所示。
- 在多模阶跃光纤中,纤芯的密度从中心到边缘保持不变。一束光以直线穿过这个恒定的密度,直到它到达纤芯和包层的界面。
阶跃指数这个术语指的是这种变化的突然性,当信号通过光纤时,这种变化会导致信号失真。 - 在多模渐变折射率光纤中,这种失真通过电缆减小。这里的指数指的是折射率。这个折射率与密度有关。因此,渐变折射率纤维是一种具有不同密度的纤维。密度在核心的中心最高,在边缘逐渐降低到最低。
单模
单模使用阶跃折射率光纤和高度聚焦的光源,将光束限制在小角度范围内,所有角度都接近水平。单模光纤本身的直径比多模光纤的直径小得多,密度也低得多。
密度的降低导致临界角接近 90 度,使光束的传播几乎水平。
光缆的纤维尺寸
光纤由直径或纤芯与包层直径之比来定义,二者均以微米表示。常见尺寸如下图所示:
光纤电缆连接器
光缆连接器有三种类型,如下图所示。
用户频道(SC) 连接器用于有线电视。它采用推/拉锁定系统。直尖(ST) 连接器用于将电缆连接到网络设备。MT-RJ 是一个连接器,大小与 RJ45 相同。
光纤电缆的优点
光纤比金属电缆有几个优点:
- 更高的带宽
- 信号衰减更小
- 抗电磁干扰
- 抗腐蚀性材料
- 轻量
- 更强的抗敲击能力
光纤电缆的缺点
使用光纤有一些缺点:
- 安装和维护
- 单向光传播
- 高成本
光纤电缆的性能
衰减比双绞线和同轴电缆的情况更平坦。性能是这样的,当我们使用光纤电缆时,我们需要更少(实际上是十分之一)的中继器。
光纤电缆的应用
- 常见于主干网,因为它的宽带具有成本效益。
- 一些有线电视公司使用光纤和同轴电缆的组合,从而创建了一个混合网络。
- 局域网,如 100Base-FX 网络和 1000Base-X 网络也使用光缆。
无界或无导向传输介质
原文:https://www.studytonight.com/computer-networks/unbounded-transmission-media
非导向介质不使用物理导体传输电磁波。这种类型的通信通常被称为无线通信。信号通常通过自由空间广播,因此任何拥有能够接收信号的设备的人都可以使用。
下图显示了用于无线通信的电磁频谱部分,范围从 3 千赫到 900 千赫。
无制导信号可以通过几种方式从源传播到目的地:地面传播、天空传播和视线传播,如下图所示。
传播模式
- 地面传播:在这种情况下,无线电波穿过大气层的最低部分,拥抱着地球。这些低频信号从发射天线向四面八方发射,并遵循行星的曲率。
- 天空传播:在这种情况下,较高频率的无线电波向上辐射到电离层,在那里它们被反射回地球。这种类型的传输允许更大的距离和更低的输出功率。
- 视线传播:在这种类型中,甚高频信号直接从天线到天线直线传输。
我们可以将无线传输分为三大类:
- 无线电波
- 微波
- 红外线波
无线电波
频率在 3 千赫到 1 千兆赫之间的电磁波通常被称为无线电波。
无线电波是全向的。当天线发射无线电波时,它们向各个方向传播。这意味着发送和接收天线不必对齐。发送天线发送任何接收天线都能接收到的波。全向性也有缺点。一个天线发射的无线电波容易受到另一个天线的干扰,另一个天线可能使用相同的频率或频带发送信号。
无线电波,尤其是中低频的无线电波,可以穿透墙壁。这种特性可能是优点,也可能是缺点。这是一个优势,因为调幅收音机可以接收建筑物内的信号。这是一个缺点,因为我们无法将通信隔离到建筑物内部或外部。
无线电波全向天线
无线电波使用全向天线,向各个方向发送信号。
无线电波的应用
- 无线电波的全向特性使其对于只有一个发送方但有多个接收方的多播非常有用。
- 调幅和调频广播、电视、海事广播、无绳电话和寻呼都是多播的例子。
微波
频率在 1 至 300 千兆赫之间的电磁波称为微波。微波是单向的。当天线发射微波时,它们可以被狭窄地聚焦。这意味着发送和接收天线需要对齐。单向特性具有明显的优势。一对天线可以对齐,而不会干扰另一对对齐的天线。
以下描述了微波传播的一些特征:
- 微波传播是视线。由于安装了天线的塔需要彼此直视,相距很远的塔需要非常高。
- 甚高频微波不能穿透墙壁。如果接收器在建筑物内,这种特性可能是一个缺点。
- 微波波段比较宽,差不多 299 GHz。因此,可以分配更宽的子带,并且高数据速率是可能的。
- 使用乐队的某些部分需要得到当局的许可。
微波单向天线
微波需要单向天线向一个方向发送信号。微波通信使用两种天线:抛物面天线和喇叭。
抛物面天线就像一个漏斗,捕捉大范围的波,并将它们导向一个公共点。通过这种方式,比单点接收器恢复更多的信号。
喇叭天线看起来像一个巨大的勺子。传出的传输通过一根杆传播,并通过弯曲的头部以一系列狭窄的平行光束向外偏转。以类似于抛物面的方式,接收到的传输由喇叭的铲形收集,并向下偏转到杆中。
微波的应用
微波由于其单向特性,在发送方和接收方之间需要单播(一对一)通信时非常有用。它们用于移动电话、卫星网络和无线局域网。
微波传输有两种类型:
- 地面微波
- 卫星微波
微波传输的优势
- 用于长途电话通信
- 同时承载 1000 个语音频道
微波传输的缺点
- 它非常昂贵
地面微波
为了增加地面微波服务的距离,每个天线可以安装中继器。如下图所示,天线接收到的信号可以转换成可发射的形式并中继到下一个天线。这是全世界电话系统的一个例子
用于地面微波通信的天线有两种类型:
1.抛物面碟形天线
在这种情况下,平行于对称线的每一条线都以一定的角度从曲线上反射,它们相交于一个称为焦点的公共点。这种天线是基于抛物线的几何形状。
2.号角天线
这是一个巨大的勺子。传出的信号沿主干传播,并通过弯曲的头部以一系列狭窄的平行光束向外偏转。
卫星微波
这是一个放置在外太空的微波中继站。这些卫星或者由火箭发射,或者由航天飞机运载。
这些卫星位于赤道上方 36000 Km 处,轨道速度与地球的旋转速度完全匹配。由于卫星位于地球同步轨道,它相对于地球是静止的,并且总是停留在地面的同一点上。这通常是为了让地面站将天线对准天空中的一个固定点。
卫星微波的特点
- 带宽容量取决于使用的频率。
- 轨道卫星的卫星微波部署是困难的。
卫星微波的优势
- 发射站可以接收回自己的传输,并检查卫星是否正确传输了信息。
- 一个单一的微波中继站,可以从任何一点看到。
卫星微波的缺点
- 卫星制造成本非常高
- 发射卫星的费用非常昂贵
- 传播高度依赖于条件,它可以在恶劣的天气下传播
红外波
频率从 300 千兆赫到 400 太赫兹的红外波可以用于短程通信。高频的红外线无法穿透墙壁。这种有利的特性防止了一个系统和另一个系统之间的干扰,一个房间中的短距离通信系统不会受到另一个房间中的另一个系统的影响。
当我们使用红外遥控器时,我们不会干扰邻居使用遥控器。然而,同样的特性使得红外信号对远距离通信毫无用处。此外,我们不能在建筑物外使用红外线,因为太阳光线中含有会干扰通信的红外线。
红外波的应用
- 近 400 太赫兹的红外波段具有极好的数据传输潜力。如此宽的带宽可用于以非常高的数据速率传输数字数据。
- 红外数据协会(IrDA)是一个支持使用红外波的协会,它已经建立了使用这些信号在键盘、鼠标、个人电脑和打印机等设备之间进行通信的标准。
- 红外信号可用于使用视线传播的封闭区域内的短距离通信。
通信网络的类型
原文:https://www.studytonight.com/computer-networks/types-of-networks
通信网络可以分为以下 5 种类型:
- 局域网
- 城域网
- 广域网
- 无线电
- 互联网
局域网
它也被称为局域网,设计用于小型物理区域,如办公室、一组建筑物或工厂。局域网被广泛使用,因为它易于设计和故障排除。个人计算机和工作站通过局域网相互连接。我们可以通过局域网使用不同类型的拓扑,它们是星形、环形、总线、树形等。
局域网可以是一个简单的网络,就像连接两台计算机一样,在彼此之间共享文件和网络,同时它也可以像互连整个建筑一样复杂。
局域网也被广泛用于共享资源,如打印机、共享硬盘等。
局域网的特点
- 局域网是私有网络,不受关税或其他监管控制。
- 与典型的广域网相比,局域网的运行速度相对较高。
- 局域网中有不同类型的媒体访问控制方法,最突出的是以太网、令牌环网。
- 它将计算机连接在一个建筑物、街区或校园中,即它们在一个有限的地理区域内工作。
局域网的应用
- 网络中的一台计算机可以成为一台服务器,服务于所有剩余的称为客户机的计算机。软件可以存储在服务器上,其余的客户端也可以使用。
- 本地连接一个建筑中的所有工作站,让它们在没有任何互联网接入的情况下在本地相互通信。
- 共享打印机等公共资源是局域网的一些常见应用。
局域网的优势
- 资源共享:打印机、调制解调器、DVD-ROM 驱动器和硬盘等计算机资源可以在局域网的帮助下共享。这降低了成本和硬件购买。
- 软件应用程序共享:通过网络使用相同的软件比通过网络为每个客户端购买单独的许可软件更便宜。
- 简单廉价的通信:数据和消息可以通过联网的计算机轻松传输。
- 集中数据:所有网络用户的数据都可以保存在服务器计算机的硬盘上。这将帮助用户使用网络中的任何工作站来访问他们的数据。因为数据不是本地存储在工作站上。
- 数据安全:由于数据集中存储在服务器计算机上,只需在一个地方管理数据就很容易,数据也更安全。
- 互联网共享:局域网提供了在所有局域网用户之间共享单一互联网连接的设施。在网吧,单一的互联网连接共享系统使上网费用更便宜。
局域网的缺点
- 安装成本高:虽然局域网由于共享计算机资源会随着时间的推移节省成本,但安装局域网的初始安装成本很高。
- 隐私侵犯:局域网管理员有权检查每个局域网用户的个人数据文件。此外,他可以查看局域网用户的互联网历史和计算机使用历史。
- 数据安全威胁:如果局域网管理员没有适当保护集中式数据存储库,未经授权的用户可以访问组织的重要数据。
- 局域网维护作业:局域网需要局域网管理员,因为局域网中存在软件安装或硬件故障或电缆干扰的问题。这项全职工作需要一名局域网管理员。
- 覆盖有限区域:局域网覆盖一个办公室、一栋楼或附近一组楼这样的小区域。
城域网
发展于 20 世纪 80 年代。基本上是更大版本的局域网。它也被称为城域网,使用与局域网相似的技术。它的设计覆盖了整个城市。它可以是将多个局域网连接成一个更大的网络,也可以是一根电缆。它主要由单一私营公司或上市公司持有和经营。
城域网的特点
- 一般覆盖城镇(50 公里)
- 用于城域网的通信介质有光纤、电缆等。
- 适合分布式计算应用的数据速率。
城域网的优势
- 极其高效,并通过高速载体(如光纤电缆)提供快速通信。
- 它为大型网络提供了良好的基础,并提供了对广域网的更多访问。
- 城域网中使用的双总线有助于同时双向传输数据。
- 一个人通常包括一个城市的几个街区或整个城市。
城域网的缺点
- 从一个地方到另一个地方的城域网连接需要更多的电缆。
- 很难使系统免受黑客和工业间谍(间谍)图形区域的攻击。
广域网
也叫广域网。广域网可以是专用网络,也可以是公共租赁网络。它用于覆盖大距离的网络,例如覆盖一个国家的州。设计和维护都不容易。广域网使用的通信媒介是 PSTN 或卫星链路。广域网以低数据速率运行。
广域网的特点
- 它通常覆盖很大的距离(州、国家、大陆)。
- 使用的通信媒介是由路由器连接的卫星公共电话网络。
广域网的优势
- 覆盖很大的地理区域,因此长途业务可以在一个网络上连接。
- 与连接的工作站共享软件和资源。
- 消息可以非常快速地发送给网络上的任何其他人。这些邮件可以包含图片、声音或数据(称为附件)。
- 昂贵的东西(如打印机或连接到互联网的电话线)可以由网络上的所有计算机共享,而不必为每台计算机购买不同的外围设备。
- 网络上的每个人都可以使用相同的数据。这避免了一些用户可能拥有比其他用户更老的信息的问题。
广域网的缺点
- 需要一个好的防火墙来限制外人进入和破坏网络。
- 建立网络可能是一项昂贵、缓慢且复杂的工作。网络越大越贵。
- 一旦建立,维护网络是一项全职工作,需要雇用网络主管和技术人员。
- 当许多不同的人有能力使用来自其他计算机的信息时,安全性是一个真正的问题。防范黑客和病毒增加了复杂性和费用。
无线网络
数字无线通信不是一个新的想法。早些时候,莫尔斯电码被用来实现无线网络。现代数字无线系统性能更好,但基本思想是一样的。
无线网络可以分为三大类:
- 系统互联
- 无线局域网
- 无线广域网
系统互连
系统互连就是使用短程无线电将计算机的各个组件互连起来。一些公司联合起来设计了一个名为蓝牙的短程无线网络,将显示器、键盘、鼠标和打印机等各种组件连接到主机上,无需电线。蓝牙还允许数码相机、耳机、扫描仪和其他设备只需进入范围内就可以连接到计算机。
最简单的形式是,系统互连网络使用主从概念。系统单元通常是主控,与鼠标、键盘等对话。作为的奴隶。
无线局域网
在这些系统中,每台计算机都有一个无线电调制解调器和天线,通过它们可以与其他系统通信。无线局域网在小型办公室和家庭中越来越普遍,在这些地方安装以太网被认为太麻烦了。无线局域网有一个标准叫做 IEEE 802.11 ,大多数系统都实现了这个标准,而且这个标准正在变得非常普遍。
无线广域网
用于蜂窝电话的无线电网络是低带宽无线广域网的一个例子。这个体系已经经历了三代。
- 第一代是模拟的,只用于语音。
- 第二代是数字的,只用于语音。
- 第三代是数字的,用于语音和数据。
英特尔网络
互联网是两个或多个网络的组合。内部网络可以通过路由器、网关和网桥等各种设备将两个或多个单独的网络连接起来而形成。
面向连接和无连接的服务
原文:https://www.studytonight.com/computer-networks/connection-oriented-and-connectionless-service
这是两个由层提供给它们上面的层的服务。这些服务是:
- 面向连接的服务
- 无连接服务
面向连接的服务
面向连接的服务的用户需要遵循一系列的操作。这些是:
- 连接建立。
- 信息被发送。
- 连接被释放。
在面向连接的服务中,我们必须在开始通信之前建立连接。当连接建立时,我们发送消息或信息,然后释放连接。
面向连接的服务比无连接的服务更可靠。如果接收端出现错误,我们可以在面向连接的服务中发送消息。面向连接的例子是传输控制协议。
无连接服务
它类似于邮政服务,因为它承载着邮件(信件)的完整地址。每条消息都独立地从源路由到目的地。发送消息的顺序可以不同于接收消息的顺序。
在无连接的情况下,数据从源向目的地单向传输,而不检查目的地是否还在,也不检查它是否准备接受消息。在这种情况下不需要身份验证。无连接服务的例子是 UDP(用户数据报协议)协议。
区别:面向连接和无连接服务
- 面向连接的服务需要认证,而无连接的服务不需要任何认证。
- 面向连接的协议建立连接,检查是否收到消息,如果出现错误,则再次发送,而无连接服务协议不保证消息传递。
- 面向连接的服务比无连接的服务更可靠。
- 面向连接的服务接口是基于流的,无连接的是基于消息的。
什么是服务原语?
服务由用户进程访问服务时可用的一组原语(操作)正式指定。这些原语告诉服务执行一些动作或报告对等实体采取的动作。如果协议栈通常位于操作系统中,那么原语通常是系统调用。这些调用导致内核模式陷入陷阱,然后内核模式将机器的控制权移交给操作系统,以发送必要的数据包。可用的原语集取决于所提供服务的性质。面向连接服务的原语不同于无连接服务的原语。有五种类型的服务原语:
- LISTEN : 当服务器准备好接受传入连接时,它会执行 LISTEN 原语。它会阻止等待传入的连接。
- CONNECT : 它通过建立连接来连接服务器。等待回应。
- receive:然后 receive 调用阻塞服务器。
- 发送:然后客户端执行发送原语来发送其请求,然后执行接收来获得回复。发送消息。
- DISCONNECT : 该原语用于终止连接。在这种原始状态之后,一个人不能发送任何信息。当客户端发送 DISCONNECT 数据包时,服务器也会发送 DISCONNECT 数据包来确认客户端。当客户端收到服务器包时,该过程终止。
面向连接的服务原语
面向连接的服务有 5 种基本类型:
| 听 | 阻止等待传入的连接 |
| 关系 | 与等待的对等方建立连接 |
| 接收 | 阻止等待传入消息 |
| 派遣 | 向对等方发送消息 |
| 拆开 | 终止连接 |
无连接服务原语
面向无连接服务有 4 种基本类型:
| 统一日期 | 这个原语发送一个数据包 |
| 设施,报告 | 用于查询网络性能的原语,如交付统计。 |
服务与协议的关系
在本节中,我们将了解服务和协议是如何相关的,以及它们为什么对彼此如此重要。
什么是服务?
这些是在OSI 参考模型中,一个层可以向它上面的层提供的操作。它定义了操作并声明一个层已经准备好执行,但是它没有指定任何关于这些操作的实现。
什么是协议?
这些是管理服务器和客户端之间交换的帧、消息或数据包的格式和含义的一组规则。
网络层
服务质量
原文:https://www.studytonight.com/computer-networks/quality-of-serviceqos
在本教程中,我们将介绍计算机网络中服务质量的概念。
服务质量(QoS) 基本上是对不同的应用、用户或数据流提供不同优先级的能力,或者是为了保证数据流有一定的性能水平。
换句话说,我们也可以将服务质量定义为流程想要达到的东西。
QoS 基本上是计算机网络的整体性能。网络的性能主要由网络用户来看。
让我们先了解一下流程的特征:
流动特性
下面给出了主要归因于流量的四种类型的特征,如下所示:
-
可靠性
-
耽搁
-
振动
-
带宽
可靠性
这是流量需要的主要特征之一。如果缺乏可靠性,那么这仅仅意味着丢失任何分组或丢失确认,因为这需要重传。
可靠性对于电子邮件、文件传输和互联网访问变得更加重要。
耽搁
流的另一个特征是源和目的地之间的传输延迟。在音频会议、电话会议、视频会议和远程会议期间,应该有最小的延迟。
振动
基本上属于同一流的包的延迟变化。因此,抖动基本上是数据包延迟的变化。抖动值越高意味着延迟越大,抖动越低意味着变化越小。
带宽
不同的应用需要不同的带宽。
如何实现服务质量?
让我们进入一些细节并说,您的组织想要实现服务质量,这可以通过使用一些工具和技术来完成,如抖动缓冲和流量整形。
抖动缓冲器
这是一个临时存储缓冲器,用于存储传入的数据包,它用于基于数据包的网络中,以确保数据流的连续性不受干扰,它通过在网络拥塞期间平滑数据包到达的时间来做到这一点。
流量整形
这种技术也被称为分组整形是一种拥塞控制或管理技术,通过延迟最不重要或最不必要的数据分组的流动来帮助调节网络数据传输。
当组织与其网络服务提供商签署服务级别协议时,服务质量包含在协议中,以保证所选的性能级别。
有两种类型的服务质量解决方案:
-
无状态解决方案: 这里,不要求服务器将服务器信息或会话细节保存或存储到自身。路由器没有保持关于流量的细粒度状态,一个积极的因素是,它是可扩展和健壮的。但是,它的服务也很弱,因为在我们遇到的特定应用中无法保证性能延迟的种类。在无状态解决方案中,服务器和客户端是松散耦合的,可以进行操作。
-
有状态解决方案: 在这里,服务器需要维护当前状态和会话信息,路由器维护每流状态,因为流在提供服务质量方面非常重要,服务质量提供了有保证的服务和高资源利用率等强大的服务,提供了保护,并且远没有那么可扩展和健壮。这里,服务器和客户端是紧密绑定的。
服务质量参数:
服务质量可以通过使用几个参数来定量测量
-
丢包:发生在网络链路拥塞,路由器和交换机开始丢弃数据包的时候。当这些数据包在实时通信(如音频或视频)过程中丢失时,这些会话可能会出现抖动和语音间隙。
-
抖动:由于网络拥塞、时间漂移和路由变化而出现。此外,过多的抖动会降低音频通信的质量。
-
延迟:是数据包从源传输到目的地所花费的时间延迟。对于一个优秀的系统,延迟应该尽可能低,理想情况下,应该接近零。
-
带宽:是网络信道在一定时间内通过信道传输最大可能数据的能力。服务质量通过管理带宽和为那些与其他应用程序相比需要更多资源的应用程序设置优先级来优化网络。
-
平均意见得分:这是一个音频质量评分指标,采用五分制,五分表示最高或最好的质量。
实施服务质量:
我们可以通过以下三种现有模式实施服务质量:
-
尽力而为:如果我们应用这个模型,那么这意味着我们对所有的数据包进行同等的优先级排序。但是既然我们都这样设置优先级顺序,那么就不能保证所有的数据包都会被传递,但是它会尽最大努力传递所有的数据包。需要记住的一点是,当网络没有配置服务质量策略或网络基础设施不支持服务质量时,应采用尽力而为模式。
-
综合服务:或者说 IntServ,这个 QoS 模型保留了网络上特定路径的带宽。应用程序要求网络为自己预留资源,同时网络设备监控数据包的流动,以确保网络资源能够接受数据包。需要记住的是:在实现集成服务模型时,支持 IntServ 的路由器和资源预留协议是必要的。该模型扩展性有限,网络资源消耗高。
-
差异化服务:在这个 QoS 模型中,路由器、交换机等网元被配置为以不同的优先级顺序服务多类流量。公司可以根据其需求对网络流量进行分类。例如,为音频流量分配更高的优先级等。
让我们了解集成服务和差异化服务之间的区别:
综合服务 | 差异化服务 |
---|---|
该架构主要规定了保证网络服务质量的要素。 | 该架构主要指定了一种简单且可扩展的机制,用于对网络流量进行分类和管理,并在现代 IP 网络上提供服务质量。 |
这些服务主要涉及在发送之前预先预留资源,以实现服务质量。 | 这些服务用优先级标记数据包,然后将其发送到网络,并且没有预先预留的概念。 |
它也被称为 IntServ。 | 它也被称为 DiffSer。 |
这些是不可伸缩的 | 这些是可扩展的。 |
这些包括每个流程的设置 | 这些涉及长期设置 |
在这种情况下,端到端服务范围是可用的。 | 这个领域涉及服务范围 |
计算机网络中的网络层
原文:https://www.studytonight.com/computer-networks/network-layer-in-computer-networks
在本教程中,我们将介绍 OSI 模型网络层的概念。
网络层是 OSI 参考模型的第 3 层。网络层控制子网的运行。该层的主要目的是通过多条链路(网络)将数据包从源传送到目的地。它通过不同的通道将信号路由到另一端,并充当网络控制器。
因为数据链路层监督同一网络上两个系统之间的数据包传递;网络层主要确保每个数据包从其起点到达最终目的地。
它还将传出的消息分成数据包,并将传入的数据包组装成更高级别的消息。
在广播网络中,路由问题很简单,因此网络层通常很薄甚至不存在。
如果两台计算机(系统)连接在同一链路上,则不需要网络层。但是,如果两个系统通过网络(链路)之间的连接设备连接到不同的网络(链路),则需要网络层来完成源到目的地的传送。
图:网络层
网络层的主要职责是将单个数据包从源主机传送到目的主机。
网络层的职责/功能
下面给出了网络层的一些其他职责。
-
网络层将较大的数据包分解成较小的数据包。
-
提供连接服务,包括网络层流量控制、网络层错误控制和分组序列控制。
-
逻辑寻址
数据链路层实现的物理寻址处理本地寻址的问题。网络层向来自上层的数据包添加报头,该报头还包括发送方和接收方的逻辑地址。 -
路由
当独立的网络或链路连接在一起以创建互联网络/大型网络时,路由设备(路由器或交换机)将数据包路由到最终目的地。这是网络层的主要功能之一。
网络层提供的服务
1。数据包的保证传送
网络层保证数据包到达目的地。
2。有限制延迟的保证传送
这是网络层提供的另一种服务,它保证数据包一定会在指定的主机到主机延迟范围内传送。
3。按顺序传送数据包
根据这项服务,确保数据包按照发送方发送的顺序到达目的地。
4。安全性
网络层通过使用源主机和目的主机之间的会话密钥来提供安全性。
网络层服务的优势
下面给出了网络层提供的服务的一些好处:
-
通过网络层的转发服务,数据包在网络中从一个地方传输到另一个地方。
-
为了减少流量,网络层的路由器会产生冲突并广播域。
-
数据通信系统中的故障通过分组化得以消除。
网络层服务的缺点
-
在网络层的设计中,缺乏流量控制
-
在网络层,缺乏适当的错误控制机制;由于碎片数据分组的存在,错误控制机制的实现变得困难。
-
由于存在太多的数据报,会发生拥塞。
从源到目的地的交付
让我们理解网络层从源到目的地的传输示例:
在上图中,A 节点的网络层将数据包发送到 B 节点的网络层。当数据包到达路由器 B 时,路由器会根据最终目的地(即所传输数据包的 F 节点)来决定路径。路由器 B 利用其路由表寻找下一跳,即路由器 E。节点 B 的网络层将数据包发送到 E 的网络层,然后网络层将数据包发送到 f 的网络层
网络层的设计问题
-
一个关键的设计问题是确定数据包如何从源路由到目的地。路由可以基于连接到网络的静态表,并且很少改变。它们也可以是高度动态的,为每个数据包重新确定,以反映当前的网络负载。
-
如果子网中同时存在太多的数据包,它们会相互干扰,形成瓶颈。这种拥塞的控制也属于网络层。
-
此外,提供的服务质量(延迟、传输时间、抖动等)也是网络层问题。
-
当数据包必须从一个网络传输到另一个网络才能到达目的地时,会出现许多问题,例如:
-
第二网络使用的寻址可能与第一网络不同。
-
第二个可能根本不接受数据包,因为它太大了。
-
协议可能不同,等等。
-
-
网络层需要克服所有这些问题,以允许异构网络互联。
IGMP 协议
原文:https://www.studytonight.com/computer-networks/igmp-protocol
在本教程中,我们将介绍计算机网络中网络层的 IGMP 协议。
IGMP 是互联网组管理协议(IGMP)的缩写。互联网协议主要涉及两种类型的通信,即单播和多播。IGMP 协议是多播中必需的但不是有效的协议之一。
IGMP 基本上是互联网协议的伙伴。
IGMP 不是一个多播路由协议,但它是一个管理组成员的协议。该协议主要帮助组播路由器创建和更新与每个路由器接口相关的忠实成员列表。
该协议用于流式视频、游戏或网络会议工具。
IGMP 信息
IGMP 有两个版本:IGMPv1 和 IGMPv2。
IGMPv2 版本有三种类型的消息:
-
查询
-
会员报告
-
休假报告。
查询消息有两种类型:常规和特殊
消息格式
现在让我们看看 IGMP 的格式(第 2 版):
类型
这是一个 8 位字段,主要用于定义消息的类型。该类型的值可以是十六进制和二进制表示法。
类型 | 价值 |
---|---|
常规或特殊查询 | 0x11 或 00010001 |
会员报告 | 0x16 或 00010110 |
休假报告 | 0x17 或 00010111 |
最大响应时间
该字段的大小也是 8 位,它主要定义查询必须被回答的时间量。该字段的值在查询消息中不为零;而在其他两种类型中,它的值为零。
校验和
该字段的大小为 16 位,并携带校验和。校验和主要通过 8 字节消息计算。
群组地址
在一般查询消息的情况下,该字段的值为 0。在特殊查询、成员报告和离开报告消息的情况下,该字段的值定义了 groupid。
IGMP 的工作
该协议主要工作在能够处理多组的设备上,用于动态组播;这些设备主要允许主机加入或退出多播组。
此外,允许这些设备在组中添加和删除客户端。
IGMP 协议主要在主机和本地组播路由器之间的中运行。
当创建多播组时,多播组地址在 D 类(224-239) IP 地址的范围内,并且作为分组中的目的地 IP 地址被转发。
L2 的意思是开关之类的二级设备;这些主要用于主机和组播路由器之间对 IGMP 的窥探。
IGMP 监听:这是一个用于以受控方式监听 IGMP 网络流量的过程。
交换机主要接收来自主机的消息,然后将成员报告主要转发给本地多播路由器。之后,组播流量使用 PIM(协议无关组播)协议从本地组播路由器进一步转发到远程路由器,以便客户端可以接收消息/数据包。
如果客户端希望加入网络,那么它们可以在查询中发送加入消息,然后交换机截取该消息,然后将客户端的端口添加到其多播路由表中。
IGMP 行动
互联网组管理协议在本地运行。连接到网络的多播路由器主要具有该网络中至少有一个忠实成员的组的多播地址列表。对于每个组,主要有一台路由器负责分发发往该组的多播数据包。
这简单地表明,在这种情况下,如果有三个多播路由器连接到一个网络,那么它们的组号列表是互斥的。****
**
以下是 IGMP 的业务情况:
-
加入团体
-
在此操作中,主机和路由器都可以加入一个组。每当主机上的一个进程想要加入一个组时,它只需将请求发送给主机。然后,主机将进程名和组名添加到列表中。
-
在这种情况下,如果这是该特定组的第一个条目,则主机向该组的多播路由器发送成员报告消息。
-
如果该条目不是第一个条目,则不需要发送这样的消息。
-
-
离队
-
每当主机发现没有对该组感兴趣的进程时,它主要会留下一条报告消息。
-
该组的组播路由器不会对成员资格进行消毒,而是立即重复发送查询包,看看是否还有人感兴趣。
-
如果它以成员报告消息的形式得到响应,那么主机或网络的成员资格将被保留。
-
-
监控成员资格
主要是一般的查询消息没有定义特定的组。 -
延迟响应
为了防止不必要的流量,IGMP 主要采用延迟响应策略。
IGMP 的优势
下面列出了 IGMP 提供的一些好处:
-
在这个协议的帮助下,带宽被有效地利用,因为所有的共享链路都是连接的。
-
使用该协议,主机可以立即离开多播组,然后加入另一个组。
-
该协议的性能得到了优化,因为没有向主机传输垃圾数据包。
IGMP 的缺点
以下是 IGMP 的一些缺点:
-
在过滤和安全期间,它不能提供良好的效率。
-
该协议容易受到拒绝服务攻击。
-
由于缺少 TCP,可能会出现网络拥塞。**
参考模型
计算机网络中的参考模型
原文:https://www.studytonight.com/computer-networks/reference-models-in-computer-networks
在本教程中,我们将介绍计算机网络中的参考模型。
在过去的几十年中,许多构建的网络使用不同的硬件和软件实现,因此它们是不兼容的,因此使用不同规范的网络很难相互通信。
为了解决这个问题:网络不兼容,无法相互通信。OSI 研究了各种网络方案。之后,他们认识到有必要创建一个网络模型,帮助供应商创建网络的互操作实现。
现在让我们了解什么是参考模型?
参考模型
它是一种概念布局,主要用于描述设备之间的通信应该如何发生。
-
参考模型的主要优势之一是它定义了构建网络组件的标准,从而允许多供应商开发。
-
参考模型定义了应该在模型的每一层执行哪些功能,因此它们促进了标准化。
最重要的参考模型有:
-
OSI 参考模型。
-
TCP/IP 参考模型。
OSIOSI 模型简介
有许多用户使用计算机网络,分布在世界各地。确保国家和世界范围的数据通信。)开发了这个模型。这被称为开放系统互连模型,通常被称为开放系统互连模型。OSI 模型架构由七层组成。它在一个完整的通信系统中定义了七个层次。这七层相互连接。OSI 参考模型将在另一章中详细解释。
OSI 模型的七层如下:
-
物理层
-
数据链路层
-
网络层
-
传输层
-
会话层
-
表示层
-
应用层
TCP/IP 参考模型介绍
TCP/IP 是传输控制协议和互联网协议。协议是一套管理互联网上所有可能的通信的规则。这些协议描述了主机或互联网之间的数据移动,并提供了简单的命名和寻址方案。
TCP/IP 参考模型将在另一章中详细解释。
TCP/IP 模型中的层如下:
-
网络接入层
-
互联网层
-
传输层
-
应用层
物理层
数字传输
原文:https://www.studytonight.com/computer-networks/digital-transmission
在本教程中,我们将介绍计算机网络中数字传输的概念。
正如我们在之前的教程中已经告诉您的那样,数据以模拟或数字两种形式表示。计算机只能理解 0 或 1 形式的二进制语言,并且还以数字形式存储信息。
因此,我们需要将数据转换成数字形式,以便计算机能够理解。
下面给出了用于数据传输的转换方法:
-
数字到数字转换
-
模数转换
-
数模转换
-
模数转换
因为我们想把数据转换成数字形式。因此,我们将讨论数字-数字转换和模拟-数字转换
1.数字到数字转换
正如我们已经告诉你的,数据可以是模拟形式,也可以是数字形式。因此,让我们学习如何以数字信号的形式表示数字数据。
用于这种转换的三种技术如下:
-
线路编码
-
分组编码
-
登山
线路编码
它是用于将数字数据转换为数字信号的过程。让我们假设数据是以文本、数字、音频或视频的形式存在的,并且它是以位序列的形式存储在计算机中的。因此,行编码过程将比特序列转换成数字信号。
在发送端,数字数据被编码成数字信号,而在接收端,数字数据通过解码数字信号被重新创建。
上图显示了线路编码和解码
线路编码方案可以大致分为五类:
-
单极的
-
极地的
-
双极的
-
多层次的
-
多重过渡
单极方案
在这种线路编码方案中,所有信号电平都在时间轴的一侧。它可以在上面,也可以在下面。基本上,单极方案被设计为不归零(NRZ) 方案,其中正电压定义位 1 ,零电压定义位 0。
单极性方案仅使用一个电压电平。之所以称之为 NRZ ,是因为信号在比特中间没有归零。
单极核管制区方案
这种编码方案价格低廉,易于实现。
极地方案
在这种线路编码方案中,电压位于时间轴的两侧。我们举个例子:0 的电压电平可以是正的,1 的电压电平可以是负的。
因此,在极性 NRZ 编码中,我们使用了两个电平的电压幅度。
极地自然资源保护区有两个版本:
-
NRZ-L(NRZ-level)
在这种情况下,电压的高低主要决定了位的值。因此,信号的电平取决于位的值。 -
NRZ-I(NRZ-Invert)
在这种情况下,电压电平的变化主要决定位的值。假设如果没有变化,则该位为 0;如果有变化,该位为 1。
在上图中,如果下一位为 0,则没有反转。但是如果下一位是 1,那么将会有反转
双极方案
在双极方案中,有三个电压电平:正、零和负。在这种情况下,一个数据元素的电压电平为 0,而其他元素的电压电平在正和负之间交替。
下面给出了双极编码的两种变体:
- AMI(交替标记反转)
简单来说就是交替 1 反转。在这种中性状态下,零电压代表二进制 0,而二进制 1 由正负电压交替表示。
图为双极 AMI 编码
- 伪三值
在本例中,1 位被编码为零电压,而 0 位被编码为交替的正电压和负电压
图为双极伪三元方案
多级方案
多级编码方案也称为mBnL;
其中:
m 表示二进制模式的长度。
B 表示二进制数据
n 表示信号模式的长度
L 表示信号中的电平数。
该方案的三个不同版本是:
-
2B1Q
-
8B6T
-
4D 粮食计划署 5
多重过渡(MLT-3)
这种技术使用三个级别(+V,0,-V),并且它还使用三个以上的转换规则来在级别之间移动。
规则是:
-
如果下一位为 0,则没有跃迁。
-
如果下一个位是 1,而当前电平不是 0,那么下一个电平将是 0。
-
如果下一位是 1,并且当前电平也是 0,则下一电平与最后一个非零电平相反。
这种技术不会在长 0s 内执行自同步。
分组编码
线路编码的主要问题是冗余。分组码主要对一个比特块进行操作。它们利用预设的算法,获取该组比特,然后向它们添加编码部分,以使它们成为一个大块。
然后,在接收机决定接收序列的有效性之后,在接收机检查这个大块。
因此,块编码将 m 比特的块改变成 n 比特的块,其中n>m
这种块编码技术也被称为 mB/nB 编码。
这种技术克服了行编码的缺点,并给出了更好的性能。
块编码的不同版本如下:
-
4B/5B
-
8B/10B
登山
我们可以通过包括加扰来修改行和块编码。需要注意的是,与块编码相反,加扰主要是在编码时完成的。
主要是系统需要根据加扰规则插入所需的脉冲。
下面给出了两种常用的加扰技术:
- B8ZS(双极带 8-零替换)
用这种技术,八个连续的零电平电压被 000VB0VB 的序列替换。
在这个序列中,V 主要表示违规,这基本上是一个打破编码 AMI 规则的非零电压。
给定序列中的 B 表示双极性,根据 AMI 规则,双极性简单地表示非零电压电平。
下图显示了 B8ZS 置乱技术的两种情况:
- HDB3(高密度双极 3-零
这种技术比 B8ZS 更保守,在这种情况下,连续四个零电平电压被 000 伏或 B00V 的序列代替。两种不同替换的主要原因只是为了在每次替换后保持非零脉冲的偶数。
为此,有两个规则如下:
1。如果最后一次替换后的非零脉冲数为奇数,那么我们将使用 000V 替换模式,然后使非零脉冲总数为偶数。
2。如果最后一次替换后的非零脉冲数为偶数、、,则使用 B00V 替换模式,使非零脉冲总数为偶数。
下图显示了 HDB3 置乱技术中的不同情况:
计算机网络中的多路复用
原文:https://www.studytonight.com/computer-networks/multiplexing-in-computer-networks
在本教程中,我们将介绍计算机网络中多路复用的概念。
允许在单个数据链路上同时传输多个信号的一组技术通常称为多路复用。多路复用是通过使用称为多路复用器(多路复用器)的硬件来完成的。
复用器 (MUX) 主要组合‘n’条输入线,以便在发送端生成‘1’条输出线(这只是多对一)。在接收器端,该流被馈送到解复用器 (DEMUX) ,然后该解复用器将该流分离回其分量传输(这是一对多),然后将它们导向它们相应的线路。
复用技术的主要目的是共享稀缺资源。
让我们借助下面给出的图表来理解如何将 1 条链路分成 n 个通道:
在上图中,单词 link 指的是物理路径,单词 channel 简单地指的是链路中承载给定线路对之间传输的部分。因此,一条链路可以有许多通道。
多路复用的历史
在电信中,几个电话可以用一根电线传送。此外,多路复用起源于 19 世纪 70 年代的电报。现在,这项技术被广泛应用于通信领域。电话领域的乔治·欧文·斯奎尔被认为在 1910 年发展了电话载波多路复用技术。
多路复用的需求
正如我们已经告诉您的,多路复用基本上是一套技术,主要允许通过信号数据链路同时传输多个信号。
当需要从同时发送的发送端发送许多信号时,使用多路复用器将许多信号转换成一个信号,以便在接收端我们可以同时获得它们。
因为以不同的方式发送许多信号非常昂贵,而且还需要更多的线路来发送。因此,需要多路复用。让我们举一个电视电缆分配器的例子,它通过一根电线发送多个频道。
多路复用的优势
下面给出了使用多路复用的一些优点:
-
在多路复用的帮助下,可以通过单一介质或链路轻松发送多个信号。
-
多路复用有助于有效利用介质的带宽。
让我们看一下下图,了解多路复用与非多路复用:
多路复用的类别
让我们来看看多路复用的不同类别:
-
频分复用
-
波分复用
-
时分多路复用
让我们在接下来的章节中一个接一个地讨论上面给出的所有类别。
1.频分复用
频率除运算复用,即 FDM 是一种模拟技术。
-
利用这种技术,具有不同频率的信号被组合成复合信号,然后在链路上传输
-
主要应用于链路的带宽大于待传输信号的组合带宽的时间。
-
在这种情况下,每个信号具有不同的频率。
-
为了防止信号重叠,信道通常由未使用的带宽带即保护带分隔开。
-
在频分复用的情况下,假设输入信号是数字形式,那么在将其作为调制器的输入之前,必须将其转换为模拟形式。
频分复用
从上图来看,在 FDM 中,传输路径分为三个部分,每个部分主要代表一个通道,承载一个传输。
优势
下面给出了使用 FDM 的一些优势:
-
大量信号的同时传输很容易完成。
-
FDM 多路复用的解调很容易。
-
为了正常工作,发射机和接收机之间不需要同步。
-
在慢窄带衰落的情况下,只有一个信道受到影响。
不足之处
使用 FDM 有一些缺点:
-
通信信道必须具有非常大的带宽。
-
使用 FDM 时会出现串扰问题。
-
在宽带衰落的情况下,FDM 的所有信道都会受到影响。
-
需要大量的滤波器和调制器。
应用程序
FDM 的主要应用如下:
-
FDM 的主要应用之一是调幅和调频广播。
-
FDM 的另一个应用是它被用于电视广播。
-
第一代移动电话也使用 FDM。
2.波分复用
波长除运算复用,即 WDM 是一种模拟技术。
-
这个手法类似于 FDM 。
-
借助于波长除运算复用不同的信号,包括:光或光信号通过光纤传输。
-
在 WDM 技术的帮助下,光缆的高数据速率能力得到了利用。
-
利用这种技术,来自不同光源的各种光波被组合成复合光信号,该信号通过信道传输到接收器。
-
在接收器端,这个复合光信号在解复用器的帮助下被分解成不同的光波。
-
光波的合成和分裂过程是在棱镜的帮助下完成的。
-
这个棱镜有助于根据光的入射角和频率弯曲光束。
-
在 WDM 技术中,多路复用器的作用主要由棱镜发挥,然后它组合各种光信号,以便形成复合信号,然后该复合信号通过光纤电缆传输。
上图表示波分复用
让我们看看下面给出的图表,其中我们将使用棱镜进行波分复用和解复用。
优势
下面给出了使用 WDM 的一些优势:
-
在 WDM 的帮助下,全双工传输是可能的。
-
WDM 很容易重新配置。
-
在 WDM 的帮助下,各种信号可以同时传输。
-
这种技术成本较低,系统的扩展也很容易。
-
这种技术提供了很高的安全性。
-
因为我们在 WDM 使用光纤;此外,光学元件更可靠,并且它们还提供高带宽。
不足之处
使用 WDM 有一些缺点:
-
有使用光学设备,所以成本增加。
-
带宽的利用可能是低效的,这导致波长调谐的困难。
-
这项技术的主要关注点是可伸缩性。
3.时分复用
时间除运算复用是一种数字复用技术。
-
在这种技术中,信道/链路是根据时间而不是频率来划分的。
-
信道上的总可用时间在信道上的不同用户之间分配。
-
特定的时间间隔被分配给信道上的每个用户,它被称为时隙/片。
-
在时分复用中,数据速率容量应该远大于发送和接收设备所需的数据速率。
时分复用进一步分为两类:
-
同步时间除运算复用
-
异步时间除运算复用
1.同步时间除运算复用
在同步时分复用中,每个输入连接在输出中都有一个分配,即使它没有发送数据。
-
在这种多路复用中,每个设备都有相同的时隙,以便通过链路传输数据,而不管它是否必须向接收器发送数据。
-
每当它的时隙到达时,每个设备都将数据放在链路上,因此控制被轮流给予每个设备。
-
如果任何设备没有任何数据要发送,那么在这种情况下,该设备的时隙保持为空。
-
在这种多路复用中,如果有“n”个发送设备,那么同时会有“n”个时隙,这意味着每个设备有一个时隙。
-
此外,时隙以帧的形式组织,其中每个帧由一个或多个时隙组成。
优势
- 这种技术很容易实现。
- 使用这种技术可以保证性能。
缺点
-
如果用户没有数据要传输,那么时隙将被浪费。
-
在这种多路复用中,传输链路的容量必须始终高于输入线路的总容量。
2.异步时间除运算复用
异步时分复用的另一个名称是静态时间除运算复用。在这种情况下,时隙不是固定的,而是动态分配的,以提高带宽效率。
-
所有输入线路的总速度可能大于路径的容量。
-
在这个复用中,有 n 条输入线和 m 个时隙;因此总是(m
-
没有预定义时隙的概念,而是按需动态分配时隙。
-
在这种多路复用中,多路复用器主要接受输入数据,然后创建一个只包含数据而没有任何空槽的帧。
-
每个槽主要包含用于识别输入数据来源的地址部分。
-
这种多路复用中的帧数取决于对输入线数量的静态分析。
因此,在上图中,6 台设备中只有 4 台设备发送的数据是 1、2、4、6。在上图中,您可以看到数据部分包含地址,以便确定数据的来源。像 A1 (数据及其来源)。
优势
- 在这种多路复用中,传输容量得到了有效利用。
缺点
-
在这种多路复用中,帧大小不同。
-
还需要缓冲器地址信息,因为没有为每个用户分配单独的时隙。
-
这种技术不提供固定的等待时间保证。
计算机网络中的交换
原文:https://www.studytonight.com/computer-networks/switching-in-computer-networks
在本教程中,我们将讨论计算机网络最重要的概念之一切换。
我们知道,网络主要是一组连接设备。但是,当我们必须连接网络中的多个设备时,就会出现连接问题,那就是如何连接它们,从而实现一对一的通信。一种解决方案是在每对设备之间建立点对点连接,或者在中央设备和其他设备之间建立点对点连接。但是这个解决方案的实际实现在大网络时代是不可能的。
这个问题比较好的解决方法是切换。现在让我们继续讨论交换和交换网络的概念。
在计算机网络中,交换是最重要的概念之一。
不同计算机网络和网段之间进行信息交换的机制通常被称为交换。
交换网络
交换网络基本上由一系列相互连接的节点组成。这些相互连接的节点被称为开关。
-
因此,在交换网络中,通常通过使用交换机来提供连接。
-
交换机是能够在两个或多个设备之间创建临时连接的设备。
-
在这个网络中,一些交换机连接到终端系统(如计算机系统或电话),而其他交换机用于路由。
-
网络设备交换机主要是 OSI 模型的第 2 层设备。
-
交换机根据媒体访问控制地址转发数据包。
-
因此,交换机主要只将数据传输到已寻址的设备(意味着有正确的 mac 地址)。因为目的地址的验证是由交换机完成的,以便正确路由数据包。
图:交换网络
上图中;a、B、C、D、E、F、G、H 是端系统或者我们可以说是通讯设备。有 4 个开关标记为 1,2,3,4。此外,您可以看到每个交换机都连接到多个链路。
有效利用带宽需要交换的概念。此外,每当两个或多个设备相互通信时,网络中就有许多发生数据包冲突的机会;切换是解决这个问题的最佳方案。
切换方法
为了决定数据传输的最佳路由,使用了交换技术。交换技术主要以这样的方式连接系统,使得一对一的通信更加容易。
下面给出了三种切换方法,或者我们可以说有三种切换技术:
-
电路切换
-
包交换技术
-
信息交换
基于上述给定的技术,交换网络被大致分类如下:
我们将在即将到来的教程中介绍上述内容。
交换网络的优势
下面给出了交换网络的一些好处:
-
因为交换机有助于为网络中的每个连接创建冲突域。因此,帧冲突的可能性更小。
-
使用交换机可以提高网络的性能。
-
通过使用交换机,网络上的可用带宽增加了。
-
通过在网络中使用交换机,个人电脑上的工作负载得以减少。
-
交换机与工作站直接相连。
交换网络的缺点
使用开关有一些缺点:
-
因为我们在交换网络中使用交换机,所以网络变得昂贵,因为交换机很贵。
-
很难通过交换机跟踪网络中的连接问题。
-
广播流量有可能出现问题。
-
为了处理多播分组,需要适当的设计和配置。
电路交换网络
原文:https://www.studytonight.com/computer-networks/circuitswitched-networks
在本教程中,我们将详细介绍电路交换网络。
网络由一组通过物理链路连接的交换机组成,通常称为电路交换网络。
-
每当一个设备与另一个设备通信时,就通过网络在它们之间建立专用通信路径。
-
每个连接使用的每个链路上只有一个专用信道。此外,通过使用时分复用(时分复用)或 FDM (频率除运算复用)技术,每个链路可以被容易地分成 n 个信道。
-
电路交换技术主要用于公用电话网进行语音通信以及数据通信。
-
数据通信不如语音通信有效。
-
电路交换技术主要发生在物理层。
-
在电路交换网络中,数据传输模式主要涉及专用的端到端连接。直到通信结束,这条专用路径一直保持。通信结束后,链路被释放。
该图显示了一个简单的电路交换网络
电路切换中的相位
为了使用电路交换来传输数据,需要建立一个电路(这些电路可以是永久性的,也可以是临时性的),以便数据传输能够顺利进行。下面给出了用于实际通信的电路交换的三个阶段:
-
设置阶段
-
数据传输阶段
-
拆卸阶段
1.设置阶段
这是电路交换技术的第一阶段,在这一阶段,电路的建立仅仅意味着在几个交换中心或节点的帮助下,在发送方和接收方之间建立专用链路。
2.数据传输阶段
电路建立后,连接建立,这意味着数据传输可以在发送方和接收方之间进行。
3.拆卸阶段
发送方和接收方之间的通信完成后,电路断开。为了断开连接,信号由发送者或接收者发送
电路交换最好的例子之一是电话。假设有两个人人甲和人乙;他们都想互相交流,并且彼此相距很远。
人甲打电话给人乙这个阶段是电路切换的设置阶段。在建立连接之后和由人乙接电话之后;他们都可以互相交流。这是电路切换的数据传输阶段
一旦通信完成,其中一方可以切断通话或断开连接。这是一个拆卸阶段。
电路交换可以进一步分为两类:
1.空分交换
2.时分交换
让我们逐一介绍上面给出的两种类型。
1.空分交换
空分交换是一种电路交换技术,其中电路中的路径在空间上相互分离。
-
这项技术用于模拟和数字网络。
-
在这种情况下,以下开关用于连接:
-
纵横制交换机:这个交换机包含 n 条输入线和 n 条输出线,它有 n2 个交叉点
-
多级交换机:多级交换机是通过首先将纵横制交换机分成更小的单元,然后将它们互连而成的。一条路失败,就有另一条路的可能。
-
-
空分交换速度快,容量大。
-
空分交换包含非阻塞开关。
2.时分交换
这是一种数字交换技术。这种切换不需要交叉点。在时分交换中,输入信号和输出信号在不同的时隙中被接收和重新传输。
-
空分复用和时分复用的主要区别之一是交叉点的共享。空分交换中没有共享交叉点,而时分复用中交叉点的共享时间较短。
-
现代设备使用时分开关。
-
在这种技术中,在交换机内部使用时分多路复用,称为时隙交换(TSI)。
电路交换网络的例子
下面给出了一些电路交换网络的例子:
-
公共交换电话网
-
光网状网络
-
综合业务数字网 B 信道
-
蜂窝系统中的电路交换数据(CSD)和高速电路交换数据(HSCSD)服务,如 GSM
电路交换的优点
下面给出了电路交换的一些好处:
1。提供专用变速器
因为在发送方和接收方之间有一条专用链路。因此,电路交换网络提供了专用传输的保证。
2。传输无延迟
发送方和接收方之间有一条专用路径,因此不会出现延迟。
3.电路交换技术最适合长时间传输,因为它有助于发送方和接收方之间的专用链路。
电路切换的缺点
电路交换有一些缺点,如下所示:
-
电路交换的主要缺点之一是,由于发送方和接收方之间有专用路径;因此,该路径被这两个特定设备接收,并且不能被任何其他设备使用。
-
由于专用路径需要更多带宽,因此需要更多带宽。
-
资源的利用没有正确完成,因为资源在整个持续时间内都被分配给一个连接,因此对所有其他连接都不可用。
-
如果在发送方和接收方之间建立了连接,但它们之间没有数据传输,那么这种情况下效率会很低。
-
有时需要很长时间来建立发送方和接收方之间的连接。
-
因为在发送方和接收方之间有一条专用路径;因此,这种技术是昂贵的。
消息交换网络
原文:https://www.studytonight.com/computer-networks/messageswitched-networks
在本教程中,我们将介绍计算机网络中消息交换网络以及消息交换的概念。
消息交换技术主要是作为电路交换的一种替代物而发展起来的,这是在引入分组交换之前的 T2。基本上,信息是一个较小的单元。
-
在消息交换技术中,终端用户之间的通信是通过发送和接收消息来完成的,并且该消息包括要共享的整个数据。
-
在消息交换中,发送方和接收方之间没有像电路交换那样的专用路径。
-
发送方和接收方通过几个中间节点连接,这有助于并确保它们之间正确的数据传输。
-
消息交换数据网络也被称为逐跳系统。
消息交换的特点
下面给出了消息交换的两个特征:
- 存储和转发
正如我们已经告诉您的,发送方和接收方没有直接连接。因此,发送方和接收方之间的中间节点主要负责将消息传递到路径中的下一个节点。因此,为了传输消息,中间节点必须具有存储容量,因为只有当下一个节点和它们之间的链路可连接时,任何消息才会被传递,否则该消息将被无限期地存储。因此,只有当有足够的资源可用并且下一个节点准备好接受数据时,存储转发交换机才会转发消息。该过程一直持续到数据被传送到目标计算机。因此,它被称为存储-&-转发属性。存储转发属性早期用于电报消息交换中心。 - 消息传递:在消息交换中,整个信息被编译成一条消息,然后该消息从源传输到目的地。为了成功到达目的地,每条消息必须在其报头部分包含路由信息。
图:消息交换和消息交换网络
消息交换的优势
下面给出了使用消息交换的一些优点:
-
在这种交换中,数据通道在网络设备之间共享。
-
通过为消息分配优先级,可以有效地管理流量。
-
效率有所提高,因为单个通道现在可以用于传输许多消息。
-
减少了网络流量拥塞,因为在这种技术中,我们使用存储和转发属性,并且任何交换节点都可以存储消息,直到网络可用。
-
使用消息交换,可以发送无限大小的消息。
-
广播消息时需要较少的带宽;因此,它比电路交换消耗更少的带宽。
-
在消息交换中,如果下一个节点或链路不可用,则当前节点存储消息
消息交换的缺点
使用消息交换有以下缺点:
-
对于整个网络来说,消息交换需要很大的容量。
-
这种技术不能用于实时应用,因为存储消息会导致延迟。
-
消息交换网络本质上非常慢,因为处理发生在每个节点上,因此可能会导致性能不佳。
计算机网络中的分组交换
原文:https://www.studytonight.com/computer-networks/packet-switching-in-computer-networks
在本教程中,我们将介绍计算机网络中分组交换的概念。
分组交换是一种交换技术,在这种技术中,消息通常被分成称为分组的更小的片段。
-
每个数据包都包含一个包含目的地信息的报头。在这些知识/信息的帮助下,这些数据包找到了路由。
-
每个数据包都有一个唯一的编号,以便在接收端识别它们。
-
分组交换网络最大的例子之一是互联网。
-
数据包的报头主要由两部分组成:报头和有效载荷。
-
其中报头主要包含路由信息。
-
有效载荷包含要传输的数据。
-
-
这种切换也基于存储和转发方法。
-
在分组交换网络中,没有资源预留,资源是按需分配的。
-
正如我们所知,每个数据包的报头中都包含了源和目的地的信息。因此,所有数据包都可以在网络中独立传输。
-
与同一文件相关的数据包可能采用不同的路径,这主要取决于路径的可用性。这些数据包将在目的地重新组装。接收器节点负责重新排列接收到的分组,以便获得原始数据。
-
如果数据包以正确的顺序到达接收器,接收器将发送确认消息。
-
如果数据包丢失或损坏,消息将由接收方发送给发送方,以重新发送消息。
图:分组交换
用于分组交换的两种不同方法如下:
-
数据报分组交换
-
虚拟电路交换
让我们逐一讨论这两种方法:
数据报分组交换
在数据报交换中,数据包通常被称为数据报。数据报分组交换也称为无连接分组交换。在这种技术中,网络设备根据每个数据包中包含的目的地址单独路由每个数据包。
-
每个数据包基本上都是独立于其他数据包进行处理的。
-
数据报包交换在网络层完成。
-
这是无连接分组交换,因为分组交换机不保存关于连接状态的信息。
-
在数据报分组交换中,路径不是固定的。
-
路由决定由中间节点做出,以便转发数据包。
-
因此,属于同一消息的所有数据报可能通过不同的路径到达目的地。
-
在接收节点上,所有的包都被重组,以获得原始形式的消息。
-
由于缺乏资源,数据包也可能丢失或丢弃。
-
在大多数协议中,上层协议负责对数据报进行重新排序,或者在将丢失的数据报传递给应用程序之前请求它们。
虚拟电路交换
虚电路交换也称为面向连接的交换。这种交换包含了电路交换和数据报分组交换的特点。在这种类型的分组交换中,首先组装数据包,然后按顺序编号。现在,他们已经准备好按顺序穿越预定路线。这里不需要关于地址的信息,因为所有数据包都是按顺序发送的。
-
除了数据传输阶段,还有安装和拆卸阶段。
-
资源分配是在建立阶段完成的,就像在电路交换网络中一样,也可以像在数据报网络中一样按需完成。
-
数据是数据包的形式,就像数据报网络一样,而且每个数据包都在报头中携带目的地址。
-
与电路交换网络一样,虚拟网络中的所有数据包都遵循连接期间建立的相同路径。
-
这种交换通常在数据链路层实现。
分组交换的优势
下面给出了分组交换的一些好处:
-
更有效地利用带宽。
-
在分组交换中,传输延迟是最小的。
-
这种技术实现起来更便宜,因此具有成本效益。
-
同一频道可以被多个用户同时使用。
-
由于协议的改进,分组交换被许多应用程序使用,如 Skype、WhatsApp 等。
-
这种技术的容错能力在任何链路断开的情况下都更强,因为数据包可能遵循不同的路径。
-
这种技术比其他技术更可靠,因为它可以轻松检测丢失的数据包。
分组交换的缺点
分组交换的一些缺点如下:
-
这种技术不能被那些不能承受更多延迟的应用程序使用,比如高质量语音呼叫的应用程序。
-
该技术中使用的协议很复杂,因此它们的实现成本很高。
-
在网络过载的情况下,数据包可能会丢失或出现延迟,从而导致关键信息的丢失。
-
在接收方,需要对发送方发送的数据包进行分类。
数据链路层
计算机网络中的纠错
原文:https://www.studytonight.com/computer-networks/error-correction-in-computer-networks
在本教程中,我们将介绍计算机网络中的数据链路层纠错。
在错误检测中,接收机只需要知道接收到的码字是无效的;但是在纠错中,接收器需要猜测发送的原始码字。这样,纠错比检错困难得多。
纠错期间对冗余位的需求大于检错。
让我们看看纠错中编码器和解码器的结构:
图:纠错中编码器和解码器的结构
为了检测或纠正错误,需要随数据一起发送一些额外的位。这些额外的位通常被称为冗余位。
正如我们在前面的教程中了解到的,原始数据被分成 k 位的段;它被称为数据字。当我们向每个块添加 r 冗余位以使长度; n=k+r 则称为码字。
有两种方法可以处理纠错:
-
每当发现错误时,接收者可以让发送者重新发送整个数据单元。这种技术被称为反向纠错技术。在有线传输(如光纤)的情况下,这种技术简单而廉价;重传数据没有费用。在无线传输的情况下,重传成本太高,因此使用前向纠错技术。
-
接收器可以使用自动包含某些错误的纠错码。这种技术被称为前向纠错技术。
为了纠正错误,必须知道错误的确切位置。例如,如果我们想要计算一个单比特错误,那么纠错码主要确定七个比特中的哪一个是错误的。
为了实现这一点,我们必须添加一些额外的冗余位。
假设 r(作为冗余位)和 d 表示数据位的总数。为了计算冗余位(r),使用给定的公式;
2r= d+r+1
纠错主要是借助汉明码来完成的。
汉明码
这是海明开发的技术。这可以应用于任何长度的数据单元。该代码主要使用数据和冗余位之间的关系。
汉明码技术是一种检错纠错技术,由 T2 海明公司提出。每当数据包通过网络传输时,数据位都有可能在传输过程中丢失或损坏。
让我们通过一个例子来理解汉明码的概念:
假设您收到了一个 7 位汉明码,也就是1011011
。
首先,让我们谈谈冗余位。
冗余位是一些不属于原始数据的额外二进制位,但它们是由添加到原始数据位的&生成的。所有这些都是为了确保数据位不会被损坏,如果损坏,我们可以恢复它们。
现在问题来了,我们如何确定要添加的冗余位数?
我们使用公式,2r >= m+r+1;
其中 r =冗余位 & m =数据位。
从公式中我们可以看出有 4 个数据位和 3 个冗余位,参考接收到的 7 位汉明码。
什么是奇偶校验位?
为了更进一步,我们需要了解奇偶校验位,它是附加在数据位上的一个位,确保 1 的总数是偶数(偶数奇偶校验)或奇数(奇数奇偶校验)。
检查奇偶校验时,如果 1 的总数为奇数,则写入奇偶校验位的值 P1 (或 P2 等。)为 1 (表示有错误),如果有错误,则奇偶校验位的值为 0 (表示无错误)。
差错检测中的汉明码
当我们浏览这个例子时,第一步是识别数据的比特位置&所有 2 的幂的比特位置都被标记为奇偶校验位(例如 1、2、4、8 等)。).下图将有助于可视化接收到的 7 位汉明码。
首先,我们需要检测在这个接收到的汉明码中是否有任何错误。
第一步: 校验奇偶校验位 p 1 使用校验一跳过一的方法,意思是从 P1 开始然后跳过 P2,取 D3 然后跳过 P4 再取 D5,然后跳过 D6 再取 D7,这样我们会有以下位,
因为我们可以观察到总位数是奇数,所以我们将奇偶校验位的值写成 P1 = 1 。这意味着存在错误。
第二步: 检查 p 2,但在检查 P2 的同时,我们将使用检查两个并跳过两个方法,这将为我们提供以下数据位。但是请记住,由于我们正在检查 P2,所以我们必须从 P2 开始计数(不应该考虑 P1)。
因为我们可以观察到 1 的个数是偶数,那么我们将写出 P2 = 0 的值。这意味着没有错误。
第三步: 检查 P4,但是在检查 P4 的同时,我们将使用检查四个并跳过四个方法,这将为我们提供以下数据位。但是请记住,因为我们正在检查 P4,所以我们已经开始从 P4(P1 & P2 不应该被考虑)计数。
由于我们可以观察到 1 的个数是奇数,那么我们将写出 P4 = 1 的值。这意味着错误是存在的。
所以,从上面的奇偶校验分析,P1 & P4 不等于 0,所以我们可以清楚地说接收到的汉明码有错误。
汉明码:纠错
既然我们发现收到的代码有错误,那么现在我们必须纠正它们。要更正错误,请执行以下步骤:
现在错误单词 E 将是:
现在我们要确定这个错误字 101 的十进制值,也就是 **5 (22 1 + 21 * 0 + 20 1 = 5) 。
我们得到 E = 5 ,表示错误在第五个数据位。要纠正它,只需反转第五个数据位。
所以正确的数据是:
数据链路控制
原文:https://www.studytonight.com/computer-networks/data-link-control
在本教程中,我们将介绍数据链路层的一个重要概念,即数据链路控制。
数据链路层有两个主要功能,即数据链路控制和媒体访问控制。数据链路控制主要处理两个相邻节点之间通信的设计和流程:节点到节点通信。
媒体访问控制是数据链路层的另一个主要功能,主要指定如何共享链路。
让我们首先在本教程中介绍数据链接控制,然后在下一个教程中,我们将继续讨论媒体访问控制。
数据链路控制中的功能
数据链路控制中包括的功能有:
-
框架
-
流程和错误控制
-
软件实现的协议(在节点之间提供平滑和可靠的帧传输。)
框架
在物理层,数据传输意味着将比特以信号的形式从源传输到目的地。物理层还提供同步,主要确保发送方和接收方使用相同的位持续时间和时序。
数据链路层将比特打包到帧中;使得每一帧都可以与另一帧区分开。
数据链路层中的成帧仅通过添加发送者地址和目的地地址,将消息从的一个源分离到目的地或从其它消息分离到其它目的地;其中目的地地址指定了数据包必须到达的位置,发送方地址帮助接收方确认收到。
框架可以是固定大小的,也可以是可变大小的。通过使用帧,数据可以很容易地被分解成可恢复的块,并且为了检查传输中的损坏,可以很容易地检查这些块。
框架设计中的问题
下面给出了由于框架引起的一些问题:
-
检测帧的开始
无论何时传输帧,每个站都必须能够检测到该帧。任何站点都可以通过寻找一个特殊的位序列来检测帧,该位序列在帧的开头标记为起始帧定界符(SFD)。 -
任何站点如何检测帧
网络中的每个站点都通过时序电路监听 SFD 模式的链接。如果检测到 SFD,则时序电路向工作站发出警报。之后,工作站检查目的地址,以便接受或拒绝该帧。 -
检测帧结束
是什么时候停止读帧。
框架的一部分
框架的不同部分如下:
1。旗帜
一面旗帜用来标记帧的开始和结束。
2。报头
帧报头主要包含帧的源地址和目的地址。
3。
帧尾主要包含检错和纠错位。
4。有效载荷字段
该字段包含要传递的消息。
框架的类型
框架主要分为两部分:
-
固定尺寸框架
-
可变尺寸框架
让我们逐一讨论上面给出的两种类型;
固定尺寸框架
在固定尺寸的框架中,不需要定义框架的边界。帧本身的大小或长度可以用作分隔符。
固定大小帧的一个缺点是,如果数据的大小小于帧的大小,它将遭受内部碎片。
可变尺寸框架
在可变尺寸框架中,每个框架的尺寸是不同的。因此,需要一种方法来定义帧的结束和下一帧的开始。
可变尺寸框架有两种方法:
面向字符的协议
在面向字符的协议中,要传输的数据是来自编码系统(如 ASCII)的 8 位字符。
面向角色的框架中的框架部分如下:
1。框架标题
帧头包含字节形式的源地址和目的地址。
2。有效载荷字段
有效负载字段主要包含要传递的消息。在这种情况下,它是一个可变的数据字节序列。
3。框架拖车
帧的尾部包含用于纠错和检错的字节。
4。标签〔t1〕字
为了将一帧与下一帧分开,在帧的开头和结尾添加了一个 8 位(即 1 字节)标志。
让我们看看面向字符协议:中的框架
当数据是由数据链路层交换的文本形式时,这种技术很流行。所选标志可以是不用于文本通信的任何字符。但是需要发送其他类型的信息,如图表、音频和视频。
现在,用于标志的任何模式也可以是信息的一部分。如果发生这种情况,那么接收器在数据中间遇到这种模式,然后认为它已经到达帧的末尾。
为了解决上述问题,在面向字符的框架中增加了字节填充策略。
字节填充
每当有一个字符与标志具有相同的模式时,这是一个添加 1 个特殊字节的过程。
-
数据段填充了一个额外的字节,这个字节通常被称为转义字符 (ESC) ,它有一个预定义的位模式。
-
每当接收器遇到一个 ESC 字符时,它就会将其从数据段中删除,然后将下一个字符视为数据。
字节填充和释放
使用面向字符的成帧的缺点是,由于这一点,消息的开销变得太大,从而导致帧的总大小增加。另一个缺点是,目前的编码系统有 16 位或 32 位字符,肯定会与 8 位编码冲突。
面向比特的协议
在面向比特的成帧中,帧的数据部分主要是由上层解释为文本、图形、音频、视频等的比特序列。
在这种情况下,还需要一个定界符,以便将一帧与另一帧分开。
让我们看看面向比特的协议中的帧:
比特填充
每当数据中的 0 后面有五个连续的 1 时,就会增加一个额外的 0,这样接收器就不会将模式 01111110 误认为标志,这一过程通常称为位填充。
上图显示了发送端的位填充和接收端的位移除。值得注意的是,即使我们在五个 1 之后有一个 0,我们仍然会填充一个 0。移除 0 是由接收器完成的。
简单地说,每当数据中出现类似标志的模式 01111110 时,它会将数据更改为 011111010(填充的),这样接收器就不会将它误认为标志。
发送方不会填充真实标志 01111110,因此接收方会识别该标志。
流程和错误控制
原文:https://www.studytonight.com/computer-networks/flow-and-error-control
在本教程中,我们将介绍数据链路层中流量和错误控制的概念。
流量控制和错误控制是数据链路层的两个主要职责。让我们理解这两个术语的含义。对于节点到节点的数据传递,流量和错误控制在数据链路层完成。
流量控制主要是在接收到接收方的确认之前,与能够发送的数据量进行协调,是数据链路层的主要职责之一。
-
对于大多数协议来说,流量控制是一组程序,主要告诉发送方在必须等待来自接收方的确认之前,发送方可以发送多少数据。
-
决不能让数据流淹没接收者;因为任何接收设备处理输入数据的速度都非常有限,存储输入数据的内存量也非常有限。
-
处理速率比传输速率慢;由于这个原因,每个接收设备都有一个内存块,通常称为缓冲区,,用于存储传入的数据,直到该数据被处理。如果缓冲区开始填满,那么接收者必须能够告诉发送者停止传输,直到接收者再次能够接收。
因此流量控制使发送者;在继续向接收器发送更多数据之前,等待接收器的确认。
一些常见的流量控制技术有:停止等待和滑动窗口技术。
错误控制包含错误检测和错误纠正。它主要允许接收方在传输过程中通知发送方任何损坏或丢失的帧,然后与发送方重新传输这些帧进行协调。
数据链路层的差错控制主要指差错检测和重传的方法。差错控制主要以一种简单的方式实现,即每当在交换期间检测到差错时,就重新发送指定的帧,这个过程也被称为自动重复请求(ARQ)。
协议
协议的实现主要通过使用一种常见的编程语言在软件中实现。协议的分类可以主要根据它们在哪里被使用来完成。
协议可以用于无噪声信道(即无差错),也可以用于有噪声信道(即产生差错)。用于无噪声信道的协议主要不能在现实生活中使用,主要用作有噪声信道的协议基础。
所有上述协议都是单向的,即数据帧从一个节点(即发送方)传输到另一个节点(即接收方)。
称为确认(ACK)和否定确认(NAK)的特殊帧都可以在相反的方向上流动,用于流量和错误控制目的,并且数据只能在一个方向上流动。
但是在现实网络中,数据链路层的协议被实现为双向的,这意味着数据流是双向的。在这些协议中,流控制和错误控制信息,如 ack 和 NAKs,以一种通常被称为捎带的技术包含在数据帧中。
此外,双向协议比单向协议更复杂。
在我们的后续教程中,我们将详细介绍上述协议。
最简单的协议
原文:https://www.studytonight.com/computer-networks/simplest-protocol
在本教程中,我们将介绍数据链路层无噪声信道类别下的最简单协议。
最简单的协议是既没有流量控制也没有错误控制的协议(我们已经告诉过你,它属于无噪声信道的范畴)。
-
最简单的协议基本上是单向协议,其中数据帧只在一个方向上传输;从发送者到接收者。
-
在这种情况下,接收器可以立即处理它接收到的帧,其处理时间小到可以忽略不计。
-
基本上,接收器的数据链路层立即从帧中移除报头,然后将数据分组移交给网络层,网络层也立即接受数据分组。
-
我们还可以说,在这种协议的情况下,接收方永远不会被来自发送方的传入帧淹没。
最简单协议的设计
最简单的协议不需要流量控制。发送端的数据链路层主要从网络层获取数据,然后将数据制成帧发送出去。在接收器站点,数据链路层从物理层接收帧,然后从帧中提取数据,然后将数据传送到其网络层。
发送方和接收方的数据链路层主要为其网络层提供传输服务。数据链路层还使用物理层提供的服务,例如信令、多路复用等,用于比特的物理传输。
数据链路层使用的过程
现在让我们看一下数据链路层在两端(发送方和接收方)使用的过程。
-
发送方站点的数据链路层没有发送帧,直到其网络层有数据包要发送。
-
类似地,在帧到达之前,接收站点无法将数据包传送到其网络层。
-
如果协议的实现是作为一个过程来完成的,那么就需要在协议中引入事件的概念。
-
发送方站点的过程持续运行;在网络层发出请求之前,不会有任何操作。
-
此外,接收方的程序持续运行;在收到物理层的通知之前,不会有任何操作。
-
这两个过程都连续运行,因为它们中的任何一个都不知道相应的事件何时会发生。
让我们看一下发送者网站上使用的算法:
while(true) //Repeat Forever
{
WaitForEvent(); //Sleep until there is occurrence of an event
if(Event(RequestToSend)) //means there is a packet to send
{
GetData();
MakeFrame();
SendFrame(); //Send the frame
}
}
下面给出了接收方使用的算法:
while(true) //Repeat Forever
{
WaitForEvent(); //Sleep until there is occurrence of an event
if(Event(ArrivalNotification)) //means there is a packet to send
{
ReceiveFrame();
ExtractData();
DeliverData(); //Send the frame
}
}
最简单协议的流程图
使用最简单的协议,发送方 A 发送一系列帧,甚至不考虑接收方 b。
为了发送这三个帧,将在发送方 A 发生三个事件,在接收方 b 发生三个事件。
需要注意的是,在上图中,数据框是借助方框显示的。
框的高度主要表示帧的第一位和最后一位的传输时间差。
停止等待协议
原文:https://www.studytonight.com/computer-networks/stopandwait-protocol
在本教程中,我们将介绍在数据链路层的无噪声通道中使用的另一种协议。
停止等待协议用于数据链路层,以便在无噪声信道中传输。让我们首先理解为什么需要使用这个协议,然后我们将详细介绍这个协议。
我们在前面的教程中研究了最简单的协议,假设有一种情况,数据帧到达接收方站点的速度比它们能够被处理的速度快,这意味着传输速率大于帧的处理速率。另外,接收器没有足够的空间是正常的,数据也来自多个来源。那么由于所有这些,可能会出现丢弃帧或拒绝服务的情况。
为了防止接收方承受不住,需要告诉发送方减慢帧的传输速度。我们可以利用从接收者到发送者的反馈。
现在从下一节开始,我们将讨论停止等待协议的概念。
顾名思义,当我们在传输过程中使用该协议时,发送方发送一帧,然后停止,直到收到接收方的确认,收到确认后发送方发送下一帧。
-
数据帧有单向通信,但确认或确认帧从另一个方向传输。因此,这里增加了流量控制。
-
因此,停止等待是利用数据链路层提供的流控制服务的流控制协议之一。
-
对于每一个发送的帧,都需要确认,并且需要相同的传播时间才能回到发送方。
-
为了结束传输,发送方发送传输结束,这意味着(EOT 帧)。
停止等待协议的设计
发送方的数据链路层等待其网络层发送数据包。之后,数据链路检查它是否可以发送帧。在从物理层接收到肯定通知的情况下;数据链路层利用网络层提供的数据制作帧,然后将其发送到物理层。发送数据后,它将等待确认,然后再发送下一帧。
接收器端的数据链路层等待帧到达。当帧到达时,接收器处理该帧,然后将其传送到网络层。之后,它将发送确认,或者我们可以说,确认帧回到发送者。
发送方站点用于停止等待协议的算法
这是发送方站点用于停止等待协议的算法。应用程序可以用自己的编程语言来实现。
while(true) //Repeat forever
canSend=true //It will allow the first frame to go.
{
WaitForEvent(); //sleep until the occurrence of an event
if(Event(RequestToSend) AND canSend)
{
GetData();
MakeFrame();
SendFrame(); //Send the data frame
canSend=false; //cannot send until the acknowledgement arrives.
}
WaitForEvent(); //sleep until the occurrence of an event
if(Event(ArrivalNotification)) //indicates the arrival of the acknowledgement
{
ReceiveFrame(); //Means the ACK frame received
canSend=true;
}
}
接收端的算法
这是在接收器端用于停止等待协议的算法。应用程序可以用自己的编程语言来实现。
while(true) //means Repeat forever
{
WaitForEvent(); //sleep until the occurrence of an event
if(Event(ArrivalNotification)) //indicates arrival of the data frame
{
ReceiveFrame();
ExtractData();
Deliver(data); //delivers the data to the network layer.
SendFrame(); //Send the ACK frame
}
}
停止等待协议的流程图
下面给出了停止等待协议的流程图:
优势
停止等待协议的主要优点之一是提供的准确性。因为下一帧的传输仅在接收到前一帧的确认后才完成。因此,没有数据丢失的可能。
不足之处
下面给出了使用停止等待协议的一些缺点:
-
使用该协议,一次只能传输一帧。
-
假设在一种情况下,帧由发送方发送,但在传输过程中丢失,然后接收方既不能收到帧,也不能向发送方发回确认。如果没有收到确认,发送方将不会发送下一帧。因此,将出现两种情况,即:接收方必须等待无限长的数据时间,发送方必须等待无限长的时间才能发送下一帧。
-
在长距离传输的情况下,这是不合适的,因为传播延迟变得比传输延迟长得多。
-
以防发送方发送数据,而接收方也接收到该数据。接收到数据后,接收方发送确认,但由于某些原因,发送方会在超时后收到确认。现在因为这个确认收到的太晚了;因此,它可能被错误地认为是对另一个数据分组的确认。
-
等待每个帧的确认所花费的时间也加在总传输时间中。
自动重复请求
原文:https://www.studytonight.com/computer-networks/gobackn-automatic-repeat-request
在本教程中,我们将介绍数据链路层中噪声信道的自动重复请求协议。
Go-Back-N ARQ 主要是自动重复请求 (ARQ)协议的一个具体实例,其中发送过程继续发送窗口大小指定的多个帧,即使没有从接收方接收到确认(确认)数据包。
发送方保留每个帧的副本,直到确认到达。
该协议是滑动窗口的实用方法。
-
在 ARQ,发送方窗口的大小是 N,接收方窗口的大小总是 1。
-
该协议使用累积确认,这意味着接收器保持一个确认定时器;每当接收器从发送器接收到新帧时,它就启动新的确认定时器。当定时器到期时,接收机发送所有帧的累积确认,此时接收机未确认这些帧。
-
需要注意的是,新的确认定时器仅在接收到新帧后启动,而不是在旧确认定时器到期后启动。
-
如果接收方收到一个损坏的帧,那么它会无声地丢弃该损坏的帧,并且在超时定时器到期后,发送方会重新发送正确的帧。因此,接收器无声地丢弃损坏的帧。我们所说的默默丢弃是指:“简单地拒绝框架,不为框架采取任何行动”。
-
如果在确认定时器到期后,假设只剩下一帧要确认。在这种情况下,接收器发送该帧的独立确认。
-
如果接收方接收到无序帧,那么它会丢弃所有帧。
-
如果发送方没有收到任何确认,那么在这种情况下,帧的整个窗口都将被重传。
-
在超时定时器到期后,使用回退-N ARQ 协议会导致丢失帧的重新传输。
ARQ 回归的需要
该协议用于一次发送多个帧。在 ARQ 的帮助下,寄件人的等待时间减少了。
在 ARQ 协议的帮助下,传输效率提高了。
ARQ 北部返回发送(滑动)窗口
基本上,发送方关心的范围被称为“返回-N-ARQ”的发送滑动窗口。它是一个假想的盒子,里面装着可能正在传输的数据帧的序列号。
这个假想框的大小是 2m-1,有三个变量 Sf(表示发送窗口,第一个未完成的帧)、Sn(表示发送窗口,下一个要发送的帧)、SSize。(指示发送窗口大小)。
-
发送方可以在收到确认帧之前发送 N 帧。
-
发送滑动窗口的大小为 n。
-
发送数据的副本保存在发送方的发送缓冲区中,直到所有发送的数据包都得到确认。
-
如果超时计时器超时,发送方将重新发送所有数据包。
-
一旦数据得到接收器的确认,那么该特定数据将从缓冲器中移除。
每当有效确认到达时,发送窗口可以滑动一个或多个时隙。
发件人窗口大小
正如我们已经告诉你的,发送窗口大小为 N。N 的值必须大于 1。
如果 N 的值等于 1,则该协议成为停止等待协议。
ARQ 北部返回接收(滑动)窗口
接收器关注的范围称为接收器滑动窗口。
-
接收窗口主要是一个抽象的概念,定义了一个大小为 1 并且有一个变量 Rn 的虚盒。
-
当正确的帧到达时,窗口滑动,每次滑动一个时隙。
-
接收者总是寻找特定的帧以特定的顺序到达。
-
任何无序到达接收方的帧都将被丢弃,因此需要由发送方重新发送。
-
如果一个帧以特定的顺序安全地到达接收方,那么接收方就向发送方发回确认。
-
接收器的静默导致未确认帧的定时器到期。
ARQ 折返线的设计
借助回退 N ARQ,多个帧可以正向传输,多个确认可以反向传输。该协议的思想类似于“停止并等待”的 ARQ 协议,但有所不同,它是“返回-N-ARQ”的窗口,允许我们在转换中有多个帧,因为在发送窗口中有许多时隙。
ARQ 北部返回窗口大小
在 ARQ,发送窗口的大小必须始终小于 2m,接收窗口的大小必须始终为 1。
流程图
优势
下面给出了使用 ARQ 协议的一些好处:
-
这个协议的效率更高。
-
在这个协议中,等待时间非常短。
-
借助该协议,可以为许多帧设置定时器。
-
此外,发送方可以一次发送许多帧。
-
只有一个确认帧可以确认多个帧。
不足之处
下面给出了一些缺点:
-
超时计时器仅在接收器端运行。
-
发射机需要存储最后 N 个数据包。
-
许多无差错分组的重传跟随在一个差错分组之后。
滑动窗口协议
原文:https://www.studytonight.com/computer-networks/sliding-window-protocol
在本教程中,我们将介绍计算机网络中滑动窗口协议的概念。
滑动窗口协议是那些在网络中用作传输数据的流量控制方法的协议。
-
在滑动窗口技术的帮助下,发送方可以在收到接收方的任何确认之前一次发送多个帧。
-
滑动窗口协议利用 TCP (传输控制协议)。
-
接收方可以使用单个确认帧发送发送方发送的多个帧的确认。
-
在滑动窗口协议中,术语滑动窗口主要是指可以容纳发送方和接收方的帧的假想盒子。
推拉窗
滑动窗口主要提供在要求确认之前可以传输的帧数上限。
-
即使接收器端的窗口没有完全填满,接收器也可以随时确认帧。
-
此外,即使发送方的窗口尚未满,源方也可以发送帧。
-
有窗口的具体大小,其中帧以 n 为模编号,简单的说就是帧从 0 到 n-1 编号。
例如如果 n = 10 ,帧编号为 0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,…。 -
每当接收器发送确认(ACK)时,它还包括它期望接收的下一帧的编号。例如,为了确认在帧 6 结束的帧组,接收器需要发送包含数字 7 的确认。当发送方看到带有数字 7 的确认时,发送方知道数字 6 之前的所有帧都已成功接收。
现在让我们了解滑动窗口协议的工作原理:
在发送端和接收端都有一个有限大小的缓冲区。发送端的缓冲器也称为发送窗口,而接收端的缓冲器称为接收窗口。
-
发送窗口的大小主要用于确定出站帧的序列号。
-
假设帧的序列号是大小为 n 位的字段,那么序列号的分配范围是 0 到 2?????1 。
-
结果发送窗口的大小是 2?????1 。为了适应大小为 2 的发送窗口?????1,必须选择一个 n 位序列号。
发送方发送的每个数据包都必须得到接收方的确认。发送方为每个发送的数据包维护一个计时器,如果在特定时间内有一个数据包未被确认,那么该数据包将被重新发送。
此外,发送方可以在收到窗口中第一个数据包的确认之前发送整个数据包窗口。这将导致更高的传输速率,因为发送方可能会发送多个数据包,而无需等待每个数据包的确认。
此外,接收方通告其窗口大小,这主要向发送方指示它可以接收多少数据。因此发送方不会填满接收方的缓冲区。
借助模 n 技术,主要对序列号进行编号。我们举一个例子,如果发送窗口的大小是 5,那么序列号将是 0,1,2,3,4,0,1,2,3,4,0,等等。
接收窗口的大小表示接收器一次可以接受的最大帧数。此大小还决定了发送方在收到确认之前可以发送的最大帧数。
在滑动窗口中,我们使用了一种称为背负的技术。借助捎带技术,确认与数据帧一起附加。
下面给出了属于滑动窗口类别的两个协议,如下所示;
-
ARQ 协议
-
选择性重复 ARQ 协议
滑动窗口(发送方)
为了跟踪帧,发送站发送顺序编号的帧。
-
因为要使用的序列号应该占据帧中的一个字段。因此,序列号的大小应该有限。
-
如果帧头允许 k 位,则序列号的范围从 0 到 2k-1。
-
有一个序列号列表,主要由发送方维护,依此类推;这些是允许发送者发送的。
-
发送方窗口的大小最多为 2k-1。
-
比如;如果帧允许 4 位,那么窗口的大小是 2 的幂 4-1
16-1 = 15。 -
缓冲区提供给发送方,其大小等于窗口的大小。
滑动窗口(接收器侧)
接收器端的窗口大小始终为 1。
-
帧的确认是通过接收方向发送方发送一个确认帧以及下一个预期帧的序列号来完成的。
-
接收机明确宣布准备接收 N 个下一帧,从指定的数字开始。
-
该方案用于确认多个帧。
-
接收器端的窗口可以保存 2、3、4 帧,但会保存确认帧,直到第 4 帧到达。到达后,它将发送确认以及序列号为 5 的,用它一次确认 2,3,4。
*** 接收器所需的缓冲区大小为 1。**
**### 推拉窗的优点
-
多个包的传输可以在没有接收到确认的情况下完成。
-
使用全双工线路可以实现捎带。
滑动窗口的缺点
-
本协议对序列号没有限制。
-
在某些情况下可能会浪费带宽。**
HDLC 协议
原文:https://www.studytonight.com/computer-networks/hdlc-protocol
在本教程中,我们将介绍 OSI 模型数据链路层中的 HDLC 协议。
HDLC (高级数据链路控制)是一种面向比特的协议,用于通过点对点和多点链路进行通信。该协议实现了 ARQ(自动重复请求)机制。在 HDLC 协议的帮助下,全双工通信成为可能。
HDLC 是使用最广泛的协议,提供了可靠性、效率和高水平的灵活性。
为了使 HDLC 协议适用于各种网络配置,有三种类型的站,如下所示:
-
主站
这个站主要负责管理之类的数据。在主站和次站之间通信的情况下;主站负责连接和断开数据链路。主站发出的帧通常称为命令。 -
二级站
二级站在主站的控制下运行。从站发出的帧通常被称为响应。 -
联合站
联合站既是一级站,也是二级站。组合站发出命令以及 响应。
HDLC 的换乘方式
HDLC 协议提供了两种主要可用于不同配置的传输模式。这些措施如下:
-
正常响应模式(NRM)
-
异步平衡模式
现在让我们逐一讨论这两种模式:
1.正常响应模式(NRM)
在这种模式下,站的配置是不平衡的。有一个主站和多个从站。主站可以发送命令,次站只能响应。
该模式用于点对点和多点链接。
2.异步平衡模式
在这种模式下,工作站的配置是平衡的。在这种模式下,链路是点对点的,每个站都可以作为主要站和次要站。
异步平衡模式是当今常用的模式。
HDLC 画框
以便提供支持上述模式和配置中所有可能选项所必需的灵活性。HDLC 定义了三种类型的框架:
-
信息帧(I 帧)
这些帧用于传输用户数据和与用户数据相关的控制信息。如果控制字段的第一位是 0,那么它被识别为 I 帧。 -
监控帧(S 帧)
这些帧仅用于传输控制信息。如果控制字段的前两位是 1 和 0,则该帧被识别为 S 帧 -
未编号帧(U 帧)
这些帧主要是为系统管理预留的。这些帧用于在通信设备之间交换控制信息。
每种类型的帧主要用作传输不同类型消息的信封。
框架格式
每个 HDLC 帧中最多有六个场。有一个开始标志字段、地址字段、控制字段、信息字段、帧校验序列字段和结束字段。
在多帧传输的情况下,一帧的结束标志充当下一帧的开始标志。
让我们看看不同的 HDLC 框架:
现在是讨论字段以及字段在不同帧类型中的使用的时候了:
1.标志字段
HDLC 帧的这个字段主要是具有位模式 01111110 的 8 位序列,并且它用于识别帧的开始和结束。标志字段主要用作接收器的同步模式。
2.地址字段
它是 HDLC 帧的第二个字段,主要包含辅助站的地址。该字段可以是 1 字节或几个字节长,这主要取决于网络的需要。如果帧由主站发送,则该字段包含从站的地址。如果帧是从站发送的,那么这个字段包含主站的地址。
3.控制字段
这是 HDLC 帧的第三个字段,是帧的 1 或 2 字节段,主要用于流量控制和错误控制。该领域的比特解释主要取决于帧的类型。
4.信息字段
HDLC 帧的这个字段包含来自网络层的用户数据或管理信息。此字段的长度因网络而异。
5.现场总线控制系统
FCS 表示帧校验序列,是 HDLC 协议中的错误检测字段。有一个 16 位循环冗余码用于错误检测。
《HDLC 协议》的特点
以下是《HDLC 协议》的一些特点:
1.该协议使用位来填充数据中出现的标志。
2.该协议用于点对点和多点链路接入。
3.HDLC 协议是数据链路层最常见的协议之一。
4.HDLC 是一个面向比特的协议。
5.该协议实现了错误控制和流量控制。
点对点协议
原文:https://www.studytonight.com/computer-networks/pointtopoint-protocol
在本教程中,我们将介绍数据链路层的另一种协议,即点对点协议。
PPP (点对点)协议是数据链路层使用的协议。 PPP 协议主要用于建立两个节点之间的直接连接。
点对点协议主要通过多条链路提供连接。
-
该协议定义了两台设备如何相互认证。
-
PPP 协议还定义了设备之间要交换的帧的格式。
-
该协议还定义了如何将网络层的数据封装在数据链路帧中。
-
PPP 协议定义了两台设备如何协商链路的建立,然后交换数据。
-
该协议提供网络层的多种服务,还支持各种网络层协议。
-
该协议还通过多条链路提供连接。
PPP 协议不提供的一些服务如下:
-
该协议不提供流量控制机制。因为当使用这种协议时,发送者可以一个接一个地向接收者发送任意数量的帧,甚至不用考虑压倒接收者。
-
该协议不提供任何寻址机制来处理多点配置中的帧。
-
PPP 协议提供了一种非常简单的错误控制机制。有一个循环冗余校验字段可以检测错误。如果有一个损坏的帧,那么它会被无声地丢弃。
在 PPP 协议中,成帧是使用面向字节的技术完成的。
购买力平价帧格式
下图显示了购买力平价框架的格式:
让我们逐一讨论 PPP 帧格式的每个字段:
1.旗
PPP 帧主要以 1 字节标志字段开始和结束,该字段具有位模式:01111110。需要注意的是,这种图案与 HDLC 使用的国旗图案相同。但是也有一个区别,那就是 PPP 是一个面向字节的协议,而 HDLC 是一个面向比特的协议。
2.地址
PPP 协议中该字段的值为常量,设置为 111111111,即广播地址。双方可以协商,可以省略这个字节。
3.控制
该字段的值也是 11000000 的常数值。我们已经告诉您,PPP 不提供任何流量控制,错误控制仅限于错误检测。双方可以协商,可以省略这个字节。
4.草案
此字段定义数据字段中携带的内容。它可以是用户信息,也可以是其他信息。默认情况下,该字段为 2 字节长。
5.有效载荷字段
该字段携带网络层的数据。该字段的最大长度为 1500 字节。这也可以在通信端点之间进行协商。
6.火控系统(Fire Control System)
它只是一个 2 字节或 4 字节的标准循环冗余校验。
购买力平价中的字节填充
正如我们已经告诉您的那样,PPP 和 HDLC 的主要区别在于 PPP 是一种面向字节的协议。这意味着 PPP 中的标志是一个字节,无论它出现在帧的数据部分的什么地方,都需要进行转义。
转义字节是 011111101,这意味着每当数据中出现类似标志的模式时,就会填充额外的字节,主要告诉接收器下一个字节不是标志。
公私伙伴关系协议的过渡阶段
PPP 协议必须经历不同的阶段,如下图所示;
死亡的
在这个阶段,链接没有被使用。物理层没有活动载波,线路很安静。
建立
如果其中一个节点开始通信,则连接进入建立阶段。在这一阶段,双方就选择进行谈判。如果协商成功,则系统进入身份验证阶段(如果需要身份验证,则进入网络阶段。)
这里交换了几个包。
鉴定
这是一个可选阶段。在建立阶段,两个节点可以决定不跳过这个阶段。如果两个节点决定继续进行身份验证,那么它们会发送几个身份验证数据包。
如果结果是成功的,则连接进入网络阶段,否则进入终止阶段。
网络
在这个阶段,网络层协议的协商发生。PPP 协议规定,在网络层的数据可以交换之前,两个节点建立网络层的协议。背后的原因是 PPP 在网络层支持多种协议。
如果任何节点同时在网络层运行多个协议,那么接收节点需要知道哪个协议将接收数据。
打开
在这个阶段,数据传输发生。只要连接达到这个阶段,就可以开始交换数据包。连接保持在这个阶段,直到通信中的一个端点终止连接。
结束的
在此阶段,连接终止。两端交换几个数据包,用于房屋清洁,然后关闭链接。
公私伙伴关系/公私伙伴关系堆栈的组件
基本上,PPP 是一种分层协议。PPP 协议有三个组成部分,如下所示:
-
链路控制协议
-
认证协议
-
网络控制协议
链路控制协议
该协议主要负责建立、维护、配置和终止链路。链路控制协议提供了协商机制,以便在两个端点之间设置选项。
在建立链接之前,链接的两个端点必须就选项达成一致。
认证协议
该协议在 PPP 协议中起着非常重要的作用,因为 PPP 是为在需要验证用户身份的拨号链路上使用而设计的。因此,该协议主要用于验证端点以供其他服务使用。
有两种身份验证协议:
-
密码认证协议
-
挑战握手认证协议
网络控制协议
网络控制协议主要用于协商网络层的参数和设施。
对于 PPP 协议支持的每一个更高层协议;有一种网络控制协议。
PPP 的一些网络控制协议如下:
-
互联网协议控制协议(IPCP)
-
互联网分组交换控制协议
-
decnet 第四阶段控制协议
-
网络基本输入输出系统帧控制协议
-
IPv6 控制协议
数据链路层的多路访问
原文:https://www.studytonight.com/computer-networks/multiple-access-in-data-link-layer
在本教程中,我们将介绍 OSI 模型的数据链路层中的多路访问。
数据链路层可视为两个子层,其中上层子层主要负责数据链路控制,下层负责解决对共享介质的访问。
如果在这种情况下有专用信道,则不需要较低的子层。
数据链路层的上层子层主要负责流量控制和差错控制,也称为逻辑链路控制(LLC);而下层主要负责多址解析,因此被称为媒体访问控制层。
多址协议的主要目标是优化传输时间、最小化冲突和避免串扰。
多址协议主要允许多个节点访问共享网络信道。源自几个节点的几个数据流通过多点传输信道传输。
多址协议分类如下。让我们来看看它们:
随机接入协议
在随机接入中,没有这样的站优于另一个站,并且没有一个站被分配对另一个站的控制。没有一个站允许另一个站发送。
每个站可以随时发送,条件是它遵循包括介质测试状态的预定程序。
下面给出了属于随机接入协议类别的协议:
-
欢迎
-
CSMA(载波侦听多路访问)
-
CSMA/光盘(带冲突检测的载波侦听多路访问)
-
CSMA/加州(载波侦听多路访问,避免冲突)
受控访问协议
当使用受控访问协议时,站点可以相互协商,以便找到哪个站点有权发送数据。任何电台在得到其他电台授权之前都不能发送。
三种主要的受控访问方法如下:
-
保留
-
投票
-
令牌传递
信道化协议
信道化是用于多路访问的另一种方法,其中链路的可用带宽在时间、频率上共享,或者通过不同站之间的代码共享。
使用的三种信道化协议如下:
-
FDMA(频分多址)
-
时分多址
-
码分多址
我们将在即将到来的教程中介绍所有上述协议。
信道化协议
原文:https://www.studytonight.com/computer-networks/channelization-protocols
在本教程中,我们将详细介绍多路访问的信道化协议。
信道化基本上是一种提供多路访问的方法,在这种方法中,链路的可用带宽在时间、频率上共享,或者通过不同站之间的代码共享。
信道化协议大致分类如下:
-
FDMA(频分多址)
-
时分多址
-
码分多址
让我们逐一讨论上面给出的技巧:
1.频分多址
在这种技术的帮助下,可用带宽被划分为多个频带。每个站被分配一个频带,以便发送其数据。或者换句话说,我们可以说,每个波段都是为特定的电台保留的,它一直属于该电台。
-
每个站利用带通滤波器来限制发射机的频率。
-
为了防止站内干扰,在小保护频带的帮助下,分配的频带彼此分离。
-
频分多址主要为整个通信周期指定预定频率。
-
在 FDMA 的帮助下,数据流很容易使用。
FDMA 的优势
下面给出了使用 FDMA 技术的一些好处:
-
当流量一致恒定时,这种技术是有效的。
-
如果信道没有被使用,那么它就处于空闲状态。
-
FDMA 算法简单,复杂度较低。
-
对于 FDMA,对于基带的类型或调制的类型没有限制。
FDMA 的缺点
- 通过使用 FDMA,每个通道的最大流速是固定的并且很小。
2.时分多址
时分多址是另一种接入共享介质网络信道的方法。
-
在这种技术的帮助下,这些站及时共享信道的带宽。
-
时隙被分配给每个站,在此期间它可以发送数据。
-
数据由每个站在指定的时隙中传输。
-
使用时分多址有一个问题,由于时分多址,不同站之间无法实现同步。
-
当使用时分多址技术时,每个站需要知道其时隙的开始和其时隙的位置。
-
如果站点分布在很大的区域,那么就会出现传播延迟;为了补偿这个守卫,使用了时间。
-
每个站中的数据链路层主要告诉其物理层使用分配的时隙。
图:时分媒体访问。
TDMA 的一些例子如下;
-
个人数字蜂窝电话
-
集成数字增强网络。
-
通用地面无线电接入(UTRA)
3.码分多址
码分多址是另一种用于信道化的技术。
-
码分多址技术不同于 FDMA 技术,因为只有一个信道占用链路的整个带宽。
-
码分多址技术不同于时分多址,因为所有的站可以同时发送数据,因为没有分时。
-
码分多址技术仅仅意味着用不同的代码进行通信。
-
在码分多址技术中,只有一个信道同时承载所有的传输。
-
码分多址主要基于编码理论;每个站都被分配一个代码,代码是一个被称为码片的数字序列。
-
来自不同站点的数据可以同时传输,但使用不同的编码语言。
码分多址的优势
下面给出了使用码分多址技术的一些优点:
-
提供高音质。
-
码分多址工作在低功率水平。
-
该系统的容量高于时分多址和 FDMA。
-
CDMA 性价比更高。
千兆以太网
原文:https://www.studytonight.com/computer-networks/gigabit-ethernet
在本教程中,我们将在计算机网络中详细介绍千兆以太网的概念。
以太网基本上是局域网的物理和数据链路层技术。千兆以太网是在 1998 年 6 月开发的。
-
千兆以太网提供 1000 Mbps 的数据速率,或者我们可以说 1Gbps。
-
千兆以太网(IEEE 802.3z)解决了 OSI 参考模型的两层问题:
-
第 2 层(数据链路层)主要描述数据如何以帧的形式组织,然后通过网络发送。
-
第 1 层(物理层)主要描述网络的媒介和信令规范。
-
千兆以太网设计
千兆以太网的设计可以通过以下几点进行总结:
1.它与标准或快速以太网兼容。
2.它提供 1 Gbps 的数据速率。
3.它使用 8 位地址。
4.提供自动协商的支持。
5.它保持相同的最小和最大帧长度。
媒体访问控制子层
随着以太网的发展,主要关注的是保持媒体访问控制层不变。但是为了达到 1Gbps 的数据速率,这是不可能的。
千兆以太网有两种不同的方法来访问介质:
-
半双工
-
全双工
千兆以太网的所有实现都遵循全双工方法。
全双工方法
在这种方法中,有一个中央交换机连接到所有计算机或其他交换机。每台交换机的每个输入端口都有缓冲区,数据在传输前存储在这里。
在这种情况下,不使用 CSMA/光盘,因为不会发生碰撞。由于没有碰撞,因此这意味着电缆的最大长度由电缆中的信号衰减决定。
半双工方法
这是千兆以太网使用的另一种方法。在这种方法中,交换机通常由集线器代替,集线器主要充当公共电缆;因此有可能发生碰撞。这种方法利用了 CSMA/裁谈会。
这种方法的最大长度主要取决于最小帧大小。
定义了三种方法:
-
传统的
-
运营商扩展
-
帧突发
传统
在这种方法中,帧的最小长度与传统以太网相同(即 512 位)。千兆以太网的时隙时间为 512 位×1/1000 秒,等于 0.512 秒
时隙的减少意味着冲突被提前 100 次检测到。
因此,网络的最大长度是 25 米。如果所有的站都在一个房间里,这可能是合适的,但它甚至可能不够长,不足以在一个办公室里连接计算机。
载波扩展
为了允许更长的网络,最小帧长度被增加。这种方法主要定义帧的最小长度等于 512 字节(即等于 4096 位);这意味着最小长度是 8 倍长。
这种方法基本上迫使站向任何大小小于 4096 位的帧添加扩展位(即填充)。
帧突发
如果有一系列短帧要发送,那么上述方法(即载波扩展)在这种情况下效率不高。每个帧序列还携带冗余数据。为了提高效率,提出了这种方法。
在这种方法的帮助下,发送多个帧,而不是给每个帧添加一个扩展。
千兆以太网中的物理层
在千兆以太网中,物理层更加复杂。
千兆以太网主要是为了连接两个或多个站点而设计的。如果只有两个站点,那么它们可以点对点连接。在三个或更多站点的情况下,我们可以通过使用中心的集线器或交换机来使用 start 拓扑。
还有一种可能的配置,可以连接多个星型拓扑。
履行
千兆以太网的分类可以通过使用双线或四线实现来完成。
-
双线实现使用光缆(1000Base-SX,短波或 1000Base-LX),或 STP(1000Base-CX)。
-
四线版本使用 5 类双绞线电缆(1000Base-T)。
名字 | 电缆 | 最大值段 |
---|---|---|
1000Base-CX | 2 对 STP | 25 米 |
1000Base-SX | 光纤电缆 | 550 米 |
1000Base-LX | 光纤电缆 | 5000 米 |
1000Base-T | 4 双 UTP | 100 米 |
千兆以太网的优势
下面给出了使用千兆以太网的一些好处:
-
带宽增加,性能提高。
-
获得和拥有的成本很低。
-
它提供了完全的兼容性。
-
通过使用全双工方法,有效带宽实际上增加了一倍。
-
它可以通过网络快速传输大量数据。
千兆以太网的缺点
-
1000Base-T 需要 4 对接线来传输数据。
-
1000Base-T 不支持全双工模式。
随机接入协议
原文:https://www.studytonight.com/computer-networks/random-access-protocol
在本教程中,我们将介绍计算机网络中数据链路层的随机接入协议。
在随机接入方法中,没有一个站优于另一个站,也没有一个站被分配对另一个站的控制权。它只是意味着没有一个站允许另一个站发送。
-
有数据要发送的站主要利用协议定义的过程来决定是否发送数据。
-
这个决定主要取决于介质的状态,因为介质可以是空闲的,也可以是繁忙的。
-
没有为任何站安排传输数据的时间,传输在所有站之间是随机的;这就是为什么这些方法被称为 随机访问。T3】
-
没有关于哪个站下一步应该发送数据的规则,所有站为了访问媒体而相互竞争。因此这些方法也被称为争用方法。
-
如果有两个或两个以上的站点试图发送数据,则在访问中发生冲突,这被称为冲突。
下面给出了属于随机接入协议类别的协议:
-
纯 ALOHA 和时隙 ALOHA
-
载波侦听多路访问(Carrier Sense Multiple Access)
-
CSMA/CD
-
csma/AC
欢迎
最早用于随机访问的方法是 ALOHA ,它是在 1970 年早期在夏威夷大学开发的。ALOHA 主要是为无线电/无线局域网设计的,但它也可以用于共享介质。
**由于媒体在站点之间共享,当一个站点发送数据时,另一个站点可能会同时尝试这样做。因此,来自两个站点的数据会发生冲突。
最初的 ALOHA 简称为“纯 ALOHA”。
纯 ALOHA
-
这个协议非常简单,但同时也很优雅。
-
该协议背后的主要思想是,每当有帧要发送时,每个站都会发送一个帧。
-
正如我们已经告诉你的,媒体是在不同的站点之间共享的,因此来自不同站点的帧之间存在冲突的可能性。
现在让我们看看纯 ALOHA 网络中的帧:
上图显示有 4 个站点,每个站点发送两个帧,因此共享介质上总共有 8 个帧。这 8 帧中,有一些帧相互碰撞。
因此,站 1 的帧 1.1 是唯一存活的帧。
我们需要重新发送那些在传输过程中被破坏的帧。纯 ALOHA 方法依赖于来自接收器的确认,无论何时任何站点发送帧,它都期望接收器发送确认。如果超时后没有收到确认,则该站认为该帧或确认被破坏,并以这种方式重新发送该帧。
在冲突中,主要涉及两个或多个站,如果超时后所有站都尝试重新发送帧,那么所有帧将再次冲突。
因此,在纯 ALOHA 中,当超时周期过去时,每个站在重新发送其帧之前等待随机的时间量,这种随机性有助于避免更多的冲突,并且这个时间被称为退避时间 (TB) 。
下面给出了用于纯 ALOHA 协议的程序:
效率
纯 ALOHA 的效率如下所示:
其中 G 表示愿意传输数据的站的数量。
由于大量的冲突,纯 ALOHA 的最大效率非常低。放 G=(1/2)时最大效率为 18.4% 。
脆弱的时候
是有碰撞可能的时候。
在纯 ALOHA 的情况下,脆弱时间为:2 x T fr
开槽 ALOHA
顾名思义,在时隙 ALOHA 中,共享信道的时间被简单地划分为离散的时间间隔,通常称为时隙。
-
在时隙 ALOHA 中,每个站只在时隙开始时发送数据。
-
由于只允许一个站在时隙的开始发送数据,如果任何站错过了这个时刻,那么它必须等到下一个时隙的开始。
-
如果两个站试图在同一时隙的开始发送,那么就有可能发生冲突
效率
时隙 ALOHA 的效率如下所示:
其中 G 表示愿意在同一时隙开始时发送数据的站的数量。
对于时隙 ALOHA 的最大效率,将 G 的值设为 1,则效率为 36.8%。
因此,由于冲突数量较少的原因,时隙 ALOHA 的最大效率很高。
现在让我们来看看纯 ALOHA 和开槽 ALOHA 之间的区别:
**Pure ALOHA vs Slotted ALOHA** | 纯 ALOHA | 开槽 ALOHA | | --- | --- | | 在纯 ALOHA 中,只要站有数据要发送,站就可以发送数据帧。 | 在这种情况下,站只能在时隙开始时发送数据。 | | 在纯 ALOHA 的情况下,时间是连续的 | 在时隙 ALOHA 的情况下,时间是离散的,并且是以时隙的形式。 | | 使用 Pure ALOHA 的一个主要优点是这个方法的实现简单。 | 与纯 ALOHA 相比,使用时隙 ALOHA 的主要优点之一是冲突数量减少,效率提高。简单来说,碰撞减少了一半,而效率增加了一倍。 | | 纯 ALOHA 提供的效率为 18.4%。 | 时隙 ALOHA 提供的效率是 36.8% | | 数据包成功传输的概率等于 `G x e-2G` | 数据包成功传输的概率等于 `G x e-G` | | 纯 ALOHA 提供的脆弱时间是`2 x T fr` | 时隙 ALOHA 提供的脆弱时间是 `T fr` |**受控访问协议
原文:https://www.studytonight.com/computer-networks/controlled-access-protocols
在本教程中,我们将介绍计算机网络中受控访问协议的概念。
在受控接入技术中,所有站点都需要相互协商,以确定哪个站点有权发送数据。
-
受控访问协议主要授予一次只发送一个节点的权限;从而避免共享介质之间的冲突。
-
除非得到其他站的授权,否则任何站都不能发送数据。
受控访问类别下的协议如下:
-
保留
-
投票
-
令牌传递
让我们逐一讨论每个协议:
1.保留
在这种方法中,站需要在发送数据之前进行预约。
-
时间主要分为区间。
-
此外,在每个间隔中,预留帧在该间隔中发送的数据帧之前。
-
假设系统中有‘N’个站点,那么在预留帧中正好有‘N’个预留微时隙;每个迷你剧都属于一个电视台。
-
每当一个站需要发送数据帧时,该站就在自己的微时隙中进行预约。
-
然后,已经预约的站可以在预约帧之后发送它们的数据。
例
让我们以 5 个站点和一个 5 微时隙预留帧为例。在第一个间隔中,站 2、3 和 5 已经进行了预订。而在第二间隔中,只有站 2 进行了预订。
2.投票
轮询方法主要适用于一台设备被指定为主站而另一台设备被指定为从站的拓扑结构。
-
所有数据交换都必须通过主设备进行,即使最终目的地是辅助设备。
-
因此,对独立用户的网络施加命令,并在网络中建立一个站作为控制器并定期轮询所有其他站,简称为轮询。
-
主设备主要控制链路,而辅助设备遵循主设备的指令。
-
主要设备负责确定在给定时间允许哪个设备使用信道。
-
因此,主设备始终是会话的发起者。
轮询功能
如果主设备想要接收数据,它通常会询问辅助设备是否有要发送的内容。这就是俗称的轮询功能。
-
有一个轮询功能,主要由主设备使用,以便从辅助设备请求传输。
-
当主设备准备好接收数据时,它必须依次询问(轮询)每个辅助设备是否有什么要发送的。
-
如果辅助设备有数据要传输,则发送数据帧,否则发送否定确认(NAK) 。
-
之后,如果出现否定响应,主服务器会以同样的方式轮询下一个辅助服务器,直到找到要发送数据的那个。当主设备接收到肯定响应(即数据帧)时,主设备读取该帧,然后返回确认(确认)帧,
选择功能
在这种情况下,如果主设备想要发送数据,它会通知辅助设备准备接收数据。这就是通常所说的选择功能。
-
因此选择功能由主设备在有东西要发送时使用。
-
我们已经告诉过你主设备总是控制链接。
-
在发送数据帧之前,选择 (SEL)帧是由主设备创建和发送的,SEL 帧的一个字段包括预期辅助设备的地址。
-
主设备提醒辅助设备即将到来的传输,然后等待辅助设备的确认。
投票的优势
下面给出了轮询技术的一些好处:
-
信道上的最小和最大访问时间和数据速率是可预测和固定的。
-
有优先级的分配,以确保从一些次要的更快的访问。
缺点
轮询方法有以下缺点:
-
对控制器的可靠性有很高的依赖性
-
周转时间的增加导致信道在低负载下的数据速率降低。
3.令牌传递
在令牌传递方法中,所有站点都以逻辑环的形式组织起来。我们也可以说,每个站都有一个前身和一个继承者。
-
前身是环中逻辑上在站之前的站;而后继站是在环中的站之后的站。现在正在访问频道的电台是当前电台。
-
基本上,以某种预定顺序从一个站循环到下一个站的特殊位模式或小消息通常被称为令牌。
-
拥有令牌主要是赋予电台访问频道和发送数据的权利。
-
当任何站点有一些数据要发送时,它会一直等待,直到从它的前身收到令牌。收到令牌后,它保存令牌,然后发送数据。当任何站点没有更多数据要发送时,它会释放令牌,然后将令牌传递给环中的下一个逻辑站点。
-
此外,在下一轮再次收到令牌之前,工作站无法发送数据。
-
在令牌传递中,当一个站点收到令牌并且没有要发送的数据时,它只是将令牌传递给下一个站点。
-
令牌传递技术导致的问题是令牌的重复或丢失。为了令牌传递技术的正确和可靠操作,还需要处理新站的插入和站的移除。
令牌环的性能由两个参数控制,即延迟和吞吐量。
延迟是对时间的度量;它是准备传输的数据包与传输时间之间的时间差。因此,将令牌发送到下一站所需的平均时间为 a/N
吞吐量是通信信道中成功流量的度量。
吞吐量,对于一个< 1 来说,S = 1/ (1 + a/N)
S = 1/【a(1+1/N)】对于 a > 1,这里 N =站数& a = Tp/Tt
Tp =传播延迟& Tt =传输延迟
在下图中,当站 1 拥有令牌时,它开始传输队列中的所有数据帧。现在,在传输之后,站-1 将令牌传递给站-2,依此类推。现在,只有当网络中的所有站点都传输了数据并通过令牌时,站点 1 才能再次传输数据。
注 :需要注意的是,A 令牌只能在生成它的那个通道工作,不能为其他任何通道工作。
载波侦听多路访问
原文:https://www.studytonight.com/computer-networks/carrier-sense-multiple-access
在本教程中,我们将详细介绍数据链路层中随机接入方法类别下的载波侦听多路接入的概念。
为了最大限度地减少碰撞的机会,并作为提高性能的回报,开发了方法名称 CSMA 。
-
如果一个站点在尝试使用介质之前感知到它,那么它会导致碰撞几率的降低。
-
载波侦听多路访问(CSMA)主要要求每个站在发送数据之前先侦听介质。
-
简单地说,我们可以说 CSMA 方法是基于“先感后传”或“先听后说”的原则。
-
存在减少碰撞的可能性,但是 CSMA 方法不能消除碰撞。
CSMA 的工作
在共享介质上,每当任何信道有数据帧要发送时,该站就试图检测来自连接到共享介质的其它站的任何载波信号的存在。
-
如果该站在共享介质上检测到任何载波信号,则意味着另一个传输正在共享介质上进行。
-
之后,该站等待直到正在进行的传输完成,然后在完成之后,该站启动其自己的传输。通常,站的传输由连接到信道/链路的所有其他站接收。
-
与 CSMA 一样,所有站点在发送自己的帧之前都会进行检测,这可以减少帧冲突。
-
如果共享媒体被两个站点检测为空闲,并且它们都同时启动传输,那么这将导致帧冲突。
CSMA 的脆弱时期
传播时间在 CSMA 被称为易损时间,并被表示为Tp
。这基本上是信号从介质的一端传播到另一端所需的时间。
当一个站发送一个帧,同时如果任何其他站试图发送一个帧,那么它将导致冲突。
在这种情况下,如果帧的第一位到达媒体的末尾,那么每个站都会听到该位,并抑制发送。
CSMA 的接入方式
CSMA 有不同版本的访问模式,如下所示:
-
1-持久的 CSMA
-
非持久性 CSMA
-
持久性 CSMA
-
1-Persistent CSMA 【T1]
这是最简单直接的方法之一。在这种方法中,一旦站点发现媒体空闲,它就立即发送帧。通过使用这种方法,发生冲突的几率更高,因为两个或多个站点可能同时发现共享介质空闲,然后立即发送它们的帧。
1-持续方法流程图:
下图显示了1-持久方法的行为:
-
Non-persistent CSMA 【T1]
在这种方法中,一个站有一个帧来发送传感线。如果线路空闲,则该站将发送帧,如果线路不空闲,则该站将等待随机的时间量,然后它再次感测线路。
在非持久 CSMA 方法的帮助下,碰撞的机会减少了,因为两个或多个站点等待相同的时间,然后再次尝试同时发送是不太可能发生的。
但是由于这种方法,网络的效率降低了,因为当可能有站要发送帧时,介质保持空闲。
非持久性方法的流程图:
下图显示了非持久性方法的行为:
-
Persistent CSMA 【T1]
如果信道具有时隙持续时间等于或大于最大传播时间的时隙,则使用该方法。p 持久方法主要结合了 1 持久和非持久 CSMA 的优点。
通过使用 p-persistent 方法,碰撞的机会减少,效率提高。
使用这种方法,如果站点发现线路空闲,那么它将遵循下面给出的步骤:
-
用概率 p,站发送它的帧。
-
在概率 q=1-p 的情况下,站主要等待下一个时隙的开始,然后再次检查线路。
-
如果发现线路空闲,请转到步骤 1。
-
如果发现线路繁忙,那么它就像发生了冲突一样,然后它利用退避过程。
-
持久性方法流程图:
下图显示了 p-Persistent 方法的行为:
载波侦听多路访问的变化
CSMA 方法有两种变体:
-
带冲突检测的载波侦听多路访问(CSMA/光盘)
-
带冲突避免的载波侦听多路访问(CSMA/加州)
传输层
计算机网络中的传输层
原文:https://www.studytonight.com/computer-networks/transport-layer-in-computer-networks
在本教程中,我们将详细介绍 OSI 参考模型中传输层的概念。
传输层是 OSI 参考模型的第 4 层。传输层主要负责整个消息的进程间传递。进程基本上是运行在主机上的应用程序。
传输层的基本功能是接受来自上一层的数据,将其拆分成更小的单元,将这些数据单元传递到网络层,并确保所有数据块都正确到达另一端。
此外,所有这些都必须高效地完成,并且要将上层与硬件技术中不可避免的变化隔离开来。
传输层还决定向会话层以及最终向网络用户提供何种类型的服务。最流行的传输连接类型是无错误点对点通道,它按照消息或字节的发送顺序发送消息或字节。
传输层是真正的端到端层,从源一直到目的地。换句话说,源机器上的程序使用消息头和控制消息与目标机器上的类似程序进行对话。
-
传输层还识别错误,如损坏的数据包、丢失的数据包和重复的数据包,并提供足够的纠错技术。
-
网络层的协议只在终端系统中实现,而不在网络路由器中实现。
-
传输层的协议提供了许多服务,如多路复用、多路分解、可靠的数据传输、带宽保证。
该层主要提供终端用户之间的透明数据传输,也提供数据到上层的可靠传输。
图:传输层
传输层的功能
-
服务点寻址:传输层报头包括服务点地址,即端口地址。这一层将消息发送到计算机上的正确进程,而不像网络层那样将每个数据包发送到正确的计算机。
-
分段和重组:一条消息被分成多个段(可传输的段);每个段包含一个序列号,这使得该层能够重组消息。消息到达目的地后会被正确重组,并替换传输中丢失的数据包。
-
连接控制:包括 2 种类型:
-
无连接传输层:每个网段都被视为一个独立的数据包,并在目的机器上传送到传输层。
-
面向连接的传输层:在传递数据包之前,在目的机器上与传输层建立连接。
-
-
流量控制:在该层中,流量控制是端到端执行的,而不是跨单个链路执行的。
-
差错控制:在本层进行端到端的差错控制,确保完整的报文无差错到达接收传输层。纠错是通过重传完成的。
现在让我们了解传输层的流程到流程交付。
流程到流程交付的说明
因此,传输层主要负责将消息从一个进程传递到另一个进程。
传输层的设计问题
-
接受来自会话层的数据,将其分割成段,并将其发送到网络层。
-
确保高效地正确交付数据。
-
将上层与技术变革隔离开来。
-
错误控制和流量控制。
Telnet vs SSH
原文:https://www.studytonight.com/computer-networks/telnet-vs-ssh
在本教程中,我们将了解计算机网络中 TELNET 和 SSH 之间的区别。
TELNET 基本上是 TErminal NETwork 的简称。它基本上是一种用于虚拟终端服务的 TCP/IP 协议,主要由国际标准组织(ISO)提出。
-
它是一个通用的客户机/服务器应用程序。
-
该程序能够建立到远程系统的连接,使得本地系统开始作为远程系统的终端出现。
-
它是一个标准的 TCP/IP 协议,用于虚拟终端服务。
-
简单地说,我们可以说 telnet 允许用户登录远程计算机。登录后,用户可以使用远程计算机的服务,然后可以将结果传输回本地计算机。
-
TELNET 主要是在大多数操作系统在分时环境下运行的时候设计的。在这种环境下,一台大型计算机可以支持多个用户。通常,计算机和用户之间的交互是通过终端进行的(它是键盘、鼠标和显示器的组合)。
-
TELNET 只使用一个 TCP/IP 连接。
SSH 是安全外壳的缩写。它是通过互联网访问网络设备和服务器的主要协议之一。
-
它基本上是一个网络协议,主要运行在 TCP/IP 协议之上。
-
它被广泛用于远程管理和访问设备。
-
此外,安全外壳(SSH)主要使两个远程连接的用户能够在不安全的网络上执行网络通信和其他服务。
-
因此,它提供了安全的客户端/服务器通信,还可以用于其他任务,如文件传输和电子邮件。
-
在 SSH 的帮助下,您可以通过网络登录到另一台计算机,它允许您在远程机器上执行命令。
-
您可以轻松地将文件从一台机器移动到另一台机器。
-
该协议主要对双向流量进行加密;借助此功能,您可以防止贩卖、嗅探和密码盗窃。
-
默认情况下,SSH 运行在端口号 22 上,您也可以更改它。
-
它适用于公共网络。
TELNET 和 SSH 的区别
现在让我们来看看 TELNET 和 SSH 之间的区别:
TELNET | 嘘 |
---|---|
它基本上是一个标准的 TCP/IP 协议,主要用于虚拟终端服务。TELNET 使您能够以一种看起来像本地系统的方式建立到远程系统的连接。 | SSH(安全外壳)基本上是一个程序,它帮助您通过网络登录到另一台计算机,以便在远程机器上执行命令。 |
TELNET 适用于专用网络 | SSH 主要适用于公共网络。 |
它以纯文本的形式传输数据。 | 它利用安全通道以加密格式传输数据。 |
它使用端口号 23。它主要是为局域网设计的。 | 默认情况下,SSH 在端口号 22 上工作,并且可以随时更改。 |
使用 TELNET 时带宽使用率很低。 | 使用 SSH 的带宽使用率很高。 |
没有为用户身份验证提供权限。 | SSH 是一种比 TELNET 更安全的协议,它使用公钥加密来进行身份验证。 |
主要用于 LINUX 和 Windows 操作系统。 | 所有操作系统都使用它。 |
使用 TELNET 发送的数据不容易被黑客解读。 | 用户名和密码可能会遭到恶意攻击。 |
该协议容易受到多种安全攻击。 | SSH 协议帮助您克服许多安全问题 |
TELNET 命令
下面给出了一些重要的 TELNET 命令:
-
打开
TELNET 中的 Open 命令主要用于打开主机名端口号,以便与主机建立 TELNET 连接 -
关闭
该命令主要帮助关闭现有的 TELNET 连接 -
退出
该命令用于退出 TELNET -
状态
该命令主要用于判断 Telnet 客户端是否连接。 -
计时标记
该命令主要用于定义计时标记。 -
终端类型/速度
该命令主要用于设置终端类型和速度。
SSH 命令
下面给出了一些用于 SSH 的重要命令:
-
ls
用于显示目录内容(主要是列出文件的名称)。 -
cd
这个命令主要帮助你更改目录 -
mkdir
这个命令帮助你创建一个新的文件夹/目录。 -
触摸
这个命令主要允许你删除一个文件。
UDP 协议
原文:https://www.studytonight.com/computer-networks/udp-protocol
在本教程中,我们将介绍计算机网络中的传输层协议,即 UDP 。
UDP 是用户数据报协议的简称。它是最简单的传输层协议之一。这是一种无连接且不可靠的传输协议。
-
这个协议主要是为了在互联网上发送数据包而设计的。
-
除了 UDP 提供进程到进程的通信而不是主机到主机的通信之外,该协议没有给 IP(互联网协议)的服务添加任何东西。
-
UDP 执行非常有限的错误检查。
-
该协议使用最小数量的开销。假设一个进程想要发送一条小消息,而不考虑可靠性,那么它可以利用 UDP。
-
该协议只是从网络层获取数据报,附加自己的报头,然后将其发送回用户。
用户数据报
UDP 数据包通常被称为用户数据报,报头大小是固定的,即 8 字节。
现在让我们看看用户数据报的格式;
1.源端口号
该端口号主要由源主机上运行的进程使用。其长度为 16 位,这意味着端口号的范围可以从 0 到 65,535。主要用于识别发送端口或源应用。
如果源主机是客户端(主要发送请求),那么在大多数情况下,临时端口号由进程请求,也由运行在源主机上的 UDP 软件选择。
但是在服务器作为源主机(主要是发送响应的服务器)的情况下,在这种情况下端口号是众所周知的端口号。
2.目的端口号
该端口号主要由在目的主机上运行的进程使用。其长度为 16 位。
如果目的主机是服务器(发送请求的客户端),那么端口号就是一个众所周知的端口号。
如果目的主机是客户端(发送响应的服务器),那么在大多数情况下端口号是临时端口号。
3.长度
数据报报头的这个字段主要用于标识 UDP 报头和封装数据的组合长度。这是一个 16 位字段。
UDP Length= Length of UDP header + Length of Encapsulated data
4.校验和
该字段主要用于检测错误。这是一个 16 位字段。
- 虽然校验和计算在用户数据报协议中不是强制性的。
UDP 的特点
下面给出了用户数据报协议的一些特征:
-
UDP 是一种不可靠的无连接协议。
-
这几乎是一个空协议。
-
如果数据流是单向的,那么它就是一个好的协议。
-
该协议不保证数据的传送。
-
该协议不提供拥塞控制机制。
-
UDP 提供最少的传输服务。
-
这是一个无状态协议。
UDP 的操作
下面给出了 UDP 的不同操作:
1.无连接服务
用户数据报协议提供无连接服务,这意味着由 UDP 发送的每个用户数据报都是一个独立的数据报。在不同的数据报中,没有任何关系,即使它们来自同一个源进程,也去往同一个目标程序。
用户数据报没有编号,没有连接建立,也没有连接终止。
每个数据报主要通过不同的路径传输。
2.流量控制和误差控制
用户数据报是一种非常简单和不可靠的传输协议。它不提供任何流量控制机制,因此没有窗口机制。因此,接收方可能会溢出传入的消息。
除校验和外,UDP 不提供任何错误控制机制。因此发送者不知道是否有任何消息丢失或重复。
由于缺乏流量控制和错误控制,这意味着使用 UDP 的进程应该提供这些机制。
3.封装和解封装
为了将消息从一个进程发送到另一个进程,用户数据报协议以 IP 数据报的形式封装和解封装消息。
UDP 的应用
下面给出了用户数据报协议的一些应用:
-
UDP 由那些需要一个请求一个响应的应用程序使用。
-
它被广播和组播应用程序使用。
-
SNMP 等管理流程利用 UDP 。
-
像路由信息协议这样的路由更新协议利用了用户数据报协议。
-
有错误和流量控制机制的进程使用 UDP。同样的一个应用是普通 FTP 协议(TFTP)。
众所周知的 UDP 端口
现在是时候看看用户数据报协议使用的一些众所周知的端口号了:
港口 | 草案 | 描述 |
---|---|---|
seven | 回声 | 该端口将收到的数据报回传给发送方。 |
nine | 抛弃 | 它用于丢弃收到的任何数据报。 |
Eleven | 用户 | 指示活动用户 |
Thirteen | 白天 | 用于返回日期和时间 |
Seventeen | 引用 | 用于返回当日报价 |
Nineteen | 批次(batch) | 用于返回字符串。 |
Fifty-three | 名称服务器 | 指示域名服务 |
Sixty-seven | 布茨 | 用于下载引导信息的服务器端口。 |
sixty-eight | 引导电脑 | 用于下载引导信息的客户端端口。 |
sixty-nine | 普通文件传送协议(Trivial File Transfer Protocol) | 普通 FTP 协议 |
One hundred and eleven | 位置遥控(remote position control) | 远程过程得 |
One hundred and twenty-three | 标准温度和压力 | 网络时间协议 |
One hundred and sixty-one | 简单网络管理协议(Simple Network Management Protocol) | 简单网络管理协议 |
One hundred and sixty-two | 简单网络管理协议(Simple Network Management Protocol) | 简单网络管理协议(陷阱) |
用户数据报协议中的排队概念
在用户数据报协议中,队列通常与端口相关联:
传入队列主要用于接收消息,而传出队列主要用于发送消息。队列主要在进程处于运行状态时起作用,当进程终止时,队列同时被破坏。
有几个进程想要使用 UDP 提供的服务。
用户数据报协议主要对进程进行复用和解复用,以便在一台主机上运行多个进程。
UDP 的优点
下面给出了 UDP 的一些优点:
-
使用 UDP,广播和多播传输是可能的。
-
UDP 有效地使用带宽,因为数据包开销很小。
-
由于不需要建立连接,因此 UDP 非常快。
-
没有包的缓冲和编号。
-
不需要握手。
-
没有拥塞控制,因此它用于实时应用。
UDP 的缺点
现在是时候看看 UDP 了:
1.缺乏有保证的交货。
2.没有流量控制。
3.没有拥塞控制机制。
TCP 与 UDP 协议
原文:https://www.studytonight.com/computer-networks/tcp-vs-udp-protocol
在本教程中,我们将介绍 TCP 和 UDP 之间的区别;网络层的两个协议。
TCP 是传输控制协议的缩写。TCP 是面向连接的协议。该协议主要在两个 TCp 之间创建一个虚拟连接来发送数据。该协议还利用了传输层的流量和错误控制机制。
TCP 是传输层协议。此外, TCP 是一个程序对程序协议,与 UDP 相同。 TCP/IP 主要代表传输控制协议/互联网协议。该协议专门设计为一个模型,在不可靠的网间网络上提供高可靠性和端到端字节流。
我们也可以说 TCP 给 IP 的服务增加了面向连接和可靠性的特性。
TCP 连接只需借助三次握手即可建立。因此,基本上这是一个启动和确认连接的过程。一旦建立连接,数据传输就开始了,一旦传输过程结束,只要关闭已建立的虚拟电路,连接就终止了。
UDP 是用户数据报协议的缩写。 UDP 是一种无连接且不可靠的协议。除了尽管存在主机到主机的通信,但是该协议提供了进程到进程的通信这一事实之外,该协议没有给 IP 的服务增加任何东西。 UDP 协议在非常有限的数量内执行错误检查。
用户数据报协议使用简单的传输方法。 UDP 不使用隐含的握手对话来进行排序、可靠性或数据完整性。该协议主要假设错误检查和纠正不重要或在应用程序中执行。为了避免网络接口级别的这种处理的开销。 UDP 也兼容分组广播和组播。
现在是时候看看 TCP 和 UDP 的区别了。
TCP 和 UDP 的区别
TCP 和 UDP 之间的差异如下表所示:
三氯苯酚 | 用户数据报协议(User Datagram Protocol) |
---|---|
TCP 是一种面向连接的协议。 | UDP 是一种无连接协议。 |
该协议以特定的顺序重新排列数据包。 | 没有排序的概念,因为所有的包都是相互独立的。 |
TCP 的报头大小是 20 字节。 | UDP 的报头大小是 8 字节。 |
传输控制协议(TCP)是一种可靠的协议,因为它确保了每个数据包的传送。 | 用户数据报协议不可靠,因为它不能保证数据包的传送。 |
因为 TCP 是一种面向连接的协议,这仅仅意味着在通过网络传输数据之前需要建立连接。 | 由于 UDP 是无连接协议,因此不需要建立连接,也不需要检查系统是否准备好接收数据。 |
它利用握手协议,如同步、同步确认、确认。 | 没有握手的概念。 |
该协议执行错误检查,并提供错误恢复。 | 没有错误检查的概念,但是 UDP 通常会丢弃错误的数据包。 |
确认段存在。 | 不存在确认段。 |
TCP 提供了较慢的速度。 | UDP 比 TCP 更快 |
TCP 消息通常通过互联网从一台计算机传到另一台计算机。 | 在这种情况下,一个程序可以向另一台计算机发送大量数据包。 |
TCP 中存在流量控制机制,因此发送方不能同时向接收方发送太多数据包。 | 缺乏流量控制机制。 |
TCP 提供了广泛的错误检查,因为它提供了流量控制和数据确认。 | UDP 提供了一种单一的错误检查机制,用于校验和。 |
在数据包丢失的情况下,当使用 TCP 时,可以重传数据包。 | 当使用 UDP 时,重传是不可能的。 |
与 UDP 相比,该协议重量较重。 | UDP 比 TCP 更快、更高效。 |
该协议主要以字节流的形式读取数据,并且消息被传输到段边界。 | UDP 消息主要包含一个接一个发送的数据包。UDP 还会在到达时检查完整性。 |
TCP
原文:https://www.studytonight.com/computer-networks/tcp-transmission-control-protocol
在本教程中,我们将介绍计算机网络中传输层的另一种协议。
TCP 是传输控制协议的缩写。这是一个传输层协议。TCP 是一种面向连接的协议。这是一种用于传输的可靠协议。该协议为互联网协议的服务增加了面向连接和可靠性的特性。
该协议试图以特定的顺序从端到端传送字节流。
由于提供端到端通信是传输层的责任,因此 TCP 在传输层中起着非常重要的作用。
传输控制协议的特点
下面给出了 TCP 的特性,让我们来看看它们:
1.编号系统
TCP 中有两个字段,主要是序列号和确认号。TCP 中的这两个字段主要是指字节数。
-
字节数
每个连接中正在传输的数据字节由 TCP 进行编号。编号主要从随机生成的数字开始。-
TCP 主要对连接中传输的所有数据字节进行编号。
-
它生成一个介于 0 和 2 之间的随机数,第一个字节的数字的幂是 32 -1。
-
示例:如果随机数是 1056,并且总共有 6000 个字节要发送,那么字节的编号是从 1056 到 7055。
-
-
序号
字节编号后,TCP 以“段”的形式对字节进行分组。-
一个序列被分配给正在发送的每个段。
-
每个段的序列号是该段中携带的第一个字节的编号。
-
因此,段的序列号字段中的值主要定义该段中包含的第一个数据字节的数量。
-
-
确认号
段中确认字段的值主要定义一方主要期望接收的下一个字节的数量。- 它本质上是累积的。
2.流控制
传输控制协议提供了流量控制的便利。在 TCP 的帮助下,数据的接收者控制发送者要发送的数据量。
-
流量控制主要是为了防止接收器被数据淹没
-
编号系统还允许 TCP 使用面向字节的流控制。
3.错误控制
由于 TCP 提供可靠的服务,因此它为此目的实现了一种错误控制机制。错误控制将数据段视为错误检测的数据单元。错误控制本质上是面向字节的。
4.拥塞控制
TCP 的另一个主要特点是它促进了网络中的拥塞控制。发送方发送的数据量不仅由接收方控制,网络中的拥塞也决定了它。
5.全双工
TCP 提供了另一个特性,那就是全双工,这意味着通过使用 TCP,数据可以双向传输。
6。 TCP 是一种传输层协议,因为它主要用于将数据从发送方传输到接收方。
现在,在进入下一个概念之前,让我们看一下 TCP 数据包。
段
TCP 中的数据包主要称为段。
格式
下面给出了 TCP 数据包的格式,让我们来看看:
该段主要由一个 20 到 60 字节的标题组成,后面是应用程序。通常,报头是 20 个字节,但是有时如果没有选项,那么如果它包含许多选项,那么它会增加到 60 个字节。
-
源端口地址
是一个 16 位字段,主要定义主机中应用程序的端口号,主要用于发送报文段。源端口地址的用途与 UDP 报头中的源端口地址相同。 -
目的端口地址
这也是一个 16 位地址,主要是定义主机中应用程序的端口号,主要用于接收段。端口地址上的目的地层与 UDP 报头中的目的地端口地址相同。 -
序列号
它是一个 32 位字段,主要定义分配给数据段中包含的第一个字节的编号。 -
确认号
它也是一个 32 位字段,主要用于定义该段的接收方期望从对方接收的字节数。 -
报头长度
它是一个 4 位字段,主要用于指示 TCP 报头中 4 字节的字数。报头长度在 20 到 60 字节之间。 -
保留
这是一个 6 位字段,主要是为将来使用而保留的。 -
控制
该字段主要定义 6 个不同的控制位或标志,在所有控制位或标志中,此时只能设置一个。
这些位主要用于流量控制、连接建立、终止以及传输数据的方式。
-
窗口大小
该字段主要用于定义窗口的大小。该字段的大小为 16 位。它主要包含接收方可以接受的数据大小。该字段的值主要由接收方决定。 -
校验和
这是一个 16 位字段,主要包含校验和。在 TCP/IP 的情况下,此字段是必需的。 -
紧急指针
该字段的大小为 16 位,仅在设置了紧急标志的情况下有效。此字段仅在数据段包含紧急数据时使用。 -
选项
该字段用 32 位表示。
传输控制协议连接
众所周知,TCP 是一种面向连接的协议,这意味着该协议在源和目的地之间建立了一条虚拟路径。然后,属于该消息的所有段都通过该虚拟路径发送。
在 TCP 中,面向连接的传输主要需要三个阶段,这三个阶段是:
-
连接建立阶段
-
数据传输阶段
-
连接终止。
连接建立阶段
数据传输在全双工模式下完成。TCP 中的连接建立主要称为三方握手。让我们借助一个例子来理解这一点:一个名为 client 的应用程序想要通过使用 TCP 作为传输层协议来与另一个名为 server 的应用程序建立连接。
这个过程主要从服务器开始,服务器程序主要告诉 TCP 它准备接受一个连接。这主要被称为被动打开请求。尽管服务器 TCP 已经准备好接受来自世界上任何机器的任何连接,但它自己无法建立连接。
synchronizing 同步
-
该标志用于序列号的同步。
-
它不携带任何真实数据。
-
主要消耗 1 个序列号。
儿子+ACK
-
这主要用于其他方向的同步和接收信号的确认。
-
它不携带任何真实数据。
-
它还消耗 1 个序列号。
命令正确应答
-
它只是一个确认段。
-
如果它不携带任何数据,则不消耗任何序列号。
数据传输阶段
建立连接后,可以进行双向数据传输。客户端和服务器都可以发送数据和确认。
连接终止阶段
参与数据交换的双方可以关闭连接,尽管它通常是由客户端发起的。连接终止有两种方式:
-
三方握手
-
带有半闭合选项的四向握手。
图显示了使用三方握手的连接终止
鳍状物
-
如果该段不携带任何数据,它将消耗一个序列号。
-
它可能携带也可能不携带任何真实数据。
芬+ACK 组合键
-
如果不携带任何数据,该段将消耗后果编号。
-
FIN 段宣布连接在另一个方向关闭。
-
确认用于接收到的 FIN。
-
它只消耗 1 个序列号。
命令正确应答
-
它只是一个确认段。
-
它不消耗任何序列号。
TCP 的优点
下面给出了 TCP 的一些优点:
1.TCP 执行数据控制和流量控制机制。
2.TCP 为跨平台提供了出色的支持。
3.TCP 协议确保了数据的可靠传输。
4.它以特定的顺序将数据从发送方传输到接收方。
5.这是一个面向连接的可靠协议。
6.它在调制解调器或局域网上具有良好的相对吞吐量。
7.使用校验和提供错误检测机制,使用 ARP 或返回协议提供纠错机制。
TCP 的缺点
下面给出了 TCP 的缺点:
1.它不能用于广播或多播传输。
2.间接费用有所增加。
OSI
通信网络中的参考模型
原文:https://www.studytonight.com/computer-networks/reference-models
最重要的参考模型有:
- OSI 参考模型。
- TCP/IP 参考模型。
OSIOSI 模型简介
使用计算机网络的用户很多,分布在世界各地。确保国家和世界范围的数据通信。)开发了这个模型。这被称为开放系统互连模型,通常被称为开放系统互连模型。OSI 模型架构由七层组成。它在一个完整的通信系统中定义了七个层次。OSI 参考模型在另一章中解释。
TCP/IP 参考模型介绍
TCP/IP 是传输控制协议和互联网协议。协议是一套管理互联网上所有可能的通信的规则。这些协议描述了主机或互联网之间的数据移动,并提供了简单的命名和寻址方案。
TCP/IP 参考模型将在另一章中详细解释。
OSI 模型——特点、原则和层次
原文:https://www.studytonight.com/computer-networks/complete-osi-model
有n
数量的用户使用计算机网络,分布在世界各地。因此,为了确保国家和世界范围内的数据通信,必须开发相互兼容的系统。OSI 代表OSI。这被称为开放系统互连 (OSI)的模型,通常被称为 OSI 模型。
OSIOSI 模型是一个七层架构。它在一个完整的通信系统中定义了七个层次。它们是:
下面我们有 OSI 模型的完整表示,展示了所有层以及它们如何相互通信。
在下表中,我们指定了 OSI 模型各层使用的协议和交换的数据单元。
OSI 模型的特点
- 通过这种 OSI 模型,可以理解网络通信的全貌。
- 我们看到了硬件和软件是如何协同工作的。
- 随着新技术的发展,我们可以理解它们。
- 分开网络更容易排除故障。
- 可用于比较不同网络上的基本功能关系。
OSI 参考模型的原则
OSI 参考模型有 7 层。用于达到七个层次的原则可以简单总结如下:
- 应该在需要不同抽象的地方创建一个层。
- 每一层都应该执行明确定义的功能。
- 选择每一层的功能时,应着眼于定义国际标准化的协议。
- 应该选择层边界来最小化通过接口的信息流。
- 层的数量应该足够大,以至于不同的功能不需要出于必要而被放在同一个层中,并且足够小,以至于架构不会变得笨拙。
不同层的功能
以下是 OSI 模型各层执行的功能。这只是一个介绍,我们将在接下来的教程中详细介绍每一层。
OSI 模型第 1 层:物理层
- 物理层是 OSI 模型的最底层。
- 它激活、维护和停用物理连接。
- 它负责通过网络传输和接收非结构化原始数据。
- 传输所需的电压和数据速率在物理层定义。
- 它将数字/模拟位转换成电信号或光信号。
- 数据编码也在这一层完成。
OSI 模型第 2 层:数据链路层
- 数据链路层同步要通过物理层传输的信息。
- 该层的主要功能是确保数据在物理层上从一个节点到另一个节点的传输没有错误。
- 按顺序发送和接收数据帧由该层管理。
- 这一层发送和期望分别接收和发送的帧的确认。未确认接收帧的重新发送也由该层处理。
- 该层在两个节点之间建立逻辑层,并管理网络上的帧流量控制。当帧缓冲区已满时,它会向发送节点发送停止信号。
OSI 模型第 3 层:网络层
- 网络层通过不同的通道将信号从一个节点路由到另一个节点。
- 它充当网络控制器。它管理子网流量。
- 它决定数据应该走哪条路线。
- 它将传出的消息分成数据包,并将传入的数据包组装成更高级别的消息。
OSI 模型第 4 层:传输层
- 传输层决定数据传输应该在并行路径还是单路径。
- 数据的多路复用、分段或分割等功能由该层完成
- 它从上面的会话层接收消息,将消息转换成更小的单元,并将其传递到网络层。
- 传输层可能非常复杂,具体取决于网络要求。
传输层将消息(数据)分成小单元,以便网络层更有效地处理它们。
OSI 模型第 5 层:会话层
- 会话层管理和同步两个不同应用之间的对话。
- 从源到目标的数据传输会话层数据流会被标记并正确地重新同步,这样就不会过早地切断消息的结尾,从而避免数据丢失。
OSI 模型第 6 层:表示层
- 表示层注意数据的发送方式,使接收方理解信息(数据),并能够使用数据。
- 在接收数据的同时,表示层转换数据,为应用层做好准备。
- 两种交流系统的语言(语法)可能不同。在这种情况下,表示层起着翻译的作用。
- 它具有数据压缩、数据加密、数据转换等功能。
OSI 模型第 7 层:应用层
- 应用层是最顶层。
- 干扰用户结果的文件传输也在这一层完成。邮件服务、目录服务、网络资源等是应用层提供的服务。
- 该层主要保存应用程序,以对接收和发送的数据进行操作。
OSI 参考模型的优点
- OSI 模型很好地区分了服务、接口和协议。
- OSI 模型的协议隐藏得非常好。
- 随着技术的变化,协议可以被新的协议所取代。
- 支持面向连接的服务和无连接服务。
OSI 参考模型的缺点
- 模型是在协议发明之前设计出来的。
- 协议的拟合是一项乏味的任务。
- 只是作为参考模型。
物理层——OSI 参考模型
原文:https://www.studytonight.com/computer-networks/osi-model-physical-layer
物理层是 OSI 参考模型的最低层。它负责将比特从一台计算机发送到另一台计算机。这一层与比特的含义无关,它处理与网络的物理连接的建立以及信号的发送和接收。
物理层的功能
以下是 OSI 模型物理层执行的各种功能。
- 位的表示:该层中的数据由位流组成。这些比特必须编码成信号才能传输。它定义了编码的类型,即 0 和 1 是如何变成信号的。
- 数据速率:该层定义传输速率,即每秒的位数。
- 同步:处理发射机和接收机的同步。发送方和接收方在位级同步。
- 接口:物理层定义设备与传输介质之间的传输接口。
- 线路配置:该层将设备与介质连接:点对点配置和多点配置。
- 拓扑:设备必须使用以下拓扑连接:网状、星形、环形和总线。
- 传输模式:物理层定义两个设备之间的传输方向:单工、半双工、全双工。
- 处理基带和宽带传输。
物理层的设计问题
- 物理层负责在通信信道上传输原始比特。
- 设计问题与确保当一方发送一个
1
位时,另一方接收的是一个1
位而不是一个0
位有关。 - 这里典型的问题有:
- 一个
1
位应该用多少伏,一个0
应该用多少伏? - 一位能持续多少纳秒?
- 传输是否可以在两个方向同时进行?
- 传输是否可以在两个方向同时进行?
- 网络连接器有多少个引脚,每个引脚用于什么?
- 一个
- 这里的设计问题主要涉及机械、电气和定时接口,以及位于物理层之下的物理传输介质。
数据链路层——OSI 模型
原文:https://www.studytonight.com/computer-networks/osi-model-datalink-layer
数据链路层执行最可靠的节点到节点的数据传递。它将从网络层收到的数据包形成帧,并将其提供给物理层。它还同步了要通过数据传输的信息。错误控制很容易做到。编码的数据然后被传递到物理。
数据链路层使用错误检测位。它还可以纠正错误。传出消息被组装成帧。然后,系统等待在传输之后接收到确认。发送消息是可靠的。
数据链路层的主要任务是将原始传输设施转换为一条线路,该线路对于网络层来说似乎没有未检测到的传输错误。它通过让发送方将输入数据分解成数据帧(通常是几百或几千字节)并顺序传输帧来完成这一任务。如果服务可靠,接收器通过发回一个确认帧来确认每个帧的正确接收。
数据链路层的功能
- 成帧:帧是从网络层接收的比特流,分成可管理的数据单元。这种比特流的划分是由数据链路层完成的。
- 物理寻址:如果要将帧分发到网络上的不同系统,数据链路层会为帧添加一个报头,以定义帧的发送方或接收方的物理地址。
- 流量控制:流量控制提供了一种流量控制机制,通过缓冲额外的位来避免快速发送器运行慢速接收器。这可以防止接收器端的交通堵塞。
- 差错控制:差错控制是通过在帧尾增加一个拖车来实现的。使用这种机制还可以防止帧重复。数据链路层增加了防止帧重复的机制。
- 访问控制:当两个或多个设备连接到同一条链路时,该层的协议决定了在任何给定时间哪个设备对该链路拥有控制权。
数据链路层的设计问题
- 数据链路层(以及大多数更高层)中出现的问题是如何防止快速发射机淹没慢速接收机。经常需要一些流量调节机制来让发射机知道接收机此刻有多少缓冲空间。通常,流量调节和错误处理是集成的。
- 广播网络在数据链路层还有一个额外的问题:如何控制对共享信道的访问。数据链路层的一个特殊子层,媒体访问控制子层,处理这个问题。
网络层——OSI 模型
原文:https://www.studytonight.com/computer-networks/osi-model-network-layer
网络层控制子网的运行。该层的主要目的是通过多条链路(网络)将数据包从源传送到目的地。如果两台计算机(系统)连接在同一链路上,则不需要网络层。它通过不同的通道将信号路由到另一端,并充当网络控制器。
它还将传出的消息分成数据包,并将传入的数据包组装成更高级别的消息。
在广播网络中,路由问题很简单,因此网络层通常很薄甚至不存在。
网络层的功能
- 它将逻辑网络地址转换为物理地址。与电路、信息或分组交换有关的。
- 路由器和网关在网络层运行。网络层提供了将数据包路由到最终目的地的机制。
- 提供连接服务,包括网络层流量控制、网络层错误控制和分组序列控制。
- 将较大的数据包分成小数据包。
网络层的设计问题
- 一个关键的设计问题是确定数据包如何从源路由到目的地。路由可以基于连接到网络的静态表,并且很少改变。它们也可以是高度动态的,为每个数据包重新确定,以反映当前的网络负载。
- 如果子网中同时存在太多的数据包,它们会相互干扰,形成瓶颈。这种拥塞的控制也属于网络层。
- 此外,提供的服务质量(延迟、传输时间、抖动等)也是网络层问题。
- 当数据包必须从一个网络传输到另一个网络才能到达目的地时,会出现许多问题,例如:
- 第二网络使用的寻址可能与第一网络不同。
- 第二个可能根本不接受数据包,因为它太大了。
- 协议可能不同,等等。
- 网络层需要克服所有这些问题,以允许异构网络互联。
传输层——OSI 模型
原文:https://www.studytonight.com/computer-networks/osi-model-transport-layer
传输层的基本功能是接受来自上一层的数据,将其拆分成更小的单元,将这些数据单元传递到网络层,并确保所有数据块都正确到达另一端。
此外,所有这些都必须高效地完成,并且要将上层与硬件技术中不可避免的变化隔离开来。
传输层还决定向会话层以及最终向网络用户提供何种类型的服务。最流行的传输连接类型是无错误点对点通道,它按照消息或字节的发送顺序发送消息或字节。
传输层是真正的端到端层,从源一直到目的地。换句话说,源机器上的程序使用消息头和控制消息与目标机器上的类似程序进行对话。
传输层的功能
- 服务点寻址:传输层报头包括服务点地址,即端口地址。这一层将消息发送到计算机上的正确进程,而不像网络层那样将每个数据包发送到正确的计算机。
- 分段和重组:一条消息被分成多个段;每个段包含序列号,这使得该层能够重组消息。消息到达目的地后会被正确重组,并替换传输中丢失的数据包。
- 连接控制:包括 2 种类型:
- 无连接传输层:每个网段都被视为一个独立的数据包,并在目的机器上传送到传输层。
- 面向连接的传输层:在传送数据包之前,在目的机器上与传输层建立连接。
- 流量控制:在该层中,流量控制是端到端进行的。
- 差错控制:该层端到端进行差错控制,确保完整的报文无差错到达接收传输层。纠错是通过重传完成的。
传输层的设计问题
- 接受来自会话层的数据,将其分割成段并发送到网络层。
- 确保高效、正确地交付数据。
- 将上层与技术变革隔离开来。
- 错误控制和流量控制。
会话层——OSI 模型
原文:https://www.studytonight.com/computer-networks/osi-model-session-layer
会话层允许不同机器上的用户在他们之间建立活动的通信会话。
它的主要目的是建立、维护和同步通信系统之间的交互。会话层管理和同步两个不同应用程序之间的对话。在会话层,数据流会被标记并正确地重新同步,这样就不会过早地切断消息的结尾,避免数据丢失。
会话层的功能
- 对话控制:该层允许两个系统以半双工或全双工方式开始相互通信。
- 令牌管理:该层防止双方同时尝试相同的关键操作。
- 同步:该层允许进程将被视为同步点的检查点添加到数据流中。示例:如果系统正在发送一个 800 页的文件,建议每隔 50 页添加一个检查点。这确保了 50 页单元被成功接收和确认。这在崩溃时是有益的,就好像崩溃发生在第 110 页;没有必要重传 1 到 100 页。
会话层的设计问题
- 允许机器以无缝方式在它们之间建立会话。
- 为用户提供增强的服务。
- 管理对话框控件。
- 提供令牌管理、同步等服务。
表示层——OSI 模型
原文:https://www.studytonight.com/computer-networks/osi-model-presentation-layer
该层的主要目标是处理两个通信系统之间交换的信息的语法和语义。表示层注意数据的发送方式,以便接收者理解信息(数据)并能够使用数据。两种交流系统的语言(语法)可能不同。在这种情况下,表示层扮演着翻译的角色。
为了使具有不同数据表示的计算机能够进行通信,可以以抽象的方式定义要交换的数据结构。表示层管理这些抽象数据结构,并允许定义和交换更高级别的数据结构(例如:银行记录)。
表示层的功能
- 翻译:在传输之前,字符和数字形式的信息应该改为比特流。表示层负责编码方法之间的互操作性,因为不同的计算机使用不同的编码方法。它在网络要求的格式和计算机要求的格式之间转换数据。
- 加密:在发送端进行加密,在接收端进行解密。
- 压缩:进行数据压缩,降低待传输数据的带宽。数据压缩的主要作用是减少要传输的位数。它在传输音频、视频、文本等多媒体时非常重要。
表示层的设计问题
- 管理和维护所传输信息的语法和语义。
- 以约定的标准方式编码数据。字符串、双精度、日期等。
- 在线上执行标准编码。
应用层——OSI 模型
原文:https://www.studytonight.com/computer-networks/osi-model-application-layer
它是 OSI 模型的最顶层。数据(信息)的各种操作都是在这一层完成的,这使得用户或软件能够访问网络。该层提供的一些服务包括:电子邮件、传输文件、向用户分发结果、目录服务、网络资源等。
应用层包含用户通常需要的各种协议。一个广泛使用的应用协议是 HTTP(超文本传输协议),它是万维网的基础。当浏览器想要一个网页时,它会使用 HTTP 向服务器发送它想要的网页名称。然后,服务器将该页面发回。
其他使用的应用协议有:FTP 协议(FTP) 、普通 FTP 协议(TFTP) 、简单邮件传输协议(SMTP) 、 TELNET 、域名系统(DNS) 等。
应用层的功能
- 邮件服务:该层为电子邮件转发和存储提供基础。
- 网络虚拟终端:允许用户登录远程主机。该应用程序在远程主机上创建终端的软件仿真。用户的计算机与软件终端对话,软件终端又与主机对话,反之亦然。然后,远程主机认为它正在与自己的一个终端通信,并允许用户登录。
- 目录服务:该层提供对各种服务的全局信息的访问。
- 文件传输、访问和管理(FTAM): 它是访问文件和管理文件的标准机制。用户可以访问远程计算机中的文件并对其进行管理。他们还可以从远程计算机检索文件。
应用层的设计问题
应用层协议的设计和实现中经常会出现问题,这些问题可以通过几种不同模式语言的模式来解决:
- 应用层通信协议的模式语言
- 服务设计模式
- 企业应用程序架构的模式
- 面向模式的软件架构
计算机网络
TCP 参考模型
原文:https://www.studytonight.com/computer-networks/tcp-ip-reference-model
TCP/IP 是指传输控制协议和互联网协议。它也是当前互联网架构中使用的网络模型。协议是管理网络上每一个可能的通信的一组规则。这些协议描述了源和目的地或互联网之间的数据移动。它们还提供简单的命名和寻址方案。
TCP/IP 模型中的协议和网络:
TCP/IP 参考模型概述
TCP/IP 即传输控制协议和互联网协议是由国防部的项目研究机构 (ARPA,后来的 DARPA)开发的,作为连接远程机器的网络互连研究项目的一部分。
在研究过程中,导致制作 TCP/IP 参考模型的突出特点是:
- 支持灵活的架构。向网络中添加更多机器很容易。
- 网络是健壮的,并且连接保持完整,直到源和目标机器运行。
总的想法是允许一台计算机上的一个应用程序与运行在不同计算机上的另一个应用程序对话(发送数据包)。
不同层次的 TCP/IP 参考模型
下面我们讨论了构成 TCP/IP 参考模型的 4 层:
第 1 层:主机到网络层
- 最底层的。
- 协议用于连接到主机,以便通过主机发送数据包。
- 因主机和网络而异。
第二层:互联网层
- 基于无连接网间层的分组交换网络的选择称为网间层。
- 它是将整个架构联系在一起的层。
- 它帮助数据包独立到达目的地。
- 接收数据包的顺序不同于发送数据包的方式。
- 这一层使用的是网际协议。
- 互联网层执行的各种功能有:
- 传送 IP 数据包
- 执行路由
- 避免拥堵
第 3 层:传输层
- 它决定数据传输应该在并行路径还是单路径上。
- 数据的多路复用、分段或分割等功能由传输层完成。
- 应用程序可以读写传输层。
- 传输层向数据添加报头信息。
- 传输层将消息(数据)分成小单元,以便网络层更有效地处理它们。
- 传输层还会按顺序排列要发送的数据包。
第 4 层:应用层
TCP/IP 规范描述了许多位于协议栈顶端的应用程序。其中有 TELNET、FTP、SMTP、DNS 等。
- TELNET 是一种双向通信协议,允许连接到远程机器并在其上运行应用程序。
- FTP 协议(FTP 协议)是一种协议,允许通过网络连接的计算机用户之间传输文件。它可靠、简单、高效。
- SMTP (简单邮件传输协议)是一种协议,用于通过路由在源和目的地之间传输电子邮件。
- 域名系统(域名服务器)为通过网络连接的主机将一个 IP 地址解析为一个文本地址。
- 它允许对等实体进行对话。
- 它定义了两个端到端协议:TCP 和 UDP
- TCP(传输控制协议):它是一种可靠的面向连接的协议,处理从源到目的地的字节流,没有错误和流量控制。
- UDP(用户数据报协议):它是一种不可靠的无连接协议,不需要 TCP、定序和流量控制。一次性请求-回复服务。
TCP/IP 模式的优点
- 它独立运作。
- 它是可扩展的。
- 客户端/服务器架构。
- 支持多种路由协议。
- 可用于在两台计算机之间建立连接。
传输控制协议的缺点
- 在这种情况下,传输层不能保证数据包的传送。
- 该模型不能用于任何其他应用程序。
- 替换协议并不容易。
- 它还没有明确地将其服务、接口和协议分开。
OSI 与 TCP 参考模型的比较
原文:https://www.studytonight.com/computer-networks/comparison-osi-tcp-model
现在是时候比较我们到目前为止所学的两个参考模型了。让我们从解决这两个模型的相似之处开始。
以下是开放系统互连参考模型和 TCP 参考模型之间的一些相似之处。
- 两者都有分层架构。
- 层提供类似的功能。
- 两者都是协议栈。
- 两者都是参考模型。
OSI 与 TCP 参考模型的区别
以下是 OSI 参考模型和 TCP/IP 参考模型之间的一些主要区别,下面是图解比较。
| 开放系统互连 | 传输控制协议/互联网协议 |
| 1.OSI 是一个通用的、独立于协议的标准,充当网络和最终用户之间的通信网关。 | 1.TCP/IP 模型基于标准协议,互联网就是围绕这些标准协议发展起来的。它是一种通信协议,允许主机通过网络连接。 |
| 2.在 OSI 模型中,传输层保证数据包的传输。 | 2.在 TCP/IP 模型中,传输层不保证数据包的传送。不过,TCP/IP 模式更可靠。 |
| 3.遵循垂直方法。 | 3.遵循水平方法。 |
| 4.OSI 模型有一个单独的表示层和会话层。 | 4.TCP/IP 没有单独的表示层或会话层。 |
| 5.传输层面向连接。 | 5.传输层是面向连接的,也是无连接的。 |
| 6.网络层既面向连接,又无连接。 | 6.网络层连接较少。 |
| 7.OSI 是构建网络的参考模型。一般来说,它被用作一种指导工具。 | 7.在某种程度上,TCP/IP 模型是 OSI 模型的实现。 |
| 8.OSI 模型的网络层提供面向连接和无连接的服务。 | 8.TCP/IP 模型中的网络层提供无连接服务。 |
| 9.OSI 模型有一个问题,就是如何将协议适配到模型中。 | 9.TCP/IP 模型不适合任何协议 |
| 10.协议隐藏在 OSI 模型中,随着技术的变化很容易被替换。 | 10.在 TCP/IP 中,替换协议并不容易。 |
| 11.OSI 模型非常清晰地定义了服务、接口和协议,并对它们进行了明确的区分。它与协议无关。 | 11.在 TCP/IP 中,服务、接口和协议没有明确分开。它也依赖于协议。 |
| 12.它有 7 层 | 12.它有 4 层 |
OSI 参考模型与 TCP 参考模型的图解比较
计算机网络中的关键术语
原文:https://www.studytonight.com/computer-networks/key-terms-computer-networks
以下是在计算机网络环境中经常使用的一些重要术语。
| 条款 | 定义 |
| 1.OSI | OSI 模型是 OSI 开放系统互连项目的产物。OSI 是一个志愿组织。 |
| 2.OSI 模型 | 开放系统互连是由七个逻辑层组成的模型。 |
| 3.TCP/IP 模型 | 传输控制协议和互联网协议模型是基于基于协议的四层模型。 |
| 4.非屏蔽双绞线 | 非屏蔽双绞线电缆是一种有线/导向介质,由两根通常为铜的导线组成,每根导线都有自己的彩色塑料绝缘体 |
| 5.短时程增强 | 屏蔽双绞线电缆是一种有线/导向介质,具有金属箔或编织网覆盖层,包裹每对绝缘导体。屏蔽还可以消除串扰 |
| 6.巴基斯坦人民党 | 点对点连接是一种用作两个设备之间通信链路的协议。 |
| 7.局域网 | 局域网是为小型区域设计的,如办公室、建筑群或工厂。 |
| 8.广域网 | 广域网用于覆盖大距离的网络,例如覆盖一个国家的各个州 |
| 9.男人 | 城域网使用与局域网类似的技术。它的设计覆盖了整个城市。 |
| 10.相声 | 一个电路对另一个电路的不良影响。当一条线路接收到一些沿另一条线路传输的信号时,就会发生这种情况。例子:当一个人可以听到背景对话时的电话对话。它可以通过屏蔽每对双绞线电缆来消除。 |
| 11.一种常用旧式电话系统 | 公共交换电话网由电话线、蜂窝网络、通信卫星、光缆等组成。它是世界(国家、地方和地区)电路交换电话网的结合。 |
| 12.文件传输、访问和管理(FTAM) | 访问和管理文件的标准机制。用户可以访问远程计算机中的文件并对其进行管理。 |
| 13.模拟传输 | 信号的振幅和频率是连续可变的。与数字传输相比,功率要求较高。 |
| 14.数字传输 | 这是一个电压脉冲序列。它基本上是一系列离散的脉冲。安全性优于模拟传输。 |
| 15.非对称数字用户线路 | 一种数据通信技术,能够比传统的语音频带调制解调器提供更快的数据传输速度。 |
| 16.存取点 | 接入点也称为基站和无线路由器,是一种无线接收器,使用户能够无线连接到网络或互联网。这个术语可以指无线和蓝牙设备。 |
| 17.确认 | 确认的简称,确认是由另一台计算机或网络设备给出的回答,向另一台计算机表明它确认了发送给它的同步/确认或其他请求。
注意:如果信号没有被正确接收,则发送一个 NAK。 |
| 18.活动拓扑 | 术语主动拓扑描述了一种网络拓扑,其中信号在从一台计算机传递到下一台计算机的每一步都被放大。 |
| 19.欢迎 | 卫星和地面无线电传输协议。在 pure Aloha 中,一个用户可以随时进行通信,但是有与其他用户的消息发生冲突的风险。时隙 Aloha 通过将信道划分为时隙并要求用户仅在时隙开始时发送来减少冲突的机会。 |
| 20.地址解析协议 | ARP 与 IP 一起使用,用于将 32 位互联网协议地址映射到在 RFC 826 中指定的本地网络中可识别的媒体访问控制地址。 |
会话层
会话层
原文:https://www.studytonight.com/computer-networks/session-layer
在本教程中,我们将介绍会话层,即计算机网络中 OSI 参考模型的第 5 层。
是 OSI 参考模型的第 5 层。会话层是网络对话控制器
这一层主要允许不同机器上的用户在他们之间建立主动通信会话。
该层的主要目的是建立、维护和同步通信系统之间的交互。会话层管理并同步两个不同应用程序之间的对话。在会话层,数据流会被标记并正确地重新同步,这样就不会过早地切断消息的结尾,从而避免数据丢失。
该层是 OSI 模型的重要组成部分之一,被许多计算机和应用程序定期使用。
-
该层主要定义如何启动、控制和结束不同应用程序之间的对话。
-
会话层响应表示层的服务请求,然后向传输层发出服务请求。
-
这一层主要负责同步和对话控制。
-
该层提供以下服务:
-
全双工,
-
半双工,
-
单工操作,
-
建立检查点,
-
休庭程序,
-
终止程序,
-
和重启程序。
-
-
该层的实现是通过使用远程过程调用在应用程序环境中显式完成的。
-
该层还负责通过正确的连接查找和发送数据。
-
为了建立和断开连接,会话层主要与传输层通信。
会话层中的协议
下面给出了会话层中使用的一些协议:
-
远程过程调用协议
-
会话控制协议
-
PPTP(点对点隧道协议)
-
密码认证协议
-
RTCP(实时传输控制协议)
会话层的职责
-
对话控制
该层允许两个系统以半双工或全双工方式开始相互通信。 -
令牌管理
该层防止双方同时尝试相同的关键操作。 -
同步
该层允许进程将被视为同步点的检查点添加到数据流中。示例:如果系统发送 800 页的文件,建议每 50 页后添加检查点。这确保了 50 页的单元被成功接收和确认。这在崩溃时是有益的,就好像崩溃发生在第 110 页;没有必要重传 1 到 100 页。
会话层的功能
下面给出了会话层的一些主要功能:
-
该层用于在会话实体之间建立会话。
-
这一层负责数据传输阶段。
-
该层用于选择所需的传输服务质量参数。
-
该层用于识别每个会话。
-
该层用于传输有限数量的透明用户数据。
会话层的设计问题
-
允许机器以无缝方式在它们之间建立会话。
-
为用户提供增强的服务。
-
管理对话框控件。
-
提供令牌管理、同步等服务。
计算机网络
计算机网络组件
原文:https://www.studytonight.com/computer-networks/components-of-computer-networks
在本教程中,我们将介绍计算机网络的组件。
计算机网络基本上包括多个相互连接的计算机,以便共享信息和其他资源。多台计算机通过电缆或无线介质连接。
因此,基本上在计算机网络的帮助下,两个或多个设备被连接起来,以便共享几乎无限的信息和服务范围,其中包括:
*** 音乐
-
数据库
-
网站
-
文档
-
电子邮件和消息
-
电话和会议
-
打印机和传真
上图显示了两台设备如何借助互联网相互连接,以及笔记本电脑如何借助电缆与其中一台设备连接。
现在让我们学习计算机网络的主要组成部分;
计算机网络组件
安装网络所需的关键部分包含在计算机网络的组件中。从简单到复杂,计算机网络中有许多类型的网络。我们需要为网络安装的组件主要取决于网络的类型。我们也可以根据需要删除一些网络组件。
例如:为了建立无线网络,不需要电缆。
下面给出了计算机网络的组件列表:
-
网络接口卡
-
中心
-
转换
-
中继器
-
路由器
-
调制解调器
-
计算机网络服务器
-
桥
我们现在将讨论计算机网络的所有上述主要组件:
1.网络接口卡
网卡主要提供计算机和布线之间的物理接口。网卡准备数据,发送数据,并控制数据流。它还可以接收数据并将其转换为字节,供 CPU 理解。
-
网卡是一种硬件组件,主要用于连接网络上的一台计算机和另一台计算机。
-
网卡的主要作用是将网络电缆或介质上的串行信号转换成电脑内部的并行数据流。
-
网卡支持的传输速率为 10Mb/s、100 Mb/s、1000 Mb/s。
-
服务器中使用两个或更多网卡来分担负载。
-
网卡的主要工作是控制对介质的访问。
-
网卡可以是有线或无线的。在有线网卡中,有电缆和连接器作为传输数据的介质。而在无线卡中,连接通常使用使用无线电波技术的天线进行
选择网卡时需要考虑的因素:
-
准备数据
-
发送和控制数据
-
配置
-
司机
-
和睦相处
-
表演
2.中心
集线器是用于将多台计算机连接在一起的设备。集线器重复一个端口传入的信号,然后复制到其他端口。
-
网络集线器基本上是网络中所有数据传输的集中分发点。
-
集线器是一个被动设备。
-
集线器接收数据,然后将数据转播给与其连接的其他计算机。Hub 主要不知道接收到的数据包的目的地。因此,需要向所有集线器连接发送数据包的副本。
-
此外,集线器会消耗更多的网络带宽,从而限制通信量。
-
使用集线器的一个缺点是,它们没有智能来找出数据包的最佳路径,从而导致效率低下和浪费。
集线器的类型
1。主动中枢:
主动集线器利用电子设备在信号广播到其他端口之前对其进行放大和净化。主动集线器主要用于扩展节点之间的最大距离。它既是布线中心,也是中继器。
2。被动中枢:
被动集线器是那些只连接到主动集线器的集线器。无源集线器仅用于将所有端口电连接在一起,这些端口通常不通电。这些集线器比被动集线器便宜。无源集线器既不放大信号,也不再生信号。
3。智能集线器:
智能集线器比主动和被动集线器具有更好的性能。如今,智能集线器被广泛使用,并且比主动和被动集线器需求更大。这些集线器主要用于连接各种设备。它支持在任何输入信号点放大和再生信号。
智能集线器沿着选择路径支撑网络。被动和主动的任务都可以由智能中枢管理。
在智能集线器的帮助下,整个网络的速度和效率都会提高,这有助于获得快速高效的网络性能。
3.转换
交换机主要类似于集线器。它是第 2 层设备,用于消息的智能转发。我们所说的智能是指交换机的决策能力。因为集线器的工作方式是向设备上的所有端口发送数据,而交换机只向与目的设备相连的端口发送数据。
-
交换机是网络组件,主要用于连接网络的各个部分。
-
交换机比网络集线器更智能。
-
交换机主要能够在收到数据包后立即对其进行检查,然后确定该数据包的来源和目的地,然后适当地转发该数据包。
-
交换机不同于集线器,因为它还包含不同速度的端口。
-
在将数据转发到端口之前,交换机会执行错误检查,这一功能会提高交换机的效率。
-
当交换机将消息传送到它所连接的设备时,它节省了网络带宽,并提供了比集线器更好的性能。
-
交换机最重要的特点是支持单播(一对一)、组播(一对多)和广播(一对全)通信。
-
交换机利用媒体访问控制地址将数据包发送到选定的目的端口。
交换机分为 4 类:
1。受管交换机
这些交换机价格昂贵,主要用于那些拥有大型复杂网络的组织。受管交换机使用简单网络管理协议(SNMP)进行配置。这些交换机提供了高级别的安全性和完整的网络管理,因此除了价格昂贵之外,它们还用于大型组织,因为它们提供了高度的可扩展性和灵活性
2。非托管交换机
这些交换机价格便宜,主要用于家庭网络和小型企业。不需要配置非托管交换机。只需将非受管交换机插入网络,即可轻松设置它们,插入后它们会立即开始运行。
3。PoE 交换机
这些被称为以太网供电交换机。在 PoE 技术的帮助下,这些交换机通过同一条电缆将数据和电力传输结合在一起,并且在连接到该交换机的设备的帮助下,能够通过同一条线路接收电力和数据。因此,PoE 交换机提供了更大的灵活性。
4。局域网交换机
局域网交换机简称局域网交换机,主要用于连接组织内部局域网中的设备。这些有助于减少网络拥塞。这些交换机的带宽分配方式使得网络中的数据包不会重叠。
4.中继器
中继器是物理层设备。顾名思义,中继器主要用于在同一网络上再生信号,它主要在信号被破坏或变弱之前再生。
它们被合并到网络中,以扩大覆盖范围。中继器可以利用不同类型的电缆来连接信号。
-
复读机很划算。
-
中继器非常容易安装,安装后,它们可以轻松扩展网络的覆盖范围。
-
但是中继器有一个问题,那就是它们不能连接不同类型的网络。
-
中继器无助于减少网络中的流量。
中继器的类型:
可用的中继器类型如下:
1。模拟中继器
这些仅用于放大模拟信号。
2。数字中继器
这些仅用于放大数字信号。
3。有线中继器
这些中继器主要用于有线局域网。
4。无线中继器
这些主要用于无线局域网和蜂窝网络。
5。本地中继器
它们用于连接相隔很小距离的局域网网段。
6。远程中继器
这些主要是用来连接那些相距很远的局域网。
5.路由器
路由器是一个网络组件,主要用于在计算机网络上发送或接收数据。将数据包从源转发到目的地的过程称为路由。
-
路由器是网络层(即第 3 层)设备。
-
路由器的主要职责是接收数据包,分析它们,然后在连接的计算机网络之间转发数据包。
-
每当任何数据包到达时,路由器首先检查目的地址,然后查阅其路由表,以确定最佳路由,然后沿着该路由将数据包传输到目的地。
-
路由器主要用于防止广播风暴。
-
路由器比集线器、交换机、中继器和网桥贵。
-
路由器还可以将不同的网络连接在一起,因此数据包也可以从一个网络发送到另一个网络。
-
路由器既用于局域网,也用于广域网。
-
路由器相互共享数据,以便准备和刷新路由表。
路由器的类型:
不同类型的路由器如下:
1。核心路由器
核心路由器主要由服务提供商(如 AT & T、沃达丰)或云提供商(如亚马逊、微软、谷歌)使用。核心路由器提供最大带宽,以便连接额外的路由器或交换机。大型组织使用核心路由器。
2。边缘路由器
边缘路由器也称为网关路由器或简称网关。网关是网络与外部网络的最外层连接点,也包括互联网。这些路由器主要用于优化带宽,旨在连接到其他路由器,以便向最终用户分发数据。边界网关协议主要用于边缘路由器的连接。
这些进一步分为两类:
-
用户边缘路由器
-
标记边缘路由器。
3。
brouters 的意思是桥接路由设备。这些是特殊的路由器,它们也提供网桥的功能。它们执行网桥和路由器的功能;像网桥一样,这些路由器有助于在网络之间传输数据,像路由器一样,它们在网络设备内路由数据。
4。宽带路由器
它是一种网络设备,主要允许最终用户从互联网服务提供商(ISP)访问宽带互联网。互联网服务提供商通常为最终用户提供和配置宽带路由器。
5。分布路由器
这些路由器主要通过有线连接从边缘路由器(或网关)接收数据,然后在无线网络的帮助下将其发送给最终用户。
5。无线路由器
这些路由器结合了边缘路由器和分布路由器的功能。这些路由器主要为笔记本电脑、智能手机等 WiFi 设备提供 WiFi 连接。这些路由器还提供标准的以太网络由。对于室内连接,这些路由器的范围是 150 英尺,而对于室外连接是 300 英尺。
6.调制解调器
调制解调器基本上是一个硬件组件,主要允许计算机或任何其他设备(如路由器、交换机)连接到互联网。调制解调器基本上是调制解调器的简写形式。
调制解调器最重要的功能之一是将模拟信号转换成数字信号,反之亦然。此外,该设备是两个设备的组合:调制器和解调器。调制器主要在计算机发送数据时将数字数据转换成模拟数据。
解调器基本上在计算机接收模拟数据信号时将其转换成数字数据。
7.计算机网络服务器
服务器基本上是一台向其他设备提供数据的计算机。服务器可以在互联网的帮助下通过局域网或广域网向其他设备或计算机提供数据。可以有虚拟服务器、代理服务器、应用服务器、网络服务器、数据库服务器、文件服务器等等。
因此,服务器主要用于服务其他设备的请求。可以是硬件,也可以是软件。
8.桥
它是计算机网络的另一个重要组成部分。网桥也是第 2 层(即数据链路层设备)。网桥主要用于将两个或多个局域网连接在一起。这些主要用于帮助快速传输数据。
但是这些并不像路由器那样通用。
因此,网桥可以主要在不同协议(即令牌环网和以太网)之间传输数据,并且如上所述,在 OSI(开放系统互连)网络参考模型的数据链路层或第 2 层运行。
桥梁进一步分为两种:
-
本地桥
这些都是普通的桥。 -
远程网桥
这些主要用于连接相距较远的网络。通常在两个网桥之间提供广域网
一些网桥协议是生成树协议、源路由协议和源路由透明协议。**
计算机网络的特点
原文:https://www.studytonight.com/computer-networks/features-of-computer-networks
在本教程中,我们将介绍计算机网络的特性。
基本上,计算机网络是通过介质连接的两个或多个设备的连接,以交换信息。借助计算机网络,您可以轻松地向计算设备发送数据或从计算设备接收数据。
现在是时候介绍计算机网络的重要特性了:
-
数据共享
-
可靠性
-
可量测性
-
安全
-
表演
-
支持
-
软件和硬件兼容性
我们将在下一节中逐一讨论每个特性:
1.数据共享
计算机网络最重要的特点之一是,在它们的帮助下,您可以在通过传输介质相互连接的不同系统之间轻松共享数据。
因此,资源可以通过网络在两个或多个设备之间轻松共享。
2.可靠性
在计算机网络的帮助下,发生故障的机会更少,如果出现任何故障,恢复也更快。
3.安全
安全性是计算机网络的主要特征之一,因此计算机网络应该是安全的,这样通过网络传输的数据应该是安全的,不会受到任何未经授权的访问。
此外,发送节点发送的数据应该在接收节点接收,这简单地意味着在数据传输期间不应该有数据丢失。
4.可量测性
计算机网络的另一个特点是可扩展性。计算机网络的可扩展性仅仅意味着我们可以轻松地向网络添加新的节点或组件。任何计算机网络都必须是可扩展的,因此我们可以通过添加新节点来轻松扩展它。向网络中添加新节点后,连接速度会降低,从而导致数据传输速度降低。因此,由于所有这些,有更多的机会出现错误。
这个问题可以在路由设备的帮助下解决。
让我们举一个例子:假设一家公司有 50 台电脑,每台电脑对应 50 名员工。假设公司再雇佣 100 名员工,然后公司在现有局域网上增加 100 台计算机,那么在这种情况下,局域网应该允许同样的情况。
5.表演
计算机网络的性能通过响应时间和数据传输速度来衡量。为了获得更好的性能,从一个节点向另一个节点发送和接收数据的响应时间应该最短。
6.支持
计算机网络必须有一个中央服务器,该服务器必须保留网络上共享的所有数据的备份。当网络出现故障时,该中央服务器有助于更快的恢复。
7.软件和硬件兼容性
在计算机网络中,不能对计算机网络中的所有计算机使用相同的软件和硬件有任何限制。
相反,计算机网络应该允许不同软件和硬件配置之间更好的兼容性。
在计算机网络的帮助下,我们所有人与他人分享我们的知识和想法变得非常容易。例如:通过电子邮件,通过互联网上的视频会议,一切都变得容易。
结论
因此,我们已经涵盖了计算机网络的不同特征,并且在计算机网络的帮助下,通信变得容易和高效。计算机网络的另一个特点是,它们通过避免数据丢失、避免未经授权访问数据、减少数据传输延迟以及管理数据流量来提供服务质量。
协议和标准
原文:https://www.studytonight.com/computer-networks/protocols-and-standards
在本教程中,我们将涵盖两个最重要和最广泛使用的术语:协议和标准。
协议
协议基本上是规则的同义词。在计算机网络中,基本上,通信发生在不同系统的实体之间。实体是能够发送或接收信息的任何东西。任何两个实体都不能简单地互相发送比特流并期望被理解。
实体必须同意一个协议,以便进行通信。
协议是一组主要管理数据通信的规则。该协议主要定义了通信内容、通信方式和通信时间。
协议的关键要素
协议的关键要素如下:
-
句法
该术语主要指数据的结构或格式,简单来说就是数据呈现的顺序。例如,一个简单的协议可能期望数据的前 8 位是发送者的地址,然后第二个 8 位是接收者的地址,然后流的其余部分是消息本身。 -
语义
这个术语主要是指每一段比特的含义。如何解释特定的模式,在解释的基础上采取什么行动?例如,地址是否标识了要采用的路由或消息的最终目的地? -
计时
这个术语主要指两个特征:数据应该在什么时间发送,数据可以多快发送。例如,如果发送方以 100 Mbps 的速度产生数据,而接收方只能以 1 Mbps 的速度处理数据,则传输会使接收方过载,并且会有一些数据丢失。
标准
标准对于为设备制造商创造和维持一个开放和创新的市场至关重要,它们还保证了数据、电信技术和流程的国内和国际互操作性。
标准主要用于向制造商、供应商、政府机构以及其他服务提供商提供指南,以确保当今市场和国际通信所必需的互连性。
数据通信标准主要分为两类
-
事实上的(意思是“根据事实”/“根据惯例”)
这些标准尚未得到有组织机构的批准,但通过广泛使用已被采纳为标准。这些类型的标准通常最初是由制造商建立的,他们只是寻求定义他们新产品或技术的功能。 -
法律上的(意思是“通过法律”/“通过法规”)
法律上的标准是由官方认可的机构制定的标准。
标准组织
标准主要通过标准创建委员会、政府监管机构和论坛的合作来开发。
一些标准创建委员会包括:
-
OSI
-
美国国家标准协会
-
电子工业协会
-
电气和电子工程师协会
面向连接和无连接的服务
原文:https://www.studytonight.com/computer-networks/connection-oriented-and-connectionless-services
在本教程中,我们将介绍在计算机网络中建立面向连接和无连接服务两种连接方式的区别。
为了在两个或多个设备之间建立连接,计算机网络中有一些服务。有两种服务是由这些层提供给它们上面的层的。这些服务如下:
-
面向连接的服务
-
无连接服务
面向连接的服务
面向连接的服务的用户需要遵循一系列的操作。这些是:
-
连接已经建立。
-
信息被发送。
-
连接被释放。
在面向连接的服务中,我们必须在开始通信之前建立连接。当连接建立时,我们发送消息或信息,然后释放连接。
面向连接的服务比无连接的服务更可靠。如果接收端出现错误,我们可以在面向连接的服务中发送消息。面向连接的一个例子是 TCP(传输控制协议)协议。
在上图中,设备 A 和设备 B 之间的实线表示存在数据流在它们之间传输的专用链路。在这个链接的帮助下,接收者可以向发送者发送关于数据包状态的确认。
优势
面向连接的服务的优势如下:
-
面向连接的服务是可靠的。
-
数据包没有重复。
-
没有拥堵的可能。
-
这些适用于长连接。
-
数据包的顺序是有保证的。
不足之处
面向连接服务的缺点如下:
-
这种资源分配在沟通之前是强制性的。
-
连接速度较慢。建立和放弃连接需要花费同样多的时间。
-
在网络拥塞或路由器故障的情况下,没有其他方法可以继续通信。
无连接服务
它类似于邮政服务,因为它承载着邮件(信件)的完整地址。每条消息都独立地从源路由到目的地。发送消息的顺序可以不同于接收消息的顺序。
在无连接的情况下,数据从源向目的地单向传输,而不检查目的地是否还在,也不检查它是否准备接受消息。在这种情况下不需要身份验证。无连接服务的一个例子是 UDP(用户数据报协议)协议。
优势
无连接服务的优势如下:
-
通常费用很低。
-
面向连接的服务有助于向多个接收者广播或多播消息。
-
在这种情况下,没有电路设置。因此,建立连接只需要几分钟的时间。
-
在网络拥塞或路由器故障的情况下,它有另一条数据传输路径。
不足之处
连接较少服务的缺点如下:
-
这些容易受到网络拥塞的影响。
-
这是不可靠的,因为有可能丢失数据包、错误传送数据包或复制数据。
-
在这种情况下,每个数据包都需要很长的字段,因为这些字段应该包含所有的目的地址和路由信息。
让我们了解上述两种服务之间的区别:
面向连接的服务 | 无连接服务 |
---|---|
面向连接的服务是基于电话系统设计的。 | 无连接服务基于邮政系统。 |
在这种类型的服务中,需要建立优先连接。 | 在这种类型的服务中,不需要预先连接。 |
这些服务确保了数据的可靠传输。 | 因为这些服务是尽力服务,但是的可靠性在这些服务中没有保证。 |
不存在拥堵的可能性。 | 使用这些服务时有可能发生拥堵。 |
在这种情况下在将数据包发送到接收器之前需要认证。 | 在这种情况下,在将数据包发送到接收器之前不需要认证。 |
这些服务适用于长时间稳定的变速器。 | 这些服务适用于突发传输。 |
在此连接通过发信号的过程建立 | 没有这样的信号概念存在。 |
在这种类型的服务中,数据包以顺序方式向其目的节点传输。 | 在这种类型的服务中,数据包以随机方式向目的节点传输。 |
丢失数据位的重传是可能的。 | 在这种情况下,是不可能的。 |
传递信息时延迟较多。但是在连接建立之后,这些服务提供了信息的快速传递。 | 由于没有连接建立阶段,没有延迟。 |
什么是服务原语?
服务由用户进程访问服务时可用的一组原语(操作)正式指定。这些原语告诉服务执行一些动作或报告对等实体采取的动作。如果协议栈通常位于操作系统中,那么原语通常是系统调用。这些调用导致内核模式陷入陷阱,然后内核模式将机器的控制权移交给操作系统,以发送必要的数据包。可用的原语集取决于所提供服务的性质。面向连接服务的原语不同于无连接服务的原语。有五种类型的服务原语:
-
LISTEN: 当服务器准备好接受传入的连接时,它会执行 LISTEN 原语。它会阻止等待传入的连接。
-
CONNECT: 它通过建立连接来连接服务器。等待答复。
-
receive:然后 receive 调用阻塞服务器。
-
发送:然后客户端执行发送原语来发送其请求,然后执行接收来获得回复。发送消息。
-
DISCONNECT: 该原语用于终止连接。在这种原始状态之后,一个人不能发送任何信息。当客户端发送 DISCONNECT 数据包时,服务器也会发送 DISCONNECT 数据包来确认客户端。当客户端收到服务器包时,该过程终止。
面向连接的服务原语
面向连接的服务有 5 种基本类型:
| 听 | 阻止等待传入的连接 |
| 关系 | 与等待的对等方建立连接 |
| 接收 | 阻止等待传入消息 |
| 派遣 | 向对等方发送消息 |
| 拆开 | 终止连接 |
无连接服务原语
面向无连接服务有 4 种基本类型:
| 统一日期 | 这个原语发送一个数据包 |
| 设施,报告 | 用于查询网络性能的原语,如交付统计。 |
服务与协议的关系
在本节中,我们将了解服务和协议是如何相关的,以及它们为什么对彼此如此重要。
什么是服务?
这些是在OSI 参考模型中,一个层可以向它上面的层提供的操作。它定义了操作并声明一个层已经准备好执行,但是它没有指定任何关于这些操作的实现。
什么是协议?
这些规则控制着服务器和客户端之间交换的帧、消息或数据包的格式和含义。
计算机网络中的传输模式
原文:https://www.studytonight.com/computer-networks/transmission-modes-in-computer-networks
在本教程中,我们将介绍计算机网络中传输模式的概念。
传输模式是指通过网络连接的两个设备之间传输数据的机制。也叫通信模式。这些模式指引着信息流的方向。
在开放系统互连(OSI)模型中,物理层即第 1 层主要用于网络中的数据传输。它主要决定数据到达接收系统所需行进的数据方向。
有三种传输模式。它们是:
-
单工模式
-
半双工模式
-
全双工模式
单工模式
在这种类型的传输模式下,数据只能在一个方向上发送,即通信是单向的。我们无法将消息发送回发件人。单向通信是在单工系统中完成的,在单工系统中,我们只需要发送一个命令/信号,不需要任何回应。
单工模式的例子有扬声器、电视广播、电视和遥控器、键盘和监视器等。
单工模式不是那么流行的传输模式。这种模式更类似于单行道。这种传输方式的主要用途是在不需要任何相应回复的销售等业务领域。
单工模式的优点
以下是单工模式的一些优点:
-
与单工模式一样,数据向一个方向流动。因此,最少或没有数据流量问题。
-
单工模式利用数据传输时通信信道的全部容量。
单工模式的缺点
单工模式的一些缺点如下:
-
由于通信本质上是单向的,因此设备之间不可能相互通信。
-
信息无法传输回发送方;因此没有确认的机制
半双工模式
半双工数据传输意味着数据可以在信号载波上双向传输,但不能同时传输。在半双工传输模式下,信道的全部容量可以用于每个方向。在这种模式下,传输线可以双向传输数据,但一次只能向一个方向发送数据。
例如,在使用半双工传输技术的局域网上,一个工作站可以在线路上发送数据,然后立即从刚刚传输数据的同一方向在线路上接收数据。因此,半双工传输意味着双向线路(可以双向传输数据),但一次只能向一个方向发送数据。
半双工的一个例子是对讲机,其中一次发送一条消息,但消息是双向发送的。
半双工传输模式可用于不需要同时在两个方向上进行通信的情况。当发送方未发送或接收方未正确接收数据时,该模式也可用于错误检测。
半双工模式的优势
以下是半双工模式的一些优点:
-
借助半双工模式,通信信道的使用得到了优化。
-
这种模式提供双向通信
半双工模式的缺点
半双工模式的一些缺点如下:
-
半双工模式支持双向通信,但这种通信不能同时建立,因此这是使用这种模式的主要缺点。
-
传输有延迟的可能,因为有时只有单向通信是可能的。
全双工模式
在全双工系统中,我们可以同时双向发送数据,换句话说,数据可以同时双向发送。
这种传输模式支持双向通信,其中两个站可以同时发送和接收数据。因此,全双工模式提供了最好的性能。
全双工的一个例子是电话网络,其中两个人通过电话线进行通信,两个人可以同时通话和收听。
在全双工系统中,可以有两条线,一条用于发送数据,另一条用于接收数据。
全双工模式的带宽是半双工模式的两倍。当需要同时双向通信时,使用该模式。
全双工模式的优势
以下是全双工模式的一些优势:
-
借助这种模式,双向通信可以同时在两个方向上进行。
-
这种模式是设备之间最快的通信模式之一
全双工模式的缺点
全双工模式的一些缺点如下:
-
在这种模式下,信道带宽的利用是不适当的,这是因为两个通信设备有两条独立的路径。
-
没有专用的数据传输路径。通信信道的容量也分为两部分。
OSI 与 TCP 参考模型的比较
原文:https://www.studytonight.com/computer-networks/comparison-of-osi-and-tcpip-reference-model
在本教程中,我们将介绍两种参考模型之间的比较,即 OSI 模型和计算机网络中的传输控制协议模型。
开放系统互连 (OSI)俗称 OSI 模型。
-
OSI 模型主要是一个概念框架,用于描述网络系统的功能。
-
OSI 模型由七层组成,每层执行其特定的功能。
-
该模型由 OSI 于 1984 年发布。
-
该模型主要将巨型任务分为七个可管理的小任务。之后,模型中的每一层都被分配一个特定的任务。
ISO-OSI 模型是一个七层架构。它在一个完整的通信系统中定义了七个层次。它们是:
-
应用程序层
-
P 代表层
-
S 挤压层
-
T 运输层
-
N 网络层
-
D 链接层
-
P 物理层
OSI 模型
TCP/IP 模型
TCP/IP 是传输控制协议和互联网协议,由国防部的项目研究机构 (ARPA,后来的 DARPA)开发,作为连接远程机器的网络互连研究项目的一部分。
在研究过程中,导致制作 TCP/IP 参考模型的突出特点是:
- 支持灵活的架构。向网络中添加更多机器很容易。
- 网络是健壮的,并且连接保持完整,直到源和目标机器运行。
总体想法是允许一台计算机上的一个应用程序与另一台计算机上运行的另一个应用程序对话(发送数据包)。
TCP/IP 模型
现在是时候比较我们到目前为止所学的两个参考模型了。让我们从解决这两个模型的相似之处开始。
以下是开放系统互连参考模型和 TCP 参考模型之间的一些相似之处。
-
两者都有分层架构。
-
层提供类似的功能。
-
两者都是协议栈。
-
两者都是参考模型。
-
两者都有预定义的标准。
OSI 与 TCP 参考模型的区别
以下是 OSI 参考模型和 TCP/IP 参考模型之间的一些主要区别,下面是图解比较。
| 开放系统互连 | 传输控制协议/互联网协议 |
| 1.OSI 是一种通用的、独立于协议的标准,充当网络和最终用户之间的通信网关。 | 1.TCP/IP 模型基于标准协议,互联网就是围绕这些标准协议发展起来的。它是一种通信协议,允许主机通过网络连接。 |
| 2.在 OSI 模型中,传输层保证数据包的传输。 | 2.在 TCP/IP 模型中,传输层不保证数据包的传送。不过,TCP/IP 模式更可靠。 |
| 3.遵循垂直方法。 | 3.遵循水平方法。 |
| 4.OSI 模型有一个单独的表示层和会话层。 | 4.TCP/IP 没有单独的表示层或会话层。 |
| 5.传输层面向连接。 | 5.传输层既面向连接又无连接。 |
| 6.网络层既面向连接又无连接。 | 6.网络层是无连接的。 |
| 7.OSI 是构建网络的参考模型。一般是作为引导工具使用。 | 7.在某种程度上,TCP/IP 模型是 OSI 模型的实现。 |
| 8.OSI 模型的网络层提供面向连接和无连接的服务。 | 8.TCP/IP 模型中的网络层提供无连接服务。 |
| 9.这个 TCP/IP 模型还为许多设备提供了标准化,例如路由器、主板、交换机和一些其他硬件设备。 | 9.该模型没有提供任何这种类型的设备标准化。但是这个模型提供了不同计算机之间的连接 |
| 10.协议隐藏在 OSI 模型中,随着技术的变化很容易被替换。 | 10.在 TCP/IP 中,替换协议并不容易。 |
| 11.OSI 模型非常清楚地定义了服务、接口和协议,并对它们进行了明确的区分。它与协议无关。 | 11.在 TCP/IP 中,服务、接口和协议没有明确分开。它也依赖于协议。 |
| 12.它有 7 层 | 12.它有 4 层 |
| 13.OSI 参考模型的使用率很低。 | 13.另一方面,TCP/IP 模型被高度使用。 |
| 14.OSI 模型有一个问题,就是如何将协议适配到模型中。 | 14.TCP/IP 模型不适合任何协议 |
表示层
表示层
原文:https://www.studytonight.com/computer-networks/presentation-layer
在本教程中,我们将介绍计算机网络中 OSI 参考模型的表示层。
表示层是 OSI 参考模型的层-6。该层主要响应来自应用层(即第 7 层)的服务请求,并向第 6 层(即会话层)发出服务请求。
这一层主要充当网络的翻译者。表示层的另一个名称是语法层。
该层的主要目标是处理两个通信系统之间交换的信息的语法和语义。表示层注意数据的发送方式,以便接收方理解信息(数据)并能够使用数据。两种交流系统的语言(语法)可能不同。在这种情况下,表示层扮演着翻译的角色。
为了使具有不同数据表示的计算机能够进行通信,可以以抽象的方式定义要交换的数据结构。表示层管理这些抽象数据结构,并允许定义和交换更高级别的数据结构(例如:银行记录)。
我们可以说,表示层可以以各种方式(如数据压缩、数据加密)表示或编码数据。但是接收设备主要将编码的消息解码或转换成其原始形式。
对于相同的数据,发送方和接收方必须就一种通常被称为表示格式的消息格式达成一致。
另外,表示层是操作系统的一部分,主要将数据从一种表示格式转换为另一种表示格式。
表示层使用的协议
下面给出了表示层使用的一些协议:
-
苹果灌装协议
-
安全套接字层
-
FTP 协议
-
用于远程联接服务的标准协议或者实现此协议的软件(可为动词)
-
轻量级表示协议(LPP)
-
安全外壳
表示层的功能
-
翻译:在传输之前,字符和数字形式的信息应该改为比特流。表示层负责编码方法之间的互操作性,因为不同的计算机使用不同的编码方法。它在网络要求的格式和计算机的格式之间转换数据。
-
加密:在发送端进行加密,在接收端进行解密。
-
压缩:进行数据压缩,降低待传输数据的带宽。数据压缩的主要作用是减少要传输的位数。它在传输音频、视频、文本等多媒体时非常重要。
表示层的设计问题
-
管理和维护所传输信息的语法和语义。
-
以标准的约定方式编码数据。例如:字符串、双精度、日期等。
-
在线上执行标准编码。
应用层
HTTP 协议
原文:https://www.studytonight.com/computer-networks/http-protocol
在本教程中,我们将介绍作为 OSI 模型应用层协议的超文本传输协议。
HTTP 代表超文本传输协议,主要用于访问万维网上的数据,即 (WWW) 。 HTTP 主要作为 FTP (FTP 协议)和 SMTP (简单邮件传输协议)的组合。
-
HTTP 是应用层使用的协议之一。
-
HTTP 与 FTP 类似,因为 HTTP 用于传输文件,主要使用 TCP 的服务。
-
还有, HTTP 比 FTP 简单多了,因为只有一个 TCP 连接。
-
在 HTTP 中,没有单独的控制连接,因为只有数据在客户端和服务器之间传输。
-
HTTP 类似于 SMTP,因为客户端和服务器之间的数据传输看起来就像 SMTP 消息。但是有一点不同于 SMTP,****HTTP消息不会被人类读取,因为它们是由 HTPP 客户端(即浏览器)和 HTTP 服务器读取和解释的。
*** 此外, SMTP 消息被存储,然后被转发,而 HTTP 消息被立即发送。
* **HTTP** 主要使用著名端口**端口 80 上的 **TCP** 的服务。**
* **HTTP** 是一个**无状态协议。**
* 在 **HTTP 中,**客户端通过发送请求消息初始化事务,服务器通过发送响应进行回复。
* 该协议用于以纯文本、超文本、音频以及视频等形式传输数据。**
**## HTTP 的工作原理
HTTP 利用了客户机-服务器架构。正如我们已经告诉您的,浏览器充当 HTTP 客户端,该客户端主要与托管网站的网络服务器通信。
该图显示了 HTTP 事务
请求和响应消息的格式相似。请求消息有时主要由请求行、标题和正文组成。响应消息由状态行、标题,有时还有正文组成。
当客户端向网络服务器请求一些信息(比如客户端点击超链接)时。然后,浏览器向 HTTP 服务器发送请求消息,请求对象。
之后发生了以下事情:
-
客户端和网络服务器之间有一个通过 TCP 打开的连接。
-
之后,HTTP 向主要收集请求数据的服务器发送请求。
-
带有对象的响应通过 HTTP 发送回客户端
-
最后,HTTP 关闭连接。
让我们看看请求消息和响应消息的格式:
请求行和状态行
请求消息中的第一行称为请求行,而响应消息中的第一行称为状态行。
图:请求行和状态行
哪里,
请求类型
此字段用于请求行。定义了几种请求类型,这些类型在下表中有所提及;
方法名称 | 行动 |
---|---|
得到 | 此方法用于向服务器请求文档。 |
头 | 该方法主要请求关于文档的信息,而不是文档本身的信息 |
邮政 | 该方法将一些信息从客户端发送到服务器。 |
放 | 此方法将文档从服务器发送到客户端。 |
微量 | 这个方法回显传入的请求。 |
连接 | 这个方法意味着保留 |
选择权 | 以便查询可用的选项。 |
统一资源定位器
网址是一个统一资源定位器,它主要是一种在互联网上指定任何类型信息的标准方式。
HTTP 版本
HTTP 的当前版本是 1.1。
状态代码
状态代码是响应消息的字段。状态码由三位数字组成。
状态短语
此字段也用在响应消息中,用于以文本形式解释状态代码。
页眉
标头用于在客户端和服务器之间交换附加信息。表头主要由一个或多个表头行组成。每个标题行都有一个标题名、一个冒号、空格和一个标题值。
标题行进一步分为四类:
- 一般标题
它提供了关于消息的一般信息,它可以出现在请求和响应中。 - 请求头
仅出现在请求消息中,用于指定客户端的配置和客户端偏好的文档格式 - 响应头
这个头只存在于响应头中,主要指定服务器的配置以及请求的特殊信息。 - 实体标题
用于提供文档正文信息。
身体
它可以出现在请求消息或响应消息中。正文部分主要包含要发送或接收的文档。
超文本传输协议的特点
HTTP 提供了各种功能,如下所示:
-
HTTP 很简单
HTTP 协议被设计成简单易懂的。 -
HTTP 是无状态的
超文本传输协议(HTTP)是一种无状态的协议,简单来说就是在同一个连接上连续执行的两个请求之间没有连接。此外,客户端和服务器仅在当前请求期间相互了解,因此 HTTP 的核心本身是无状态的,另一方面,HTTP cookies 提供了对有状态会话的利用。 -
HTTP 是可扩展的
通过在客户端和服务器之间提供简单的协议,HTTP 可以很容易地与新功能集成。 -
HTTP 是无连接的
由于 HTTP 请求是由浏览器(HTTP 客户端)发起的,根据用户的请求信息,服务器处理客户端的请求,然后回应该客户端
HTTP 的优势
下面给出了使用 HTTP 的好处:
-
正常运行不需要运行时支持。
-
因为它是无连接的,所以不存在创建和维护会话状态和信息的开销。
-
HTTP 可以通过防火墙使用,全局应用也是可能的。
-
HTTP 是独立于平台的。
-
HTTP 在不关闭 TCP 连接的情况下报告错误。
-
减少网络拥塞。
超文本传输协议的弊端
使用 HTTP 协议有一些缺点:
-
HTTP 没有针对移动优化。
-
HTTP 太啰嗦了。
-
它只能用于点对点连接。
-
该协议没有推送功能。
-
没有重试逻辑,该协议不能提供可靠的交换。
HTTP 支持代理服务器。代理服务器基本上是一台保存对最近请求的响应副本的计算机。代理服务器主要是减少原服务器的负载。为了使用代理服务器,必须配置客户端来访问代理,而不是目标服务器。
HTTP 连接
HTTP 连接可以进一步分为两类:
-
持久连接
-
非持久连接
让我们逐一讨论它们:
1.持久连接
在持久的 HTTP 连接中,所有请求及其相应的响应都是通过相同的 TCP 连接发送的。默认情况下,1.1 版本的 HTTP 指定了持久连接。
在这种类型的连接中,服务器会在发送响应后保持连接打开,以接受更多请求。此外,服务器可以应客户端的请求或在超时时关闭连接。
在持久连接中,单个 TCP 连接主要用于相继发送多个对象。
通常,数据的长度与每个响应一起发送。有些情况下,服务器不知道数据的长度,这种情况发生在动态创建文档时,在这种情况下,服务器通知客户端长度未知,并在发送数据后关闭连接,以便让客户端通知数据的结束。
2.非持久连接
在非持久 HTTP 连接中,每个请求/响应建立一个 TCP 连接;这意味着每个对象都有一个单独的。
以下是使用的步骤;
-
客户端打开一个 TCP 连接,然后发送一个请求。
-
之后,服务器发送响应,然后关闭连接。
-
然后,客户端读取数据,直到遇到文件结束标记,然后关闭连接。
这种连接给服务器带来了很高的开销,因为服务器需要 N 个不同的缓冲区,并且每次打开连接时启动过程都很慢。
HTTP 1.0 版本支持非持久连接。**
FTP 协议
原文:https://www.studytonight.com/computer-networks/ftp-protocol
在本教程中,我们将介绍 OSI 模型应用层的 FTP 协议。
FTP 协议的意思是 FTP 协议,它是由 TCP/IP 提供的标准机制,以便将文件从一台主机复制到另一台主机。
-
FTP 协议是 OSI 模型应用层的一种协议。
-
FTP 是通过互联网交换文件的一种更简单、更安全的方式。
-
FTP 不同于其他客户机/服务器应用程序,因为该协议在主机之间建立了两个连接。
-
其中一个连接用于数据传输,称为数据连接。
-
而另一个连接用于控制命令和响应等信息,这个连接被称为控制连接。
-
-
FTP 更有效,因为有命令分离。
-
FTP 协议使用两种协议;端口 21 用于控制连接和端口 20 用于数据连接。
-
FTP 中的控制连接利用了非常简单的通信规则,我们只需要一次传输一行命令或者一行响应。
-
另一方面,数据连接需要更复杂的规则;这背后的原因是有各种类型的数据需要传输。
-
将文件从客户端计算机传输到服务器被称为“上传”,而将数据从服务器传输到客户端计算机被称为“下载”。
-
使用 FTP 传输的文件类型有 ASCII 文件、EBCDIC 文件或图像文件。
FTP 协议的工作
下图显示了 FTP 协议的基本模型,其中客户端由三个组件组成:用户界面、客户端控制过程和客户端数据传输过程。另一方面,服务器包括两个组件,主要是服务器控制过程和服务器数据传输过程。
-
此外,控制连接在控制进程之间进行,而数据连接在数据传输进程之间进行。
-
控制连接在 FTP 的整个交互会话期间保持连接,而数据连接对于传输的每个文件都是打开然后关闭的。
-
简单来说,当用户启动 FTP 连接时,控制连接会打开,当它打开时,如果需要传输几个文件,数据连接可以多次打开和关闭。
数据结构
下面给出了 FTP 支持的三种数据结构:
1。文件结构
在文件数据结构中,文件基本上是一个连续的字节流。
2。记录结构
在记录数据结构中,文件简单地分为记录的形式。
3。页面结构
在页面数据结构中,文件被分为多个页面,每个页面都有一个页码和一个页眉。这些页面可以随机或顺序存储和访问。
ftp 客户端
它基本上是一种软件,旨在通过互联网在计算机和服务器之间来回传输文件。FTP 客户端需要安装在您的计算机上,并且只能与互联网的实时连接一起使用。
一些常用的 FTP 客户端是 Dreamweaver、FireFTP 和 Filezilla。
FTP 协议的特点
以下是 FTP 协议提供的功能:
-
FTP 主要用于一次传输一个文件。
-
FTP 执行的其他操作包括列出文件、创建和删除目录、删除文件、重命名文件等等。
-
FTP 还隐藏了单个计算机系统的细节。
-
FTP 允许那些有所有权和访问限制的文件。
-
这是一个面向连接的协议。
-
FTP 是有状态协议,因为在这种情况下,客户端在 FTP 会话期间建立控制连接,该会话通常跨越多个数据传输。
传输模式
FTP 可以使用三种给定模式之一通过数据连接传输文件:
1.流模式
流模式是 FTP 使用的默认传输模式。在这种模式下,文件作为连续的字节流传输到 TCP。
如果数据只是字节流的形式,那么就不需要文件结束,发送方关闭数据连接被认为是 EOF 或文件结束。如果数据被分成记录(即记录结构),每个记录都有一个 I 字节的 EOR(记录结束)。
2.块状态
块模式用于以数据块的形式将数据从 FTP 协议传送到传输协议。每个数据块前面都有 3 个字节的头,其中第一个字节代表块描述符,第二个和第三个字节代表块的大小。
3.压缩模式
在这种模式下,如果要传输的文件很大,则可以压缩数据。这种方法通常用于游程编码。对于文本文件,通常会删除空格/空白。而在二进制文件的情况下,空字符被压缩。
FTP 的优势
以下是使用 FTP 协议的一些好处:
-
FTP 的实现很简单。
-
FTP 提供了将文件从一台计算机传输到另一台计算机的最快方法之一。
-
FTP 是一种标准化的协议,被广泛使用。
-
FTP 协议更有效,因为不需要完成所有操作来获得整个文件,
FTP 协议的缺点
让我们来看看 FTP 的缺点:
-
FTP 协议不是传输数据的安全方式。
-
FTP 不允许从服务器到服务器的复制,也不允许递归目录的删除操作。
-
使用 FTP 协议编写作业脚本是很困难的。
-
可以对服务器进行欺骗,以便将数据发送到任何未授权计算机上的随机未知端口
SMTP 协议
原文:https://www.studytonight.com/computer-networks/smtp-protocol
在本教程中,我们将介绍 OSI 模型应用层中的 SMTP 概念。
SMTP 主要代表简单邮件传输协议。基本上,邮件的实际传输是通过邮件传输代理(MTA)完成的。因此,为了发送邮件,系统必须具有客户端 MTA ,并且为了接收邮件,系统必须具有服务器 MTA。
-
为了定义互联网上的 MTA 客户端和服务器,有一种正式的方式,被称为简单邮件传输协议(SMTP) 。
-
SMTP 还利用 TCP/IP 来发送和接收电子邮件。
-
SMTP 基于客户机/服务器模型。
-
SMTP 最初的标准端口是端口 25。
-
使用该协议,想要发送电子邮件的客户端首先打开到 SMTP 服务器的 TCP 连接,然后通过 TCP 连接发送电子邮件。需要注意的是,SMTP 服务器始终处于侦听模式。只要监听到来自任何客户端的 TCP 连接,连接就会在端口 25 上启动,连接成功后,客户端会立即发送电子邮件/消息。
发送电子邮件时,SMTP 被使用两次:
-
发件人和发件人的邮件服务器之间
-
在发送者的邮件服务器和接收者的邮件服务器之间
需要注意的是,为了接收或下载电子邮件,
-
在接收者的邮件服务器和接收者之间需要另一种协议。
-
常用的协议有 POP3 和 IMAP。因此,这两个是邮件访问代理。
SMTP 的架构
所有用户都使用用户代理(UA) 。邮件传输代理 (MTA) 主要帮助发送方和接收方使用 TCP/IP 交换所有邮件。系统管理员有权配置本地 MTA 的设置,因此发送电子邮件的用户不需要处理 MTA。
MTA 将队列保存在消息池中,如果此时接收者不可用,那么 MTA 可以安排重复发送所有消息。
MTA(邮件用户代理)将电子邮件转发到用户本地系统的邮箱中,然后用户代理(UA)可以随时下载这些邮件。
SMTP 客户端和 SMTP 服务器都有两个主要组件,它们是:
-
用户代理
-
MTA(邮件传输代理)
现在让我们来看看发送方和接收方之间的通信:
发送方的用户代理准备好消息,然后将其发送到 MTA。MTA 的任务是通过网络将电子邮件传输到接收者 MTA。此外,为了发送电子邮件,系统必须有客户端 MTA,为了接收电子邮件,系统必须有服务器 MTA。
发送电子邮件
使用一系列请求和响应消息在发送方和接收方之间发送电子邮件。一封邮件主要由两部分组成一个标题和正文。电子邮件的正文部分表示主要的消息区域。它是要由接收器读取的实际信息。标题主要包含发件人和收件人的地址,还包含电子邮件的主题。
为了终止电子邮件的标题,有一个空行,空行之后的所有内容都被认为是邮件的正文。
接收电子邮件
邮箱由服务器端的用户代理在特定的时间间隔进行检查。如果收到任何信息,它会通知收件人有关电子邮件的信息。
当用户试图阅读电子邮件时,MTA 主要在邮箱中显示带有简短描述的电子邮件列表。如果用户选择了任何一封电子邮件,那么就可以轻松地查看电子邮件中的内容。
SMTP 协议方法
-
存储转发方法
存储转发方法在组织内使用。 -
端到端方法
端到端方法主要用于不同组织之间的沟通
SMTP 客户端是想要发送邮件的客户端,并且为了将电子邮件发送到目的地,它肯定会直接联系目的地的主机 SMTP。此外,会话由客户端 SMPT 启动。
另一方面,SMTP 服务器将保持邮件不变,直到邮件在接收方成功复制到 SMTP。服务器 SMTP 主要响应会话请求。
因此,会话由客户端-SMTP 启动,服务器-SMTP 将响应发送者的请求。
SMTP 的特点
让我们来看看 SMTP 的特点:
-
SMTP 使用端口 25。
-
它利用持久的 TCP 连接,因此可以同时发送多封电子邮件。
-
这是一个无状态协议。
-
这是一个面向连接的协议。
-
它在传输层利用了 TCP。
-
这是一个推送控制协议。
SMTP 的优点
让我们看看简单邮件传输协议(SMTP)提供的优势:
-
SMTP 在发送电子邮件方面提供了可靠性。
-
它是网络中不同计算机之间通过电子邮件进行通信的最简单形式。
-
在特定消息没有成功传递的情况下,SMTP 服务器总是尝试重新发送相同的消息,直到传输变为成功。
SMTP 的缺点
-
SMTP 不提供良好的安全性。
-
它仅限于 7 位 ASCII 字符。
-
超过特定长度,电子邮件会被 SMTP 服务器拒绝。
-
SMTP 的实用性受到其简单性的限制。
-
在 SMTP 的帮助下,可执行文件和二进制文件在转换成文本文件之前是不可能传输的。
POP 协议
原文:https://www.studytonight.com/computer-networks/pop-protocol
在本教程中,我们将介绍另一个应用层协议 POP 的概念。
POP 是邮局协议的简称。它是 OSI 参考模型应用层的另一种协议。
-
POP 主要是一种消息访问协议。
-
POP 基本上是一个互联网标准协议,正如我们已经告诉您的,它在应用层工作,被本地电子邮件软件使用,以便通过 TCP/IP 连接从远程电子邮件服务器检索电子邮件。
-
邮局协议不允许任何搜索工具。
-
该协议主要允许在服务器上创建一个协议。
-
由于该协议支持脱机访问消息,因此需要较少的互联网使用时间。
-
此协议不访问非电子邮件数据。
-
使用 POP3 的常见客户端有 Gmail、网景、互联网浏览器、Eudora。
POP 的历史
POP(邮局协议)由互联网工程任务组于 1984 年发布。之后又更新了两次,因为后端开发者想让布局变得简单。
POP 的第二个版本开发于 1985 年,被称为 POP2,这个版本需要 SMTP 协议来推送电子邮件。
然后在 1988 年 POP 的第三个版本发布后,被称为 POP3,这个版本不需要 SMTP 协议。 POP(邮局协议第 3 版)也集成到著名的电子邮件软件中,如 Eudora 和 Outlook Express。
从那以后(1988 年),POP3 是活跃版本。
POP 的工作
所有传入的消息都存储在 POP 服务器上,直到用户使用电子邮件客户端登录并将消息下载到他们的计算机。用户下载邮件后,它会从服务器上删除。
我们知道,SMTP 是用来将电子邮件从服务器传输到服务器的,基本上 POP 是用来用电子邮件客户端从服务器收集电子邮件的,它不包括发送邮件的方式。
如果任何用户试图检查所有最近的电子邮件,那么他们将在服务器端与 POP3 建立连接。用户向服务器发送用户名和密码,以获得正确的身份验证。获得连接后,用户可以接收所有基于文本的电子邮件,并将其存储在他们的本地终端(机器)上,然后最终丢弃所有服务器副本,然后断开与服务器机器的连接。
为了从服务器检索消息,采取了以下步骤;
-
首先,客户端使用端口 110 建立一个 TCP 连接。
-
客户端向服务器表明自己的身份。
-
之后,客户端发出一系列 POP3 命令。
上图显示了 POP3 中命令和响应的交换
POP 协议的特点
以下是 POP 协议提供的一些特性:
-
POP 协议使用端口 110。
-
它利用了持久的 TCP 连接。
-
这是一个拉协议。
-
这是一个面向连接的协议。
-
POP 协议是一个有状态的协议,直到邮件被下载并通过会话,它是一个无状态的协议。
现在让我们来看看 POP 的命令:
命令 | 描述 |
---|---|
注册 | 此命令用于打开连接 |
斯达 | 此命令用于显示当前邮箱中的邮件。 |
删除符号 | 此命令用于删除消息。 |
-你好 | 该命令主要用于将会话重置为初始状态。 |
放弃 | 此命令用于注销会话。 |
目录 | 此命令主要用于获取每个消息的摘要,其中显示了每个消息的摘要。 |
获得文件 | 此命令主要用于选择邮箱以访问邮件。 |
POP 的优势
以下是 POP 提供的优势:
-
该协议不需要任何互联网连接来访问下载的电子邮件。
-
为了在单个设备上接收电子邮件,POP3 非常有用。
-
该协议的配置简单,易于使用。
-
为了在硬盘上存储电子邮件,需要更少的存储空间。
-
这个协议对那些几乎不在其他电脑上查看邮件的人来说更好。
POP 的缺点
现在是时候看看邮局协议的缺点了:
-
不能从多台计算机或设备访问同一电子邮件帐户。
-
病毒的传播很容易使用这种协议,因为电子邮件附带的文件可能包含病毒。
-
将本地电子邮件文件夹传输到另一个电子邮件客户端是一项困难的任务。
SNMP 协议
原文:https://www.studytonight.com/computer-networks/snmp-protocol
在本教程中,我们将详细介绍应用层的 SNMP。
-
SNMP 主要代表简单网络管理协议。
-
它基本上是一个框架,用于通过使用 TCP/IP 协议套件来管理互联网上的设备。
-
基本上,SNMP 提供了一套基本的操作来监控和维护互联网。
-
它是由互联网工程任务组定义的应用层协议。
-
该协议主要用于监控网络,检测网络中的故障,有时也用于配置远程设备。
SNMP 的概念
SNMP 协议利用了管理器和代理;其中管理器通常是控制和监视代理集的主机。
- SNMP 是一种应用层协议,它由几个管理站组成,主要控制一组代理。该协议主要是在应用层设计的,因此它可以监控主要由不同制造商制造并安装在不同物理网络上的设备。
因此,在 SNMP 的架构中有三个组件:
-
简单网络管理协议管理器
-
snmp 代理
-
管理信息库
简单网络管理协议管理器
它基本上是一个集中式系统,主要用于监控和管理与网络连接的设备。SNMP 管理器通常是一台计算机,用于运行一个或多个网络管理系统。
下面给出了 SNMP 管理器的主要功能:
-
从代理收集响应。
-
确认来自代理的异步事件。
-
在代理中设置变量。
-
查询代理
snmp 代理
SNMP 代理基本上是封装在网元中的软件程序。主要安装在被管设备上,被管设备可以是交换机、服务器、路由器、PC 等。
代理主要将信息保存在数据库中,经理也可以访问数据库中的值。
下面给出了 SNMP 代理的主要职责:
-
SNMP 代理主要收集关于其本地环境的管理信息
-
SNMP 代理主要向管理器发送事件信号。
-
SNMP 代理还充当一些非 SNMP 可管理网络节点的代理。
因此,使用 SNMP 的管理主要基于这些给定的思想:
1.SNMP 管理器通过请求主要反映 SNMP 代理行为的信息来检查代理。
2.SNMP 管理器还通过重置代理数据库中的值来强制代理执行任务。
3.管理过程也是由代理贡献的,只需向 SNMP 管理器发出异常情况的警告。
管理组件
为了执行管理任务,SNMP 协议使用了另外两种协议,即 SMI 和 MIB。我们也可以说,互联网上的管理是通过三种协议的合作来完成的,这三种协议是 SNMP、MIB、SMI。
让我们逐一讨论他们的角色;
简单网络管理协议的作用
SNMP 协议在网络管理中扮演一些特定的角色;
-
它主要定义需要从管理器发送到代理的数据包的格式,反之亦然。
-
SNMP 还用于解释结果和创建统计数据。
-
管理器和代理之间交换的数据包包含对象的名称(变量)及其状态(值)。
-
SNMP 还负责读取和更改这些值。
中芯国际的作用
为了使用 SNMP,需要一些规则,这些规则用于命名对象。现在是时候看看中芯国际的角色了:
-
管理信息结构主要用于定义对象命名的一般规则。
-
它还用于定义包括的对象类型(范围和长度)。
-
这也用于展示如何对对象和值进行编码。
-
SMI 没有定义实体应该管理的对象数量。
-
它也没有定义对象及其值之间的关联。
多边投资银行的作用
为了管理每个实体,该协议主要用于定义对象的数量,然后根据 SMI 定义的规则对它们进行命名,然后将类型与每个命名的对象相关联。
-
MIB(管理信息库)主要用于创建一组对象,这些对象是为类似于数据库的每个实体定义的。
-
因此,MIB 主要创建命名对象的集合,它们的类型。
SNMP 协议的优点
下面给出了使用 SNMP 的一些好处:
-
它是标准的网络管理协议。
-
该协议独立于操作系统和编程语言。
-
该协议的功能设计是可移植的。
-
SNMP 基本上是一组核心操作,在所有受管设备上保持不变。因此,SNMP 支持可扩展性。
-
SNMP 是一个普遍接受的协议。
-
这是一个轻量级协议。
-
该协议允许分布式管理访问。
不足之处
SNMP 的一些缺点如下:
-
该协议导致网络带宽的减少。
-
访问控制、身份验证和数据隐私是使用它的一些最大的安全问题。
-
SNMP 处理的信息既不详细,也没有足够好的组织。
计算机网络中的 TELNET
原文:https://www.studytonight.com/computer-networks/telnet-in-computer-networks
在本教程中,我们将介绍计算机网络中的应用程序 TELNET 。
TELNET 基本上是 TErminal NETwork 的简称。它基本上是一种用于虚拟终端服务的 TCP/IP 协议,主要由国际标准组织(ISO)提出。
-
它是一个通用的客户机/服务器应用程序。
-
该程序能够建立到远程系统的连接,使得本地系统开始作为远程系统的终端出现。
-
它是一个标准的 TCP/IP 协议,用于虚拟终端服务。
-
简单地说,我们可以说 telnet 允许用户登录远程计算机。登录后,用户可以使用远程计算机的服务,然后可以将结果传输回本地计算机。
-
TELNET 主要是在大多数操作系统在分时环境下运行的时候设计的。在这种环境下,一台大型计算机可以支持多个用户。通常,计算机和用户之间的交互是通过终端进行的(它是键盘、鼠标和显示器的组合)。
-
TELNET 只使用一个 TCP/IP 连接。
记录
在分时环境中,用户是系统的一部分,拥有访问资源的某些权限。需要注意的是,每个用户都有一个标识和密码。该用户标识主要表明用户是系统的一部分。
为了访问系统,用户通过用户标识登录系统。该系统还包括密码检查,以防止未经授权访问系统资源。
日志记录过程可以进一步分为两类:
-
本地登录
-
TELNET
本地登录
每当用户登录到本地分时系统时,就称为本地登录。
该图显示了本地登录
-
一旦用户在终端键入,那么按键就被终端驱动程序接受。
-
然后,终端驱动程序将字符传递给操作系统。
-
之后,操作系统解释字符的组合,然后调用所需的应用程序。
TELNET
每当用户想要访问那些位于远程机器上的应用程序或实用程序时,就称之为 TELNET 。在这种类型的登录中,主要使用 TELNET 客户端/服务器程序。
该图显示了 TELNET 的概念
-
在这种情况下,用户主要将击键发送到终端驱动程序,操作系统只接受字符,不解释字符。
-
之后,字符被发送到 TELNET 客户端,该客户端主要将这些字符翻译成通用字符集,即通常所说的网络虚拟终端 (NVT)字符。
-
转换后,TELNET 客户端将它们传输到 TCP/IP 协议栈。
-
NVT 形式的文本随后通过互联网传播,然后到达远程机器上的 TCP/IP 协议栈。
-
之后,字符被传递给操作系统,然后操作系统将这些字符传递给 TELNET 服务器,
-
然后,TELNET 服务器将这些 NVT 字符更改为远程计算机可以理解的相应字符。
-
字符不能直接传递到远程计算机的操作系统,因为远程操作系统的设计方式不能从 TELNET 服务器接收字符。
-
它的设计方式是从终端驱动程序接收字符。
-
添加了一个通常被称为伪终端驱动程序的软件程序,它主要假装字符来自终端。
网络虚拟终端(NVT)
主要是客户端 TELNET 将来自本地终端的字符翻译成 NVT 的形式,然后将它们传送到网络。另一方面,服务器 TELNET 将 NVT 形式的数据和命令转换成远程计算机主要接受的形式。
NVT 字符集
网络虚拟终端主要使用两组字符,一组用于数据,另一组用于控制。
-
对于数据,NVT 是一个 8 位字符集,其中 7 个最低位与 ASCII 相同,最高位为 0。
-
为了在计算机之间发送控制字符,NVT 使用 8 位字符集,其中最高位设置为 1。
为了发送数据和控制字符,TELNET 使用相同的连接。这仅仅是通过将控制字符嵌入到数据流中来实现的。
为了区分数据字符和控制字符,每个控制字符前面都有一个特殊的控制字符,通常称为解释为控制(IAC)。
选择
这些是拥有更复杂终端的用户可以使用的额外功能。
一些常见的选项如下:
密码 | 选项名称 | 选项的含义 |
---|---|---|
Zero | 二进制的 | 该选项解释为 8 位二进制传输。 |
one | 回声 | 该选项将接收到的数据从一端反射到另一端。 |
three | 压制继续 | 数据后抑制前进信号 |
five | 状态 | 它用于请求 TELNET 的状态。 |
six | 计时标记 | 它用于定义时标。 |
Twenty-four | 终端类型 | 用于设置终端类型。 |
Thirty-two | 临界速度 | 它用于设置终端速度 |
Thirty-four | 线路模式 | 它用于更改线路模式。 |
期权谈判
TELNET 程序允许客户端和服务器在服务之前或期间协商选项。
下面给出了用于此目的的四个控制字符:
性格;角色;字母 | 小数 | 二进制的 | 意义 |
---|---|---|---|
将 | Two hundred and fifty-one | Eleven million one hundred and eleven thousand and eleven | 该控制字符: |
1。提供启用 | |||
2。接受启用的请求 | |||
习惯 | Two hundred and fifty-two | Eleven million one hundred and eleven thousand one hundred | 该控制字符: |
1。拒绝启用 | |||
2 的请求。提议禁用。 | |||
3。接受禁用的请求 | |||
防御命令(Defense Order) | Two hundred and fifty-three | Eleven million one hundred and eleven thousand one hundred and one | 该控制字符: |
1。批准要启用的报价。 | |||
2。请求启用。 | |||
DONT | Two hundred and fifty-four | Eleven million one hundred and eleven thousand one hundred and ten | 该控制字符: |
1。不同意启用的提议。 | |||
2。批准禁用的提议。 | |||
3。请求禁用。 |
TELNET 的优势
下面给出了使用 TELNET 的一些好处:
-
TELNET 的一个主要好处是它允许远程访问别人的计算机系统。
-
因为 TELNET 使用纯文本。因此,这允许用户以较少的数据传输问题进行更多的访问。
-
TELNET 节省了很多时间。
-
TELNET 是通用的,因为它可以在任何计算机上使用,即使是最老的系统也可以轻松地连接到较新的机器,同时两者都有不同版本的操作系统。
TELNET 的缺点
现在是时候看看 TELNET 的缺点了:
-
对初学者来说可能很难。
-
因为没有加密的概念,因为数据是以纯文本的形式发送的。因此,这不是一个安全的方法。
-
此外,远程设备不知道本地设备的功能,因为许多功能被禁用。
操作模式
TELNET 的实施主要以以下三种模式之一运行:
-
默认模式
-
字符模式
-
线路模式
默认模式
-
如果通过选项协商没有调用其他模式,则使用该模式。
-
这种模式下的回显是由客户端完成的。
-
用户输入字符,客户端在屏幕上回显该字符,但直到整行完成后才发送。
字符模式
-
在这种模式下,键入的每个字符都由客户端发送到服务器。
-
之后,服务器将字符回显,以便在客户端屏幕上显示。
-
只有在传输时间过长的情况下,才会进行角色的呼应。
线路模式
-
提出这种模式是为了弥补默认模式和字符模式的不足。
-
这种模式下的行回显是由客户端完成的。
-
之后,整行由客户端发送到服务器。
电子邮件
原文:https://www.studytonight.com/computer-networks/electronic-mail
在本教程中,我们将详细介绍最流行的互联网服务之一电子邮件。
电子邮件通常被称为电子邮件,是一种用于交换数字信息的方法。
-
电子邮件主要是为人使用而设计的。
-
它允许消息包括文本、图像、音频以及视频。
-
该服务允许将一条消息发送给一个或多个接收者。
-
电子邮件系统主要基于存储转发模型,其中电子邮件服务器系统代表只需要连接到电子邮件基础设施的用户接受、转发、传递和存储消息。
-
发邮件的人被称为发件人,而收到邮件的人被称为收件人。
需要电子邮件
通过使用电子邮件,我们可以随时向任何人发送任何消息。
-
我们可以同时向几个民族发出同样的信息。
-
这是一种非常快速有效的信息传递方式。
-
与邮政系统相比,电子邮件系统速度非常快。
-
信息可以很容易地转发给同事,而无需重新输入。
电子邮件系统的组件
电子邮件系统的基本组件如下:
1.用户代理
它是一个主要用于发送和接收电子邮件的程序。它也被称为电子邮件阅读器。用户代理用于撰写、发送和接收电子邮件。
-
它是电子邮件的第一个组成部分。
-
用户代理也处理邮箱。
-
用户代理主要向用户提供服务,以简化消息的发送和接收过程。
以下是用户代理提供的一些服务:
1.阅读信息
2.回复邮件
3.撰写邮件
4.转发消息。
5.处理消息。
2.消息传输代理
传送电子邮件的实际过程是通过邮件传送代理(MTA)完成的。
-
为了发送电子邮件,系统必须有一个 MTA 客户端。
-
为了接收电子邮件,系统必须有一个 MTA 服务器。
-
主要用于定义互联网上的 MTA 客户端和 MTA 服务器的协议称为 SMTP(简单邮件传输协议)。
-
SMTP 主要定义命令和响应必须如何来回发送
3.消息访问代理
在电子邮件传递的第一和第二阶段,我们使用了 SMTP。
-
SMTP 基本上是一个推送协议。
-
电子邮件传递的第三阶段主要需要 pull 协议,在这一阶段使用消息访问代理。
-
用于访问消息的两个协议是 POP 和 IMAP4。
电子邮件架构
现在是时候借助四个场景来看看电子邮件的架构了:
第一种情况
当电子邮件的发送者和接收者在同一个系统上时,只需要两个用户代理。
第二种情况
在这种情况下,电子邮件的发送者和接收者基本上是两个不同系统上的用户。此外,消息需要通过互联网发送。在这种情况下,我们需要使用用户代理和消息传输代理(MTA)。
第三种情况
在这种情况下,发送方通过点对点广域网连接到系统。它可以是拨号调制解调器或电缆调制解调器。而接收器直接连接到系统,就像在第二种情况下一样。
同样在这种情况下,发送者需要一个用户代理来准备消息。准备好消息后,发送方通过局域网或广域网通过一对 MTA 发送消息。
第四种情况
在这种情况下,接收者也可以借助广域网或局域网连接到他的邮件服务器。
当消息到达时,接收者需要检索消息;因此,需要另一组客户机/服务器代理。收件人利用 MAA(邮件访问代理)客户端来检索邮件。
在这种情况下,客户端将请求发送到邮件访问代理(MAA)服务器,然后请求传输邮件。
这种场景是当今最常用的。
邮件的结构
该消息主要由两部分组成:
1.页眉
2.身体
页眉
电子邮件的标题部分通常包含发件人的地址以及收件人的地址和邮件的主题。
身体
消息正文包含对接收者来说有意义的实际信息。
电子邮件地址
为了发送电子邮件,邮件处理系统必须使用具有唯一地址的寻址系统。
地址由两部分组成:
-
本地部分
-
域名
本地部分
用于定义特殊文件的名称,一般称为用户邮箱;它是为用户接收的所有邮件的存储位置,供消息访问代理检索。
域名
地址的第二部分是域名。
在@的帮助下,本地部分和域名被分开。
MIME 协议
原文:https://www.studytonight.com/computer-networks/mime-protocol
在本教程中,我们将介绍计算机网络中另一个名为 MIME 的应用层协议。
MIME 是多用途互联网邮件扩展(MIME)的简称。
-
它主要用于描述消息内容类型。
-
MIME 基本上是一种辅助协议,主要允许通过电子邮件发送非 ASCII 数据。
-
它基本上是将发送方站点的非 ASCII 数据转换为 NVT ASCII 数据,然后将其传递给客户端,以便通过互联网发送。
-
在接收端,消息被转换回原始数据。
-
MIME 基本上是一组软件功能,主要将非 ASCII 数据转换为 ASCII 数据,反之亦然,
-
以下是可以在互联网上使用 MIME 交换的不同类型的数据文件:
-
声音的
-
形象
-
文本
-
录像
-
其他特定于应用程序的数据(可以是 pdf、Microsoft word 文档等)。
-
-
MIME 是电子邮件的应用之一,它不仅仅局限于文本数据。
让我们举一个例子,用户想要通过用户代理发送一封电子邮件,而这封电子邮件是非 ASCII 格式的。所以这里我们使用的是 MIME 协议,主要是将这种非 ASCII 格式转换成 7 位 NVT ASCII 格式。
消息通过电子邮件系统以 7 位 NVT ASCII 格式传输到另一端,然后 MIME 协议再次将其转换回非 ASCII 代码。以便接收器可以读取它。
在任何电子邮件传输的开始,基本上都插入了 MIME 标题。
哑剧的特点
MIME 协议的特点如下:
-
MIME 支持 ASCII 以外的字符集。
-
借助 MIME,我们可以在一封邮件中发送多个附件。
-
MIME 还支持不同的内容类型和多部分消息。
-
它提供复合文档的支持
-
它还支持电子邮件中的非文本内容。
MIME 标头
MIME 标头主要添加到原始电子邮件标头部分,以便定义转换。下面给出了添加到原始标题中的五个标题:
-
MIME 版本
-
内容类型
-
内容-传输-编码。
-
内容标识
-
内容-描述
1.MIME 版本
MIME 的这个头主要定义使用的 MIME 的版本。目前使用的 MIME 版本是 1.1。
2.内容类型
MIME 的这个头用于定义消息正文中使用的数据类型。在这种情况下,内容类型和内容子类型只是用斜线分开。
基本上,根据子类型,报头还包含其他参数:
**Content-Type:**<type/subtype;parameters>
MIME 允许的不同类型的数据如下:
类型 | 图表类型 | 描述 |
---|---|---|
文本 | 1.平原 | |
2。超文本标记语言 | 1.无格式 | |
2。以超文本标记语言格式 | ||
几部分的 | 1.混合 | |
2。平行 | ||
3。 | ||
文摘 4。供选择的 | 1.正文主要包含不同数据类型的有序部分。 | |
2。同上,但没有顺序。 | ||
3。它类似于混合子类型,默认为 message/RFC822。 | ||
4。这些部分是同一条消息的不同版本。 | ||
消息 | 1.RFC 822 | |
2。偏 | ||
3。外体 | 1.正文采用封装消息的形式。 | |
2。身体是更大信息的一个片段。 | ||
3。正文是对另一条消息的引用。 | ||
图像 | 1.JPEG | |
2 .GIF 格式 | 1.图像为 JPEG 格式。 | |
2。图像是 GIF 格式。 | ||
录像 | 活动图像专家组国际标准 | 视频是 MPEG 格式的 |
声音的 | 基础 | 语音的单通道编码为 8 千赫 |
应用 | 1.postscript〔t0〕2。字节流 | 1.表示 Adobe PostScript |
2。表示常规二进制数据(8 位字节)。 |
3.内容传输编码
MIME 的这个头主要定义了用于将消息编码为 0 和 1 进行传输的方法。
**Content-Transfer-Encoding:**<type>
类型 | 描述 |
---|---|
7 位 | 它表示 NVT ASCII 字符和短线。 |
8 位 | 它表示非 ASCII 字符和短线。 |
二进制的 | 它表示具有无限长行的非 ASCII 字符。 |
Base-64 | 它表示编码为 8 位 ASCII 字符的 6 位数据块。 |
报价-可打印 | 它表示非 ASCII 字符,这些字符被编码为一个等号,后跟一个 ASCII 码。 |
4.内容标识
在多消息环境中,MIME 的这个头用于唯一地标识整个消息。
**Content-id:**id=<content-id>
5.内容-描述
MIME 的这个头定义了主体是图像、音频还是视频的形式。
**Content-Description**:<description>
MIME 的优点
使用 MIME 的一些好处如下:
-
支持交互式多媒体。
-
支持传输多个附件。
-
支持不同的内容类型。
-
还支持不同字体和颜色的文本。
万维网
原文:https://www.studytonight.com/computer-networks/world-wide-web
在本教程中,我们将介绍计算机网络中万维网的概念。
万维网或网络基本上是从世界各地的点链接在一起的信息的集合。也简称为 WWW。
-
万维网提供了灵活性、可移植性和用户友好的特性。
-
它主要包括世界范围内的电子文档集合(即网页)。
-
它基本上是互联网上计算机之间交换信息的一种方式。
-
万维网主要是由互联网上的图像、文本和声音组成的网页网络,可以通过浏览器软件在浏览器上简单地查看。
-
这是蒂姆·伯纳斯·李发明的。
万维网的组件
万维网的组件主要分为两类:
-
结构部件
-
语义成分
万维网架构
WWW 主要是分布式客户端/服务器服务,使用浏览器的客户端可以使用服务器访问该服务。所提供的服务分布在许多不同的地方,通常称为网站/网站。
-
每个网站保存一个或多个文档,通常称为网页。
-
其中每个网页都包含指向同一网站或其他网站上其他网页的链接。
-
使用浏览器可以检索和查看这些页面。
在上述情况下,客户端发送一些属于站点 A 的信息。它通常通过浏览器发送一个请求(它是一个用来在网上获取文档的程序)。
此外,请求通常还包含其他信息,如网站地址、网页(网址)。
位于站点 A 的服务器找到该文档,然后将其发送给客户端。之后,当用户或客户在网站 B 找到另一个包含网页的文档的引用时。
参考文献通常包含站点 b 的网址。客户也有兴趣看一下这个文档。然后在客户端向新站点发送请求,然后检索新页面之后。
现在我们将详细介绍万维网的组件。
1.Client/Browser
客户端/网络浏览器基本上是一个用于与互联网上的网络服务器通信的程序。
-
每个浏览器主要由三个组件组成,它们是:
-
控制器
-
解释者
-
客户端协议
-
-
控制器主要接收来自输入设备的输入,然后使用客户端程序来访问文档。
-
在访问文档后,控制器利用解释器在屏幕上显示文档。
-
解释器可以是 Java、HTML、javascript,这主要取决于文档的类型。
-
客户端协议可以是 FTP、HTTP、TELNET。
2.计算机网络服务器
主要用于网络资源并根据请求向另一台计算机提供服务的计算机通常被称为服务器。
-
网页主要存储在服务器上。
-
每当客户端的请求到达时,相应的文档就被发送给客户端。
-
客户端和服务器之间的连接是 TCP。
-
通过多线程或多处理,它可以变得更加高效。因为在这种情况下,服务器一次可以回答多个请求。
3.统一资源定位器
网址是统一资源定位符的缩写。
-
它基本上是一个标准,用于指定互联网上的任何类型的信息。
-
为了访问任何页面,客户通常需要一个地址。
-
为了便于访问世界各地的文档,HTTP 通常使用定位器。
网址主要定义了四件事:
-
协议
主要用于检索文档的客户端/服务器程序。一个常用的协议是 HTTP。 -
主机
就是信息所在的计算机。它不是强制的,因为它是任何承载网页的计算机的名称。 -
端口
网址可以选择包含服务器的端口号。如果包含端口号,则通常将其插入主机和路径之间,并且通常用冒号与主机隔开。 -
路径
表示信息所在文件的路径名。
4.HTML
HTML 是超文本标记语言的缩写。
-
它通常用于创建网页。
-
它主要用于定义网页的内容、结构和组织。
5.可扩展置标语言
XML 是可扩展标记语言的缩写。它主要帮助定义语义网中的通用语法。
万维网的特点
以下是万维网提供的一些功能:
-
提供超文本信息系统
-
开放标准和开源
-
已分发。
-
主要利用网络浏览器为许多服务提供单一界面。
-
动态的
-
相互作用的
-
跨平台
万维网的优势
以下是万维网提供的好处:
-
它主要免费提供所有信息。
-
提供快速互动的沟通方式。
-
从任何地方都可以到达。
-
它已经成为媒体的全球来源。
-
它主要是促进大量数据的交换。
万维网的缺点
万维网有一些缺点,如下所示:
-
对一些信息进行优先排序和过滤是很困难的。
-
无法保证找到一个人想要的东西。
-
在信息霸主的情况下会出现一些危险。
-
对可用数据没有质量控制。
-
没有规定。
SSH(安全外壳)
原文:https://www.studytonight.com/computer-networks/ssh-secure-shell
在本教程中,我们将详细介绍计算机网络中 SSH 的概念。
SSH 是安全外壳的缩写。它是通过互联网访问网络设备和服务器的主要协议之一。
-
它基本上是一个网络协议,主要运行在 TCP/IP 协议之上。
-
它被广泛用于远程管理和访问设备。
-
此外,安全外壳(SSH)主要使两个远程连接的用户能够在不安全的网络上执行网络通信和其他服务。
-
因此,它提供了安全的客户端/服务器通信,还可以用于其他任务,如文件传输和电子邮件。
-
在 SSH 的帮助下,您可以通过网络登录到另一台计算机,它允许您在远程机器上执行命令。
-
您可以轻松地将文件从一台机器移动到另一台机器。
-
该协议主要对双向流量进行加密;借助此功能,您可以防止贩卖、嗅探和密码盗窃。
-
默认情况下,SSH 运行在端口号 22 上,您也可以更改它。
-
它适用于公共网络。
SSH 主要以三个子协议的形式组织:
让我们在下一节中逐一详细讨论上述内容:
1.SSH 传输层协议
SSH 的传输层协议部分主要用于提供数据的机密性、服务器/主机身份验证和数据完整性。
-
可选地,它还提供数据压缩。
-
服务器认证
-
主机密钥本质上是不对称的,就像公钥/私钥一样。
-
服务器使用公钥向客户端证明其身份。
-
客户端主要通过维护的数据库来验证所联系的服务器是否是“已知”的主机。
-
一旦完成了服务器的身份验证,就会生成会话密钥。
-
-
会话密钥建立
-
在服务器认证之后,客户端和服务器就要使用的密码达成一致。
-
会话密钥通常由客户端和服务器生成。
-
这些密钥主要是在用户身份验证之前生成的,因此可以发送的用户名和密码是加密的。
-
会话密钥通常在会话期间定期更换(我们可以说一个小时),然后在使用后立即销毁。
-
-
数据完整性
SSH 主要按照数据完整性检查的顺序使用消息认证码(MAC)算法。
2.用户认证协议
顾名思义,SSH 的这一部分主要用于向服务器验证用户身份。
-
该协议用于确认作为客户端运行的代理的身份。
-
服务器主要识别应该只给予目标用户访问权。
-
出于身份验证的目的,可以使用几种方法;
-
键入的密码
-
公钥认证等。
-
3.SSH 连接协议
SSH 连接协议主要用于从单个客户端/服务器连接创建不同的数据流或逻辑通道。
- 因此,该协议主要通过单一底层 SSH 连接提供多个逻辑通道。
SSH 命令
下面给出了一些用于 SSH 的重要命令:
-
ls
用于显示目录内容(主要是列出文件的名称)。 -
cd
这个命令主要帮助你更改目录 -
mkdir
这个命令帮助你创建一个新的文件夹/目录。 -
触摸
这个命令主要允许你删除一个文件。
SSH 提供的服务
SSH 提供了三种主要服务,这些服务将在下一节中详细介绍:
1.安全命令外壳(TELNET )
SSH 提供的这项服务主要提供用户编辑文件,允许查看目录内容,还允许访问连接设备上的应用程序。系统管理员可以远程启动、查看、停止服务和进程,可以创建用户帐户,还可以更改文件/目录的权限。
现在,只要使用 SSH 提供的安全 TELNET 服务,就可以从远程机器安全地执行机器命令提示符上所有可行的任务。
2.安全文件传输
为了安全传输文件,SSH 的一个扩展被设计成主要被称为 SFTP(SSH FTP 协议)。
-
它是一个独立的协议,主要用于处理文件传输。
-
它用于加密用户名和密码。
-
它还对要传输的文件数据进行加密。
-
它还利用了端口 22。
3.端口转发
端口转发主要允许来自不安全的基于 TCP/IP 的应用程序的数据以安全的形式存在。
设置端口转发后,安全外壳会重新路由来自程序(通常是客户端)的流量,然后通过加密隧道将其发送到通常是服务器的另一端的程序。
在这种帮助下,多个应用程序可以通过单一的多路复用和安全通道传输数据,只需消除在防火墙或路由器上打开许多端口的需要。
安全外壳的优点
以下是安全外壳提供的优势:
-
SSH 协议使用相同的协议提供多种服务。
-
在强加密的帮助下,该协议提供了用户数据的隐私性,
-
它是免费提供的。
-
它用于非商业用途。
-
它还允许用户查看目录内容、编辑文件以及远程访问自定义数据库应用程序。
-
它用于验证发送方和接收方的身份。
-
对于简单的虚拟专用网络,端口隧道以一种有效的方式工作。
-
允许用户远程查看目录内容、编辑文件和访问自定义数据库应用程序。
-
安全外壳还有助于安全地隧道传输不安全的应用程序,如 SMTP、IMAP、POP3 和 CVS。
SSH 的缺点
下面给出了安全外壳(SSH)的一些缺点:
-
该协议无助于防范特洛伊木马或病毒。
-
该协议只适用于基于 TCP 的应用,不适用于基于 UDP 的应用。
-
这个协议需要更多的技术知识。
DNS 协议
原文:https://www.studytonight.com/computer-networks/dns-protocol
在本教程中,我们将详细介绍计算机网络中域名系统的概念。
域名系统是域名系统或域名服务的缩写。它是一个应用层协议。
-
基本上,域名系统是由其他程序(如电子邮件)使用的支持程序。
-
电子邮件程序的用户知道收件人的电子邮件地址;互联网协议需要 IP 地址。
-
主要是 DNS 客户端程序向 DNS 服务器发送请求,以便将电子邮件地址映射到相应的 IP 地址。
-
为了识别一个实体,TCP/IP 协议还使用一个 IP 地址来唯一地识别主机到互联网的连接。但是人们通常更喜欢用名字而不是数字地址。因此,需要一种能够将名称映射到地址或将地址映射到名称的系统。
域名系统是一种可以将名称映射到地址或将地址映射到名称的系统。
例子
下面给出了一个使用域名系统的例子:
命名空间
NameSpace 基本上将每个地址映射到一个唯一的名称。分配给机器的名称必须是唯一的,因为地址是唯一的。
它进一步分为两类:
-
平面名称空间
-
分层名称空间
平面名称空间
基本上,在平面名称空间中,一个名称被分配给一个地址。
-
这个空间中的名字基本上是一个没有任何结构的字符序列。
-
此外,这些名称可能有也可能没有共同的部分。如果他们有一个共同的部分,那么它就没有意义。
-
这种系统的主要缺点之一是不能用于大型系统的情况;因为没有中央控制,这将导致模糊和重复。
分层名称空间
在分层名称空间中,每个名称由几个部分组成。
-
第一部分主要说明组织的性质。
-
第二部分主要指明机构名称。
-
第三部分主要界定了组织中的部门等。
-
中央当局可以指定名称中表明该组织名称和性质的部分,名称其余部分的责任由该组织自己承担。
-
组织也可以给名称添加后缀(或前缀),以便定义主机或资源。
域名空间
当我们在这种情况下使用分层名称空间时,我们需要设计域名空间。在本设计中,名称是在根位于顶部的倒树结构中定义的。
此外,树可以有 128 个级别,这些级别从 0 级(根)到 127 级。
标签
树的每个节点都必须有一个标签。标签是最多 63 个字符的字符串。
-
根标签基本上是空字符串(表示空字符串)。
-
域名空间要求节点的子节点(即来自同一节点的分支)应具有不同的标签,这保证了域名的唯一性。
域名
树的每个节点都有一个域名。
-
完整域名基本上是一系列标签,通常用点(。).
-
域名总是从节点一直读到根。
-
最后一个标签是始终为空的根的标签。
-
所有这一切意味着完整的域名总是以空标签结束,这意味着最后一个字符总是一个点,因为空字符串什么也不是。
该图显示了域名和标签
域名进一步分为两类:
1。完全限定域名
-
如果标签以空字符串结尾,则它被称为完全限定域名。该域名包含主机的全名。
-
FQDN 主要由两部分组成:主机名和域名。
-
FQDN 主要包含从最具体的标签到最通用的标签的所有标签,有助于唯一地定义主机的名称。
-
示例:
Champion.fcd.dfva.edu.
在本例中,主机名是 Champion。
下面给出了一些完全限定域名;
2.部分限定域名
如果标签不以空字符串结尾,则称之为部分限定域名。
-
该名称从节点开始,但没有到达根。
-
主要用于待解析的名称与客户端属于同一站点的情况,在这种情况下,解析器可以提供被称为后缀的缺失部分,以创建 FQDN。
领域
域基本上是域名空间的子树。域名通常是位于子树顶部的节点的域名。
架构
基础
计算设备的发展
原文:https://www.studytonight.com/computer-architecture/introduction-to-history-of-computing
ENIAC 是 20 世纪 40 年代设计的第一个计算系统之一。在大小上,它相当于 3-4 辆双层巴士的大小。有超过 18,000 个被称为真空管的嗡嗡作响的电子开关,与现代的笔记本电脑相比,它的计算能力差得远。你一定想知道,我们是如何将所有电子电路压缩到越来越小的封装中,实现笔记本电脑只有几英寸厚、非常轻的现代设计的。1958 年集成电路的发明使这一切成为可能。
计算机简史
打开电视或收音机,你会看到一个绿色的板子占据了里面的大部分空间,它就是印刷电路板。它看起来像一张街道地图,用小型电子元件(如电阻和电容)代替建筑物,并用印刷的铜连接将它们连接在一起,就像微型金属街道一样。
这种电路板在像这样的小设备中很好,但是对于像计算机这样复杂的计算设备来说,如果电路板没有几英尺见方的尺寸,这是不可能的。
最简单的计算机需要大约八个电子开关来存储一个字节(字符)的信息。所以如果你计划建造一台简单的计算机,有足够的内存来存储这段文字,大约有 450 个字符,那么它需要 450 x 8,大约 3600 个电子开关。考虑到 20 世纪 40 年代早期使用的真空管,它们有人类拇指那么大,你最终会建造一个巨大的、充满能量的怪物。
1947 年,随着晶体管的发明,使用晶体管进行计算变得更加容易,但是复杂的电路仍然不容易处理,晶体管的尺寸只有真空管的几分之一,消耗的功率也更小。
1958 年集成电路的发明,改变了游戏。这个概念是把整个电路,包括所有的元件和它们之间的连接,在一块硅的表面上以微观的微小形式重建整个电路。
杰克·基尔比****罗伯特·诺伊斯同时发明了集成电路。这是多么不可思议,两个男人,同时发明了同样的技术,却不了解对方。
1968 年,罗伯特·诺伊斯联合创立了英特尔电子公司,该公司仍然是集成电路制造、研发的全球市场领导者。
集成电路(也称为集成电路或芯片)是一个完整的电子电路,由一个以上的单个组件组成,如晶体管、二极管、电阻、电容以及连接所有组件的导电路径,所有这些组件都由一块硅晶制成。
什么是数字计算机?
原文:https://www.studytonight.com/computer-architecture/digital-computers
数字计算机是执行各种计算任务的数字系统。数字这个词意味着计算机中的信息由取有限数量离散值的变量来表示。这些值由能够保持有限数量离散状态的组件在内部处理。
十进制数字 0,1,2,...例如,9 提供 10 个离散值。第一台电子数字计算机发展于 20 世纪 40 年代末,主要用于数值计算,离散元素是数字。从这个应用中出现了术语数字计算机。
实际上,如果只使用两种状态,数字计算机的运行会更加可靠。由于组件的物理限制,并且由于人类逻辑趋向于二进制(即真或假、是或否语句),被约束为取离散值的数字组件被进一步约束为只取两个值,并且被称为二进制。
数字计算机采用二进制数字系统,有两位数:0
和1
。二进制数字称为位。信息在数字计算机中是以比特组表示的。通过使用各种编码技术,比特组不仅可以表示二进制数,还可以表示其他离散符号,如十进制数字或字母表中的字母。
数字计算机:计算机组织
计算机组织关注的是硬件组件的运行方式以及它们连接在一起形成计算机系统的方式。
假设各种组件都已就位,任务是调查组织结构,以验证计算机部件是否按预期运行。
数字计算机:计算机设计
计算机设计是关于计算机的硬件设计。一旦制定了计算机规范,设计师的任务就是为系统开发硬件。
计算机设计关心的是确定应该使用什么硬件以及部件应该如何连接。计算机硬件的这一方面有时被称为计算机实现。
数字计算机:计算机架构
计算机架构关注的是用户所看到的计算机的结构和行为。
它包括信息、格式、指令集和内存寻址技术。计算机系统的架构设计与各种功能模块(如处理器和存储器)的规格有关,并将它们组合成一个计算机系统。
计算机架构的两种基本类型是:
- 冯·诺依曼建筑
- 哈佛建筑
1.冯·诺依曼架构
冯·诺依曼架构描述了计算机硬件、程序和数据应该遵循的一般框架或结构。尽管已经设计并实现了其他计算结构,但今天使用的绝大多数计算机都是按照冯·诺依曼架构运行的。
冯·诺依曼设想计算机系统的结构由下列部件组成:
- 算术逻辑单元:****算术逻辑单元,执行计算机的计算和逻辑功能。
- RAM: 内存;更具体地说,计算机的主存储器,也就是快速存储器,也被称为随机存取存储器。
- 控制单元:这是一个指挥计算机其他部件执行某些动作的部件,比如指挥从内存中取数据或指令,由 ALU 处理;和
- 人机界面;即输入输出设备,如输入用键盘和输出用显示监视器。
数字计算机的框图
基于冯·诺依曼架构的计算机架构的一个例子是台式个人计算机。
2.哈佛建筑
哈佛架构使用物理分离的存储和信号路径来存储指令和数据。该术语起源于哈佛标记 I 和继电器锁存器中的数据(23 位数宽)。
在哈佛架构的计算机中,CPU 可以同时从内存中读取指令和数据,从而将内存带宽增加一倍。
微控制器(基于单片机的计算机系统)和 DSP (基于数字信号处理器的计算机系统)都是哈佛架构的例子。
布尔代数导论
原文:https://www.studytonight.com/computer-architecture/boolean-algebra
布尔代数是一个代数(集合、运算、元素),由集合 B 和集合上定义的三个运算组成,集合 B 有> =2 个元素,这三个运算是:和运算(布尔积)、或运算(布尔和)和非运算(补数),因此对于任何元素 a、B、c。在 B 的集合中,a*b,a+b 和 a’在 B 中。
例如:
-
Consider the four-element Boolean algebra B4 = ( {0, x, y, 1}; *, +, '; 0, 1). The AND, OR and NOT operations are described by the following tables:
-
Consider the two-element Boolean algebra B2 = ({0,1}; *, +, '; 0, 1). The three operations *(AND), +(OR) and '(NOT) are defined as follows:
一些关键术语
以下是布尔代数的一些关键术语及其简要描述:
布尔函数
布尔代数是处理二进制变量和逻辑运算的交换代数。变量由字母如 A、B、x 和 y 表示,三种基本的逻辑运算是 and、OR 和 NOT。布尔函数可以用二元变量、逻辑运算符号、括号和等号用代数表示。对于给定的变量值组合,布尔函数可以是 1 或 0。例如,考虑布尔函数:
F = x + y'z
如果 x 为 1 或 y '和 z 都等于 1,则函数 F 等于 1;否则 f 等于 0。
真值表
函数与其二进制变量之间的关系可以用真值表来表示。为了在真值表中表示一个函数,我们需要一个由 n 个二进制变量组合而成的列表。
逻辑图
布尔函数可以从代数表达式转换成由与门、或门和非门组成的逻辑图。
布尔代数的目的是便于数字电路的分析和设计。它提供了一个方便的工具来:
- 用代数形式表示二元变量之间的真值表关系。
- 用代数表示逻辑图的输入输出关系。
- 为相同的功能找到更简单的电路。
真值表指定的布尔函数可以用许多不同的方式用代数表示。布尔表达式的两种形成方式是规范和非规范形式。
语言的语音典型
它表示布尔函数的每个乘积(与)或和(或)项中的所有二进制变量。要确定布尔函数 F(A,B,C) = A'B + C' + ABC 的标准乘积和形式,该形式为非标准形式,使用以下步骤:
F = A'B + C' + ABC
= A'B(C + C') + (A + A')(B + B')C' + ABC
其中x+x’= 1是布尔代数的基本恒等式
= A'BC + A'BC' + ABC' + AB'C' + A'BC' + A'B'C' + ABC
= A'BC + A'BC' + ABC' + AB'C' + A'B'C' + ABC
通过根据布尔代数规则操纵布尔表达式,可以获得需要更少门的更简单的表达式。
下表列出了布尔代数最基本的恒等式。表中所有的恒等式都可以通过真值表来证明。
数字元件基础
原文:https://www.studytonight.com/computer-architecture/basics-of-digital-components
在本教程中,我们将学习数字计算机的基础知识。我们将涵盖集成电路、数字逻辑系列、编码器和解码器等。
集成电路
复杂的数字电路由集成电路构成。 IC 是一种小型硅半导体晶体,称为芯片,包含数字门的电子元件。各种门在芯片内部相互连接,形成所需的电路。芯片安装在陶瓷或塑料容器中,连接被焊接到外部引脚以形成集成电路。集成电路的引脚数量从 14 个到几千个不等。每个 pin 都由印在其主体上的唯一数字标识。
集成电路的分类
- 小型集成器件
它在一个封装中包含几个独立的门。门的输入和输出直接连接到封装中的引脚。门的数量通常少于 10 个。
- 中型集成装置
它在一个封装中包含 10 到 200 个门。它们执行基本的数字功能,如解码器、加法器、寄存器。
- 大规模集成电路(LSI)
它在一个封装中包含 200 到几千个门。它们包括数字系统,如处理器、存储芯片等。
- 超大规模集成电路(超大规模集成器件)
它在单个封装中包含数千个门,例如微型计算机芯片。
- 超大规模集成器件
它在单个封装(如微型计算机芯片)中包含数十万个门。
数字逻辑家族
集成电路也按其所属的特定电路技术分类。每种技术的基本电路是与非门、或非、非门。
最早的逻辑家族是电阻-晶体管逻辑,它使用一个电阻作为输入,一个晶体管作为开关器件。
二极管-晶体管逻辑是晶体管-晶体管逻辑的直接祖先,使用二极管实现逻辑功能,而使用晶体管实现放大功能。
晶体管晶体管逻辑
它是 DTL(二极管晶体管逻辑)的改进形式,由詹姆斯·L·布依于 1961 年发明。二极管被晶体管取代,以改善电路运行。它被称为晶体管-晶体管逻辑,因为晶体管既执行逻辑功能又执行放大功能。
上图是双输入 TTL 与非门,一个输出。
优点:
- TTL 电路速度很快。
- 低传播延迟。
- 功耗不取决于频率。
其他一些要点:
- TTL 电路在静止时(即不使用时)消耗更多的功率,但如前所述,功耗不依赖于频率,因此功率速度不会像其他 CMOS 器件那样随着时钟速度而快速增加。
- 与 ECL 电路相比,TTL 使用较少的功率,但相对较慢。
- TTL 比早期的 CMOS 器件更不容易因静电放电而损坏。
- 在超大规模集成电路器件出现之前,TTL 电路被用于制造微型计算机和大型处理器的处理器。
- 在使用过程中,制作了许多子类型的 TTL 电路,如低功耗 TTL (功耗较小,但速度降低)高速 TTL 、肖特基 TTL (开关时间有所改善)等。
ECL(发射极耦合逻辑)
它提供最高速度的数字电路。它用于需要高速的系统,如超级计算机和信号处理器。ECL 在电路中使用了过驱动的 BJT(双极晶体管)。
上图是两个输入 ECL 门。
优点:
- ECL 是最快的逻辑家族。
- 传播延迟非常小。
- 噪声容限较低。
其他一些要点:
- 在 ECL 电路中,每个门即使在不活动时也会持续汲取电流,因此与其他逻辑系列相比,功耗更高。
- ECL 的大电流要求是恒定的,不依赖于电路的状态,这是功率噪声较低的原因。
金属氧化物半导体
它取决于一种载流子(电子或空穴)的流动。基本上是两种类型: PMOS 和 NMOS 。p 沟道金属氧化物半导体被称为 PMOS,n 沟道金属氧化物半导体被称为 NMOS。
就像其他场效应晶体管一样,它们有 4 个端子:栅极、漏极、源极和衬底。
它们有四种工作模式:截止(或亚阈值)三极管饱和(有时称为激活)速度饱和。
PMOS 晶体管通过在 n 型晶体管主体中创建反型层来工作。这个反型层被称为 p 沟道,可以在 p 型“源极”和“漏极”端子之间传导空穴。类似地,NMOS 晶体管通过在 p 型晶体管主体中创建 n 沟道(反型层)来发挥作用。
互补金属氧化物半导体
它也属于金属氧化物半导体的范畴,用于制造集成电路。它同时使用了 P 沟道和 N 沟道 MOS。它也被称为 COS-MOS(互补对称金属氧化物半导体),因为它使用互补对称的 p 型和 n 型 MOS 对来实现逻辑功能。它用于需要低功耗的系统。
上图是两个输入 ECL 门。
优点:
- 噪声容限很高。
- 功耗低。
- 与其他逻辑系列相比,废热产生非常少。
- CMOS 允许在芯片上高密度集成逻辑功能。
解码器
解码器是将来自 n 个编码输入的二进制信息转换成 2^n 输出的组合电路。商用解码器包括一个或多个使能(E)输入,以控制电路的操作。当 E 等于 1 时启用解码器,当 E 等于 0 时禁用解码器。
- 用于代码转换器。
- 用于实现布尔函数。
编码器
编码器是一种数字电路,它执行解码器的反向操作。编码器具有 2^n 输入线和 n 条输出线。它将八进制输入转换为二进制数字。
编码器的类型
- 优先编码器。
- 十进制到 BCD 编码器。
- 八进制到二进制编码器。
- 十六进制到二进制编码器。
优点:
- 高度可靠和准确。
- 低成本反馈。
- 高分辨率。
- 集成电子学。
- 融合光学和数字技术。
- 可以整合到现有的应用程序中。
- 体积小巧。
缺点:
- 易受磁性或无线电干扰(磁性编码器)。
- 直接光源干涉(光学编码器)。
- 易受污垢、油和灰尘污染。
多路器
多路复用器是一种组合电路,它接收来自 2^n 输入线之一的二进制信息,并将其导向单个输出线。
优点:
- 它减少了电线的数量。
- 它降低了电路复杂性和成本。
- 它简化了逻辑设计。
- 我们可以用多路复用器实现许多组合电路。
- 它不需要 k 图和简化。
缺点:
使用多路复用器芯片扩展 Arduino 上的输入/输出端口时,会出现以下缺点:
- 增加了交换端口的延迟。
- 增加了通过多路复用器传播的输入/输出信号的延迟。
- 对可以同时使用哪些端口的限制。
- 增加了固件复杂性以处理交换端口。
- 需要额外的输入/输出端口来控制多路复用器。
存储单元
原文:https://www.studytonight.com/computer-architecture/memory-unit
一个存储单元是存储单元和相关电路的集合,这些电路需要将信息传入和传出存储器。
单词
存储器将二进制信息(1 和 0)存储在称为字的位组中。存储器中的字是作为一个单元移入和移出存储器的位的实体。记忆单词是一组 1 和 0,可以表示数字、指令代码、一个或多个字母数字字符或任何其他二进制编码信息。
字节
一组八位称为一个字节。大多数计算机存储器使用位数是 8 的倍数的字。因此,一个 16 位字包含两个字节,一个 32 位字由 4 个字节组成。
商用计算机的内存容量通常表示为可存储的字节总数。
存储单元的内部结构
存储单元的内部结构由它包含的字的数量和每个字的位的数量来指定。称为地址线的特殊输入线选择一个特定的单词。内存中的每个字都被分配一个识别号,称为地址,从 0 开始,继续进行 1、2、3,直到 2 k - 1 ,其中 k 是地址线的数量。存储器内特定字的选择是通过将 k 位二进制地址应用于地址线来完成的。
内存中的解码器接受该地址,并打开选择指定字的位所需的路径。
计算机内存可以从 1024 个字(需要 10 位地址)到 2 个 32 个字(需要 32 个地址位)不等。习惯上,用一个字母来表示内存中的字数(或字节数):
- K(千)等于 2 10
- M(Mega) 等于 2 20
- G(千兆)等于 2 30
计算机系统中使用两种主要类型的存储器:随机存取存储器(RAM) 和只读存储器(ROM) 。这些半导体存储器根据存取时间分为随机存取存储器(ram)和顺序存取存储器(SAMs) 。
用移位寄存器、电荷耦合器件(CCDs) 或气泡存储器构成的存储器是 SAMs 的例子。随机存取存储器分为只读存储器、只读存储器(RMMs) 和读写存储器(RMs)。
只读存储器有两种类型:屏蔽编程只读存储器和用户编程只读存储器。
两种类型的内存模块是可擦除可编程只读存储器(EPROM) 和电可擦除可编程只读存储器(EEPROM) 。
读写存储器分别是静态随机存储器(SRAM) 和动态随机存储器(DRAM) 。静态随机存取存储器具有与普通触发器相同的存储单元。动态随机存取存储器具有必须定期刷新、读取和写入的存储单元,以避免存储单元的丢失。
随机存取存储器
原文:https://www.studytonight.com/computer-architecture/random-access-memory
在随机存取存储器中,可以从任何期望的随机位置访问存储单元进行信息传输。也就是说,在内存中定位一个单词的过程是相同的,无论这些单元在内存中的物理位置如何,都需要相同的时间。
存储器与其环境之间的通信是通过数据输入和输出线、地址选择线和指定传输方向的控制线来实现的。
随机存取存储器单元的框图如下所示:
n 数据输入线提供要存储在存储器中的信息,而 n 数据输出线提供从存储器内可用的 2 k 中选择的特定字中出来的信息。两个控制输入指定所需的传送方向。
内存:写和读操作
随机存取存储器可以执行的两个操作是写和读操作。写信号指定一个输入操作,读信号指定一个输出操作。接受这些控制信号中的一个。存储器内部的内部电路提供所需的功能。为了将要存储的新单词转移到内存中,必须采取的步骤如下:
- 将所需字的二进制地址应用于地址线。
- 将必须存储在存储器中的数据位应用到数据输入线。
- 激活写输入。
然后,存储单元将获取输入数据线中当前可用的位,并将它们存储在由地址线指定的位置。为了将存储的字从存储器中转移出来,必须采取的步骤如下:
- 将所需字的二进制地址应用于地址线。
- 激活读取输入。
然后,存储单元将从由地址选择的字中取出位,并将它们应用到输出数据线中。所选单词的内容在阅读后不会改变。
只读存储器
原文:https://www.studytonight.com/computer-architecture/read-only-memory
顾名思义,只读存储器(ROM) 是只执行读操作的存储单元;它没有写能力。这意味着存储在只读存储器中的二进制信息在设备的硬件生产过程中是永久的,不能通过向其中写入不同的字来改变。
随机存取存储器是一种通用设备,其内容可以在计算过程中改变,而只读存储器仅限于读取永久存储在该单元中的字。然后,由设计者指定的要存储的二进制信息被嵌入到单元中,以形成所需的互连模式。只读存储器带有特殊的内部电子保险丝,可以为特定的配置进行编程。一旦模式建立,即使电源关闭并再次打开,它也会保留在设备中。
一个 m x n ROM 是一个二进制单元的数组,每个单元组织成 n 位的 m 个字。如下图所示,一个只读存储器有 k 条地址输入线,用于选择存储器的 2 k = m 个字中的一个,以及 n 条输入线,每个字的一位一条。集成电路只读存储器还可以具有一个或多个使能输入,用于将多个封装扩展到具有更大容量的只读存储器中。
只读存储器不需要读控制线,因为在任何给定时间,输出线自动提供由地址值选择的字的 n 位。因为输出仅仅是当前输入(地址线)的函数,所以只读存储器被分类为组合电路。事实上,只读存储器内部是由解码器和一组或门构成的。不需要像在随机存取存储器中那样提供存储能力,因为只读存储器中的比特值是永久固定的。
只读存储器在数字系统设计中有广泛的应用。因此,它可以实现任何具有 k 输入和 n 输出的组合电路。当在计算机系统中用作存储单元时,只读存储器用于存储不可更改的固定程序和不可更改的常数表。只读存储器也用于设计数字计算机的控制单元。因此,它们被用来存储编码信息,这些编码信息代表在计算机中实现各种操作所需的内部控制变量序列。利用只读存储器存储二进制控制信息的控制单元称为微程序控制单元。
只读存储器:不同类型的只读存储器
只读存储器中所需的路径可以用三种不同的方式编程。
- 第一个,掩模编程由半导体公司在该单元的最后制造过程中完成。这一过程成本很高,因为供应商向客户收取特殊费用,用于定制屏蔽特定的只读存储器。因此,只有订购大量相同的只读存储器配置时,掩模编程才是经济的。
- 对于少量,使用第二种类型的只读存储器更经济,称为可编程只读存储器(PROM) 。编程只读存储器或可编程只读存储器的硬件程序是不可逆的,一旦编程,固定模式是永久性的,不能改变。一旦建立了位模式,如果要改变位模式,就必须丢弃该单元。
- 第三种类型的只读存储器称为可擦可编程只读存储器或可编程只读存储器。即使电子顺磁共振的保险丝已经烧断,它也可以被重新调整到初始值。某些 PROMs 可以用电信号而不是紫外光擦除。这些 PROM 被称为电可擦可编程只读存储器或电可擦可编程只读存储器。闪存是一种 EEPROM,其中一个字节块可以在很短的时间内擦除。
EEPROM 器件的应用示例有:
- 在机器中存储当前时间和日期。
- 存储端口状态。
闪存设备的应用示例有:
- 在手机中存储信息。
- 将照片存储在数码相机中。
计算机系统架构
原文:https://www.studytonight.com/computer-architecture/architecture-of-computer-system
计算机是一种电子机器,它使执行任何任务变得非常容易。在计算机中,CPU 执行提供给它的每一条指令,在一系列步骤中,这一系列步骤被称为机器循环,并对每一条指令重复执行。一个机器周期包括提取指令、解码指令、传输数据、执行指令。
计算机系统有五个帮助计算机执行操作的基本单元,如下所示:
- 输入装置
- 输出装置
- 存储单元
- 算术逻辑单元
- 控制部件
输入装置
输入单元连接外部环境和内部计算机系统。它向计算机系统提供数据和指令。常用的输入设备有键盘、鼠标、磁带等。
输入单元执行以下任务:
- 接受来自外部环境的数据和指令。
- 将其转换为机器语言。
- 将转换后的数据提供给计算机系统。
输出装置
它将计算机的内部系统连接到外部环境。它向外界提供任何计算或指令的结果。部分输出设备有打印机、显示器等。
存储单元
这个单元保存数据和指令。它还会在中间结果发送到输出设备之前存储这些结果。它还存储数据供以后使用。
计算机系统的存储单元可以分为两类:
- 主存储器:该存储器用于存储当前正在执行的数据。它用于数据的临时存储。当电脑关机时,数据就会丢失。随机存取存储器被用作主存储存储器。
- 二级存储:二级内存比一级内存更慢更便宜。它用于永久存储数据。常用的二级存储设备有硬盘、光盘等。
运算逻辑部件
所有的计算都在计算机系统的算术逻辑单元中进行。算术逻辑单元可以执行基本运算,如加法、减法、除法、乘法等。每当需要计算时,控制单元将数据从存储单元传送到算术逻辑单元。当操作完成时,结果被传送回存储单元。
控制部件
它控制计算机的所有其他单元。它控制数据和指令从存储单元到算术逻辑单元的流动。因此它也被称为计算机的中枢神经系统。
CPU
它是计算机的 CPU。控制单元和算术逻辑单元合称为 CPU。CPU 是计算机系统的大脑。它执行以下任务:
- 它执行所有操作。
- 它需要所有的决定。
- 它控制计算机的所有单元。
上图显示了一台计算机的框图。
数字计算机中使用的逻辑门
原文:https://www.studytonight.com/computer-architecture/logic-gates
二进制信息在数字计算机中由称为信号的物理量表示。电压等电信号以两种可识别的状态之一存在于整个计算机中。这两种状态代表一个可以等于 1 或 0 的二进制变量。
例如,特定的数字计算机可以使用 3 伏的信号来表示二进制1
,使用 0.5 伏的信号来表示二进制0
。现在,数字电路的输入端将只接受 3 伏和 0.5 伏的二进制信号,分别表示对应于 1 和 0 的二进制输入和输出。
所以现在我们知道了,在核心层面,计算机以0``1
的形式进行通信,无非是低和高电压信号。
但是如何对这些信号进行不同的操作呢?这是使用不同的逻辑门完成的。
盖茨是什么?
二进制逻辑处理二进制变量和具有逻辑意义的运算。它用于以代数或表格的形式描述被称为门的逻辑电路所完成的操作。
门是产生图形符号的硬件块,其操作可以用代数表达式来描述。每个门的二进制变量的输入输出关系可以用真值表以表格形式表示。
最基本的逻辑门是多输入的和或,单输入的非。
**每个具有多个输入的门对其任何一个输入的逻辑 0 或逻辑 1 输入敏感,根据其功能产生输出。例如,多输入与门对其任何一个输入上的逻辑 0 敏感,而与其他输入上的任何值无关。
各种逻辑门有:
- 和
- 运筹学
- 不
- “与非”
- 也不
- 异或
- xnor!x or
与门
与门产生“与”逻辑函数,即如果输入 A 和输入 B 都等于 1,则输出为 1;否则输出为 0。
AND 函数的代数符号与普通算术的乘法符号相同。
我们可以在变量之间使用一个点,或者在变量之间没有操作符号的情况下连接变量。与门可以有两个以上的输入,根据定义,当且仅当所有输入都为 1 时,输出为 1。
或门
或门产生包含或函数;也就是说,如果输入 A 或输入 B 或两个输入都为 1,则输出为 1;否则,输出为 0。
OR 函数的代数符号是+
,类似于算术加法。
“或”门可能有两个以上的输入,根据定义,如果任何输入为 1,则输出为 1。
逆变器(非)门
反相器电路将二进制信号的逻辑意义反相。它产生非或补函数。
用于逻辑补码的代数符号是质数或变量符号上的条形。
与非门
“与非”功能是“与”功能的补充,如图形符号所示,它由“与”图形符号和一个小圆圈组成。
“与非”这个名称来源于“非与”的缩写。
或非门
“或非”门是“或”门的补充,它使用“或”图形符号,后跟一个小圆圈。
异或门
异或门有一个类似于或门的图形符号,除了输入端的附加曲线。
如果任一输入为 1,门的输出为 1,但当两个输入均为 1 时,门的输出不包括该组合。它类似于一个奇函数;也就是说,如果奇数个输入为 1,它的输出为 1。
异或门
异或是异或的补码,如图形符号中的小圆圈所示。
只有当两个输入都等于 1 或两个输入都等于 0 时,该门的输出才为 1。
计算机架构中的寄存器
原文:https://www.studytonight.com/computer-architecture/registers
寄存器是一种非常快速的计算机内存,用于存储正在执行的数据/指令。
一个寄存器是一组触发器,每个触发器能够存储一位信息。一个 n 位寄存器有一组 n 触发器,能够存储 n 位的二进制信息。
如果不熟悉逻辑门概念,可以从这里学习。
寄存器由一组触发器和门组成。触发器保存二进制信息,并控制何时以及如何将新信息传送到寄存器中。商业上有各种类型的寄存器。最简单的寄存器只由触发器组成,没有外部门。
如今,寄存器也被实现为寄存器文件。
加载寄存器
将新信息传送到寄存器中被称为加载寄存器。如果用一个公共时钟脉冲同时加载寄存器的所有位,则称加载是并行进行的。
语域转换语言
用于描述寄存器间微操作转移的符号表示法称为寄存器转移语言。
术语寄存器传送是指硬件逻辑电路的可用性,其可以执行所述微操作并将操作结果传送到相同或另一个寄存器。
语言这个词是从将这个术语应用于编程语言的程序员那里借来的。这种编程语言是一种编写符号来指定给定计算过程的过程。
以下是一些常用寄存器:
- 累加器:这是最常见的寄存器,用来存储从内存中取出的数据。
- 通用寄存器:用于存储程序执行过程中的数据中间结果。它可以通过汇编编程访问。
- 专用寄存器:用户不访问这些寄存器。这些寄存器用于计算机系统,
- MAR: 内存地址寄存器是保存内存单元地址的寄存器。
- MBR: 内存缓冲寄存器存储从内存接收并从内存发送的指令和数据。
- PC: 程序计数器指向下一条要执行的指令。
- IR: 指令寄存器保存要执行的指令。
寄存器传送
从一个寄存器传送到另一个寄存器的信息通过替换操作符以符号形式指定。
R2′R1
它促进数据从寄存器 r1 传输到 r2。
通常我们希望转移只在预定的控制条件下发生。这可以通过以下 if-then 语句来表示:if (P=1) then (R2 ← R1)
这里P
是在控制部分产生的控制信号。
控制函数
控制函数是一个等于 1 或 0 的布尔变量。控制功能如下所示:
p:R2′R1
控制条件以冒号结尾。说明只有当 P=1 时,才能执行转移操作。
微操作
对存储在寄存器中的数据执行的操作称为微操作。微操作是对存储在一个或多个寄存器中的信息执行的基本操作。
例:移位、计数、清零、加载。
微操作类型
数字计算机中的微操作有四种类型:
- 寄存器传输微操作将二进制信息从一个寄存器传输到另一个寄存器。
- 算术微操作对存储在寄存器中的数字数据进行算术运算。
- 逻辑微操作对存储在寄存器中的非数字数据执行位操作。
- 移位微操作对数据执行移位微操作。
算术微操作
一些基本的微操作是加法、减法、增量和减量。
添加微操作
它由以下语句定义:
*R3 → R1 + R2*
上述声明指示将 R1 寄存器的数据或内容添加到 R2 寄存器的数据或内容中,并将总和转移到 R3 寄存器。
减法微操作
让我们再举一个例子:
*R3 → R1 + R2' + 1*
在减法微操作中,我们不使用减运算符,而是取 1 的补语并将 1 加到被减的寄存器中,即 R1 - R2 相当于R3→R1+R2】+1
递增/递减微操作
递增和递减微操作通常分别通过向寄存器加 1 和从寄存器减 1 来执行。
*R1 → R1 + 1*
*R1 → R1 – 1*
| 符号名称 | 描述 |
| R3 ← R1 + R2 | R1+R2 的内容转移到 R3。 |
| R3 ← R1 - R2 | R1-R2 的内容转移到 R3。 |
| R2 ← (R2)' | 赞美 R2 的内容。 |
| R2 ← (R2)' + 1 | 让我们赞美 R2 的内容。 |
| R3 ← R1 + (R2)' + 1 | R1+R2 的赞美(减法)。 |
| R1 = R1+1 | 将 R1 的内容增加 1。 |
| R1 ← R1 - 1 | 将 R1 的含量减少 1。 |
逻辑微操作
这些是对存储在寄存器中的位执行的二进制微操作。这些操作分别考虑每个位,并将它们视为二进制变量。
让我们用两个寄存器 R1 和 R2 的内容来考虑 X-OR 微操作。
*P: R1 ← R1 X-OR R2*
在上面的陈述中,我们还包括了控制功能。
假设每个寄存器有 3 位。让 R1 的内容为 010 ,R2 为 100 。微操作将是:
移位微操作
这些用于数据的串行传输。这意味着我们可以将寄存器的内容向左或向右移动。在左移操作中,串行输入将一位传送到最右边的位置,而在右移操作中,串行输入将一位传送到最左边的位置。
有以下三种类型的轮班:
a)逻辑移位
它通过串行输入传输 0。符号“SHL”用于逻辑左移,“SHR”用于逻辑右移。
*R1 ← she R1*
*R1 ← she R1*
箭头两侧的寄存器符号必须相同。
b)循环移位
这将在两端循环或旋转寄存器的位,而不会丢失任何数据或内容。在这种情况下,移位寄存器的串行输出与其串行输入相连。“cil”****“cir”分别用于左右循环换挡。
c)算术移位
这将一个有符号的二进制数向左或向右移动。向左算术移位将有符号二进制数乘以 2,向左将该数除以 2。算术移位微操作保持符号位不变,因为符号数在乘以或除以 2 时保持不变。
运算逻辑部件
计算机系统不是让单独的寄存器执行微操作,而是提供许多寄存器连接到一个称为算术逻辑单元(ALU)的公共单元。算术逻辑单元是计算机 CPU 中主要的也是最重要的单元之一。计算机的所有逻辑和数学运算都在这里进行。特定寄存器的内容放在 ALU 的输入中。算术逻辑单元执行给定的操作,然后将其传送到目的寄存器。
指令代码
原文:https://www.studytonight.com/computer-architecture/instruction-codes
众所周知,一个程序是一组指令,规定了操作、操作数和处理必须发生的顺序。指令代码是一组告诉计算机执行特定操作部分的位。
指令代码:操作代码
指令的操作码是一组定义诸如加、减、乘、移和补等操作的位。操作码所需的位数取决于计算机上可用的操作总数。对于给定的 2^n 操作,操作码必须至少由 n 位组成。指令代码的操作部分指定要执行的操作。
指令代码:寄存器部分
必须对寄存器中存储的数据执行操作。因此,指令代码不仅指定了要执行的操作,还指定了将找到操作数(数据)的寄存器以及必须存储结果的寄存器。
存储程序组织
组织一台计算机最简单的方法是将处理器寄存器和指令代码分成两部分。第一部分指定要执行的操作,第二部分指定地址。内存地址告诉内存中的操作数将在哪里找到。
指令存储在内存的一部分,数据存储在另一部分。
具有单处理器寄存器的计算机被称为累加器(AC) 。该操作是用内存操作数和交流内容执行的。
公共总线系统
基本计算机有 8 个寄存器、一个存储单元和一个控制单元。必须提供路径将数据从一个寄存器传输到另一个寄存器。在系统中传输数据的一种有效方法是使用公共总线系统。寄存器和存储器的输出连接到公共总线。
负载
公共总线的线路连接到每个寄存器的输入和存储器的数据输入。其 LD 输入被使能的特定寄存器在下一个时钟脉冲转换期间从总线接收数据。
在学习指令格式之前,让我们先学习操作数地址部分。
当指令代码的第二部分指定操作数时,该指令被称为具有立即操作数。当指令代码的第二部分指定操作数的地址时,该指令被称为具有直接地址。在间接地址中,指令代码的第二部分指定了内存字的地址,在该内存字中找到了操作数的地址。
计算机指令
基本计算机有三种指令代码格式。指令的操作码(操作码)部分包含 3 位,其余 13 位取决于遇到的操作码。
有三种格式:
1.内存引用指令
用12 bits
指定地址,1 bit
指定寻址方式( I )。 I 等于0
为直接地址1
为间接地址。
2.寄存器参考指令
这些指令由操作码111
识别,在指令的最左侧有一个0
。其他 12 位指定要执行的操作。
3.输入输出指令
这些指令由操作码111
识别,在指令的最左侧有一个1
。其余 12 位用于指定输入输出操作。
教学格式
指令的格式被描绘在一个矩形框中,表示指令的位。指令格式的基本字段如下:
- 指定要执行的操作的操作码字段。
- 指定存储器地址或寄存器的地址字段。
- 一种模式字段,指定确定有效地址操作数的方式。
计算机可能有不同长度的指令,包含不同数量的地址。指令格式中地址字段的数量取决于其寄存器的内部组织。
寻址模式和指令周期
原文:https://www.studytonight.com/computer-architecture/addressingmodes-instructioncycle
指令的操作字段指定要执行的操作。该操作将对存储在计算机寄存器或主存储器中的一些数据执行。程序执行期间选择任何操作数的方式取决于指令的寻址模式。使用寻址模式的目的如下:
- 为用户提供编程通用性。
- 减少指令寻址字段中的位数。
寻址模式的类型
下面我们逐一讨论了不同类型的寻址模式:
即时模式
在这种模式下,操作数在指令本身中指定。立即模式指令有一个操作数字段,而不是地址字段。
例如:ADD 7
,表示累加器的内容加 7。7 是这里的操作数。
注册模式
在这种模式下,操作数存储在寄存器中,该寄存器存在于 CPU 中。指令有存储操作数的寄存器地址。
优势
- 指令更短,取指令更快。
- 对操作数的更快内存访问
不足之处
- 非常有限的地址空间
- 使用多个寄存器有助于提高性能,但会使指令复杂化。
注册间接模式
在这种模式下,指令指定寄存器,其内容给出内存中操作数的地址。因此,寄存器包含操作数的地址,而不是操作数本身。
自动递增/递减模式
在这种情况下,寄存器在其值被使用之后或之前递增或递减。
直接寻址模式
在这种模式下,操作数的有效地址存在于指令本身。
- 访问数据的单一内存引用。
- 无需额外计算即可找到操作数的有效地址。
例如: ADD R1, 4000
-这里的 4000 是操作数的有效地址。
注意:有效地址是操作数存在的位置。
间接寻址模式
在这种情况下,指令的地址字段给出有效地址存储在存储器中的地址。这降低了执行速度,因为这包括多次内存查找来查找操作数。
位移寻址模式
在这种情况下,索引寄存器的内容被添加到指令的地址部分,以获得操作数的有效地址。
EA = A + (R)
,在这种情况下,地址字段保存两个值,A(是基值)和 R(保存位移),反之亦然。
相对寻址模式
它是置换寻址模式的一个版本。
在这种情况下,程序计数器的内容被添加到指令的地址部分,以获得有效地址。
EA = A + (PC)
,其中 EA 为有效地址,PC 为程序计数器。
操作数是远离当前单元格的单元格(电脑指向的单元格)
基本寄存器寻址模式
这也是置换寻址模式的一个版本。这可以定义为EA = A + (R)
,其中 A 为位移,R 为指向基址的指针。
堆栈寻址模式
在这种模式下,操作数位于堆栈的顶部。例如:ADD
,该指令将弹出栈顶两项,相加,然后将结果推送到栈顶。
指令周期
指令周期,也称为取-解码-执行周期是计算机的基本运算过程。从计算机启动到关机,这个过程由 CPU 不断重复。
以下是指令周期中发生的步骤:
1.获取指令
指令从存储在个人计算机(程序计数器)中并存储在指令寄存器 IR 中的存储器地址中取出。在提取操作结束时,PC 递增 1,然后指向要执行的下一条指令。
2.解码指令
红外指令由解码器执行。
3.阅读有效地址
如果指令有间接地址,则从存储器中读取有效地址。否则,在立即操作数指令的情况下,直接读取操作数。
4.执行指令
控制单元将信息以控制信号的形式传递给 CPU 的功能单元。生成的结果存储在主存储器中或发送到输出设备。
然后通过获取下一条指令来重复该循环。因此,以这种方式,指令周期被连续重复。
进阶
计算机系统中的内存组织
原文:https://www.studytonight.com/computer-architecture/memory-organization
存储单元是存储单元或设备的集合。存储单元以位的形式存储二进制信息。通常,内存/存储分为两类:
- 易失性存储器:断电时会丢失数据。
- 非易失性存储器:这是一个永久存储器,断电时不会丢失任何数据。
分级存储器体系
计算机的总存储容量可以通过组件的层次结构来可视化。内存层次系统由计算机系统中包含的所有存储设备组成,从慢速辅助内存到快速主内存,再到较小的缓存内存。
辅助存储器的访问时间一般是主存储器的 1000 倍,因此处于层次结构的最底层。
主存储器占据了中心位置,因为它配备有通过输入/输出处理器(I/O)与 CPU 和辅助存储设备直接通信的功能。
当 CPU 需要不在主存储器中的程序时,它们从辅助存储器中被引入。主内存中当前不需要的程序被转移到辅助内存中,以便在主内存中为当前正在使用的其他程序提供空间。
高速缓冲存储器用于存储当前正在 CPU 中执行的程序数据。高速缓冲存储器和主存储器之间的近似访问时间比大约是 1 比 7~10
内存访问方法
每种内存类型都是众多内存位置的集合。要从任何内存访问数据,首先必须找到它,然后从内存位置读取数据。以下是从内存位置访问信息的方法:
- 随机存取:主存储器是随机存取存储器,其中每个存储单元都有一个唯一的地址。使用这个唯一的地址,可以在相同的时间内以任何顺序到达任何存储位置。
- 顺序访问:这种方法允许按顺序或顺序访问内存。
- 直接存取:在这种模式下,信息存储在磁道中,每个磁道都有单独的读/写磁头。
主存储器
直接在 CPU、辅助存储器和高速缓冲存储器内通信的存储器单元称为主存储器。它是计算机系统的中央存储单元。它是一个大而快速的内存,用于在计算机操作期间存储数据。主存由 RAM 和 ROM 组成,RAM 集成电路芯片占据主要份额。
- 随机存取存储器
- DRAM :动态 RAM,由电容和晶体管组成,每 10~100 ms 必须刷新一次,比 SRAM 慢,便宜。
- 静态随机存取存储器:静态随机存取存储器,每个单元有一个六晶体管电路,保存数据,直到断电。
- 非易失性随机存取存储器:非易失性随机存取存储器,保留其数据,即使关闭。例如:闪存。
- 只读存储器,是非易失性的,更像是信息的永久存储器。它还存储了引导加载程序程序,用于在计算机开机时加载和启动操作系统。可编程只读存储器(可编程只读存储器)可编程只读存储器(可擦除可编程只读存储器)和电可擦除可编程只读存储器是一些常用的只读存储器。
辅助存储器
提供备份存储的设备称为辅助存储器。例如:磁盘和磁带是常用的辅助设备。用作辅助存储器的其他设备有磁鼓、磁泡存储器和光盘。
它不能被 CPU 直接访问,而是通过输入/输出通道访问。
高速缓冲存储器
CPU 一次又一次使用的主存储器的数据或内容存储在高速缓冲存储器中,以便我们可以在更短的时间内轻松访问这些数据。
每当 CPU 需要访问内存时,它首先检查缓存内存。如果在高速缓冲存储器中找不到数据,则 CPU 移到主存储器上。它还将最近的数据块传输到缓存中,并不断删除缓存中的旧数据以容纳新数据。
命中率
高速缓存的性能是用一个叫做命中率的量来衡量的。当 CPU 访问内存并在缓存中找到该单词时,据说会产生一个命中。如果在高速缓存中没有找到该单词,则它在主存储器中,然后它被算作未命中。
命中数与 CPU 对内存引用总数的比率称为命中率。
Hit Ratio = Hit/(Hit + Miss)
相联存储器
也称为内容可寻址存储器(CAM) 。它是一种存储芯片,每个位的位置都可以进行比较。在这种情况下,内容在每个位单元中进行比较,这允许非常快速的表查找。因为可以比较整个芯片,所以内容是随机存储的,而不考虑寻址方案。这些芯片的存储容量比普通存储芯片少。
内存映射与虚拟内存的概念
原文:https://www.studytonight.com/computer-architecture/mapping-and-virtual-memory
数据从主存到缓存的转换称为映射。有 3 种主要的映射类型:
- 关联映射
- 直接映射
- 集合关联映射
关联映射
关联存储器存储地址和数据。15 位的地址值是 5 位八进制数,数据是 4 位八进制数中的 12 位字。15 位的 CPU 地址被放置在参数寄存器中,并且在关联存储器中搜索匹配的地址。
直接映射
15 位的 CPU 地址分为 2 个字段。在这种情况下,9 个最低有效位构成索引字段,其余 6 个位构成标签字段。索引字段中的位数等于访问高速缓存所需的地址位数。
集合关联映射
直接映射的缺点是索引地址相同的两个字不能同时驻留在缓存中。这个问题可以通过集合关联映射来克服。
在这种情况下,我们可以在同一个索引地址下存储两个或更多的内存字。每个数据字都与其标签存储在一起,这样就形成了一个集合。
替换算法
使用替换算法,缓存内存中的数据不断被新数据替换。以下是使用的两种替换算法:
- 先进先出。最旧的项目会被最新的项目取代。
- LRU -最近最少使用。CPU 最近最少使用的项目被删除。
虚拟内存
虚拟内存是逻辑内存和物理内存的分离。当只有少量物理内存可用时,这种分离为程序员提供了大量虚拟内存。
虚拟内存是用来给程序员一种错觉,他们有一个非常大的内存,即使计算机有一个小的主内存。它使编程任务变得更容易,因为程序员不再需要担心可用的物理内存量。
计算机系统中的并行处理和数据传输模式
原文:https://www.studytonight.com/computer-architecture/parallel-processing-and-data-transfer
一个并行处理系统提供并发数据处理来增加执行时间,而不是顺序处理每条指令。
在这种情况下,系统可能有两个或更多的算术逻辑单元,应该能够同时执行两个或更多的指令。并行处理的目的是加快计算机的处理能力,增加其吞吐量。
注: 吞吐量是单位时间内可以执行的指令数。
并行处理可以从不同的复杂程度来看。在最底层,我们根据使用的寄存器类型来区分并行和串行操作。在更高的复杂性水平上,并行处理可以通过使用同时执行许多操作的多个功能单元来实现。
计算机系统的数据传输模式
根据数据传输方式,计算机可分为 4 大类:
- SISD
- 单指令多数据
- MISD
- 多指令流多资料流
SISD(单指令流、单数据流)
它表示包含控制单元、处理器单元和存储单元的单个计算机的组织。指令按顺序执行。它可以通过流水线或多个功能单元来实现。
SIMD(单指令流,多数据流)
它代表一个组织,该组织包括在一个公共控制单元控制下的多个处理单元。所有处理器从控制单元接收相同的指令,但对数据的不同部分进行操作。
它们是高度专业化的计算机。它们基本上用于以向量或矩阵形式表示的数值问题。但是它们不适用于其他类型的计算
MISD(多指令流,单数据流)
它由一台包含多个处理器的计算机组成,这些处理器与多个控制单元和一个公共存储单元相连。它能够通过单个数据流同时处理多个指令。MISD 结构只是理论上的兴趣,因为还没有使用这个组织构建实际的系统。
MIMD(多指令流,多数据流
它代表能够同时处理多个程序的组织。它是单个计算机的组织,包含与多个控制单元和一个共享存储单元相连的多个处理器。共享内存单元包含多个模块,可同时与所有处理器通信。多处理器和多计算机是 MIMD 的例子。它满足了大规模计算的需求。
什么是流水线?
原文:https://www.studytonight.com/computer-architecture/pipelining
流水线是通过流水线积累来自处理器的指令的过程。它允许以有序的过程存储和执行指令。又称管道加工。
在推进流水线操作之前,请查看以下主题,以便更好地理解这个概念:
流水线是一种在执行过程中多条指令重叠的技术。管道分为几个阶段,这些阶段相互连接,形成管状结构。指令从一端进入,从另一端退出。
流水线操作增加了总的指令吞吐量。
在流水线系统中,每个部分由一个输入寄存器和一个组合电路组成。寄存器用于保存数据,组合电路对其进行运算。组合电路的输出加到下一段的输入寄存器。
管道系统就像现代工厂里的装配线。例如,在汽车制造业中,设置了巨大的装配线,在每个点上,都有机械臂来执行某项任务,然后汽车向前移动到下一个机械臂。
管道类型
它分为两类:
- 算术流水线
- 指令流水线
算术流水线
大多数计算机中都有算术流水线。它们用于浮点运算、定点数的乘法等。例如:浮点加法器流水线的输入是:
*X = A*2^a*
*Y = B*2^b*
这里 A 和 B 是尾数(浮点数的有效位数),而 a 和 b 是指数。
浮点加法和减法分 4 部分进行:
- 比较指数。
- 对齐尾数。
- 加减尾数
- 产生结果。
寄存器用于存储上述操作之间的中间结果。
指令流水线
在这种情况下,可以通过重叠指令周期的获取、解码和执行阶段来执行指令流。这种技术用于提高计算机系统的吞吐量。
指令流水线从存储器中读取指令,而先前的指令正在流水线的其他段中执行。因此,我们可以同时执行多条指令。如果指令周期被分成相等持续时间的段,流水线将更有效率。
管道冲突
有一些因素会导致管道偏离其正常性能。其中一些因素如下:
1.时序变化
所有阶段花费的时间不能相同。这个问题通常发生在指令处理中,不同的指令有不同的操作数要求,因此处理时间也不同。
2.数据危害
当几条指令部分执行时,如果它们引用相同的数据,那么问题就出现了。我们必须确保下一条指令不会试图访问当前指令之前的数据,因为这将导致不正确的结果。
3.分支
为了获取并执行下一条指令,我们必须知道该指令是什么。如果当前指令是条件分支,并且它的结果将引导我们到下一个指令,那么下一个指令在当前指令被处理之前可能是不知道的。
4.中断
中断将不需要的指令放入指令流。中断影响指令的执行。
5.数据相关性
当一条指令依赖于前一条指令的结果,但该结果尚不可用时,就会出现这种情况。
流水线的优点
- 处理器的周期时间缩短。
- 它增加了系统的吞吐量
- 它使系统可靠。
流水线的缺点
- 流水线处理器的设计复杂且制造成本高。
- 指令延迟更多。
向量(数组)处理和超标量处理器
原文:https://www.studytonight.com/computer-architecture/vector-and-superscalar
A 标量处理器是一个普通的处理器,一次只处理简单的指令,对单个数据项进行操作。但是在当今世界,这种技术将被证明是非常低效的,因为指令的整体处理将非常缓慢。
什么是向量(数组)处理?
有一类计算问题超出了传统计算机的能力。这些问题需要对多个数据项进行大量计算,这将需要传统计算机(带标量处理器)几天甚至几周才能完成。
这种同时对多个数据进行操作的复杂指令,需要更好的指令执行方式,这是由 Vector 处理器实现的。
标量 CPU 一次可以操作一两个数据项,效率不是很高。此外,像这样简单的指令将 A 添加到 B,并存储到 C 中实际上效率不高。
地址用于指向将要操作的数据将被找到的存储位置,这导致数据查找的额外开销。因此,在找到数据之前,CPU 将保持理想状态,这是一个很大的性能问题。
于是指令流水线的概念就出现了,指令依次经过几个子单元。这些子单元执行各种独立的功能,例如:第一个单元解码指令,第二个子单元获取数据,第三个子单元自己执行数学运算。因此,虽然数据是为一条指令提取的,但 CPU 并没有闲着,而是对下一条指令集进行解码,最终像流水线一样工作。
向量处理器,不仅使用指令流水线,而且还流水线处理数据,同时处理多个数据。
正常的标量处理器指令是ADD A, B
,这将导致两个操作数相加,但是如果我们可以指示处理器将一组数字(从0
添加到n
存储位置)添加到另一组数字(比如说,n
添加到k
存储位置)会怎么样。这可以通过向量处理器来实现。
在向量处理器中,一条指令可以请求多次数据操作,这样可以节省时间,因为这条指令被解码一次,然后继续对不同的数据项进行操作。
向量处理器的应用
具有向量处理能力的计算机在专门的应用中是需要的。以下是使用向量处理的一些领域:
- 石油勘探。
- 医学诊断。
- 数据分析。
- 天气预报。
- 空气动力学和太空飞行模拟。
- 图像处理。
- 人工智能。
超标量处理器
它最早发明于 1987 年。这是一台旨在提高标量处理器性能的机器。在大多数应用中,大多数运算都是针对标量的。超标量方法产生了高性能的通用处理器。
超标量方法的主要原理是它在不同的流水线中独立执行指令。正如我们已经知道的,指令流水线导致并行处理,从而加速指令的处理。在超标量处理器中,为不同的操作引入了多个这样的流水线,这进一步改善了并行处理。
有多个功能单元,每个功能单元都实现为流水线。每个流水线由多个阶段组成,一次处理多个指令,支持并行执行指令。
它增加了吞吐量,因为 CPU 可以在每个时钟周期执行多个指令。因此,超标量处理器比标量处理器快得多。
一个标量处理器处理一两个数据项,而向量处理器处理多个数据项。一个超标量处理器是两者的结合。每个指令处理一个数据项,但是每个 CPU 中有多个执行单元,因此多个指令可以同时处理不同的数据项。
虽然超标量 CPU 也是流水线式的,但是有两种不同的性能增强技术。有可能有一个非流水线超标量 CPU 或流水线非超标量 CPU。超标量技术与一些特征相关联,这些特征是:
- 指令从顺序指令流中发出。
- CPU 必须动态检查数据相关性。
- 每个时钟周期应该接受多个指令。
向量(数组)处理器及其类型
原文:https://www.studytonight.com/computer-architecture/array-processor
数组处理器也被称为多处理器或向量处理器。他们对大量数据进行计算。因此,它们被用来提高计算机的性能。
数组处理器的类型
数组处理器基本上有两种类型:
- 附加数组处理器
- SIMD 数组处理器
附加数组处理器
附属数组处理器是一种附属于通用计算机的处理器,其目的是提高和改善该计算机在数值计算任务中的性能。它通过多个功能单元的并行处理来实现高性能。
SIMD 数组处理器
SIMD 是包含多个并行运行的处理器的单个计算机的组织。使处理单元在公共控制单元的控制下操作,从而提供单个指令流和多个数据流。
数组处理器的一般框图如下所示。它包含一组相同的处理元件,每个处理元件都有一个本地存储器 m。每个处理器元件包括一个 ALU 和寄存器。主控制单元控制处理器元件的所有操作。它还对指令进行解码,并确定如何执行指令。
主存储器用于存储程序。控制单元负责获取指令。向量指令被同时发送到所有的 PE,结果被返回到内存。
最著名的 SIMD 数组处理器是由 T2·巴勒斯兵团开发的伊利亚克四号计算机。SIMD 处理器是高度专业化的计算机。它们只适用于可以用向量或矩阵形式表示的数值问题,不适用于其他类型的计算。
为什么使用数组处理器
- 数组处理器提高了整体指令处理速度。
- 由于大多数数组处理器与主机 CPU 异步运行,因此它提高了系统的整体容量。
- 数组处理器有自己的本地内存,因此可以为内存不足的系统提供额外的内存。
输入/输出组织
原文:https://www.studytonight.com/computer-architecture/input-output-organisation
在本教程中,我们将学习如何在计算机系统中处理输入和输出。
输入/输出子系统
计算机的输入/输出子系统在中央系统和外部环境之间提供了一种有效的通信模式。它处理计算机系统的所有输入输出操作。
外围设备
连接到计算机的输入或输出设备称为外围设备。这些设备被设计成根据来自 CPU 的命令将信息读入或读出存储单元,并且被认为是计算机系统的一部分。这些设备也被称为外设。
例如:键盘、显示单元和打印机都是常见的外设。
有三种类型的外设:
- 输入外设:允许用户输入,从外界到电脑。例如:键盘、鼠标等。
- 输出外设:允许信息输出,从电脑到外界。例如:打印机、显示器等
- 输入输出外设:允许输入(从外部世界到计算机)以及输出(从计算机到外部世界)。例如:触摸屏等。
接口
接口是计算机系统的两个独立组件之间的共享边界,可用于将两个或多个组件连接到系统以进行通信。
有两种类型的接口:
- cpu 接口
- 输入输出接口
让我们详细了解一下输入/输出接口,
输入输出接口
连接到计算机的外围设备需要特殊的通信链路来与 CPU 接口。在计算机系统中,在 CPU 和外围设备之间有特殊的硬件组件来控制或管理输入输出传输。这些组件被称为输入输出接口单元,因为它们在处理器总线和外围设备之间提供通信链路。它们提供了一种在内部系统和输入输出设备之间传递信息的方法。
输入输出数据传输模式
中央单元和输入/输出设备之间的数据传输通常可以通过以下三种模式进行处理:
- 编程输入输出
- 中断启动的输入输出
- 直接内存访问
编程输入输出
程序化输入输出指令是用计算机程序编写的输入输出指令的结果。每个数据项的传输都是由程序中的指令启动的。
通常程序控制 CPU 和外围设备之间的数据传输。在编程输入/输出下传输数据需要 CPU 持续监控外围设备。
中断启动的输入输出
在编程输入/输出方法中,CPU 一直处于程序循环中,直到输入/输出单元表明它已准备好进行数据传输。这是一个耗时的过程,因为它让处理器不必要地忙碌。
这个问题可以通过使用中断启动的输入/输出来克服。在这种情况下,当接口确定外设已准备好进行数据传输时,它会产生一个中断。在接收到中断信号后,CPU 停止正在处理的任务,并为输入/输出传输提供服务,然后返回到其先前的处理任务。
直接内存访问
将 CPU 从路径中移除并让外围设备直接管理内存总线将提高传输速度。这种技术被称为 DMA 。
在这种情况下,接口通过存储器总线将数据传送到存储器和从存储器传送数据。直接存储器存取控制器管理外围设备和存储单元之间的数据传输。
许多硬件系统使用直接存储器存取,如磁盘驱动器控制器、图形卡、网卡和声卡等。它也用于多核处理器中的芯片内数据传输。在直接存储器存取中,CPU 将启动传输,在传输过程中进行其他操作,并在传输完成时从直接存储器存取控制器接收中断。
上图是直接存储器存取的框图
计算机架构:输入/输出处理器
原文:https://www.studytonight.com/computer-architecture/input-output-processor
输入输出处理器是一种具有直接内存访问能力的处理器。在这种情况下,计算机系统被分成一个存储单元和多个处理器。
每个 IOP 控制和管理输入输出任务。IOP 类似于 CPU,只是它只处理输入/输出处理的细节。IOP 可以获取并执行自己的指令。这些 IOP 指令仅用于管理输入/输出传输。
输入输出处理器框图
下面是一台带有各种输入输出处理器的计算机的框图。存储单元占据中心位置,可以与每个处理器通信。
CPU 处理解决计算任务所需的数据。IOP 为外围设备和内存之间的数据传输提供了路径。CPU 分配启动输入输出程序的任务。
IOP 独立于 CPU 运行,并在外围设备和内存之间传输数据。
IOP 和设备之间的通信类似于传输的程序控制方法。并且与存储器的通信类似于直接存储器存取方法。
在大型计算机中,每个处理器都独立于其他处理器,任何处理器都可以启动操作。
CPU 可以充当主处理器,而 IOP 充当从处理器。CPU 分配启动操作的任务,但执行指令的是 IOP,而不是 CPU。CPU 指令提供开始输入/输出传输的操作。IOP 通过中断请求 CPU。
由 IOP 从内存中读取的指令也称为命令,以将其与由 CPU 读取的指令区分开来。命令由程序员准备并存储在内存中。命令字使程序适合 IOP。CPU 通知 IOP 在内存中哪里可以找到命令。
计算机架构:中断
原文:https://www.studytonight.com/computer-architecture/priority-interrupt
CPU 和外围设备之间的数据传输由 CPU 发起。但是,除非外围设备准备好与 CPU 通信,否则 CPU 无法开始传输。当设备准备好与 CPU 通信时,它会生成一个中断信号。许多输入输出设备连接到计算机,每个设备都能够产生中断请求。
中断系统的主要工作是识别中断的来源。也有可能几个设备同时请求 CPU 通信。然后,中断系统必须决定首先服务哪个设备。
优先级中断
优先级中断是一种系统,它决定同时产生中断信号的各种设备由 CPU 服务的优先级。系统有权决定哪些条件允许中断 CPU,而其他一些中断正在服务。一般来说,像磁盘这样的高速传输设备被赋予高优先级,像键盘这样的慢速设备被赋予低优先级。
当两个或多个设备同时中断计算机时,计算机首先以较高的优先级为设备提供服务。
中断类型:
以下是一些不同类型的中断:
硬件中断
当处理器的信号来自外部设备或硬件时,这种中断称为硬件中断。
让我们考虑一个例子:当我们按下键盘上的任何一个键来做某个动作时,那么这个键的按下将为处理器产生一个中断信号来执行某个动作。这种中断可以有两种类型:
- 可屏蔽中断
当高优先级中断同时发生时,可以延迟的硬件中断。
- 不可屏蔽中断
不能延迟的硬件中断,应由处理器立即处理。
软件中断
由计算机系统的任何内部系统引起的中断称为软件中断。它也可以有两种类型:
- 正常中断
由软件指令引起的中断称为正常软件中断。
- 例外
一些程序执行过程中产生的计划外中断称为异常,如被零除。
菊花链优先级
这种决定中断优先级的方式包括所有产生中断信号的设备的串行连接。优先级最高的设备位于第一个位置,其次是优先级较低的设备,优先级最低的设备位于链中的最后一个位置。
在菊花链系统中,所有设备都以串行形式连接。所有设备都有中断请求。如果任何设备的中断信号处于低电平状态,则中断线路进入低电平状态,并使能 CPU 中的中断输入。当没有中断时,中断线路保持高电平状态。CPU 通过启用中断确认线来响应中断。该信号由设备 1 在其 PI 输入端接收。只有当设备 1 没有请求中断时,确认信号才通过 PO 输出传递到下一个设备。
下图显示了菊花链优先系统的框图。
高级
串行数据通信
原文:https://www.studytonight.com/computer-architecture/serial-communication
让我们从了解什么是数据通信处理器开始,
数据通信处理器
数据通信处理器是一种输入/输出处理器,它从通过电话和其他通信线路连接到计算机的许多远程终端分发和收集数据。它是一种专用的输入/输出处理器,旨在与数据通信网络进行通信。
这种通信网络由各种设备组成,例如打印机、显示设备、数字传感器等。同时服务许多用户。数据通信处理器通过一对导线与每个终端通信。它还以与任何输入/输出处理器相同的方式与 CPU 和内存通信。
什么是调制解调器?
在数据通信网络中,远程终端通过电话线或其他导线连接到数据通信处理器。这种电话线是专门为语音通信设计的,计算机使用它们以数字信号进行通信,因此需要一些转换。这些转换称为调制解调器(调制解调器)。
调制解调器将数字信号转换成音频信号,通过电话线传输,还将音频信号转换成数字信号,供机器使用。
传播方式
数据可以通过三种不同的模式在两点之间传输:
单一的
单工线路只在一个方向传送信息。在这种模式下,接收方不能与发送方通信来指示错误的发生,这意味着只有发送方可以发送数据,而接收方不能。例如:广播电视广播。
半双工
在半双工模式下,系统能够双向传输数据,但一次只能向一个方向传输数据。这种模式需要一对导线。例如:对讲机。
全双工
在这种模式下,数据可以在两个方向同时发送和接收。在这种情况下,使用四线连接。例如:视频通话、音频通话等。
什么是协议?
任何传输中使用的通信线路、调制解调器和其他设备统称为数据链路。数据链路中数据的有序传输可以通过协议来实现。
A 协议是互联设备遵循的一组规则,以确保所有数据都正确无误地通过。
协议的类型
有两种类型的协议:
面向字符的协议
它基于字符集的二进制代码。代码多用于 ASCII 。它包括大写和小写字母、数字和各种特殊符号。控制传输的字符称为通信控制字符。
面向比特的协议
它在其控制字段中不使用字符,并且独立于任何代码。它允许传输任何长度的串行比特流,而不涉及字符边界。
输入/输出通道
原文:https://www.studytonight.com/computer-architecture/input-output-channels
通道是一个独立的硬件组件,负责协调一组控制器的所有输入/输出。使用输入/输出通道的计算机系统具有处理所有输入/输出操作的特殊硬件组件。
通道使用单独的、独立的和低成本的处理器来运行,这些处理器被称为通道处理器。
通道处理器很简单,但包含足够的内存来处理所有输入/输出任务。当输入/输出传输完成或检测到错误时,通道控制器使用中断与 CPU 通信,并将错误或任务完成通知 CPU。
每个通道支持一个或多个控制器或设备。通道程序包含通道本身和各种连接的控制器或设备的命令列表。一旦操作系统准备好输入/输出命令列表,它就执行单个输入/输出机器指令来启动通道程序,然后通道承担对输入/输出操作的控制,直到它们完成。
IBM 370 输入输出通道
IBM 370 计算机中的输入输出处理器被称为通道。计算机系统配置包括连接到一个或多个输入/输出设备的多个通道。
输入输出通道的类别
以下是输入/输出通道的不同类别:
多路器
多路复用器通道可以连接到许多低速和中速设备。它能够同时操作多个输入/输出设备。
选择器
该通道一次只能处理一个输入/输出操作,用于一次控制一个高速设备。
块多路复用器
它结合了多路复用器和选择器通道的特性。
CPU 可以通过控制线直接与通道通信。下图显示了通道操作的文字格式。
计算机系统可以具有多个通道,并且每个通道被分配一个地址。每个通道可以连接到几个设备,并且每个设备被分配一个地址。
什么是交错内存?
原文:https://www.studytonight.com/computer-architecture/interleaved-memory
这是一种补偿动态随机存取存储器相对较慢速度的技术。在这种技术中,主存储器被分成多个存储体,这些存储体可以被单独访问,而不依赖于其他存储体。
例如:如果我们有 4 个存储体(4 路交错存储器),每个包含 256 个字节,那么面向块的方案(无交错)将把虚拟地址 0 到 255 分配给第一个存储体,256 到 511 分配给第二个存储体。但是在交错存储器中,虚拟地址 0 将与第一存储体在一起,1 与第二存储体在一起,2 与第三存储体在一起,3 与第四存储体在一起,然后 4 再次与第一存储体在一起。
因此,CPU 可以立即访问替代部分,而无需等待内存被缓存。有多个存储体轮流提供数据。
内存交错是一种提高内存速度的技术。这是一个使系统更加高效、快速和可靠的过程。
例如:在上述 4 个存储体的示例中,虚拟地址为 0、1、2 和 3 的数据可以同时访问,因为它们驻留在 spearate 存储体中,因此我们不必等待数据提取完成,才能开始下一个。
具有 n 个存储体的交错存储器被称为 n 路交错。在交错存储系统中,仍然有两个动态随机存取存储器库,但从逻辑上讲,该系统似乎有一个两倍大的存储库。
在下面具有 2 个存储体的交错存储体表示中,存储体 0 的第一个长字被存储体 1 的长字所覆盖,随后是存储体 0 的第二个长字,接着是存储体 1 的第二个长字,以此类推。
下图显示了 n 个长单词的两个物理库的组织。逻辑存储体的所有偶数长字位于物理存储体 0 中,所有奇数长字位于物理存储体 1 中。
交错的类型
内存交错有两种方法:
双向交错
两个存储块同时被访问以进行写和读操作。
4 路交错
同时访问四个内存块。
RISC 和 CISC 处理器
原文:https://www.studytonight.com/computer-architecture/risc-cisc-processors
在本教程中,我们将了解 RISC 处理器和 CISC 处理器以及它们之间的区别。
精简指令集处理器
它被称为精简指令集计算机。这是一种指令数量有限的微处理器。他们可以非常快地执行指令,因为指令非常小而且简单。
RISC 芯片需要更少的晶体管,这使得它们的设计和生产成本更低。在 RISC 中,指令集包含简单和基本的指令,从中可以产生更复杂的指令。大多数指令在一个周期内完成,这允许处理器同时处理许多指令。
在这种情况下,指令基于寄存器,数据从一个寄存器传输到另一个寄存器。
CISC 处理器
- 它被称为复杂指令集计算机。
- 它最早是由英特尔开发的。
- 它包含大量复杂的指令。
- 在本指令中,不基于寄存器。
- 指令不能在一个机器周期内完成。
- 数据传输是从内存到内存。
- 在 CISC 可以找到微编程控制单元。
- 它们也有可变的指令格式。
CISC 与 RISC 的区别
| 体系特性 | 复杂指令集计算机(CISC) | 精简指令集计算机 |
| 指令大小和格式 | 具有可变格式的大指令集(每条指令 16-64 位)。 | 固定格式(32 位)的小指令集。 |
| 数据传送 | 记忆对记忆。 | 注册注册。 |
| CPU 控制 | 大多数微编码使用控制存储器,但现代 CISC 使用硬连线控制。 | 大多没有控制存储器。 |
| 指令类型 | 不是基于寄存器的指令。 | 基于寄存器的指令。 |
| 存储访问 | 更多的内存访问。 | 更少的内存访问。 |
| 时钟 | 包括多时钟。 | 包括单时钟。 |
| 教学性质 | 指令很复杂。 | 说明精简简单。 |
Booth 乘法算法
原文:https://www.studytonight.com/computer-architecture/booth-multiplication-algorithm
Booth 的算法是一种乘法算法,它将两个带符号的二进制数用 2 的互补符号相乘。
控制单元的设计
原文:https://www.studytonight.com/computer-architecture/design-of-control-unit
控制单元为计算机的操作产生定时和控制信号。控制单元与算术逻辑单元和主存储器通信。它还控制处理器、内存和各种外设之间的传输。它还指示算术逻辑单元对数据执行哪个操作。
控制单元可通过以下两种方法设计:
硬连线控制单元
它是借助门、触发器、解码器等来实现的。在硬件上。控制单元的输入是指令寄存器、标志、定时信号等。如果我们必须使控制单元变大,这个组织可能会非常复杂。
如果设计必须修改或改变,所有的组合电路都必须修改,这是一项非常困难的任务。
微程序控制单元
它是用编程方法实现的。通过执行由微指令组成的程序来执行一系列微操作。在这种组织中,程序员可以通过更新控制存储器中的微程序来进行任何修改或改变。
硬连线控制和微程序控制的区别
| 硬连线控制 | 微程序控制 |
| 技术是基于电路的。 | 技术是基于软件的。 |
| 它是通过触发器、门、解码器等实现的。 | 微指令产生控制指令执行的信号。 |
| 固定指令格式。 | 可变指令格式(每条指令 16-64 位)。 |
| 指令基于寄存器。 | 指令不是基于寄存器的。 |
| 没有使用 ROM。 | 使用了 ROM。 |
| 它用于 RISC。 | 它在 CISC 使用。 |
| 解码速度更快。 | 解码速度较慢。 |
| 难以修改。 | 容易修改。 |
| 芯片面积更少。 | 芯片面积大。 |