#每日精进#2020年7月31日

【早读:《深入理解计算机系统》】

第一章 计算机系统漫游

进程

进程是操作系统对一个正在运行程序的一种抽象。一个系统上可以同时运行多个进程,每个进程都好像在独占的使用硬件,他们之间并发运行。

CPU并发执行进程,是通过处理器的进程间切换实现的。操作系统实现这种交错执行的机制称为上下文切换。

操作系统保持跟踪进程运行所需的所有状态信息,称为上下文。

进程的转换是由操作系统的内核来管理的。内核不是一个独立的进程,相反,它是系统管理全部进程所用的代码和数据结构的集合。

线程

现代系统中,一个进程实际上可以由多个称为线程的执行单元组成,每个线程运行在进程的上下文中,并共享同样的代码和全局数据。
线程之间相比进程之间,更容易共享数据,线程切换的代价更小。

虚拟内存

是一个抽象概念,每个进程看到的内存都是一致的,称为虚拟地址空间。

地址最上面是留给操作系统中的代码和数据的,所有进程都一样;底部区域存放用户进程定义的代码和数据。

WX20200731-082727@2x.png


每个进程看到的虚拟地址空间由大量准确定义的区构成,每个区有专门的功能,由低到高分别是:
  • 程序代码和数据:对所有进程来讲,代码是从同一个固定地址开始的,紧接着是和C全局变量相对应的数据位置;
  • 堆:运行时堆,可以通过像malloc和 free这样的标准库函数来在运行时进行动态地扩展和收缩;
  • 共享库:用来存放C标准库和数学库这样的共享库的代码和数据的区域。
  • 栈:用它来实现函数调用,和堆一样,用户栈可以在执行期间动态的扩展和收缩。每调用一个函数,栈会增长;一个函数返回时,栈会收缩;
  • 内核虚拟内存:为内核保留的,存放一些内核函数,必须由内核来执行这些操作。


虚拟内存的运作需要硬件和操作系统之间精密复杂的交互,包括对处理器生成的每个地址的硬件翻译。

文件
文件就是字节序列,仅此而已。计算机中的每一个设备都会被看成是文件。

0 个评论

要回复文章请先登录注册