编辑
Computer Systems读书笔记(4)
本文访问次数:0
  1. 1. 打卡日期
  2. 2. 书籍链接
  3. 3. 书籍章节
  4. 4. 读书笔记
  5. 5. 进程
  6. 6. 线程
  7. 7. 虚拟内存
  8. 8. 文件

打卡日期

2016年10月26日,以下内容为Computer Systems的读书笔记之第4篇。

书籍链接

附上书籍链接:Computer Systems

书籍章节

第1.7.1章,16页-20页,本章介绍了操作系统如何管理计算机硬件和软件。

读书笔记

进程

进程(process)是操作系统对正在运行的程序的抽象,计算机之所以能“同时”运行多个进程(程序),是因为操作系统执行上下文切换(context switching)完成的。具体过程如下图所示

context-switching

线程

现代计算机系统中,一个进程通常包括若干个执行单元,叫做线程(thread)。进程中的线程共享当前上下文里的代码和数据。

虚拟内存

虚拟内存(Virtual Memory)使得进程认为它独自使用内存。Linux系统下,进程的虚拟内存区域如下图所示

virtual-memory

地址从底向上增加,分别为

  • 程序代码和数据(Program code and data)
    程序代码和数据区由可执行文件初始化,大小固定。
    一旦程序运行
  • 堆(Heap)
    通过调用C语言标准库中的mallocfree,堆的大小随之扩张和缩小。
  • 共享库(Shared libraries)
  • 栈(Stack)
    栈和堆的大小都是可以变化的,不同的是,它在调用用户方法的时候扩张,退出(return)用户方法的时候缩小。
  • 内核虚拟内存
    内核虚拟内存区域是操作系统常驻内存的区域,程序无法直接读写该区域或调用该区域的方法。

文件

一个文件就是字节的序列,不多不少。