首页 > 其他分享 >操作系统杂项(十)

操作系统杂项(十)

时间:2024-07-26 16:27:04浏览次数:15  
标签:异步 读取 函数 阻塞 简述 事件 杂项 操作系统

目录

一、简述socket中select、epoll的使用场景和区别

1、使用场景

2、区别

二、epoll水平触发和边缘触发的区别

三、简述Reactor和Proactor模式

1、Reactor

2、Proactor

3、区别

四、简述同步和异步的区别,阻塞和非阻塞的区别

1、同步与异步

2、阻塞与非阻塞

五、简述BIO和NIO的区别

1、BIO

2、NIO

六、简述5种I/O模型

1、阻塞I/O

2、非阻塞I/O

3、信号驱动I/O

4、I/O多路复用

5、异步I/O

七、简述socket网络编程中客户端和服务端用到哪些函数

1、服务器端函数

2、客户端函数

八、简述网络七层参考模型及每一层的作用


一、简述socket中select、epoll的使用场景和区别

1、使用场景

        select、epoll都是I/O多路复用的机制,应用于高并发的网络编程的场景。I/O多路复用就是通过一种机制,可以监视多个文件描述符,一旦某个文件描述符就绪(一般是读就绪或者写就绪),能够通知应用程序进行相应的读写操作。

2、区别

        (1)每次调用select,都需要把fd集合从用户态拷贝到内核态,这个开销在fd很多时候会很大,而epoll保证了每个fd在整个过程中只会拷贝一次。

        (2)每次调用select都需要在内核遍历传递进来的所有fd,而epoll只需要轮询一次fd集合,同时查看就绪链表中有没有就绪的fd就可以了。

        (3)select支持的文件描述符数量太小了,默认是1024,而epoll没有这个限制,它所支持的fd上限是最大可以打开文件的数目,这个数字一般远大于2048。

二、epoll水平触发和边缘触发的区别

        LT模式(水平触发)下,只要这个fd还有数据可读,每次epoll_wait都会返回它的事件,提醒用户程序去操作。

        ET模式(边缘触发)下,它只会提示一次,直到下次再有数据流入之前都不会提升了,无论fd中是否还有数据可读。

三、简述Reactor和Proactor模式

        在高性能的I/O设计中,有两个比较著名的模式:ReactorProactor。其中Reactor模式用于同步I/O,Proactor用于异步I/O操作

1、Reactor

        Reactor模式中读操作的具体步骤为:

        (1)应用程序注册读就需事件和相关联的事件处理器;

        (2)事件分离器等待事件发生;

        (3)当发生读就需事件的时候,事件分离器调用第一步注册的事件处理器;

        (4)事件处理器首先执行实际的读取操作,然后根据读取到的内容进行进一步的处理。

2、Proactor

        Proactor模式中读操作的具体步骤为:

        (1)应用程序初始化一个异步读取操作,然后注册相应的事件处理器,此时事件处理器不关注读取就绪事件,而是关注读取完成事件,这是区别于Reactor的关键;

        (2)事件分离器等待读取操作完成事件;

        (3)在事件分离器等待读取操作完成的时候,操作系统调用内核线程完成读取操作,并将读取的内容放入用户传递过来的缓存区中。这也是区别于Reactor的一点,Proactor中,应用程序需要传递缓存区;

        (4)事件分离器捕获到读取完成事件后,激活应用程序注册的事件处理器,事件处理器直接从缓存区读取数据,而不需要进行实际的读取操作。

3、区别

        从上面看出,Reactor中需要应用程序自己读取或者写入数据,而Proactor模式中,应用程序不需要用户再自己接收数据,直接使用即可,操作系统会将数据从内核拷贝到用户区。   

四、简述同步和异步的区别,阻塞和非阻塞的区别

1、同步与异步

        同步:所有操作都做完,才返回给用户结果。即写完数据库之后,再响应用户,用户体验不好。

        异步:无需等所有操作完成,就响应用户请求。即先响应用户请求再慢慢写数据库,用户体验较好。

2、阻塞与非阻塞

        阻塞:调用者调用了某个函数,等待这个函数返回,期间什么也不做,不停地检查这个函数有没有返回,必须等这个函数返回后才可以进行下一个动作。

        非阻塞:非阻塞等待,每隔一段时间就去检查I/O事件是否就绪,没有就绪就可以做其他事情。

