1、几种IO模型的原理
2、实现基于域名PC端和移动端

------------------------------------------------------------------------------------------------------------------

1 几种IO模型的原理

1.1 系统I/O模型

#调用者:应用程序进程
 被调用者:内核

#同步/异步
 同步:应用程序进程发起系统调用后,程序进程需要主动询问内核是否处理完成,未完成则一直询问
 异步:应用程序进程发起系统调用后,内核会通过通知机制告知程序进程是否处理完成,不需要程序进程一直询问

#阻塞/⾮阻塞
 阻塞:应用程序进程发起系统调用后,在内核返回处理结果之前,程序进程不能处理其他请求
 非阻塞:应用程序进程发起系统调用后,在内核返回处理结果之前,程序进程可以处理其他请求
 
-------------------------------------------------------------------

#系统I
/O模型: 1)同步阻塞:应用程序进程发起系统调用后,程序进程需要主动询问内核是否处理完成,未完成则一直询问;在内核返回处理结果之前,程序进程不能处理其他请求。 2)同步非阻塞:应用程序进程发起系统调用后,程序进程需要主动询问内核是否处理完成,未完成则一直询问;在内核返回处理结果之前,程序进程可以处理其他请求。 3)异步阻塞:应用程序进程发起系统调用后,内核会通过通知机制告知程序进程是否处理完成,不需要程序进程一直询问;在内核返回处理结果之前,程序进程不能处理其他请求。 4)异步非阻塞:应用程序进程发起系统调用后,内核会通过通知机制告知程序进程是否处理完成,不需要程序进程一直询问;在内核返回处理结果之前,程序进程可以处理其他请求。

1.2 网络I/O模型

1)同步阻塞型IO模型(blocking IO)
与系统I/O模型的同步阻塞型相同,整个过程处于阻塞状态。

2)同步⾮阻塞型I/O模型(nonblocking IO)
与系统I/O模型的同步非阻塞型相同,进行数据拷备时才处于阻塞状态,其余时间不阻塞。

3)IO多路复⽤型(IO multiplexing)
优点:单个进程可以处理多个网络连接的IO
应用程序进程调用select/poll/epoll函数,由函数不断轮询所负责的socket,当某个socket有数据到达后,由内核通知应用程序进程,应用程序再发起系统调用进行数据拷备,整个过程处于阻塞状态。
Apache prefork:相当于主进程+多进程/单线程+select模式
Apache work:相当于主进程+多进程/多线程+poll模式

4)信号驱动式IO(signal-driven IO)
应用程序进程调用信号处理函数,内核处理完成后通过信号通知机制返回结果,应用程序再发起系统调用进行数据拷备,进行数据拷备时才处于阻塞状态,其余时间不阻塞。
Apache event:相当于主进程+多进程/多线程+信号驱动模式

5)异步(⾮阻塞) IO(asynchronous IO)
与系统I/O模型的异步非阻塞型相同,整个过程处于非阻塞状态。
Nginx默认为此模式。

2 实现基于域名PC端和移动端

#yum安装nginx
# yum -y install nginx

#创建基于域名PC端配置文件
# cat /etc/nginx/conf.d/pc.conf 
server {
    server_name www.pc.com;
    location / {
        root /data/www/pc;
        access_log /data/www/pc/access.pc.log main;
    }
}

#创建基于域名移动端配置文件
# cat /etc/nginx/conf.d/mobile.conf
server {
    server_name www.mobile.com;
    location / {
        root /data/www/mobile;
        access_log /data/www/mobile/access.mobile.log main;
    }
}

#准备访问资源
# mkdir -p /data/www/pc /data/www/mobile 
# echo pc.html > /data/www/pc/index.html
# echo mobile.html > /data/www/mobile/index.html

#设置开机自启并立即启动服务
# systemctl enable --now nginx

#客户端访问测试
# tail -n1 /etc/hosts
10.0.0.27    www.pc.com www.mobile.com
# curl www.pc.com
pc.html
# curl www.mobile.com
mobile.html
posted on 2023-01-13 14:16  不期而至  阅读(54)  评论(0)    收藏  举报