进程与线程
1.进程概述
进程是运行状态的程序,每个进程有一个进程控制块(PCB)作为进程的标识。PCB中包括进程标识信息,处理机现场保存信息和进程控制信息。进程控制块按进程的状态在链表中或索引表中存储。
2.三状态模型:
进程状态分为五种:创建,就绪,运行,等待(阻塞),退出。这些状态都和CPU相关。
1)引起进程创建的情况:
i)系统初始化时;
ii)用户请求创建一个新进程;
iii)正在运行的进程执行了创建进程的系统调用
2)进程进入等待(阻塞)的情况:
(只有进程自身才能知道何时需要等待某种事件的发生)
i)请求并等待系统服务,无法马上完成
ii)启动某种操作,无法马上完成,如磁盘的读写
iii)需要的数据没有到达
3)进程被抢占的情况(进入就绪状态):
i)高优先级进程就绪
ii)进程执行当前时间用完(每个进程有特定的时间占用资源)
4)唤醒进程的情况(进入就绪状态):
(不同于等待,进程只能被别的进程或操作系统唤醒)
i)被阻塞进程需要的资源可被满足
ii)被阻塞进程等待的事件到达
5)进程结束的情况:
i)正常退出(自愿的)
ii)错误退出(自愿的)
iii)致命错误(强制性的)
iiii)被其他进程所杀(强制性的)
3.进程挂起模型
进程的挂起状态与存储相关。挂起即把一个进程从内存转到外存。
等待挂起状态:进程在外存并等待某事件的出现。
就绪挂起状态:进程在外存,但只要进入内存,即可运行。
(进不去内存的原因是内存不够或者进程优先级不高)
从等待到等待挂起:没有进程处于就绪状态(?)或就绪进程要求更多内存资源。
从就绪到就绪挂起:当有高优先级等待进程(系统认为很快就会就绪)和低优先级就绪进程时,低优先级就绪进程就会从就绪状态转为就绪挂起状态。
从运行到就绪挂起:对抢先式分时系统,当有高优先级等待挂起进程因事件出现而进入就绪挂起状态,当前运行的状态就为了腾出空间进入就绪挂起状态。
从等待挂起到就绪挂起:当有等待挂起进程因相关事件出现。
激活:把一个进程从外存转到内存。
就绪挂起到就绪:没有就绪进程或挂起就绪进程优先级高于就绪进程。
等待挂起到等待:当一个进程释放足够内存,并有高优先级等待挂起进程。
4.状态队列
操作系统中有一组队列,不同队列表示不同的状态。进程状态的切换即是在不同队列中的删除与插入。
5.线程
如果要并发运行,多进程可以实现。但如果要访问相同资源且并发运行,那多进程来回切换要消耗很多性能。所以在进程里加入多线程的概念,同一进程的多线程并发运行,进程中存储共享资源,每个线程保存描述指令流执行状态的寄存器和堆栈。
6.用户线程
即通过高级程序设计语言的库函数来完成对线程的处理。
7.内核线程和轻权进程