并发程序是指可以被同时发起执行的程序
并行程序被设计成可以在并行的硬件上执行的并发程序。
并发程序代表了所有可以实现并发行为的程序,它是一个宽泛的概念,其中包含了并行程序。
inter-process communication(进程间通信)
go支持的IPC方法有管道、信号和socket.
进程:我们把一个程序的执行称为一个进程。(进程用于描述程序的执行过程)
进程是操作系统进行资源分配的一个基本单位。
进程使用fork(一个系统调用函数)可以创建若干个新的进程,前者称为后者的父进程,后者称为前者的子进程。每个子进程都是源自它的父进程的一个副本,它会获得父进程的数据段、堆和栈的副本,并与父进程共享代码段。
每一个副本都是独立的,子进程对属于它的副本的修改对其父进程和兄弟进程(同父进程)都是不可见的,反之亦然。全盘复制父进程的数据是一种相当低效的做法。linux系统内核使用写时复制(copy on write 简称COW)等技术来提高进程创建的效率。
通过go 标准库os可以查看当前进程的PID和PPID
pid := os.Getpid()
ppid := os.Getppid()
注:PID并不传达与进程有关的任何信息。它只是一个用了唯一标识进程的数字而已。
进程的属性信息只包含在内核中与PID对应的进程描述符里。
PPID体现了两个进程之间的亲缘关系。
进程的状态:
内存区域:操作系统在内存上划分一个范围,如下
32位计算机中可有效标识2^32个内存单元
64位计算机中可有效标识2^64个内存单元
TASK_SIZE是两个空间的分界线,其值由所在计算机的体系结构决定,虚拟内存的最大容量与实际的物理内存大小无关,内核和CPU会负责维护虚拟内存与物理内存之间的映射关系。
内核会为每个用户进程分配的是虚拟内存而不是物理内存。每个用户进程的虚拟内存互不可见。
内核把进程的虚拟内存划分为若干页page, 而物理内存单元的划分由CPU负责,一个物理内存单元称为一个页框 page frame.
原文:https://www.cnblogs.com/saryli/p/11641631.html