Chinaunix首页 | 论坛 | 博客
  • 博客访问: 765430
  • 博文数量: 370
  • 博客积分: 2334
  • 博客等级: 大尉
  • 技术积分: 3222
  • 用 户 组: 普通用户
  • 注册时间: 2012-05-06 16:56
文章分类

全部博文(370)

文章存档

2013年(2)

2012年(368)

分类:

2012-06-09 12:44:32

原文地址:面试题 作者:flychenxu

1. 请描述进程和线程的差别。
(1)进程是程序的一次执行。线程可以理解为进程中执行的一段程序片段;
(2)进程间是独立的,这表现在内存空间,上下文环境,线程运行在进程空间内,且一个进程中可以运行多个线程,它们共享该进程的内存空间;
(3)一般来讲(不采用特殊技术),进程无法突破进程边界存取其他进程内的存储空间,而线程由于处于进程空间内,所以同一进程所产生的线程共享同一内存空间;
(4)同一进程的两段代码不能够同时执行,除非引入线程;
(5)线程是属于进程的,当进程退出时该进程所产生的线程都会内强制退出并清除,线程占用的资源要少于进程所占用的资源;
(6)进程和线程都可以拥有优先级。
 
2. 进程间的通信如何实现?
常用的通信方式有:信号,信号量,消息队列,管道,共享内存。
 
3. 在网络编程中设计并发服务器,使用多线程与多进程有什么区别?
用多进程时每个进程都有自己的地址空间,线程则共享地址空间,所有其他的区别都是因此而来:
(1)速度:线程产生的速度快,线程间的通信,切换快等,因为它们在同一个地址空间内
(2)资源利用率:线程的资源利用率比较好也是因为它们在同一个地址空间内
(3)同步问题:线程使用公共变量/内存时需要使用同步机制,还是因为它们在同一个地址空间内。
 
4. 进程进入等待状态有几种方式?
(1)CPU调度给优先级更高的线程,原先线程进入等待态;
(2)阻塞的线程获得资源或者信号,进入等待态;
(3)在时间片轮转的情况下,如果时间片到了,也将进入等待态。
阅读(403) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~