进程和程序的区别:
进程: 程序的一次执行过程 动态过程,进程的状态属性会发生变化
程序:存放在磁盘上的指令、数据的有序集合 是个文件,可直观看到
程序program 静态的概念,本身不会发生变化。指令谁来执行,数据谁来访问?cpu!
但前提是cpu能够接触到,程序执行过程需要cpu、内存、以及相关的资源。
进程是动态的,需要执行时才创建,运行结束要回收,包括创建、调度、执行、消亡的过程。
二者是关系:无程序进程就无意义,是内容与形式的关系。
一个程序的执行,至少创建一个进程。
一个进程的内容 叫进程控制卡,PCB,它是个理论上的东西,不同的系统实现不一样,Linux里用task_struct 来描述
进程的特点:
动态性:进程的实质是程序在多道程序系统中的一次执行过程,进程是动态产生,动态消亡的
并发性:任何进程都可以同其他进程一起并发执行
独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位
异步性:由于进程间的相互制约,使进程具有执行的间断性,即进程按各自独立的、不可预知的速度向前推。
进程通讯原因:
数据传输
资源共享
通知事件
进程控制
进程互斥:多个进程同时要访问一个共享资源时,同时只允许一个进程访问,直到访问结束,释放后其他进程才能访问。
临界资源:同一时刻只允许一个进程访问的资源,进程中访问临界资源的那段程序代码称为临界资源。
进程同步:一组并发的进程按一定的顺序执行,具有同步关系的一组并发进程为合作进程,合作进程间互相发送的信号称为消息或事件。
死锁:多个进程竞争一种资源而形成的一种僵局,若无外力作用,这些进程无法继续向前推进。解决方法:主要有预防,使进程访问资源的顺序一致。
进程的类型:
交互进程
批处理
守护进程
进程的状态
运行态(正在运行和准备运行的)
等待(可中断等待、不可中断等待)
僵尸态
停止态