码迷,mamicode.com
首页 > 其他好文 > 详细

论事件驱动与异步IO

时间:2017-12-06 00:55:08      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:主程   color   异步io   不能   虚拟   实现   使用   线程   一个   

 通常我们写服务器模型,有以下几种模型:

  1. 每收到一个请求,创建一个新的进程,来处理该请求
  2. 每收到一个请求,创建一个新的线程,来处理该请求
  3. 每收到一个请求,放入到一个事件中,让主程序通过非阻塞I/0方式来处理请求

以上几种方式,各有千秋:

  第1种方式,由于创建新的进程开销比较大,所以会导致服务器性能比较低,但实现比较简单

  第2种方式,由于要涉及到线程的同步,有可能会面临死锁等问题

  第3种方式,在写应用程序代码时,逻辑比前面两种都复杂。

综合考虑因素,一般普遍认为第三种是大多数网络服务器采用的方式。

一、概念问题

  - 用户空间和内核空间
  - 进程切换
  - 进程的阻塞
  - 文件描述符
  - 缓存 I/O

1.1 用户空间和内核空间 

现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2的32次方)。操作系统的核心是内核,独立于普通的应用程序,可以访问受保护的内存空间,也有访问底层硬件设备的所有权限。为了保证用户进程不能直接操作内核(kernel),保证内核的安全,操心系统将虚拟空间划分为两部分,一部分为内核空间,一部分为用户空间。针对linux操作系统而言,将最高的1G字节(从虚拟地址0xC0000000到0xFFFFFFFF),供内核使用,称为内核空间,而将较低的3G字节(从虚拟地址0x00000000到0xBFFFFFFF),供各个进程使用,称为用户空间。

1.2

 

 

 

 

 

  

论事件驱动与异步IO

标签:主程   color   异步io   不能   虚拟   实现   使用   线程   一个   

原文地址:http://www.cnblogs.com/louhui/p/7990109.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!