您的位置:首页 > 其它

操作系统线程相关知识学习

2016-04-09 15:04 232 查看

一、线程的引入

进程中引入线程的三个原因:

应用的需要:
三个线程的字处理软件:一个负责键盘的输入;一个负责排版;一个负责保存。
典型的应用: Web服务器:

                     工作方式:
                             1.从客户端接收网页的请求(Http协议)
     2.从磁盘上检索相关网页,读入内存
                             3.将网页返回给对应的客户端。
                     构造服务器的三种方法:

模型特性
多线程有并发、阻塞系统调用
单线程进程无并发、阻塞系统调用
有限状态机有并发、非阻塞系统调用、中断
开销的考虑
进程的相关操作:时间、空间开销大,限制了并发度提高
线程的开销小(创建和撤销一个线程花费时间少,两个线程切换花费的时间少;线程之间相互通信无需调用内核(同意进程内的线程共享内存和文件))

性能的考虑

二、线程的基本概念

1. 进程的两个基本单位

资源的拥有者:进程还是资源的拥有者
COU调度单位:线程继承了这一属性
线程:进程中的一个运行实体,是CPU的调度单位,有时将线程称之为轻量级的进程。
其实就是在同一进程中增加了多个执行序列(线程)

2. 线程的属性

有标识符的ID
有状态及状态转换--需要提供一些操作
不运行时需要保存的上下文: 有上下文环境包括程序计数器等寄存器
有自己的栈和栈指针
共享所在进程的地址空间和其他资源
可以创建和撤销另一个线程: 其实程序开始时以一个单线程的进程方式运行的

三、线程机制的实现

1.线程的实现

用户级线程
核心级线程
混合-两者结合的方法

1.1 用户级线程



      在用户空间建立线程库:提供一组管理线程的过程
    运行时系统(Run-time system):完成线程的管理工作(操作线程表)
    内核管理的还是进程,不知道线程的存在
    线程切换不需要内核态特权
    例如  UNIX:  POSIX线程库---PTHREAD
POSIX(Porttable Operating System Interface)
多线程编程接口,以线程库方式提供给用户(Pthread_create,Pthread_exit,Pthread_join,Pthread_yield,Pthread_attr_init,Pthread_attr_destory)

Pthread_yield函数表示该线程自愿让出CPU。

用户级线程的优缺点:
优点:

  线程切换快
  调度算法是应用程序特定的
  用户级线程可运行在任何操作系统上(只需要实现线程库)

        缺点:

  内核只将处理器分配给进程。同一进程中两个线程不能同时运行于两个处理器上
  大多数系统调用是阻塞的,因此,由于内核阻塞进程,故进程中所有线程也被阻塞

1.2 核心级线程



内核管理所有线程管理,并向应用程序提供API接口
内核维护进程和线程的上下文
线程的切换需要内核的支持
以线程为单位进行调度 
例如  windows

1.3  混合模型 



线程的创建在用户空间完成
线程的调度等在和心态完成
例如 Solaris
其实就是多个用户级线程多路复用多个内核级线程 
1.4 一个概念

可再入程序(可重入):可被多个进程同时复用的程序,具有一下性质:

   它是纯代码的,即在执行过程中自身不噶边;
   调用它的进程应该提供数据区
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息