- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
高级操作系统第三次作业
为什么多线程的文件服务器的效率好于单进程文件服务器?
(1) 多线程并发内存消耗比较少
每个线程需要一个thread stack保存线程场景,thread stack一般只需要十几到几十KB内存,不像多进程,每个进程需要加载完整的应用环境,需要分配十几到上百MB内存。
线程可以共享资源,特别是可以共享整个应用环境,不必像多进程每个进程要加载应用环境。
(2) 多线程并发CPU消耗比较小
线程的场景切换开销小于进程的场景切换
(3) 很容易创建和高效利用共享资源
数据库线程池
字典表,进程内缓存......
(4) IO并发能力很高
Java VM可以轻松维护几百个并发线程的线程切换开销,远高于多进程单服务器上几十个并发的处理能力
可有效利用多核CPU,实现并行运算
设计一个并发服务器,它为每个到来的请求创建一个服务器进程。请分析这种设计与多线程服务器之间的利弊。
多进程并发服务器
在Linux环境下多进程的应用很多,其中最主要的就是网络/客户服务器。多进程服务器是当客户有请求时?,服务器用一个子进程来处理客户请求。父进程继续等待其它客户的请求。这种方法的优点是当客户有请求时?,服务器能及时处理客户?,特别是在客户服务器交互系统中。对于一个?TCP服务器,客户与服务器的连接可能并不马上关闭?,可能会等到客户提交某些数据后再关闭?,这段时间服务器端的进程会阻塞?,所以这时操作系统可能调度其它客户服务进程。比起循环服务器大大提高了服务性能。TCP多进程并发服务器TCP并发服务器的思想是每一个客户机的请求并不由服务器直接处理,而是由服务器创建一个子进程来处理。socket(...);
bind(...);
listen(...);
while(1){
???accpet(...);
???if(fork(...) == 0)???{
????process(...);
????close(...);
????exit(...);???}???close(...);}
多线程服务器是对多进程的服务器的改进?,由于多进程服务器在创建进程时要消耗较大的系统资源?,所以用线程来取代进程?,这样服务处理程序可以较快的创建。据统计?,创建线程与创建进程要快?10100?倍?,所以又把线程称为“轻量级”进程。线程与进程不同的是:一个进程内的所有线程共享相同的全局内存、全局变量等信息。这种机制又带来了同步问题。以下是多线程服务器模板:socket(...);
bind(...);
listen(...);
while(1){
???accpet(...);
???if((pthread_create(...))!==-1)???{
?????process(...);
?????close(...);
?????exit(...);???}???close(...);}
3*(选作)、在所有的处理器分配算法中,找四种算法进行比较(例如算法复杂度,开销等等),并举例说明该算法可以应用在何种环境中。
(1) 先来先服务调度算法(FCFS):每次调度是从就绪队列中,选择一个最先进入就绪队列的进程,把处理器分配给该进程,使之得到执行。该进程一旦占有了处理器,它就一直运行下去,直到该进程完成或因发生事件而阻塞,才退出处理器。特点:利于长进程,而不利于短进程。?
(2) ?短进程(作业)优先调度算法(SPF):它是从就绪队列中选择一个估计运行时间最短的进程,将处理器分配给该进程,使之占有处理器并执行,直到该进程完成或因发生事件而阻塞,然后退出处理器,再重新调度。?
(3) 时间片轮转调度算法?:系统将所有的就绪进程按进入就绪队列的先后次序排列。每次调度时把CPU分配给队首进程,让其执行一个时间片,当时间片用完,由计时器发出时钟中断,调度程序则暂停该进程的执行,使其退出处理器,并将它送到就绪队列的末尾,等待下一轮调度执行。?
(4) 响应比高者优先调度算法:它是从就绪队列中选择一个响应比最高的进程,让其获得处理器执行,直到该进程完成或因等待事件而退出处理器为止。特点:既照顾了短进程,又考虑了进程到达的先后次序,也不会使长进程长期得不到服务,因此是一个比较全面考虑的算法,但每次进行调度时,都需要对各个进程计算响应比。所以系统开销很大,比较复杂。
文档评论(0)