- 进程
像一个最简单的 hello 程序在操作系统上运行时,操作系统会提供一种假象,就好像只有这样一个程序在运行,独占 CPU、主存和I/O设备。处理器看上去就好像不断地执行程序中的指令,即该程序的代码和数据在内存中是唯一的,这些假象就是进程的概念实现的,进程是计算机科学中最重要和最成功的概念之一。
- 进程是对一个正在运行的程序的抽象。
- 每个进程单独的占用硬件设备,但操作系统上好像都不止一个程序在运行,其实就是进程的指令在 CPU 上交错的执行,实现并发,这就是处理器在进程间的切换来实现的,称为上下文切换。
- 在任何一个时刻,单核处理器只能执行一个进程的代码,当操作系统决定要把控制权从当前进程转移到某个新进程时,就会进行上下文切换,即保存当前的上下文,回复新进程的上下文。
- 线程
一个进程实际上就是由多个称为线程的执行单元组成,每个线程都运行在进程的上下文中。并共享所有的代码和数据。
- 虚拟内存
虚拟内存是一个抽象的概念,是为进程提供的一个假象,即每个进程都单独地占用主存,每个进程看到的内存也都是一致的,称为虚拟地址空间。
- 程序和代码数据:对所有的进程来说,代码都是从固定地址开始,
- 堆:
- 栈:虚拟内存中的顶部是用户栈,编译器用来实现函数的调用,程序执行的期间可以动态的扩展和收缩,当我们调用一个函数时,栈就会增长,从一个函数返回时,栈就会收缩。
计算机中的抽象
- 文件是对 I/O 设备的抽象
- 虚拟内存是对程序存储器的抽象
- 进程是对一个正在运行的程序的抽象
(未完待续)