深入理解计算机系统读书笔记(1)漫游

通读深计第一章漫游 得出以下几条结论,概述之:

1.本书主要讲解计算机系统中的3个问题即,信息的表示、信息的存储、和信息的处理。

2.计算机系统中抽象概念的重要性,以及对抽象概念的诠释。

3.抽象原理的一个应用,指令集结构和微体系结构的关系。

4.指令执行模型:处理器从程序计数器指向的储存器处读取指令,解释指令中的位,执行该指令指示的简单操作,然后更新pc,使其指向下一条指令,而这一条指令并不一定与存储器中刚刚执行的指令相邻。

5.上面234总结的是信息的处理问题,下面从计算机语言角度描述信息的处理的层次如下图所示:

微体系结构(硬件布线逻辑是指令集结构的实现,现在还有一种叫微指令的方式完成和硬布线逻辑同样的功能,将逻辑信号存放在控制存储器中,具体内容在第四章讲解)
      |
      |
指令集结构 (表现形式为机器语言,具体内容在第三章讲解)
      |
      |
操作系统(连接硬件和上层编程语言,为编程语言提供操作硬件api)
      |
      |
汇编语言虚拟机()

看过不少计算机体系或系统的书,书中总喜欢将计算机系统分成多层结构,有同学会问,分那么多层麻烦不麻烦阿,是挺麻烦,不过是有这个必要的,计算机系统的发展正是朝着人的思维方式演变的,每一层的构建都是为了更加方便的与计算机交互来完成信息的处理。下面我们来看这样一个命题,来更好的理解这种交互。

Hi computer ,帮我找下 xx的电话号码(计算机将要处理的对象,信息),如果和一个人交流,那个人(正常人)会很清楚的明白你的意思,而且可能给你很多不同的答案,但对于计算机来说  恩 有些困难。让我们看看计算机在高级语言层次(已经很接近自然语言了,如java)计算机是怎么处理这条信息的。

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class PhoneNoFinder {

	private static Map<String, String> brain = new HashMap<String, String>();

	public void init() {
		brain.put("小红", "110");
		brain.put("小黑", "120");
		brain.put("小白", "130");
	}

	public String findNo(String phoneNoWoner) {
		String phoneNo = (String) brain.get(phoneNoWoner);
		return phoneNo;
	}

	public static void main(String[] args) {
		PhoneNoFinder phoneNoFinder = new PhoneNoFinder();
		phoneNoFinder.init();
		System.out.println("先生你好我是finder 很高兴为你服务!你要找谁的电话号码?");
		Scanner scanner = new Scanner(System.in);
		String phoneNoWoner = scanner.next();
		String phoneNo = phoneNoFinder.findNo(phoneNoWoner);
		if (phoneNo != null) {
			System.out.println(phoneNoWoner + "的号码是" + phoneNo);
		} else {
			System.out.println("先生,我记性不好没想起来。");
		}

	}
}

按照java等高级语言的面向对象思想,万物皆为对象。在能懂高级语言这一层次的机器(高级语言虚拟机),我们可以使用这种语法格式的语言同计算机交互。


你可能感兴趣的:(深入理解计算机系统读书笔记(1)漫游)