操作系统-输入输出管理

news2024/11/19 1:31:33

I/O设备的基本概念和分类

I/O就是输入/输出
I/O设备就是可以将数据输入到计算机,或者可以接收计算机输出数据的外部设备,属于计算机中的硬件部件。
I/O设备按使用特性分类

  • 人机交互类外部设备
  • 存储设备
  • 网络通信设备

I/O设备按传输速率分类

  • 低速设备
  • 中速设备
  • 高速设备

I/O设备按信息交换的单位分类

  • 块设备
  • 字符设备

I/O控制器

I/O设备的机械部件主要用来执行具体I/O操作
如我们看得见摸得着的鼠标/键盘的按钮;显示器的LED屏;移动硬盘的磁臂、磁盘盘面。
I/O设备的电子部件通常是一块插入主板扩充槽的印刷电路板。
CPU无法直接控制I/O设备的机械部件,因此I/O设备还要有一个电子部件作为CPU和I/O设备机械部件之间的“中介”,用于实现CPU对设备的控制
这个电子部件就是I/O控制器,又称设备控制器。CPU可控制I/O控制器,又由I/O控制器来控制设备的机械部件。
image.png
I/O控制器的组成
image.png
image.png
image.png

I/O控制方式

程序直接控制方式

  1. 完成一次读/写操作的流程(以读操作为例)

image.png
(key word: 轮询)
image.png

  1. CPU干预的频率

很频繁,I/O操作开始之前、完成之后需要CPU介入,并且在等待I/O完成的过程中CPU需要不断地轮询检查

  1. 数据传送的单位

每次读/写一个字

  1. 数据的流向

读操作(数据输入):I/O设备->CPU->内存
写操作(数据输出):内存->CPU->I/O设备
每个字的读/写都需要CPU的帮助

  1. 主要缺点和主要优点

优点:实现简单。在读/写指令之后,加上实现循环检查的一系列指令即可(因此才称为“程序直接控制方式”)
缺点:CPU和I/O设备只能串行工作,CPU需要一直轮询检查,长期处于“忙等”状态,CPU利用率低。

中断驱动方式

引入中断机制。由于I/O设备速度很慢,因此在CPU发出读/写命令后,可将等待I/O的进程阻塞,先切换到别的进程执行。当I/O完成后,控制器会向CPU发出一个中断信号,CPU检测到中断信号后,会保存当前进程的运行环境信息,转去执行中断处理程序处理该中断。处理中断的过程中,CPU从I/O控制器读一个字的数据传送到CPU寄存器,再写入主存。接着,CPU恢复等待I/O的进程(或其他进程)的运行环境,然后进行执行。
注意:

  • CPU会在每个指令周期的末尾检查中断
  • 中断处理过程中需要保持、恢复进程的运行环境,这个过程是需要一定时间开销的。可见,如果中断发生的频率太高,也会降低系统性能。
  1. 完成一次读/写操作的流程

image.png

  1. CPU干预的频率

每次I/O操作开始之前、完成之后需要CPU介入
等待I/O完成的过程中CPU可以切换别的进程执行

  1. 数据传送的单位

每次读/写一个字

  1. 数据的流向

读操作(数据输入):I/O设备->CPU->内存
写操作(数据输出):内存->CPU->I/O设备

  1. 主要缺点和主要优点

优点:与“程序直接控制方式”相比,在“中断驱动方式”中,I/O控制器会通过中断信号主动报告I/O已完成,CPU不再需要不停地轮询。
CPU和I/O设备可并行工作,CPU利用率得到明显提升
缺点:每个字在I/O设备与内存之间的传输,都需要经过CPU。而频繁的中断处理会消耗较多的CPU时间。

DMA方式

与“中断驱动方式”相比,DMA方式(Direct Memory Access,直接存储器存取。主要用于块设备的I/O控制)有这样几个改进:

  1. 数据的传送单位是“块”。不再是一个字、一个字的传送;
  2. 数据的流向是从设备直接放入内存,或者从内存直接到设备。不再需要CPU作为“快递小哥”
  3. 仅在传送一个或多个数据块的开始和结束时,才需要CPU干预

image.png
DMA控制器
image.png

  1. 完成一次读/写操作的流程

image.png

  1. CPU干预的频率

