计算机系统:集成方法(英文版)
基本信息
- 原书名: Computer Systems: An Integrated Approach to Architecture and Operating Systems
- 原出版社: Addison Wesley
- 作者: (美)Umakishore Ramachandran William D. Leahy, Jr. [作译者介绍]
- 丛书名: 经典原版书库
- 出版社:机械工业出版社
- ISBN:9787111319559
- 上架时间:2010-11-17
- 出版日期:2010 年11月
- 开本:32开
- 页码:741
- 版次:1-1
- 所属分类:
计算机 > 计算机科学理论与基础知识 > 综合
编辑推荐
《计算机系统·集成方法(英文版)》特色:采用启发式教学方法,以问题驱动,激发读者的学习兴趣;逐步探索,揭开计算机系统的神秘面纱。以丰富的实例阐明相关概念及问题,加深读者对所学知识的理解。提供了丰富的历史背景知识。并就某些问题探讨了其未来发展趋势.便于读者融会贯通。每章末都给出了练习题和延伸阅读建议,帮助读者掌握所学知识。
内容简介回到顶部↑
作译者回到顶部↑
本书提供作译者介绍
作者:(美国)拉姆阿堪德兰(Umakishore Ramachandran) (美国)利海(William D.Leahy.Jr.)
Umakishore Ramachandran,1986年获得威斯康星大学麦迪逊分校计算机科学专业博士学位.现在是佐治亚理工学院计算机系教授,STAR Center&Korean Programs中心主任.其主要研究兴趣是体系结构设计、程序设计和并行分布式系统分析。他曾获得NSF授予的美国总统青年科学家奖、佐治亚理工学院优秀博士论文指导奖等。
William D.Leahy,Jr.现为佐治亚理工学院计算机系讲师。
.. << 查看详细
目录回到顶部↑
preface v
chapter 1 introduction 1
1.1 what is inside a box? 2
1.2 levels of abstraction in a computer system 2
1.3 the role of the operating system 5
1.4 what is happening inside the box? 8
1.4.1 launching an application on the computer 10
1.5 evolution of computer hardware 11
1.6 evolution of operating systems 13
1.7 roadmap of the rest of the book 14
exercises 14
bibliographic notes and further reading 15
chapter 2 processor architecture 18
2.1 what is involved in processor design
2.2 how do we design an instruction set? 20
2.3 a common high-level language feature set 21
2.4 expressions and assignment statements 21
2.4.1 where to keep the operands? 22
2.4.2 how do we specify a memory address in an instruction? 26
2.4.3 how wide should each operand be? 27
chapter 1 introduction 1
1.1 what is inside a box? 2
1.2 levels of abstraction in a computer system 2
1.3 the role of the operating system 5
1.4 what is happening inside the box? 8
1.4.1 launching an application on the computer 10
1.5 evolution of computer hardware 11
1.6 evolution of operating systems 13
1.7 roadmap of the rest of the book 14
exercises 14
bibliographic notes and further reading 15
chapter 2 processor architecture 18
2.1 what is involved in processor design
2.2 how do we design an instruction set? 20
2.3 a common high-level language feature set 21
2.4 expressions and assignment statements 21
2.4.1 where to keep the operands? 22
2.4.2 how do we specify a memory address in an instruction? 26
2.4.3 how wide should each operand be? 27
前言回到顶部↑
Why a New Book on Computer Systems?
There is excitement when you talk to high school students about computers. There is a sense of mystery as to what is "inside the box" that makes the computer do such things as play video games with cool graphics, play music be it rap or symphony--send instant messages to friends, and so on. The purpose behind this textbook is to take the journey together to discover the mystery of what is inside the box. As a glimpse of what is to come, let us say at the outset that what makes the box interesting is not just the hardware, but also how the hardware and the system software work in tandem to make it all happen. Therefore, the path we take in this book is to look at hardware and software together to see how one helps the other and how together they make the box interesting and useful. We call this approach "unraveling the box"---that is, resoMng the mystery of what is inside the box: We look inside the box and understand how to design the key hardware elements (processor, memory, and peripheral controllers) and the OS abstractions needed to manage all the hardware resources inside a computer, including processor, memory, I/O and disk, multiple processors, and network. Hence, this is a textbook for a first course m computer systems embodying a novel integrated approach to these topics.
The book is intended to give the breadth of knowledge in these topics at an early stage in a student's undergraduate career (in computer science or computer engineering). This text serves the need for teaching a course in an integrated fashion so that students can see the connection between the architecture and the system software. The material may be taught as a four-credit semester course, as a five-credit quarter course, or as a two-quarter three-credit course sequence. A course based on this textbook would serve well to prepare a student for more in-depth senior-level or graduate-level courses that go deeper into computer architecture, operating systems, and networking, to cater to specialization in those areas. Further, such a course kindles interest in systems early that can be capitalized on to involve students in undergraduate research:
Key features of the book (in addition to processor and memory systems) include the following:
1. a detailed treatment of storage systems;
2. an elaborate chapter devoted to networking issues; and
3. an elaborate chapter devoted to multiprocessing and multithreaded programming.
Pedagogical Style
The pedagogical style taken in the book is one of "discovery" as opposed to "instruction" or "indoctrination." Further, the presentation of a topic is "top down" in the sense that the reader is first exposed to the problem we are trying to solve and then initiated into the solution approach. Take, for example, memory management (Chapter 8). We first start with the question, "What is memory maraagement?" Once the need for memory management is understood, we start identifying software techniques for memory management and the corresponding hardware support nee&& Thus, the textbook almost takes a storytelling approach to presenting concepts, which students seem to love. Where appropriate, we have included worked-out examples of problems in the different chapters in order to elucidate a point.
Our tbcus in writing the textbook has always been on the students. One can see this commitment to students in the number of worked-out examples in the textbook that help solidify the concepts that were just discussed. In our experience as educators, we have seen that students really appreciate getting a historical context (names of famous computer scientists and organizations that have been instrumental in the evolution of computing) to where we are today and how we got here. We sprinkle such historical nuggets throughout thc textbook. Additionally, we include a section on historical perspectwe in several chapters where it makes sense. Another thing that we learned and incorporated from listening to students is giving references to external work to amplify a point in context, rather than as an afterthought. One can see this in the number of footnotes throughout the textbook. Additionally, we also give bibliographic notes and pointers to further reading at the end of each chapter in a section devoted to external references (textbooks and seminal work) that may or may not be directly cited in the text, but should be useful to increasing the students' knowledge base. Today, with the abundance of information via the Intemet, it is often tempting to point to URLs for additional information. However, we have desisted from this temptation (except for the inclusion of reliable links published by authoritative sources). Having said that, we knowthat students of this generation will go to the web first, before they go to the library, and of course, they should. In this context, we would like to share a note of caution to the students: Be judicious in your use of the Intemet as a resource for information. Often, a Google search may be the quickest way to get information that you are seeking. However, you have to sift the information to ensure its veracity. As a rule of thumb, use the information from the web to answer curiosity questions or gossip. (How' did DEC go out of business? Why did Linux succeed while Unix BSD did not? What is the history of thO. Burroughs corporation? Who are the real pioneers in computer systems?) For technical references (What is the pipeline structure of the Pentium 4? What is the instruction-set architecture of the VAX 11/7807), seek out published books and refereed conference and journal papers (many of which are available online, of course).
Incidentally, this textbook grew out of teaching such an integrated course, every semester from the fall of 1999, in the College of Computing at Georgia Institute of Technology In the beginning, the authors developed a comprehensive set of notes and slides for the course and used two standard textbooks (one for architecture and one for operating systems) as background reference matenal for the students to supplement the course material. In the spring of 2005, we turned our courseware into a manuscript for a textbook, because the students continually communicated to us a need for a textbook that matched the style and contents of our course. An online version of this textbook has been in use at Georgia Tech since the spring of 2005 for this course that presents an integrated introduction to systems. The course is offered three times ever)., year (including summers), with over 80 students taking the course every semester. Thus. the manuscript has received continuous feedback and improvement from students taking the course, for over 15 consecutive semesters, before going to print.
In designing the course from which this book was bom, as well as in writing the book, we have learned a lot h-om the way a first (:ourse in systems is taught at other institutions, and from a number of excellent textbooks. For example, the first course m systems taught at MIT1 has a long history and tradition, and is truly one of a kind. The book [Saltzer, 2009] that grew out of that course is a great resource for students aspiclng to specialize in computer systems, in writing our book, we will freely admit that we nave been inspired by the pedagogical styles of [Ward, 19891 and i Kurose, 20061.
The Structure of the Book and Possible Pathways Through the Book
The intellectual content of the book is broken up into fiw' modules. The roadmal) that follows suggests a possible pathway through the material. The pathway assumes a roughly equal coverage of the architecture and operating systems topics.
1. Processor: The first module deals with the processor, and software, issues associated with the processor. We start by discovenng how to design the brain inside the box2, the processor. What are the software issues? Since computers are programmed, tot the most part, in high-level language, we consider the influence of high-level language (t-ILL) constructs on the instruction set of the processor (Clxapter 2). Once we understand the de-sign of the instruction set, we fbcus on the hardware issue of implementing the processor. We start with a simple implementation of the processor (Chapter 3), and then go on to con_sider a performance-conscious implementation with the use of pipelining techniques (Chapter 5). The processor is a precious resom'ce that has to be multiplexed among several competing programs that may need to run on it, as illustrated by the video-game example in Chapter 1 (see Section 1.3). It is the OS's responsibility to use this resomce well The module concludes with OS algorithms for processor scheduling (Chapter 6).
We expect each of Chapters 2, 3, 5, and 6 to require three hours of classroom instruction, with an hour of recitation help for each chapter.
2. Memory System: The second module deals with memory systems and memory hierarehies. A computer program comprises code and data, and therefore needs space in which to reside. The memory system of a computer is perhaps the most crucial factor in determining its performance. The processor speed (measured in gigahertz these days) may mean nothing if the memory system does not match that speed by providing, in a timely manner, the code and data necessary for executing a program. Whereas the size of memory systems is growing by leaps and bounds, thanks to advances in technology, applications' appetite for using memory is growing equally fast, if not faster. Thus, memory also is a precious resource, and it is the responsibility of the OS to manage this resource well. The first part of this module concerns the OS algorithms for efficient management of memory and the architectural assists for supportmg it (Chapters 7 and 8); the second part deals with the memory hierarchies that help to reduce the latency seen by the processor when accessing code and data (Chapter 9).
We expect each of Chapters 7, 8, and 9 to require three hours of classroom instruction, with an hour of recitation help for each chapter.
3.Storage System: The third module deals with the I/O (particularly, stable storage) and the file system. What makes the computer useful and interesting is being able to interact with it. First, we deal with hardware mechanisms for grabbing the attention of the processor away from the currently executing program (Chapter 4). These mechanisms deal with both external events and internal exceptions encountered by the processor during program execution. Associated with the hardware mechanisms are software issues that address "discontinuities" in the normal program execution, which include remembenng our location in the original program and the current state of the program execution. Next, we delve into the mechanisms for interfacing the processor to I/O devices and the corresponding low-level software issues such as device drivers (Chapter 10), with a special emphasis on the disk subsystem. This is followed by a comprehensive treatment of the file system (Chapters 11) built on stable storage such as the disk.
We expect each of Chapters 4 and 10 to require three hours of classroom in struction and an hour each of recitation help; Chapter 11 should require slx hours of classroom instruction and two hours of recitation help.
There is excitement when you talk to high school students about computers. There is a sense of mystery as to what is "inside the box" that makes the computer do such things as play video games with cool graphics, play music be it rap or symphony--send instant messages to friends, and so on. The purpose behind this textbook is to take the journey together to discover the mystery of what is inside the box. As a glimpse of what is to come, let us say at the outset that what makes the box interesting is not just the hardware, but also how the hardware and the system software work in tandem to make it all happen. Therefore, the path we take in this book is to look at hardware and software together to see how one helps the other and how together they make the box interesting and useful. We call this approach "unraveling the box"---that is, resoMng the mystery of what is inside the box: We look inside the box and understand how to design the key hardware elements (processor, memory, and peripheral controllers) and the OS abstractions needed to manage all the hardware resources inside a computer, including processor, memory, I/O and disk, multiple processors, and network. Hence, this is a textbook for a first course m computer systems embodying a novel integrated approach to these topics.
The book is intended to give the breadth of knowledge in these topics at an early stage in a student's undergraduate career (in computer science or computer engineering). This text serves the need for teaching a course in an integrated fashion so that students can see the connection between the architecture and the system software. The material may be taught as a four-credit semester course, as a five-credit quarter course, or as a two-quarter three-credit course sequence. A course based on this textbook would serve well to prepare a student for more in-depth senior-level or graduate-level courses that go deeper into computer architecture, operating systems, and networking, to cater to specialization in those areas. Further, such a course kindles interest in systems early that can be capitalized on to involve students in undergraduate research:
Key features of the book (in addition to processor and memory systems) include the following:
1. a detailed treatment of storage systems;
2. an elaborate chapter devoted to networking issues; and
3. an elaborate chapter devoted to multiprocessing and multithreaded programming.
Pedagogical Style
The pedagogical style taken in the book is one of "discovery" as opposed to "instruction" or "indoctrination." Further, the presentation of a topic is "top down" in the sense that the reader is first exposed to the problem we are trying to solve and then initiated into the solution approach. Take, for example, memory management (Chapter 8). We first start with the question, "What is memory maraagement?" Once the need for memory management is understood, we start identifying software techniques for memory management and the corresponding hardware support nee&& Thus, the textbook almost takes a storytelling approach to presenting concepts, which students seem to love. Where appropriate, we have included worked-out examples of problems in the different chapters in order to elucidate a point.
Our tbcus in writing the textbook has always been on the students. One can see this commitment to students in the number of worked-out examples in the textbook that help solidify the concepts that were just discussed. In our experience as educators, we have seen that students really appreciate getting a historical context (names of famous computer scientists and organizations that have been instrumental in the evolution of computing) to where we are today and how we got here. We sprinkle such historical nuggets throughout thc textbook. Additionally, we include a section on historical perspectwe in several chapters where it makes sense. Another thing that we learned and incorporated from listening to students is giving references to external work to amplify a point in context, rather than as an afterthought. One can see this in the number of footnotes throughout the textbook. Additionally, we also give bibliographic notes and pointers to further reading at the end of each chapter in a section devoted to external references (textbooks and seminal work) that may or may not be directly cited in the text, but should be useful to increasing the students' knowledge base. Today, with the abundance of information via the Intemet, it is often tempting to point to URLs for additional information. However, we have desisted from this temptation (except for the inclusion of reliable links published by authoritative sources). Having said that, we knowthat students of this generation will go to the web first, before they go to the library, and of course, they should. In this context, we would like to share a note of caution to the students: Be judicious in your use of the Intemet as a resource for information. Often, a Google search may be the quickest way to get information that you are seeking. However, you have to sift the information to ensure its veracity. As a rule of thumb, use the information from the web to answer curiosity questions or gossip. (How' did DEC go out of business? Why did Linux succeed while Unix BSD did not? What is the history of thO. Burroughs corporation? Who are the real pioneers in computer systems?) For technical references (What is the pipeline structure of the Pentium 4? What is the instruction-set architecture of the VAX 11/7807), seek out published books and refereed conference and journal papers (many of which are available online, of course).
Incidentally, this textbook grew out of teaching such an integrated course, every semester from the fall of 1999, in the College of Computing at Georgia Institute of Technology In the beginning, the authors developed a comprehensive set of notes and slides for the course and used two standard textbooks (one for architecture and one for operating systems) as background reference matenal for the students to supplement the course material. In the spring of 2005, we turned our courseware into a manuscript for a textbook, because the students continually communicated to us a need for a textbook that matched the style and contents of our course. An online version of this textbook has been in use at Georgia Tech since the spring of 2005 for this course that presents an integrated introduction to systems. The course is offered three times ever)., year (including summers), with over 80 students taking the course every semester. Thus. the manuscript has received continuous feedback and improvement from students taking the course, for over 15 consecutive semesters, before going to print.
In designing the course from which this book was bom, as well as in writing the book, we have learned a lot h-om the way a first (:ourse in systems is taught at other institutions, and from a number of excellent textbooks. For example, the first course m systems taught at MIT1 has a long history and tradition, and is truly one of a kind. The book [Saltzer, 2009] that grew out of that course is a great resource for students aspiclng to specialize in computer systems, in writing our book, we will freely admit that we nave been inspired by the pedagogical styles of [Ward, 19891 and i Kurose, 20061.
The Structure of the Book and Possible Pathways Through the Book
The intellectual content of the book is broken up into fiw' modules. The roadmal) that follows suggests a possible pathway through the material. The pathway assumes a roughly equal coverage of the architecture and operating systems topics.
1. Processor: The first module deals with the processor, and software, issues associated with the processor. We start by discovenng how to design the brain inside the box2, the processor. What are the software issues? Since computers are programmed, tot the most part, in high-level language, we consider the influence of high-level language (t-ILL) constructs on the instruction set of the processor (Clxapter 2). Once we understand the de-sign of the instruction set, we fbcus on the hardware issue of implementing the processor. We start with a simple implementation of the processor (Chapter 3), and then go on to con_sider a performance-conscious implementation with the use of pipelining techniques (Chapter 5). The processor is a precious resom'ce that has to be multiplexed among several competing programs that may need to run on it, as illustrated by the video-game example in Chapter 1 (see Section 1.3). It is the OS's responsibility to use this resomce well The module concludes with OS algorithms for processor scheduling (Chapter 6).
We expect each of Chapters 2, 3, 5, and 6 to require three hours of classroom instruction, with an hour of recitation help for each chapter.
2. Memory System: The second module deals with memory systems and memory hierarehies. A computer program comprises code and data, and therefore needs space in which to reside. The memory system of a computer is perhaps the most crucial factor in determining its performance. The processor speed (measured in gigahertz these days) may mean nothing if the memory system does not match that speed by providing, in a timely manner, the code and data necessary for executing a program. Whereas the size of memory systems is growing by leaps and bounds, thanks to advances in technology, applications' appetite for using memory is growing equally fast, if not faster. Thus, memory also is a precious resource, and it is the responsibility of the OS to manage this resource well. The first part of this module concerns the OS algorithms for efficient management of memory and the architectural assists for supportmg it (Chapters 7 and 8); the second part deals with the memory hierarchies that help to reduce the latency seen by the processor when accessing code and data (Chapter 9).
We expect each of Chapters 7, 8, and 9 to require three hours of classroom instruction, with an hour of recitation help for each chapter.
3.Storage System: The third module deals with the I/O (particularly, stable storage) and the file system. What makes the computer useful and interesting is being able to interact with it. First, we deal with hardware mechanisms for grabbing the attention of the processor away from the currently executing program (Chapter 4). These mechanisms deal with both external events and internal exceptions encountered by the processor during program execution. Associated with the hardware mechanisms are software issues that address "discontinuities" in the normal program execution, which include remembenng our location in the original program and the current state of the program execution. Next, we delve into the mechanisms for interfacing the processor to I/O devices and the corresponding low-level software issues such as device drivers (Chapter 10), with a special emphasis on the disk subsystem. This is followed by a comprehensive treatment of the file system (Chapters 11) built on stable storage such as the disk.
We expect each of Chapters 4 and 10 to require three hours of classroom in struction and an hour each of recitation help; Chapter 11 should require slx hours of classroom instruction and two hours of recitation help.
序言回到顶部↑
文艺复兴以降,源远流长的科学精神和逐步形成的学术规范,使西方国家在自然科学的各个领域取得了垄断性的优势;也正是这样的传统,使美国在信息技术发展的六十多年间名家辈出、独领风骚。在商业化的进程中,美国的产业界与教育界越来越紧密地结合,计算机学科中的许多泰山北斗同时身处科研和教学的最前线,由此而产生的经典科学著作,不仅擘划了研究的范畴,还揭示了学术的源变,既遵循学术规范,又自有学者个性,其价值并不会因年月的流逝而减退。
近年,在全球信息化大潮的推动下,我国的计算机产业发展迅猛,对专业人才的需求日益迫切。这对计算机教育界和出版界都既是机遇,也是挑战;而专业教材的建设在教育战略上显得举足轻重。在我国信息技术发展时间较短的现状下,美国等发达国家在其计算机科学发展的几十年间积淀和发展的经典教材仍有许多值得借鉴之处。因此,引进一批国外优秀计算机教材将对我国计算机教育事业的发展起到积极的推动作用,也是与世界接轨、建设真正的世界一流大学的必由之路。
机械工业出版社华章公司较早意识到“出版要为教育服务”。自1998年开始,我们就将工作重点放在了遴选、移译国外优秀教材上。经过多年的不懈努力,我们与Pearson,McGrawHill,Elsevier,MIT,John Wiley & Sons,Cengage等世界著名出版公司建立了良好的合作关系,从他们现有的数百种教材中甄选出Andrew S. Tanenbaum,Bjarne Stroustrup,Brain W. Kernighan,Dennis Ritchie,Jim Gray,Afred V. Aho,John E. Hopcroft,Jeffrey D. Ullman,Abraham Silberschatz,William Stallings,Donald E. Knuth,John L. Hennessy,Larry L. Peterson等大师名家的一批经典作品,以“计算机科学丛书”为总称出版,供读者学习、研究及珍藏。大理石纹理的封面,也正体现了这套丛书的品位和格调。
“计算机科学丛书”的出版工作得到了国内外学者的鼎力襄助,国内的专家不仅提供了中肯的选题指导,还不辞劳苦地担任了翻译和审校的工作;而原书的作者也相当关注其作品在中国的传播,有的还专程为其书的中译本作序。迄今,“计算机科学丛书”已经出版了近两百个品种,这些书籍在读者中树立了良好的口碑,并被许多高校采用为正式教材和参考书籍。其影印版“经典原版书库”作为姊妹篇也被越来越多实施双语教学的学校所采用。
权威的作者、经典的教材、一流的译者、严格的审校、精细的编辑,这些因素使我们的图书有了质量的保证。随着计算机科学与技术专业学科建设的不断完善和教材改革的逐渐深化,教育界对国外计算机教材的需求和应用都将步入一个新的阶段,我们的目标是尽善尽美,而反馈的意见正是我们达到这一终极目标的重要帮助。
近年,在全球信息化大潮的推动下,我国的计算机产业发展迅猛,对专业人才的需求日益迫切。这对计算机教育界和出版界都既是机遇,也是挑战;而专业教材的建设在教育战略上显得举足轻重。在我国信息技术发展时间较短的现状下,美国等发达国家在其计算机科学发展的几十年间积淀和发展的经典教材仍有许多值得借鉴之处。因此,引进一批国外优秀计算机教材将对我国计算机教育事业的发展起到积极的推动作用,也是与世界接轨、建设真正的世界一流大学的必由之路。
机械工业出版社华章公司较早意识到“出版要为教育服务”。自1998年开始,我们就将工作重点放在了遴选、移译国外优秀教材上。经过多年的不懈努力,我们与Pearson,McGrawHill,Elsevier,MIT,John Wiley & Sons,Cengage等世界著名出版公司建立了良好的合作关系,从他们现有的数百种教材中甄选出Andrew S. Tanenbaum,Bjarne Stroustrup,Brain W. Kernighan,Dennis Ritchie,Jim Gray,Afred V. Aho,John E. Hopcroft,Jeffrey D. Ullman,Abraham Silberschatz,William Stallings,Donald E. Knuth,John L. Hennessy,Larry L. Peterson等大师名家的一批经典作品,以“计算机科学丛书”为总称出版,供读者学习、研究及珍藏。大理石纹理的封面,也正体现了这套丛书的品位和格调。
“计算机科学丛书”的出版工作得到了国内外学者的鼎力襄助,国内的专家不仅提供了中肯的选题指导,还不辞劳苦地担任了翻译和审校的工作;而原书的作者也相当关注其作品在中国的传播,有的还专程为其书的中译本作序。迄今,“计算机科学丛书”已经出版了近两百个品种,这些书籍在读者中树立了良好的口碑,并被许多高校采用为正式教材和参考书籍。其影印版“经典原版书库”作为姊妹篇也被越来越多实施双语教学的学校所采用。
权威的作者、经典的教材、一流的译者、严格的审校、精细的编辑,这些因素使我们的图书有了质量的保证。随着计算机科学与技术专业学科建设的不断完善和教材改革的逐渐深化,教育界对国外计算机教材的需求和应用都将步入一个新的阶段,我们的目标是尽善尽美,而反馈的意见正是我们达到这一终极目标的重要帮助。
【插图】







点击看大图

加载中...

