操作系统简单总结——线程简介
进程和线程
进程和线程对比
我觉得首先要明白线程是进程所拥有的,受进程管理。然后进程是OS管理的,是分配资源,被调度的对象。正如OS通过PCB管理进程,进程通过TCB管理线程。
我觉得很重要的是因为线程是最小被调度运行单元,然后每一个线程都会有自己的工作栈(进程从OS分配的堆栈段再分给每个线程),线程切换主要是SS段寄存器改变。
实现切换其实就是改变SS甚至其他段寄存器的值。这过程其实跟函数传地址很像。
对进程不熟悉的,可以先看看进程简单总结
举个JAVA程序例子说明一下:
进程从OS那里取到了资源和执行时间片,然后进程被执行,首先启动了一个主线程,主线程负责去完成一些管理类的重要工作,然后因为有图形化界面,所以会有一个专门负责去渲染组件的线程,然后还有很多去完成计算任务的线程。当然,这些主要的必需线程是JAVA底层控制的。这些线程都分享JAVA进程的内存,都可以拿到进程的数据集,然后他们的运行时间是看OS给进程分配的时间片(总和)再分(进程负责,JAVA里可以为线程指定优先级,根据优先级高低可以得到不同的时间片长度)。
这里再需要区分的就是线程与子进程,子进程会有自己的内存,而线程没有(尽管线程是轻量级进程)。
线程分类
关于线程,主要是这样。