仅在传送一个或多个数据块的开始和结束时,才需要CPU干预

  1. 数据传送的单位

每次读/写一个或多个块(注意:每次读写的只能是连续的多个块,且这些块读入内存后在内存中也必须是连续的)

  1. 数据的流向(不在需要经过CPU)

读操作(数据输入):I/O设备->内存
写操作(数据输出):内存->I/O设备

  1. 主要缺点和主要优点

优点:数据传输以‘块’为单位,CPU介入频率进一步降低。数据的传输不再需要先经过CPU再写入内存,数据传输效率进一步增加。CPU和I/O设备的并行性得到提升。
缺点:CPU每发出一条I/O指令,只能读/写一个或多个连续的数据块。
如果要读/写多个离散存储的数据块,或者要将数据分别写到不同的内存区域时,CPU要分别发出多条I/O指令,进行多次中断处理才能完成。

通道控制方式

image.png
与CPU相比,通道可以执行的指令很单一,并且通道程序是放在主机内存中的,也就是说通道与CPU共享内存

  1. 完成一次读/写操作的流程

image.png

  1. CPU干预的频率

极低,通道会根据CPU的指示执行相应的通道程序,只有完成一组数据块的读/写后才需要发出中断信号,请求CPU干预

  1. 数据传送的单位

每次读/写一组数据块

  1. 数据的流向(在通道的控制下进行)

读操作(数据输入):I/O设备->内存
写操作(数据输出):内存->I/O设备

  1. 主要缺点和主要优点

缺点:实现复杂,需要专门的的通道硬件支持
优点:CPU、通道、I/O设备可并行工作,资源利用率很高
image.png

I/O软件层次结构

image.png
用户层软件
image.png
设备独立性软件
设备独立性软件,又称设备无关性软件。与设备的硬件特性无关的功能几乎都在这一层实现。
主要实现的功能:

  1. 向上层提供统一的调用接口(如read/write系统调用)
  2. 设备的保护

原理类似与文件保护。设备被看做是一种特殊的文件,不同用户对各个文件的访问权限是不一样的,同理,对设备的访问权限也不一样。

  1. 差错处理

设备独立性软件需要对一些设备的错误进行处理

  1. 设备的分配与回收
  2. 数据缓冲器管理

可以通过缓冲技术屏蔽设备之间数据交换单位大小和传输速度的差异

  1. 建立逻辑设备名到物理设备名的映射关系;根据设备类型选择调用相应的驱动程序

用户或用户层软件发出I/O操作相关系统调用的系统调用时,需要指明此次要操作的I/O设备的逻辑设备名(打印文件时,需要选择打印机1/打印机2/打印机3,这些都是逻辑设备名)
设备独立性软件需要通过“逻辑设备表(LUT,Logical UnitTable)”来确定逻辑设备对应的物理设备,并找到该设备对应的设备驱动程序
image.png
操作系统可以采用两种方式管理逻辑设备表(LUT):
第一种方式,整个系统只设置一张LUT,这就意味着所有用户不能使用相同的逻辑设备名,因此这种方式只适用于单用户操作系统
第二种方式,为每个用户设置一张LUT,各个用户使用的逻辑设备名可以重复,适用于多用户操作系统。系统会在用户登录时为其建立一个用户管理进程,而LUT就存放在用户管理进程的PCB中
设备驱动程序
主要负责对硬件设备的具体控制,将上层发出的一系列命令(如read/write)转化成特定设备“能听得懂”的一系列操作。包括设置设备寄存器;检测设备状态等
不同的I/O设备有不同的硬件特性,具体细节只有设备的厂家才知道。因此厂家需要根据设备的硬件特性设计并提供相应的驱动程序。
中断处理程序
当I/O任务完成时,I/O控制器会发送一个中断信号,系统会根据中断信号类型找到相应的中断程序处理并执行。中断处理程序的处理流程如下:
image.png

输入/输出应用程序接口

image.png
字符设备接口
get/put系统调用:向字符设备读/写一个字符
块设备接口
read/write系统调用:向块设备的读写指针位置读/写多个字符;
seek系统调用:修改读写指针位置
网络设备接口 (网络套接字(socket)接口)
socket系统调用:创建一个网络套接字,需指明网络协议(TCP?UDP?)
bing:将套接字绑定到某个本地“端口”
connect:将套接字连接到远程地址
read/write:从套接字读/写数据

