进程
- 程序存储在磁盘之中,需要加载内存才能执行,包含堆空间、栈空间、全局和静态变量数据、代码,具体执行效果如下所示:
- 所谓的进程概念就是操作系统为了执行某个程序为其分配的内存资源,该内存资源并不是连续的,操作系统会为其创建一个PCB1。就操作系统角度而言,进程是资源分配、保护和调度的基本单位。其实进程并不会指定占用哪个CPU,其并发执行的过程都是操作系统根据系统资源状态实现最优调度的。
- fork函数将程序的代码和数据完全拷贝一份,且进程之间的数据完全隔离。
- 进程之间的通信方式
a. 消息队列
b. 管道通信
c. 信号量semophore
d. 共享内存
c. 套接字(socket)
- 并发与并行
- 并发:多个进程共享同一个CPU,快速切换进程产生并行的错觉
- 并行:任意两个进程之间不共享同一个CPU
线程
- 线程是为了解决既有进程的数据共享难、通信代价高等问题,线程之间是堆、栈、代码共享,但是数据共享就需要用户进行较为精密的控制才能实现程序如期运行,线程是CPU分配的最小单位。
- 相比于进程,线程更加节省资源,自适应并发与并行。
为了提高内存利用率,操作系统利用PCB进程管理块,找到程序分散存储的内存资源,包括堆、栈、代码、数据。寻找内存资源:操作系统提供了两种管理内存的基本方式,段式存储和页式存储,采用不同的方法实现对应的逻辑地址到物理地址的映射。 ↩︎