书籍的简称:
CSPPSE: Computer System: a programmer's perspective Second Edition
进程(process)是操作系统对一个正在运行的程序的一种抽象。在一个系统上可以同时运行多个进程, 而每个进程都好像在独占的使用硬件。而并发运行, 则是说一个进程的指令和另一个进程的指令是交错运行的。 在大多数系统中, 需要运行的进程数是多于可运行他们的CPU个数的。传统系统在一个时刻只能执行一个程序, 而先进的多核处理器同时能执行多个程序。 无论是在单核还是多核系统中, 一个CPU看上去都像是在并发地执行多个程序, 这是他通过处理器在进程间切换来实现的。 操作系统实现这种交错执行的机制成为上下文切换。(CSPPSE P11)
独立(independent)进程, 一个进程如果不影响其他正在系统中运行的进程也不受其影响, 那么这个进程就是独立进程。 任何进程只要不与其他进程共享数据, 它就是独立进程。
合作(cooperating)进程, 一个进程如果影响其他正在系统中运行的进程或受其影响, 那么这个进程就是合作进程。 任何进程只要与其他进程共享数据, 它就是合作进程。
进程间通信IPC(Interprocess Communication)有两种模型: 共享内存(Shared-Memory)和信息传递(Message Passing)。 共享内存比信息传递快, 但是当系统中进程越来越多时, 信息传递对于系统IPC来说是一个更好的通信机制, 因为共享内存面临着缓存一致性问题, 需要通信的两个进程之间会建立一个共享的内存区域, 共享数据在若干个缓存中迁移时, 会引起缓冲区一致性问题。
生产者-消费者问题就可以利用共享内存实现。