阻塞/非阻塞I/O

阻塞I/O:应用程序发出I/O系统调用,进程需转为阻塞态等待
eg:字符设备接口–从键盘读一个字符get
非阻塞I/O:应用程序发出I/O系统调用,系统调用可迅速返回,进程无需阻塞等待。
eg:块设备接口–往磁盘写数据write

设备驱动程序接口

image.png
image.png
不同的操作系统,对设备驱动程序接口的标准各不相同。
设备厂商必须根据操作系统的接口要求,开发相应的设备驱动程序,设备才能被使用

I/O核心子系统

image.png
image.png
注:假脱机技术(SPOOLing 技术)需要请求“磁盘设备”的设备独立性软件的服务,因此一般来说假脱机技术是在用户层软件实现的。

I/O调度:用某种算法确定一个好的顺序来处理各个I/O请求。
如:磁盘调度(先来先服务算法、最短寻道优先算法、SCAN算法、C-SCAN算法、LOOK算法、C-LOOK算法)。当多个磁盘I/O请求到来时,用某种调度算法确定满足I/O请求的顺序。
同理,打印机等设备也可以用先来先服务算法、优先级算法、短作业优先等算法来确定I/O调
度顺序。

操作系统需要实现文件保护功能,不同的用户对各个文件有不同的访问权限(如:只读、读和写等)。
在UNIX系统中,设备被看做是一种特殊的文件,每个设备也会有对应的FCB。当用户请求访问某个设备时,系统根据FCB中记录的信息来判断该用户是否有相应的访问权限,以此实现“设备保护”的功能。

假脱机技术(SPOOLing技术)

image.png
image.png

假脱机技术–输入井和输出井

“假脱机技术”,又称“SPOOLing技术”是用软件的方式模拟脱机技术。SPOOLing系统组成如下:

image.png
image.png
image.png
image.png
image.png
共享打印机原理分析
独占式设备–只允许各个进程串行使用的设备。一段时间内只能满足一个进程的请求。
共享设备–允许多个进程“同时”使用的设备(宏观上同时使用,微观上可能是交替使用)。可以同时满足多个进程的使用请求。
image.png
image.png
image.png

设备分配与回收

image.png
设备的固有属性可分为三种:独占设备、共享设备、虚拟设备
独占设备–一个时段只能分配给一个进程(如打印机)
共享设备–可同时分配给多个进程使用(如磁盘),各进程往往是宏观上同时共享使用设备,而微观上交替使用

设备的分配算法:
先来先服务、优先级高者优先、短任务优先…

从进程运行的安全性上考虑,设备分配有两种方式:
安全分配方式:为进程分配一个设备后就将进程阻塞,本次I/O完成后才将进程唤醒。(eg:考虑进程请求打印机打印输出的例子)
一个时段内每个进程只能使用一个设备
优点:跑环了“请求和保持”条件,不会死锁
缺点:对于一个进程来说,CPU和I/O设备只能串行工作
不安全分配方式:进程发出I/O请求后,系统为其分配I/O设备,进程可继续执行,之后还可以发出新的I/O请求。只有某个I/O请求得不到满足时才将进程阻塞。
一个进程可以同时使用多个设备
优点:进程的计算任务和I/O任务可以并行处理,使进程迅速推进
缺点:有可能发生死锁(死锁避免、死锁的检测和解除)
静态分配和动态分配
静态分配:进程运行前为其分配全部所需资源,运行结束后归返资源(破坏了“请求和保持”条件,不会发生死锁)
动态分配:进程运行过程中动态申请设备资源
设备分配管理中的数据结构
“设备、控制器、通道”之间的关系:
image.png
设备控制表(DCT):系统为每个设备配置一张DCT,用于记录设备情况
image.png
控制器控制表(COCT):每个设备控制器都会对应一张COCT。操作系统根据COCT的信息对控制器进行操作和管理。
image.png
通道控制表(CHCT):每个通道都会对应一张CHCT。操作系统根据CHCT的信息对通道进行操作和管理。
image.png
系统设备表(SDT):记录了系统中全部设备的情况,每个设备对应一个表目
image.png
设置分配的步骤

  1. 根据进程请求的物理设备名查找SDT(注:物理设备名说进程请求分配设备时提供的参数)