五、简述BIO和NIO的区别

1、BIO

        BIO(Blocking I/O):阻塞I/O,调用者调用了某个函数,等待这个函数返回,期间什么也不做,停地检查这个函数有没有返回,必须等这个函数返回后才可以进行下一个动作。

2、NIO

        NIO(New I/O):同时支持阻塞和非阻塞模式,NIO的做法是叫一个线程不断的轮询每个I/O的状态,看是否有I/O的状态发生了改变,从而进行下一步操作。

六、简述5种I/O模型

1、阻塞I/O

        调用者调用了某个函数,等待这个函数返回,期间什么也不做,停地检查这个函数有没有返回,必须等这个函数返回后才可以进行下一个动作。

2、非阻塞I/O

        非阻塞等待,每隔一段时间就去检查I/O事件是否就绪,没有就绪就可以做其他事情。

3、信号驱动I/O

        Linux用套接口进行信号驱动I/O,安装一个信号处理函数,进程继续运行并不阻塞,当I/O事件就绪,进程收到SIGIO信号,然后处理I/O事件。

4、I/O多路复用

        Linux用select、poll函数实现I/O复用模型,这两个函数也会使进程阻塞,但是和阻塞I/O所不同的是这两个函数可以同时阻塞多个I/O操作,而且可以同时对多个读操作、写操作的I/O函数进行检查,直到有数据可以读或者可以写时,才真正调用I/O操作函数。

5、异步I/O

        Linux中,可以调用aio_read函数告诉内核描述字缓冲区指针和缓冲区的大小、文件偏移和通知的方式,然后立即返回,当内核将数据拷贝到缓冲区后,再通知应用程序,用户可以直接去使用数据。

        前四种模型:阻塞I/O、非阻塞I/O、多路复用I/O和信号驱动I/O都属于同步模式,因为其中真正的I/O操作(函数)都将会阻塞进程,只有异步I/O模型真正实现了I/O操作的异步性。

        异步和同步的区别在于,异步是内核将数据拷贝到用户区,不需要用户再自己接收数据,直接使用即可,而同步是内核通知用户数据到了,然后用户自己调用相应函数去接收数据。

七、简述socket网络编程中客户端和服务端用到哪些函数

1、服务器端函数

        (1)socket创建一个套接字;

        (2)bind绑定ip和port;

        (3)listen使套接字变为可以被动链接;

        (4)accept等待客户端的链接;

        (5)write/read接收发送数据;

        (6)close关闭连接。

2、客户端函数

        (1)创建一个socket,用函数socket();

        (2)bind绑定ip和port;

        (3)连接服务器,用函数connect();

        (4)收发数据,用函数send()和recv(),或read()和write();

        (5)close关闭连接。

八、简述网络七层参考模型及每一层的作用

        如下表:

OSI七层模型功能对应的网络协议TCP/IP四层概念模型
应用层文件传输、文件管理、电子邮件的信息处理HTTP、TFTP、FTP、NFS、WAIS、SMTP应用层
表示层确保一个系统的应用层发送的消息可以被另一个系统的应用层读取,编码转换,数据解析,管理数据的解密和加密Telnet、Rlogin、SNMP、Gopher应用层
会话层负责在网络中的两节点建立,维持和终止通信SMTP、DNS应用层
传输层定义一些传输数据的协议和端口TCP、UDP传输层
网络层控制子网的运行,如逻辑编址,分组传输,路由选择IP、ICMP、ARP、RARP、AKP、UUCP网络层
数据链路层主要对物理层传输的比特流包装,检测保证数据传输的可靠性,将物理层接收的数据进行MAC(媒体访问控制)地址的封装和解封装FDDI、Ethernrt、Arpanet、PDN、SLIP、PPP、STP、HDLC、SDLC、帧中继数据链路层
物理层定义物理设备的标准,主要对物理连接方式,电气特性,机械特性等制定统一标准IEEE 802.1A、IEEE 802.2到IEEE 802.数据链路层

标签:异步,读取,函数,阻塞,简述,事件,杂项,操作系统
From: https://blog.csdn.net/L_peanut/article/details/140690767

