操作系统之我见-线程

线程:进程内相对独立的可调度的执行单元

进程是被分配拥有资源的基本单元,同一进程内的多个线程共享该进程的资源,只是拥有。

进程之间的通信往往要求内核的参与,而线程间通信是在同一进程的地址空间内,共享主存和文件,无需内核参与

举个例子,如文件编辑程序,用户在屏幕上修改工作时,一个线程负责管理修改工作,另一个线程负责下一个段落的输入,第三个线程负责打印和备份工作。


线程的状态和管理

(1)就绪状态 线程具备执行条件,等待调度程序分配一个CPU运行

(2)运行状态(3)等待状态

注意的地方,线程没有挂起状态,因为线程不是资源拥有者,资源属于进程


线程的描述

一个进程是一个地址空间,其中装有进程的映像,又是一个保护体系,控制有保护的访问包括处理器、文件、I/O以及其他进程

现代操作系统中,为每个线程设置一个线程控制块(TCB),进程控制块和线程控制块均用进程对象和线程对象来描述。

例如,线程对象属性有线程ID,动态优先级。线程服务有创建线程,终止线程,特别线程中的挂起是等待

线程的管理

(1)创建线程原语,多数用fork( )

(2)撤销线程原语,若Exit  (3)阻塞原语(4)挂起一个线程,使该线程状态变为等待或停止

(5)恢复一个线程(6)改变优先数

每个线程属于某个线程组


多线程

从线程的观点可把操作系统分为

(1)单进程和单线程系统(2)多进程和单线程(3)单进程和多线程(4)多进程和多线程


用户级线程(User-Level Threads,ULT),指用户应用程序建立的线程,并且由用户应用程序负责所有这些用户级线程的调度执行和管理,操作系统的内核完全不知道这些线程的 存在和管理。

现代操作系统和某些语言如Java,为用户准备和提供了一个基于多线程的用户应用程序的开发环境和运行环境,称为线程库

用户线程方法适用于任何操作系统,因为它不要内核支持用户级线程,而且线程库可以被所有应用程序共享。

缺点:当一个线程执行访管请求被阻塞时,将使得进程中的所有其他线程实际完全被阻塞。


内核级线程(Kernel-Level Threads,KLT),在纯KLT方法中,所有线程的创建、调度和管理全部由内核操作系统负责

优点:内核可调度一个进程中的多个线程同时在多个处理器上并行运行,进程中的一个线程被阻塞,进程中的其他线程仍可以被调度运行。


KLT和ULT结合

内核支持多线程的建立、调度和管理同时提供线程库,允许用户应用程序建立、调度和管理用户级的线程

系统中每一个具体的线程只有两类

(1)用户线程 运行在用户地址空间的线程

(2)内核线程 运行在内核空间的线程,如内核子程序所有中断异常处理程序用线程实现都是内核线程


线程库

一个多线程应用程序的开发和运行环境,在一个线程库中至少提供以下功能的过程调用,建立一个线程,撤销一个线程调度一个线程,线程间通信原语、线程间同步原语。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值