image.png

  1. 根据SDT找到DCT,若设备忙碌则将进程PCB挂到设备等待队列中,不忙碌则将设备分配给进程

image.png

  1. 根据DCT找到COCT,若控制器忙碌则将进程PCB挂到控制器等待队列中,不忙碌则将控制器分配给进程

image.png

  1. 根据COCT找到CHCT,若通道忙碌则将进程PCB挂到通道等待队列中,不目录则将通道分配给进程

image.png
缺点:

  1. 用户编程时必须使用“物理设备名”,底层细节对用户不透明、不方便编程
  2. 若换一个物理设备,则程序无法运行
  3. 若进程请求的物理设备正在忙碌,则即使系统中还有同类型的设备,进程也必须阻塞等待

改进方法:建立逻辑设备名与物理设备名的映射机制,用户编程时只需提供逻辑设备名
设备分配步骤的改进
image.png
image.png

缓冲区管理

缓冲区是一个存储区域,可以由专门的硬件寄存器组成,也可以利用内存作为缓冲区。
使用硬件作为缓冲区的成本较高,容量也较小,一般仅用在对速度要求非常高的场合(如存储器管理中所用的联想寄存器,由于对页表的访问频率极高,因此使用速度很快的联想寄存器来存放页表项的副本)
一般情况下,更多的是利用内存作为缓冲区,“设备独立性软件”的缓冲区管理就是要组织管理好这些缓冲区
image.png
image.png

单缓冲

假设某用户进程请求某种块设备读入若干块的数据。若采用单缓冲的策略,操作系统会在主存中为其分配一个缓冲区(若题目中没有特别说明,一个缓冲器的大小就是一个块)
注意:当缓冲区数据非空时,不能住缓冲区传入数据,只能从缓冲区把数据传出;放缓冲区为空时,可以往缓冲区传入数据,但必须把缓冲区充满以后,才能从缓冲区把数据传出。
image.png
image.png
image.png

双缓存

假设某用户进程请求某种块设备读入若干块的数据。若采用双缓存的策略,操作系统会在主存中为其分配两个缓存区
image.png
image.png
结论:采用双缓冲策略,处理一个数据块的平均耗时为 Max (T, C+M)

使用单/双缓存在通信时的区别

image.png
image.png

循环缓冲区

image.png

缓冲池

image.png

磁盘的结构

image.png
磁盘的表面由一些磁性物质组成,可以有这些磁性物质来记录二进制数据
image.png
如何在磁盘中读/写数据
需要把“磁头”移动到想要读/写的扇区所在的磁道。磁盘会转起来,让目标扇区从磁头下面划过,才能完成对扇区的读/写操作
盘面、柱面
image.png
磁盘的物理地址
可用(柱面号、盘面号、扇区号)来定位任意一个“磁盘块”。在“文件的物理结构”小节中,我们经常提到文件数据存放在外存中的几号块,这个块号就可以转换成(柱面号,盘面号,扇区号)的地址形式。
可根据该地址读取一个“块”

  1. 根据“柱面号”移动磁臂,让磁头指向指定柱面
  2. 激活指定盘面对应的磁头
  3. 磁盘旋转的过程中,指定的扇区会从磁头下面划过,这样就完成了对指定扇区的读/写

磁盘的分类
image.png
image.png

磁盘调度算法

一次磁盘读/写操作需要的时间

image.png
image.png
image.png
image.png

先来先服务算法(FCFS)

image.png

最短寻找时间优先(SSTF)

image.png

扫描算法(SCAN)

image.png

LOOK调度算法

image.png

循环扫描算法(C-SCAN)

image.png

C-LOOK调度算法

image.png

减少磁盘延迟时间的方法

延迟时间:将目标扇区转到磁头下面所花的时间
image.png

减少延迟时间的方法:交替编号

image.png

磁盘地址结构的设计

image.png
image.png
读取地址连续的磁盘块时,采用(柱面号,盘面号,扇区号)的地址结构可以减少磁头移动消耗的时间

减少延迟时间的方法:错位命名

image.png
image.png

磁盘的管理

磁盘初始化

