【深入理解计算机系统·笔记】计算机系统中的重要概念

上一篇笔记:【深入理解计算机系统·笔记】hello程序的执行流程

上一篇笔记提到,shell程序是如何调配硬件资源,实际上shell程序并没有直接与硬件打交道,与硬件直接交流的是我们耳熟能详的操作系统,shell仅仅是通过调用操作系统暴露出来的接口来使用各类硬件资源。

操作系统

在操作系统没有面世之前,每一个程序都需要实现对硬件资源的操作,后来人们发现,这样需要写很多重复的代码,效率非常低,并且不利于硬件的共享共用,于是操作系统就应运而生。《深入理解计算机系统》中描述操作系统有两个基本功能:(1)防止硬件被失控的应用程序滥用;(2)向应用程序提供简单一致的机制来控制复杂而又通常大不相同的低级硬件设备。操作系统通过几个基本的抽象概念(进程、虚拟内存和文件)来实现这两个基本功能,文件是对I/O设备的抽象表示,虚拟内存是对内存和磁盘I/O设备的抽象表示,进程则是对处理器、内存和I/O设备的抽象表示,这几个抽象概念的相互关系如下图:

 

进程

进程是操作系统对一个正在运行的程序的一种抽象,它是程序关于某数据集合上的一次运行活动,是操作系统进行资源分配和调度的基本单位。进程是一个动态的概念,是一个活动的实体。它不只是程序的代码,还包括当前的活动,通常是通过程序计数器的值和处理寄存器的内容来表示。

并发运行

并发运行是指一个进程的指令和另一个进程的指令交错的执行。操作系统实现这种交错执行的机制叫做上下文切换。跟踪进程运行情况的所有状态信息被称之为上下文,上下文切换时操作系统会保存当前进程的上下文、恢复新进程的上下文,然后将控制权交给新进程。

 

线程

一个进程通常由多个线程组成,每个线程都运行在进程的上下文中,共享同样的代码和全局数据。相比于进程,线程之间更容易共享数据,一般来说对资源的利用(包含硬件资源和时间资源)线程比进程更高效。

虚拟内存

虚拟内存是一个抽象的概念,它为每个进程提供一种假象,让每个进程感觉像是在独占的使用内存。每个进程看到的内存都是一致的,称为虚拟地址空间,虚拟地址空间的内容如下图,具体的内容及如何使用后续的笔记再详述:

 

文件

文件对于计算机来说就是一个字节序列,每个I/O设备,包括磁盘、键盘、显示器,甚至网络,都可以看成是文件,在Linux系统中特别明显。

抽象

抽象是学习计算机技术很重要的一个能力,在计算机学术中很多概念都是抽象出来的,计算机系统中的一个重大主题就是提供不同层次的抽象表示来隐藏实际现实的复杂性。下图示例计算机中一些重要的抽象概念:

 

发布了12 篇原创文章 · 获赞 26 · 访问量 3461

猜你喜欢

转载自blog.csdn.net/baidu_23747517/article/details/103114550
今日推荐