用户级线程和系统级线程

用户级线程:由系统库支持。线程的创建和撤销以及线程状态的变化都由库函数控制并在目态(user态)完成,与线程相关的控制结构TCB保存在目态并由系统维护。由于线程对操作不可见(操作系统可见的必然保存在kernel态由系统维护),系统调度仍以进程为单位(同一进程内线程相互竞争),核心栈的个数与进程个数相对性。

用户级线程

优点:

①线程不依赖与操作系统,可以采取预问题相关的调度策略(线程队列在用户空间,用户对线程调度策略可控制的),灵活性好(将系统职能下方到用户手中的好处,类似的还有将系统内存管理职责转移到用户手中,例如先申请一块大的内存池,然后自己按需分配这样做的好处是,避免了频繁系统调用带来的开销,更灵活)

②同一进程中的线程切换不需进入操作系统,因而实现效率较高。

缺点:

①即使在多处理机环境中,同一进程中的线程也不能真正并行(而非并发)。

②由于线程对操作系统不可见,调度在进程级别,某进程中的一个线程通过系统调用进入操作系统受阻,该进程的其他线程也不能运行。(调用阻塞的系统调用则调用进程被挂起,线程不可见)。但如果某一线程等待在某一事件上则该线程所属进程的其他线程可能依然处于就绪或运行态。即在系统空间有进程等待队列,就绪队列,运行队列,用户空间

有线程等待队列,就绪队列,运行队列,如果进程在运行队列(runable),则至少有一个线程处于运行,进程在就绪队列,则至少有一个线程就绪,进程挂起,则线程全都等待。

用户级别线程实现:

运行时系统,户线程不能使用系统调用,而是当线程需要系统资源时,将请求传送给运行时,由后者通过相应的系统调用来获取系统资源。(间接方式)


系统级线程:通过系统调用由操作系统创建,线程的控制结构TCB保存于操作系统空间,线程是CPU调度的基本单位。由于系统调用以线程为单位,操作系统需要为每个线程保存一个核心栈


优点:

并发性好,在多处理机环境中同一进程的多个线程可以真正并行(不是并发)执行。

缺点:

线程控制和状态转换需进入操作系统完成,系统开销大。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值