磁盘初始化:
Step 1:进行低级格式化(物理格式化),将磁盘的各个磁道划分为扇区。一个扇区通常可分为 头、数据区域(如512B大小)、尾 三个部分组成。管理扇区所需要的各种数据结构一般存放在头、尾两个部分,包括扇区校验码(如奇偶校验、CRC循环冗余校验码等,校验码用于校验扇区中的数据是否发生错误)
Step 2:将磁盘分区,每个分区由若干柱面组成(即分为我们熟悉的 C盘、D盘、E盘)
Step 3:进行逻辑格式化,创建文件系统。包括创建文件系统的根目录、初始化存储空间管理所用的数据结构(如 位示图、空闲分区表)

引导块

计算机开机时需要进行一系列初始化的工作,这些初始化工作是通过执行初始化程序(自举程序)完成的
image.png
image.png

坏块的管理

坏了、无法正常使用的扇区就是“坏块”。这属于硬件故障,操作系统是无法修复的。应该将坏块标记出来,以免错误地使用到它。
image.png

固态硬盘SSD

image.png
固态硬盘的结构
image.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1276107.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

小米智能摄像头mp4多碎片手工恢复案例

小米智能摄像头mp4多碎片手工恢复案例 智能摄像头目前在市场上极为常见,仅需要一张存储卡即可实现视频、音频的采集,同时可以通过手机APP进行远程控制,相比传统安防品牌成本更低、更容易部署。在智能摄像头品牌中小米算是绝对的大厂&#xf…

HTTP协议、Java前后端交互、Servlet

文章目录 抓包工具 FiddlerHTTP 请求和响应结构URL 唯一资源定位符HTTP 协议中的方法请求报头(header)HTTP响应构造 HTTP 请求基于 form 标签基于 ajax使用 Postman HTTPS和 HTTP 的区别对称密钥和非对称密钥数字证书 TomcatServlet创建 Maven 项目引入依…

SSM框架(四):SSM整合 案例 + 异常处理器 +拦截器

文章目录 一、整合流程图1.1 Spring整合Mybatis1.2 Spring整合SpringMVC 二、表现层数据封装2.1 问题引出2.2 统一返回结果数据格式 代码设计 三、异常处理器3.1 概述3.2 异常处理方案 四、前端五、拦截器5.1 概念5.2 入门案例5.3 拦截器参数5.4 拦截器链 一、整合流程图 1.1 S…

2.qml 3D-View3D类学习

