Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1690560
  • 博文数量: 76
  • 博客积分: 2175
  • 博客等级: 大尉
  • 技术积分: 2481
  • 用 户 组: 普通用户
  • 注册时间: 2010-04-20 20:49
个人简介

欢迎光临我的博客

文章分类

全部博文(76)

文章存档

2018年(4)

2017年(1)

2016年(2)

2015年(2)

2013年(5)

2012年(29)

2010年(33)

分类: AIX

2013-01-29 12:09:14




From: quntmec@hotmail.com
To: qf.hao@hotmail.com
Subject: 关于《UNIX技术内幕》的勘误及遇到的问题_26
Date: Sun, 26 Feb 2012 16:34:18 +0800

郝先生,

线程方面碰到的问题如下:

1、689页,倒数第2、3行,里面提到第14章所实现的线程在退出时只会将线程栈释放、而不会释放该线程所分配的堆空间,这是否会造成内存泄漏?
[郝]:如果用户线程在每次调用malloc后,都会调用free来释放它,那么就不会有内存泄漏。否则在线程退出后,这部分内存就不会被释放而导致内存泄漏,直到整个进程
退出为止,到这时进程所有使用的空间(程序、堆和栈)都会被释放,也就不会有内存泄漏了。

2、 关于线程的调度。我的理解是(不是指对第14章所实现的线程的理解),一般来说,系统调度的粒度是进程。先比较就绪进程的优先级,优先级最高的优先被选。 被选上的进程如果有多个进程,则选择优先级最高的线程执行。请问,第14章所实现的线程也是采用这种调度方式吗?我感觉书里应该是695页里提到过线程的 调度,但由于注释不是很多,不是很肯定.....(书里696页,上部的 do-while 循环,感觉“第14章所实现的线程”的系统调度的粒度是线程,也许是我理解错.....)
[郝]:是的。本书中的实现粒度是纯线程级的,和进程无关(唯一相关的就是:如果多个线程优先级相同,则优先调度本进程内线程)。
        你所讲的调度粒度是“进程+线程”,这是一种比较常 见的调度方式,比如Windows就采用这样的方式,还有其他一些UNIX系统。但linux实际上还是采用纯线程粒度的调度,因为linux系统中的线 程实际上是LWP(light weight process--轻量级进程)。应该说各有利弊吧。具体利弊要仔细研究了。

这两个问题都很好。可以展开讲很多。

勘误,无

Steve



《返璞归真--UNIX技术内幕》在全国各大书店及网城均有销售:
京东
亚马逊                          China pub
上学吧                          1号店

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