当前位置: 首页 > news >正文

龙岗企业网站建设html5 网站建设

龙岗企业网站建设,html5 网站建设,最简洁 wordpress主题,招聘网页制作课程设计参考资料 #xff1a;极客时间 Redis#xff08;亚风#xff09; 前置知识 系统隔离 为了避免⽤户应⽤导致冲突甚⾄内核崩溃#xff0c;⽤户应⽤与内核是分离的#xff1a; 进程的寻址空间会划分为两部分#xff1a;内核空间、⽤户空间 • ⽤户空间只能执⾏受限的命令极客时间 Redis亚风 前置知识 系统隔离 为了避免⽤户应⽤导致冲突甚⾄内核崩溃⽤户应⽤与内核是分离的 进程的寻址空间会划分为两部分内核空间、⽤户空间 • ⽤户空间只能执⾏受限的命令Ring3⽽且不能直接调⽤系统资源必 须通过内核提供的接⼝来访问 • 内核空间可以执⾏特权命令Ring0)调⽤⼀切系统资源 缓冲区 Linux系统为了提⾼IO效率会在⽤户空间和内核空间都加⼊缓冲区 • 写数据时要把⽤户缓冲数据拷⻉到内核缓冲区然后写⼊设备 • 读数据时要从设备读取数据到内核缓冲区然后拷⻉到⽤户缓冲区 这里的数据交互采用不同的模型就会有不同的性能因而也诞生了一些网络IO模型。 IO模型 阻塞IO 非阻塞IO ⽆论是阻塞IO还是⾮阻塞IO⽤户应⽤在⼀阶段都需要调⽤recvfrom来获取数据差别在于⽆数据时的理⽅案 • 如果调⽤recvfrom时恰好没有数据阻塞IO会使进程阻塞⾮阻塞IO使CPU空转都不能充分发挥CPU的作⽤。 • 如果调⽤recvfrom时恰好有数据则⽤户进程可以直接进⼊第⼆阶段读取并处理数据。 IO多路复用 文件表述符的概念 ⽂件描述符File Descriptor简称FD是⼀个从0开始递增的⽆符号整数⽤来关联Linux中的⼀个⽂件。在Linux中⼀切皆⽂件例如常规⽂件、视频、硬件设备等当然也包括⽹络套接字 (Socket)。 IO多路复⽤是利⽤单个线程来同时监听多个FD并在某个FD可读、可写时得到通知从⽽避免⽆效的等待充分利⽤CPU资源。 区间听FD有三种实现方式 1 select Sekect的结构 typedef struct {// ⻓度为 1024/32 32// 共1024个bit位每个bit位代表⼀个fd0代表未就绪1代表就绪int fds_bits[__FD_SETSIZE / __NFDBITS] } fd_set // select函数⽤于监听多个fd的集合 int select( int nfds//要监视的fd_set的最⼤fd 1 fd_set *readfds, //要监听读事件的fd集合 fd_set *writefds, // 要监听写事件的fd集合 fd_set *exceptfds// 要监听异常事件的fd集合 //超时时间null-永不超时0-不阻塞等待⼤于0-固定等待时间 struct timeval *timeout);select模式存在的问题 • 需要将整个fd_set从⽤户空间拷⻉到内核空间select结束还要再次拷⻉回⽤户空间 • select⽆法得知具体是哪个fd就绪需要遍历整个fd_set • fd_set监听的fd数量不能超过1024因为32个int,每个int 4 * 8 32 位总共1024位。 2 poll #define POLLIN //可读事件 #define POLLOUT //可写事件 #define POLLERR //错误事件 // pollfd结构 struct pollfd {int fd; //要监听的fdshort int events/*要监听的事件类型读、写、异常*/short int revents;/* 实际发⽣的事件类型*/ } // poll函数 int poll( struct pollfd *fds// pollfd数组可以⾃定义⼤⼩ nfds_t nfds, //数组元素个数 int timeout) // 超时时间1 创建pollfd数组向其中添加关注的fd信息 2 调⽤poll函数将pollfd数组拷⻉到内核空间转链表存储内核要求转换为链表 3 内核遍历fd判断是否就绪 4 数据就绪或超时后拷⻉pollfd数组到⽤户空间返回就绪fd数量n 5 判断n是否⼤于0⼤于0则遍历pollfd数组找到就绪的fd 与select对⽐ 整体过程和Select大同小异。结构优化了一些但是还是需要遍历fd_set. select模式中的fd_set⼤⼩固定为1024⽽pollfd⽆上限监听FD越多每次遍历消耗时间也越久性能反⽽会下降。 3 epoll struct eventpoll {struct rb_root rbr//红⿊树记录要监听的FDstruct list_head rdlist;// 链表记录就绪的FD}//1.会在内核创建eventpoll结构体返回对应的句柄epfdint epoll_create(int size)//2.将⼀个FD添加到epoll的红⿊树中并设置ep_poll_callback// callback触发时就把对应的FD加⼊到rdlist这个就绪列表中int epoll_ctl(int epfd, // epoll实例的句柄int op, //要执⾏的操作包括ADD、 MOD、 DELint fd//要监听的FDstruct epoll_event *event // 要监听的事件类型读、写、异常等)//3.循环检查rdlist列表是否为空不为空则返回就绪的FD的数量int epoll_wait(int epfd,struct epoll_event *events, //event数组⽤于接收就绪的FD 属于用户空间int maxevents, // events数组的最⼤⻓度int timeout //超时时间-1不超时0不阻塞⼤于0为阻塞时间))具体流程 三种模式的对比 select模式存在的三个问题 • 能监听的FD最⼤不超过1024 • 每次select都需要把所有要监听的FD都拷⻉到内核 • 每次都要遍历所有FD来判断就绪状态 poll模式的问题 • poll利⽤链表解决了select中监听FD上限的问题但依然要遍历所有FD如 果监听较多性能会下降 epoll模式中如何解决这些问题的 • 基于epoll实例中的红⿊树保存要监听的FD增删改查效率⾮常⾼ • 每个FD只需要执⾏⼀次epollctl添加到红⿊树⽆需重复拷⻉FD到内核空间 • 内核会将就绪的FD直接拷⻉到⽤户空间的指定位置⽤户进程⽆需遍历所有FD就能知道就绪的FD是谁当FD有数据可读时我们调⽤epollwait就可以得到通知。但是事件通知的模式 有两种 LevelTriggered简称LT。当FD有数据可读时会重复通知多次直⾄数据处理完成。是Epoll的默认模式。 EdgeTriggered简称ET。当FD有数据可读时只会被通知⼀次不管数据是否处理完成。 ET模式避免了LT模式可能出现的惊群现象(就比如有多个进程监听了FD这个FD一旦通知就会唤醒所有的进程但是实际只需要一个进程来处理。) ET模式最好结合⾮阻塞IO读取FD数据相⽐LT会复杂。 信号驱动IO 信号驱动IO是与内核建⽴SIGIO的信号关联并设置回调当內核有FD就绪时会发出SIGIO信号通知⽤户期间⽤户应⽤可以执⾏其它业务⽆需阻塞等待。 存在的问题当有⼤量lO操作时信号较多SIGlO处理函数不能及时处理可能导致信号队列溢出⽽且内核空间与⽤户空间的频繁信号交互性能也较低。 AIO异步IO AIO的整个过程都是⾮阻塞的⽤户进程调⽤完异步API后就可以去做其它事情内核等待数据就绪并拷⻉到⽤户空间后才会递交信号通知⽤户进程。 IO操作是同步还是异步关键看数据在内核空间与⽤户空间的拷⻉过程数据读写的IO操作 总结在Redis里面采用了IO多路复用具体是epoll这种模式来实现。后面的信号IO 和 AIO虽然比较理想但是目前使用起来还有一些问题。
http://www.huolong8.cn/news/362736/

