1基本概念: 算法
进程:计算机已运行程序的实体。程序自己只是指令的集合,进程才是程序的真正运行。用户下达运行程序的命令后,就会产生进程。多线程
进程一般有5种状态,其中前3种为进程的基本状态。分别为:运行状态;就绪状态;阻塞状态;建立状态;结束状态。其中,就绪状态指进程得到了除了处理器以外的一切所需资源,一旦获得处理器便可运行。阻塞状态指进程正在等待某一事件而暂停运行,入等待某资源为可用(不包括存储器)或者等待输入、输出完成。并发
进程与程序的区别:1.进程是程序及其数据在计算机上的一次运行活动,是一个动态概念。进程是由程序、数据和进程控制块(JCB)组成。程序是一组有序的指令集合,是一个静态概念。二、进程是程序的一次执行过程,具备必定的生命周期,能够永久存在的,可长期保存。3.一个进程能够执行一个或者几个程序,一个程序也能够构成多个进程,进程能够建立进程,可是程序不能造成新的程序。4.进程和程序的组成不一样。socket
线程:有时也被称为轻量级进程,是程序执行的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器和堆栈(Stack)组成。线程也有就绪、阻塞和运行三种基本状态。spa
线程是程序中一个单一的顺序控制流程,在单个程序中同时运行多个线程完成不一样的工做,被称为多线程。操作系统
线程与进程的区别:1.调度,进程是拥有资源的基本单位,线程是独立调度的基本单位。在同一进程中,线程的切换不会引发进程切换,在不一样的进程中线程的切换,会引发进程切换。2.资源,进程是拥有资源的基本单位,线程不拥有资源,可是线程能够共享其隶属进程的系统资源。3.并发,进程能够并发执行,同一个进程内的多个线程也能够并发执行。4.系统开销,建立和撤销进程时,系统都要为之分配或者回收资源,线程切换时只须要保存少许寄存器内容,开销少,同一个进程内的多个线程共享进程的地址空间,所以这些线程之间的同步和通讯易实现,甚至无需操做系统干预。5.地址空间和其余资源,进程的地址空间之间互相独立,同一个进程的各个线程共享进程资源。6.进程间通讯须要借助操做系统,而线程间能够直接经过读写进程数据段来进行通讯。线程
进程通讯和进程同步指针
Linux线程间通讯:互斥体(互斥量),信号量,条件变量对象
Windows进程间通讯:管道、共享内存、消息队列、信号量、socket。生命周期
Windows线程间通讯:临界区(Critical Section)、互斥量(Mutex)、信号量(信号灯)(Semaphore)、事件(Event)。注意:临界区与互斥体的区别:临界区智能用来同步本进程内的线程,而不能用来同步多个进程中的线程。互斥量,信号量,事件均可以跨越进程使用来进行同步数据操做;临界区是非内核对象,只在用户太进行锁操做,速度快,互斥体是内核对象,在核心态(须要处理器参与)运行,速度慢。
进程的调度算法:先来先服务算法(FCFS),短做业优先(SJF),优先级调度算法,高相应比优先算法,时间片轮转算法,多级反馈队列调度算法。
死锁:多个进程因竞争资源而形成的一种僵局(互相等待),若无外力作用,这些进程都将没法向前推动。
死锁产生的缘由:系统资源的竞争,进程推动顺序非法。
死锁产生的必要条件:互斥条件,不剥夺条件,请求和保持条件,循环条件。
银行家算法是著名的死锁避免算法。