《UNIX技术内幕》勘误及问题解答_26

简介: 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来释放它,那么就不会有内存泄漏。



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号店

目录
相关文章
|
Unix
和Steve之间的通信--RE: 关于《UNIX技术内幕》的勘误及遇到的问题_10
Steve,mtpi是一个汇编指令,用于在内核模式和用户模式之间传递数据。在第18页有描述From: quntmec@hotmail.comTo: qf.hao@hotmail.comSubject: RE: 关于《UNIX技术内幕》的勘误及遇到的问题_10Date: Sun, 20 Nov 2011 17:01:08 +0800 郝先生,mtpi函数的代码在哪一页?我重新翻阅了一下,除了在第140页处(最后一段)可以找到一点有关mtpi的说明外,我没有发现书里有mtpi的代码。
881 0
|
Unix
和Steve之间的通信--关于《UNIX技术内幕》的勘误及遇到的问题_3
From: quntmec@hotmail.comTo: qf.hao@hotmail.comSubject: 关于《UNIX技术内幕》的勘误及遇到的问题_3Date: Thu, 6 Oct 2011 19:24:10 +0800 郝先生,对于启动模块这一章...
771 0
|
Unix
和Steve之间的通信--RE: 关于《UNIX技术内幕》的勘误及遇到的问题_4
Steve,应该是第2中情况,u变量就是一个user结构体,并且该变量地址固定在0o140000处,其所占空间长度就是结构体的长度。至于为什么要固定地址是0o140000,因为它是第6号虚拟寄存器映射的。
774 0
|
Unix
《返璞归真--UNIX技术内幕》--第14章 多线程的实现
14.1  概述 现代操作系统引入了线程的概念。线程是CPU执行的最小单元,相对于进程而言,它具有轻捷、高效、开销小等优点。 14.2  线程和经典进程的比较 线程和经典进程的主要区别如下。
874 0
|
Unix
《返璞归真--UNIX技术内幕》-- 第11章 UNIX可执行文件
11.1  .out文件 本版UNIX的可执行文件是.out格式,如果你在UNIX下用gcc编译程序,它默认会生成一个名为“a.out”的可执行文件。
890 0
|
Unix
《UNIX技术内幕》--第3章 虚拟内存
Normal 0 false false false MicrosoftInternetExplorer4 /* Style Definitions */ table.
613 0
|
Unix C语言
《返璞归真--UNIX技术内幕》--第6章 中断处理过程
6.4  PDP 11/40的中断类型 系统中的中断主要有下面几种。 6.4.1  电传终端接口输入中断 电传终端接口用于链接PDP 11/40的总线和主要的输入、输出终端,当时该终端是电传打字机,这也是UNIX中用tty(teletypewriter)表示进程所使用的终端类型的原因,事实上电传接口还可以连接彩色显示器(CRT)等。
910 0
|
存储 缓存 Unix
《返璞归真--UNIX技术内幕》--第9章 字符设备驱动
本系统中的输入输出设备都是字符设备,它们包括:KL-11/DL-11A——电传串行接口、PC-11——纸带打孔机和LP-11——行打印机。其中KL-11用于连接终端(terminal),作为用户键盘输入和显示输出的交互接口。
952 0
|
Unix
《返璞归真--UNIX技术内幕》--源代码
本源代码经宁希波帮助整理,去除了''和'&'符号,在此表示诚挚的谢意!源码中除/usr/personal目录外,均由Bell Labs(贝尔实验室)开发。
693 0
|
6月前
|
Unix Shell Linux
在Unix/Linux操作系统中,Shell脚本广泛用于自动化任务
在Unix/Linux操作系统中,Shell脚本广泛用于自动化任务
69 2