线程
引入线程可提高程序并发执行的程度,可进一步提高系统效率 。(减少程序并发执行时所付出的时空开销)
线程是一种特殊的进程,线程不能独立运行,需要进程所获得的资源。
线程自己拥有一点资源(线程栈,线程号,堆栈),但它可以使用所属进程的资源
进程与线程的联系
一个进程至少包含一个主线程(线程数量大于等于1)。
由于同一进程中的多个线程具有相同的地址空间,所以它们间的同步和通信也易于实现
进程创建与线程创建的时空开销不相同
同一进程或不同进程内的线程都可以并发执行
线程的切换
1、属于同一进程的多个线程之间的切换不会引起进程的切换,只有属于不同进程的线程之间的切换才会引起进程的切换。
2、用户级线程,切换时不需要内核的支持
进程与线程的区别
进程是系统进行资源分配和调度的一个基本单位
线程是cpu调度和分派的基本单位
不管系统中是否有线程,进程都是拥有资源的独立单位
一个进程可创建一个或多个进程或线程
一个线程可创建一个或多个线程,但不可以创建进程
如果系统只有用户态线程,则线程对操作系统是不可见的,操作系统只能调度进程;
如果系统中有内核态线程,则操作系统可以按线程进行调度;
处理机调度
可分为4级:
1、作业调度;2、交换调度;3、进程调度;4、线程调度
作业调度:创建进程将其调入内存
进程调度:获取cpu,从资源管理的角度看,进程调度属于处理机管理
低级调度(Low Level Scheduling)称为进程调度或短程调度(ShorTerm
Scheduling) 它所调用的对象是进程(或内核级线程)
并发性与并行性
并发性是指若干事件在同一时间间隔发生
并行性指的是两个或两个以上的事件或活动在同一 时刻 发生。在多道程序环境下,并行性使多个程序同一时刻可在不同CPU上同时执行。
并行一定是并发的,两者是包含关系, 并行是并发的特例,而并发是并行的拓展。
并发进程之间可能需要同步或互斥
Unix
Unix把进程分成两大类: 系统进程 和 用户进程。
系统进程
执行操作系统程序,提供系统功能,工作于 核心态。
用户进程
执行用户程序,在操作系统的管理和控制下执行,工作于用户态。
进程在不同的状态下执行时拥有不同的权力。
在Unix系统中进程由三部分组成,分别是进程控制块、正文段和数据段。 进程控制块分成proc结构和user结构两部分
proc存放的是系统经常要查询和修改的信息,需要快速访问,因此常将其装入内存
多道程序设计
为了实现多道程序设计,计算机最需要更大的内存
相比于单道程序设计(内存中仅有一道作业),多道程序设计按照一定的作业调度算法将作业队列中的作业调入内存,使他们共享CPU和各种资源。因此需要更大的内存以容纳超过一道的作业。
引入多道程序的目的在于充分(利用CPU,减少CPU等待时间)