相关文章:

  • 如何恢复网站什么平台可以免费发广告
  • 网站空间pdf下载不了佳木斯城乡建设局官方网站
  • 网站建设可行性方案iis7 网站打不开
  • 该模板尚未授权此网站ps个人主页设计
  • 做网站前端和平面配合广州定制网站开发
  • 网站建设和咨询服务合同2022电商平台哪个值得做
  • 要怎么做网站推广梧州论坛最新主题
  • 永久免费网站搭建wordpress分类不显示文章
  • 公交公司网站建设的意义网站建设需要提供那些资料
  • 站长之家查询网怎么做vip网站
  • 远程教育网站建设怎样在手机上运行wordpress
  • 绍兴网站制作工具电子商城网站开发软件
  • 学校网站班级网页建设制度本标准在住房城乡建设部门户网站
  • 一站式网站建设杭州富阳建设局网站
  • 专业建站策划网站 设计 分辨率
  • 最好的网站建设机构网站后台都需要什么软件做
  • 响应式网站源码.net关于苏宁易购网站建设的不足之处
  • 网站导入链接网站 制作 报价
  • 高端网站制作网站建设移动端网站制作案例
  • 二手交易网站设计怎么做昆明网站建设培训班
  • 百度优化网站建设wordpress改图片地址
  • 作风建设 宣讲家网站设计公司官方网站
  • 北京兼职做网站推广网站建设合作协议
  • 北苑做网站的公司网站开发应用到的技术名词
  • 做暧暧前戏视频网站办公室网络设计方案
  • 个人网站论文摘要营业推广是什么
  • 59网一起做网站网页传奇哪个比较好玩
  • 公司网站后台如何上传视频做外贸是在什么网站
  • 二级网站内容建设要求吗在哪个网站做流动补胎的广告好
  • 做黑帽需不需要搭建网站供电局招聘2023社招