本章我们来学习View3D类。 View3D是用来渲染3D场景并显示在2D平面的类,并且该类可以放在QML2D下继承于Item子类的任何场景中,比如将View3D放在Rectangle中: Rectangle {width: 200 height: 200color: "red"View3D { anchors.fill: parent…

STM32CubeIDE(CUBE-MX hal库)----蓝牙模块HC-05(详细配置)

系列文章目录 STM32CubeIDE(CUBE-MX hal库)----初尝点亮小灯 STM32CubeIDE(CUBE-MX hal库)----按键控制 STM32CubeIDE(CUBE-MX hal库)----串口通信 STM32CubeIDE(CUBE-MX hal库)----定时器 文章目录 系列文章目录前言一、蓝牙配置二、CUBE-MX可视化配置三、蓝牙APP调试助手四、…

mysql在linux环境下安装(rpm)以及初始化后的登录配置

注:该安装步骤转载于CSDN,下方配置为原创 按照图片安装并初始化完成MySQL等操作后进行; 安装对于rpm包集合 1-查看安装情况(有4个路径) whereis mysql 2-查看服务状态 systemctl status mysql 3-初始化数据库 mysqld --initial…

6.5 Windows驱动开发:内核枚举PspCidTable句柄表

在 Windows 操作系统内核中,PspCidTable 通常是与进程(Process)管理相关的数据结构之一。它与进程的标识和管理有关,每个进程都有一个唯一的标识符,称为进程 ID(PID)。与之相关的是客户端 ID&am…

【蓝桥杯选拔赛真题71】Scratch绘制彩虹 少儿编程scratch图形化编程 蓝桥杯创意编程选拔赛真题解析

目录 scratch绘制彩虹 一、题目要求 编程实现 二、案例分析 1、角色分析

Python+Requests对图片验证码的处理

Requests对图片验证码的处理 在web端的登录接口经常会有图片验证码的输入,而且每次登录时图片验证码都是随机的;当通过request做接口登录的时候要对图片验证码进行识别出图片中的字段,然后再登录接口中使用; 通过request对图片验…

ChatGPT成为“帮凶”:生成虚假数据集支持未知科学假设

ChatGPT 自发布以来,就成为了大家的好帮手,学生党和打工人更是每天都离不开。 然而这次好帮手 ChatGPT 却帮过头了,莫名奇妙的成为了“帮凶”,一位研究人员利用 ChatGPT 创建了虚假的数据集,用来支持未知的科学假设。…

Windows环境 dockertopdesk 部署gitlab

1.在dockertopdesk里搜索 gitlab镜像 (pull)拉取镜像 2.运行镜像到容器 mkdir gitlab gitlab/etc gitlab/log gitlab/opt docker run -id -p 3000:80 -p 9922:22 -v /root/gitlab/etc:/etc/gitlab -v /root/gitlab/log:/var/log/gitlab -v /root/gitlab/opt:/var/opt/gitla…

Linux系统之centos7编译安装Python 3.8

前言 CentOS (Community Enterprise Operating System) 是一种基于 Red Hat Enterprise Linux (RHEL) 进行源代码再编译并免费提供给用户的 Linux 操作系统。 CentOS 7 采用了最新的技术和软件包,并提供了强大的功能和稳定性。它适用于各种服务器和工作站应用场景&a…

8.整数转换为浮点数【2023.11.30】

1.问题描述 整数转换为浮点数。 2.解决思路 使用input函数读取输入的整数 input_int int(input()) #将整数转换为浮点数类型 output_float float(input_int) 3.代码实现 numint(input("请输入一个整数")) num1float(num) print(num1)4.运行结果

掌握HarmonyOS框架的ArkTs如何管理和共享状态数据

ARKTS(Ark TypeScript)是HarmonyOS应用框架的一部分,提供了一种灵活而强大的状态管理机制。在ARKTS中,AppStorage和LocalStorage是两个关键的概念,它们分别用于应用级和页面级的状态共享。通过深入了解这两个特性&…

【Python】OpenCV库中常用函数详解和示例

在Python中,OpenCV(Open Source Computer Vision Library)是一个广泛使用的图像和视频处理库。它包含许多用于图像处理和计算机视觉任务的函数。本文对一些常用的OpenCV函数及其详细解释和示例,以帮助大家理解和使用。 目录 cv2.…

跨模态图像翻译:使用具有感知监督的多生成网络合成MR脑图像的CT图像

Cross-modality image translation: CT image synthesis of MR brain images using multi generative network with perceptual supervision 跨模态图像翻译:使用具有感知监督的多生成网络合成MR脑图像的CT图像背景贡献实验方法损失函数Thinking 跨模态图像翻译&…

使用 NRF24L01 无线收发模块进行远程控制

NRF24L01 是一款基于 2.4GHz 射频通信的低功耗无线收发模块,具有高性能和稳定性,适用于远程控制和数据传输应用。本文将介绍如何使用 NRF24L01 模块进行远程控制,包括硬件的连接和配置,以及相应的代码示例。 一、引言 NRF24L01 是…

es6之class类(未完成)

es6之class类 一、什么是类二、类的基本用法1.定义类2.constructor() 方法3.静态方法(属性)4.私有方法(属性) 三、继承 一、什么是类 类是用于创建对象的模板,类只是让对象原型的写法更加清晰、更像面向对象编程的语法。 class Pe…

matlab 多目标粒子群优化算法MOPSO

1、内容简介 略 21-可以交流、咨询、答疑 多目标、粒子群 2、内容说明 多目标粒子群优化算法MOPSO 3、仿真分析 略 %% Problem Definition TestProblem3; % Set to 1, 2, or 3 switch TestProblem case 1 CostFunction(x) MyCost1(x); nVar5; …

REST-Assured--JAVA REST服务自动化测试的Swiss Army Knife

什么是REST-Assured REST Assured是一套基于 Java 语言实现的开源 REST API 测试框架 Testing and validation of REST services in Java is harder than in dynamic languages such as Ruby and Groovy. REST Assured brings the simplicity of using these languages into t…