进程
- 1、进程的程序的一次执行
- 2、进程是一个程序及其数据在处理机上顺序执行时所发生的活动
- 3、进程是具有独立功能的程序在一个数据集合上运行的过程,他是系统进行资源分配的基本单位
进程的三个状态
- 就绪(Ready)状态:进程已经处于准备好的状态,进程已经分配到了CPU以外的所有必要资源后,只要获得CPU,便可立即运行。
- 执行(Running)状态:进程已经获得CPU,其程序正在执行状态。
- 阻塞(Block)状态:正在执行的进程由于发生某事(IO请求,申请缓冲区失败)暂时无法继续执行的状态。
进程间通信方式
- 共享存储器:相互通信的进程共享某些数据结构或者共享存储区,进程之间能够通过这些空间进行通信
- 管道pipe:是指用于连接一个读进程和一个写进程以及实现它们之间通信的一个共享文件,有名pipe文件,通过向管道中写入或读取大量数据(字符流)进行通信
- 消息传递系统:将通信的数据封装在消息中,并利用操作系统提供的一组通信命令(原语),在进程之间实现传递消息
- 套接字:一个套接字,就是一个通信标识类型的数据结构,包含了通信目的地的地址,通信使用的端口号,通信网络的传输协议,进程所在的网络地址,以及以及针对客户或服务器程序提供的不同系统调用(API函数)等,是进程通信和网络通信的基本构建(Socket TCP协议,网络套接字)
线程
一个进程可以包含多个线程,一个进程至少有一个线程,调度和派分的基本单位,线程可以利用进程所拥有的资源,由于线程比进程要小,基本上不拥有系统资源。故对它的调度所付出的开销就会少很多,能更加高效地提高多个程序之间并发执行的程度。
进程与线程的区别
- 资源空间:进程有自己独立的运行空间,独立的资源,同一进程下的线程共享资源,空间
- 调度:进程为资源分配的基本单位,线程为调度的基本单位
多线程
在一个程序中,独立运行的程序片段叫做“线程”(Thread)。多线程是为了同步完成多项任务,不是为了提高运行效率,而是为了提高资源使用效率来提供系统的效率,线程是在同一时间需要完成多项任务的时候实现的。
同步
- 功能调用的时候,在没有得到结果之前,该调用就不返回了,这时程序的阻塞的,只有接收到返回的值或者消息之后才往下执行其他命令。(一根筋)
异步
- 当一个异步过程调用发出后,调用者不能立即得到处理结果。实际处理这个调用的部件在完成后,通过状态、通知和回调类通知调用者。
进程间同步
- 合作的并发进程需要按先后次序执行,具有直接的制约关系。例如:一个进程的执行依赖于合作进程的消息或信号。当一个进程没有得到来自合作进程的消息或信号时需阻塞等待,直到消息或信号到达才唤醒。
进程间互斥
- 进程之间的间接制约关系。当一个进程进入了临界区,使用临界资源的时候,另一个进程就必须等待,只有当使用临界资源的进程退出临界区之后,这个进程才会解除阻塞状态。
相关概念:
- 临界资源:操作系统中占有资源的最最小单位是进程,对于某些资源来说,其在同一个时间内只能被一个进程所占有,这种资源被称为临界资源,对临界资源的访问必须是互斥进行的
- 临界区:访问临界资源的代码称为临界区
- 信号量:进程之间传递信号的一个整数
并发
在多道程序设计系统中,进程会被交替执行,在宏观上看可表现出一种并发的外部特征
锁死
多个进程全部阻塞,形成等待资源的循环链