一 进程与线程
操作系统是包含多个进程的容器,而每个进程又都是容纳多个线程的容器。
进程和线程的不同:
- 起源不同,先有进程后有线程,为了提高CPU的利用率才诞生了多线程。
- 概念不同,进程是具有独立功能的程序,是一个运行起来的实例,是系统分配和调动资源的一个独立单位。线程是CPU的基本调度单位。
- 内存共享方式上不同,对于进程而言,不同的进程之间,操作系统都会配分一定的内存,内存通常是不共享的。线程与线程之间内存共享要容易得多,因为这些线程本身可能就服务于同一个线程。
- 拥有的资源不同,线程拥有的资源少于进程。
- 数量不同,一个进程至少拥有一个线程,可能包含多个线程,甚至几百个。
- 开销不同:
- 线程的创建、终止时间比进程短;
- 同一进程内的线程切换时间比进程切换短;
- 同一进程的各个线程间共享内存和文件资源,可以不通过内核进行通信。
线程共享的内容包括:
1)进程代码段;
2)进程的共有数据(利用这些共享的数据,线程很容易实现相互的通讯);
3)进程打开的文件描述符;
4)信号的处理器;
5)进程的当前目录;
6)进程用户ID与进程组ID。
线程独有的内容包括:1.线程ID;2.寄存器组的值;3.线程的堆栈;4.错误返回码;5.线程的信号屏蔽码。
多线程概念:如果一个程序允许两个或以上的线程,那么它就是多线程程序。多线程是指在单个进程中运行多个线程。
二 并行与并发
并发:有两种概念。
1)形容多个任务的执行状态,两个或多个任务可以在重叠时间段启动、运行和完成。
2)对“并发性”的简称。
并发:并不一定意味着并发一定要求并行。在同一时刻只能有一条指令执行,但多个进程指令被快速的轮换执行,使得在宏观上具有多个进程同时执行的效果,但在微观上并不是同时执行的,只是把时间分成若干段,使多个进程快速交替的执行。
并行:在同一个时刻,真正的同时运行,有多个任务同时执行。例如在多核处理器上,有两个线程同时执行同一段代码。单核处理器无法实现并行。
三 高并发
高并发
概念:大量请求同时到达服务端。高并发是一种状态,高并发不意味着多线程,比如Redis的底层就是单线程处理的。
高并发指标:
- QPS(Queries Per Second)每秒查询/请求数
- 带宽
- PV(Page View)
- UV(Unique Visitor)
- IP和UV的区别
四 同步与异步
同步与异步
同步与异步:被调用者是否主动告诉调用者结果,是则为异步,不是则为同步。
同步:同步异步这里指的是被调用者(也就是服务器的行为),而不是请求方的行为。在没有得到结果之前,服务端就不返回任何结果。
异步:调用在发出之后,服务端会立刻返回,告诉调用方“我收到你的请求了,立即进行处理。”
参考
并发编程的“基石”——多线程概念建立:
http://naotu.baidu.com/file/b8a70ff9e7f3af1437594b2d0fb4ebfd?token=11150672c00909cb