前面学到 hello 执行需要借助键盘、磁盘、cpu、显示器等硬件设备,比如hello程序向显示器输出东西、shell从键盘读取输入,实际上,这些程序并没有直接访问硬件,而是借助操作系统(内心os:终于进入操作系统的内容了)。
操作系统通过几个抽象概念,方便用户控制各种复杂的硬件
- 进程
一个处理器能同时执行1个进程的代码,通过上下文切换来支持多个并发进程 - 线程:
一个线程中至少包含一个线程(这个不太理解,后面12章应该会细讲) - 虚拟内存
是对主存和IO设备的抽象,每个线程仿佛独自占用一个主存,这是因为他提供了一个虚拟内存空间,所以每个内存看到的内存都是一样的 - 文件
字节序列
0220 update 我对抽象概念的理解
所谓抽象概念,就是在现实里没有对应的实物硬件。- 一开始想当然的认为显示器桌面上的文件是真实存在的,现在一想,文件在哪里呢?磁盘里、内存里、显示器这些硬件里实际上并不是文件,有的只是一堆字节序列,是人类抽象的把序列分为一块一块的文件。
- 再比如进程,想当然的认为一个程序就是在一个进程里执行,实际上进程是啥、程序在哪里执行呢?并没有这个东西,它只是在执行一段程序时,cpu、内存、IO设备这些硬件共同运作构成的抽象,是它独占硬件的一个假象。
- 关于虚拟内存,我理解还不到位,表面来说,程序员存储一个数据到内存中,实际上并不是直接操作该数据到磁盘,而是告诉操作系统,我要存一个数据到0x333位置处,操作系统实际把它存到了磁盘的真实位置。
不太明白的地方: 线程和进程的区别;指令集并行;单指令多数据并行。这些暂时用不到吧。
好了,第一章告一段落