Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3053
  • 博文数量: 3
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 30
  • 用 户 组: 普通用户
  • 注册时间: 2015-06-07 14:49
文章分类

全部博文(3)

文章存档

2015年(3)

我的朋友
最近访客

分类: LINUX

2015-06-29 21:33:33

1、Linux进程的实际用户ID和有效用户ID有什么区别?
实际用户ID:标识我是谁,及登陆用户的ID
有效用户ID:进程用来决定我们对文件的访问权限,及文件的所有者的

2、进程复制
一般来说,父进程调用fork创建子进程之后,子进程完全复制父进程的数据、堆、栈等空间;但在实现上,一般只有被修改的空间才会被复制

3、fork与vfork的区别
1)、fork复制父进程空间而vfork不完全复制
2)、vfork保证子进程先运行,等到子进程执行exec或者exit之后,才会执行父进程
3)、vfork创建的子进程是在父进程的地址空间中运行的,所以有可能改变与父进程共享的数据,比如文件的打开与关闭、临时变量等
因此,如果创建子进程是为了调用exec执行一个新的程序的时候,就应该使用vfork

4、exit与_exit的区别
_exit是系统调用,exit是_exit的封装;exit()函数与_exit()函数最大区别就在于exit()函数在调用exit系统之前要检查文件的打开情况,把文件缓冲区的内容写回文件

5、服务器框架:IO + 请求队列 + 逻辑单元 + 存储

6、IO模型
同步IO模型:IO的读写操作都是早IO事件发生之后又应用程序来完成读写,比如阻塞IO、IO复用以及信号驱动IO都是同步IO
异步IO模型:IO读写操作由内核完成,完成之后通知应用程序 (aio.h 目前Linux提供的AIO只能用于普通文件,不同用于socket)

简而言之,同步IO模型通知IO就绪事件,而异步IO模型通知IO完成事件

7、如果是计算密集型的程序并发并没有什么优势,只有在存在大量io、数据库操作等情况时并行具有很大的优势,原因是IO一般耗时比较大,串行导致大量阻塞

8、两种事件处理模式
半同步/半异步模式:同步线程用于处理业务逻辑;异步线程用于监听客户请求并封装请求为对象放入请求队列,并通知同步模式的工作线程处理请求,具体由哪个同步线程处理最简单的就是round robin轮询机制;或者加入过负荷机制,由比较空闲的同步线程来处理(每个工作线程也可以使用io复用机制管理多个连接)
缺点:请求队列需要加锁同步

领导者/追随者模式:线程池中一个为领导者,其余为追随者,领导者监听连接,请求达到时,先推举一个新的领导者,然后自己处理请求;新的领导者继续同样的逻辑
优点:无需加锁同步
缺点:每个线程只能处理一个请求,不能IO复用

9、高效的逻辑单元设计模式:有限状态机,一次交互存在多种状态的可以只用有限状态机模式

10、其他提高服务器性能的机制

池:内存池、线程池、连接池
数据复制:避免不必要的数据复制
上下文切换和锁:不应该使用过多的处理线程,减少锁,适当的地方使用读写锁降低开销




阅读(126) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~