为什么需要进程:
程序运行在并发环境下
1.运行过程不确定
2.结果不可再现 //具体为什么不怎么清楚。。
进程:用来描述和管理运行过程
特征:1.动态性:是程序的一次执行过程,动态产生和消亡;
2.并发性 //并发性与并行性不相等 ,并发性是在一个CPU中执行,因为速度很快,所以多个进程看起来在一起运行,不过在微观角度来说 ,还是在分开运行的。
//并行性是在多个CPU上运行的进程,所以无论是微观还是宏观都是并发的。
3.异步性 //明天看书 不是很理解
4.独立性(制约性) //内存保护
程序和进程之间的差异:
1.动态和静态
2.暂存和长存 //进程在执行完后会被杀死,而程序会一直保留
杂点
进程的分类
按权限
1.系统进程
2.用户进程
按对CPU的依赖
1.偏CPU进程--->多计算
2.偏I/O进程----->多I/O
一个程序可以有多个进程。
PCB:进程控制块
唯一表示进程 //进程存在的唯一标志
PCB的信息:
1.本进程的标识
2.父进程的标识
3.用户标识 //看书不是很懂
4.进程控制信息 //不懂 看书
PCB的组织方式:
一般为链表(要经常的动态删除和添加)
进程创建的时间
1.系统初始化时;
2.用户请求;
3.进程执行过程中创建新的进程;
进程的运行:由操作系统选择某一个就绪(ready)进程———>运行(runing)进程;
进程的等待:进程停滞等待资源 //进程只能由自己来阻塞 (只有自己知道何时等待)
进程的唤醒:-----—————— //进程只能被其他进程唤醒;
进程的结束:正常结束(自愿) 错误结束(自愿);
致命结束(强制) 被其他进程杀死(非自愿) //什么情况下出现 不清楚 ;
进程的三种基本状态:运行(runing)态,阻塞(blocked)态,就绪(ready)态;
进程的挂起:
进程从内存转向外存;
挂起的状态:阻塞挂起状态;
就绪挂起状态;
进程的状态队列:
有多个就绪队列 (按优先级来排列队列 比如优先级高的在高队列,低的在低队列)
有多个阻塞队列
线程:进程的一条执行流程;
进程 = 线程 + 共享资源
一个进程可以有多个线程;
一个进程至少有一个线程;
线程的优点:
1.一个进程可以有多个线程;
2.各个线程可以并发执行;
3.各线程可以共享地址空间和资源;
缺点:
一个线程崩溃,会导致该进程的所有线程崩溃 //共享资源被破坏;
共享资源:code;file;data;
独立资源:register;stack;
线程和进程的比较:
1.进程是资源分配单位,线程是CPU调度单位;
2.进程有完整的资源平台,线程只是独享必不可少的资源(寄存器,栈)
线程的三种基本状态:运行(runing)态,阻塞(blocked)态,就绪(ready)态;
线程能减少并发执行的时间和空间开销:
1.线程的创建时间短 //不需要考虑共享空间的创建;
2.线程的终止时间短;
3.线程在同一进程下切换时间更短 //跟页表有关,学完存储在来解释;
4.共享资源不通过内核而是直接通过地址共享; //不是很懂;
第一次投稿截至于2019/11/21
完;