相关文章

  • 深蓝学院 机器人操作系统ROS理论与实践(四)
    一、机器人是什么?机器人是如何组成的(控制的角度)二、机器人系统构建执行机构的实现——机器人底盘、电机、舵机等驱动系统的实现内部传感器的实现控制系统的实现外部传感系统的实现——摄像头、激光雷达、GPS等1、连接摄像头sudoapt-getinstallros-kinetic-us......
  • 软考-软件设计师(2)-操作系统概述:多级索引、PV操作、段页式存储、磁盘管理、进程管理
    场景软考-软件设计师-操作系统概述模块高频考点整理。以下为高频考点、知识点汇总,不代表该模块所有知识点覆盖,请以官方教程提纲为准。注:博客:霸道流氓气质-CSDN博客实现知识点文件系统多级索引求文件系统多级索引的最大长度二级索引=一级索引*一级索引*大小某文件系统......
  • .url 文件通常是指Windows操作系统中的一种快捷方式文件,用于创建指向网络资源或本地文
    .url文件通常是指Windows操作系统中的一种快捷方式文件,用于创建指向网络资源或本地文件系统路径的链接。这种文件类型实际上是文本文件,其内容格式类似于INI文件,包含了一个URL或者本地文件路径。主要特点和用途:创建快捷方式:.url 文件允许用户创建指向特定网页、FTP站点或本......
  • FreeRTOS操作系统(详细速通篇)——— 第十章
            本专栏将对FreeRTOS进行快速讲解,带你了解并使用FreeRTOS的各部分内容。适用于快速了解FreeRTOS并进行开发、突击面试、对新手小白非常友好。期待您的后续关注和订阅!目录FreeRTOS任务相关API函数1任务优先级相关API函数(1)uxTaskPriorityGet(2)vTaskPriorityS......
  • 操作系统概念(黑皮书)阅读笔记
    操作系统概念(黑皮书)阅读笔记进程和内存管理部分章节导论:操作系统类似于政府,其本身不能实现任何有用功能,而是提供一个方便其他程序执行有用工作的环境​个人理解:os是government的作用,有着最高权限,去管理和分配资源,有效且公平计算机系统的根本目的是,执行用户程序并更......
  • [杂项] [算法] [数据结构] 暑期专题狂补
    或曰,有学长两天授吾以十专题,吾顿感日月之紧迫,以专题竟不能以吾之所有,遂成此文,以记之语文确实没学好本文可能涵盖多个知识点,故每个的讲解比较简略,仅供参考一.2-SAT$2-SAT$用于求解一个变量只有两种情况的适应性问题(就是有没有解以及输出一种方案);其实可以类比二分图最大......
  • [rCore学习笔记 017]实现批处理操作系统
    写在前面本随笔是非常菜的菜鸡写的。如有问题请及时提出。可以联系:[email protected]:https://github.com/WindDevil(目前啥也没有本章目的实现批处理操作系统,每当一个应用程序执行完毕,都需要将下一个要执行的应用的代码和数据加载到内存.应用加载机制在操作系统......
  • 手写操作系统:一切从主引导扇区开始
    项目简介本项目将从零实现一个基于x8632位的操作系统,系统支持多进程的运行,虚拟内存,进程与进程之间隔离,文件系统。开发语言:汇编语言与C语言,主要是C语言。开发工具:gcc编译器,gdb调试器,qemu虚拟机,dd工具,CMake.........开发环境:windows11操作系统,VScode编辑器。计算机启动......
  • VMware Tools 12.4.5 下载 - 客户机操作系统无缝交互必备组件
    VMwareTools12.4.5下载-客户机操作系统无缝交互必备组件VMware虚拟机必备组件(驱动和交互式服务)请访问原文链接:https://sysin.org/blog/vmware-tools-12/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgVMwareTools是一套安装在虚拟机的操作系统中的实用程......
  • FreeRTOS操作系统(详细速通篇)——— 第八章
            本专栏将对FreeRTOS进行快速讲解,带你了解并使用FreeRTOS的各部分内容。适用于快速了解FreeRTOS并进行开发、突击面试、对新手小白非常友好。期待您的后续关注和订阅!目录列表与列表项管理1列表与列表项简介1.1定义1.2结构体介绍2相关API函数介绍2.1......