JAVA线程学习之路
-
操作系统中理解的进程
进程是指一个程序的一次进行过程,进程的设计是为了更好的实现操作系统的并发性和共享性。为了使并发的程序能够独立运行,操作系统为其配置了一个专门的数据结构PCB(进程控制块),系统用PCB来描述进程的基本状况和运行态。进程是获得资源和调度的基本单位,进程的实体由程序段、数据段、PCB组成。
进程被创建的过程:
1、新进程分配唯一的进程标识号,并申请空白PCB,申请失败则创建失败
2、为进程分配资源(必要的内存空间),若内存不足则进入阻塞态
3、初始化PCB
4、进程就绪队列接纳新进程,则新进程插入就绪队列,等待被调度进程的终止分为:正常终止和异常终止,正常终止任务完成准备退出运行,异常终止(程序遇到异常无法继续运行) 操作系统终止过程如下: 1、根据进程标识号找到PCB,读取进程状态 2、终止该进程的执行,将处理机资源分配给其它进程 3、若还有子进程,终止所有子进程,并返回资源 4、将该PCB从所在队列删除 进程切换指处理机从一个程序转换到另一个进程上去运行,在这个过程中,进程的运行环境发生了实质性变化,进程切换过程如下: 1、保留处理机上下文 2、更新PCB信息 3、把进程的PCB移入相应的队列 4、选择另一个进程执行,并更新其PC 5、更新内存管理的数据结构 5、恢复处理机上下文
线程切换的意义:每个线程所争夺到的CPU时间片是一定的,当CPU时间片到了后,就需要进行线程的切换。线程的切换会带来一定的CPU时间开销,如果时间片设置的过小,则频繁的切换线程所带来的CPU时间开销会严重降低CPU的效率,如果过长,则会导致后续的线程所需要等到的时间太长,难以达到并发的效果。例如:时间片设置为20ms,而线程切换所需要20ms, 这样就降低了CPU的效率。
- 操作系统中理解的线程
进程被引入的目的是为了更好的使用多道程序并发执行,提高资源利用率和系统吞吐量。而线程引入的目的则是为了减少程序在并发执行时所付出的时空开销,提高并发性能。
线程可以理解为轻量级的进程,它是一个基本的CPU执行单元,也是程序执行流的最小单位,线程由线程ID、程序计数器、寄存器集合、堆栈组成。线程本身不拥有系统资源
进程为除CPU外系统资源的分配单元、线程为处理机的分配单元,这样在进程内部线程进行切换时,只需要进行很小的时空开销,因此线程的目的就是为了减少切换时的时空开销,所以他不能有系统资源。