和Steve之间的通信--RE: 关于《UNIX技术内幕》的勘误及遇到的问题_19

简介: From: quntmec@hotmail.comTo: qf.hao@hotmail.comSubject: 关于《UNIX技术内幕》的勘误及遇到的问题_19Date: Thu, 5 Jan 2012 14:31:49 +0800 郝先生,关于“进程交换过程“一章,我的疑问如下:1、420页最后一段起,到421页10.2节之间的内容,我的理解如下:对 于所有的进程,如果涉及进程的换入/换出,则需要换出的进程全部换出至一个特定的区域中。



From: quntmec@hotmail.com
To: qf.hao@hotmail.com
Subject: 关于《UNIX技术内幕》的勘误及遇到的问题_19
Date: Thu, 5 Jan 2012 14:31:49 +0800

郝先生,

关于“进程交换过程“一章,我的疑问如下:

1、420页最后一段起,到421页10.2节之间的内容,我的理解如下:

对 于所有的进程,如果涉及进程的换入/换出,则需要换出的进程全部换出至一个特定的区域中。对于该特定的区域,在本版的unix里,是以第4000扇区为起 始,大小为872个扇区(共计436KB)的一个区域,最多可容纳7个大小不超过64KB的进程映像的存放。该区域的空间使用情况由数组 swapmap[] 进行管理(如涉及空间分配,malloc(swapmap,大小等)。且,换出的进程只能存放在这个区域内,不能存放于磁盘上除该区域外的任何其他地方。

是这样吗?
[郝]:非常正确!
2、对于10.2.4节,我有如下2个疑问:

1) 在“调用实例“中,将要的子进程的数据区大小为10KB,而此时系统内存只有4KB,那当父进程要创建子进程时,为何不是先将父进程挂起(以等待系统空闲 内存超过10KB再唤醒它继续创建子进程),反而是将父进程的数据区复制至交换区(作为子进程的数据区)?是否目前的UNIX系统(采用SWAP的方式) 都还是采用该方法?
[郝]:是 的,依然是这样的方法。如果挂起父进程,那么结果就是调用fork的进程会被挂起,在内存不够的情况下。而这个在很多时候用户并不能接受,因为用户可以接 受fork返回失败信息或者其他,但不能够因为系统资源不够就把自己挂起来,这样它后续操作就没法进行,至少应该提供一个选项给用户来决定是否挂起。
而子进程可以被挂起,因为通常情况下用户不一定需要马上得到它的反馈。你认为呢?

我 的理解是:如果先挂起父进程,那当内存空闲空间超过10KB时(期间会有多次调度父进程,但都会因为malloc不成功而不能调度父进程),父进程会继续 创建子进程,对于数据区是将父进程的数据区复制给子进程,整个过程在内存中完成。而对于“书里的调用实例“,我感觉是父进程将整个子进程的创建在“磁盘 “上完成(而不是在内存中),它将子进程的数据区复制(或是“导出“)至交换区(磁盘上),当系统调度子进程时,可以直接进行进程换入。是这样吗?如果是 的话,除此之外,还有别的理由吗?
[郝]:是的。另外就是fork调用可以马上返回子进程ID。

2)426页,第4行,“50*2+1000*10*8/(1.4*1024)=(约等于)150ms“,能解释一下这个公式吗?里面的各个参数都是代表什么的呀?
[郝]:应该是8.5.2节,其实是数据写入时间=平均寻址时间*2 + 数据位数/数据传输率,为什么寻址时间*2后面也有解释,因为块连续而且是20个块,所以在不同的磁道上,这样就会有2次寻址。

此外,勘误如下:

421 5 1 “第4章中的main...”,应为 第5章。同样,倒数第2行的:“在第4章中...“应为第5章
423

倒数第1段,“在第4章...“,应为第5章。
[郝]:谢谢!

Steve



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

目录
相关文章
|
4月前
|
网络协议 Unix Go
Go unix domain socket通信
Go unix domain socket通信
|
Unix
和Steve之间的通信--关于《UNIX技术内幕》的勘误及遇到的问题_3
From: quntmec@hotmail.comTo: qf.hao@hotmail.comSubject: 关于《UNIX技术内幕》的勘误及遇到的问题_3Date: Thu, 6 Oct 2011 19:24:10 +0800 郝先生,对于启动模块这一章...
748 0
|
Unix
和Steve之间的通信--RE: 关于《UNIX技术内幕》的勘误及遇到的问题_4
Steve,应该是第2中情况,u变量就是一个user结构体,并且该变量地址固定在0o140000处,其所占空间长度就是结构体的长度。至于为什么要固定地址是0o140000,因为它是第6号虚拟寄存器映射的。
750 0
|
Unix
《返璞归真--UNIX技术内幕》--第14章 多线程的实现
14.1  概述 现代操作系统引入了线程的概念。线程是CPU执行的最小单元,相对于进程而言,它具有轻捷、高效、开销小等优点。 14.2  线程和经典进程的比较 线程和经典进程的主要区别如下。
846 0
|
Unix
《返璞归真--UNIX技术内幕》-- 第11章 UNIX可执行文件
11.1  .out文件 本版UNIX的可执行文件是.out格式,如果你在UNIX下用gcc编译程序,它默认会生成一个名为“a.out”的可执行文件。
838 0
|
存储 缓存 Unix
《返璞归真--UNIX技术内幕》--第9章 字符设备驱动
本系统中的输入输出设备都是字符设备,它们包括:KL-11/DL-11A——电传串行接口、PC-11——纸带打孔机和LP-11——行打印机。其中KL-11用于连接终端(terminal),作为用户键盘输入和显示输出的交互接口。
915 0
|
Unix
《返璞归真--UNIX技术内幕》--源代码
本源代码经宁希波帮助整理,去除了''和'&'符号,在此表示诚挚的谢意!源码中除/usr/personal目录外,均由Bell Labs(贝尔实验室)开发。
654 0
|
Unix
《UNIX技术内幕》--第3章 虚拟内存
Normal 0 false false false MicrosoftInternetExplorer4 /* Style Definitions */ table.
594 0
|
Unix C语言
《返璞归真--UNIX技术内幕》--第6章 中断处理过程
6.4  PDP 11/40的中断类型 系统中的中断主要有下面几种。 6.4.1  电传终端接口输入中断 电传终端接口用于链接PDP 11/40的总线和主要的输入、输出终端,当时该终端是电传打字机,这也是UNIX中用tty(teletypewriter)表示进程所使用的终端类型的原因,事实上电传接口还可以连接彩色显示器(CRT)等。
875 0
|
Unix Linux 调度
《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来释放它,那么就不会有内存泄漏。
917 0