操作系统-线程

操作系统-线程

1. 与进程相关有:

  •    存放进程映像的虚拟地址空间
  •    受保护地对处理器,其他进程,文件和I/O资源的访问。

2. 一个进程中有多个线程,但是多个线程共享进程的进程控制块和用户地址空间,它们驻留在同一块地址空间中,并且可以访问到相同的数据。

   每个线程有:线程执行状态,在未运行时保存的线程上下文,一个执行栈,用于每个线程局部变量的静态存储空间,与进程的其他线程共享的队进程的内存和资源的访问。

3. 线程分类

   用户级线程(User-Level Tread, ULT)

   内核级线程(Kernel-Level Tread, KLT),又称内核支持的线程或者轻量级线程。

   派生线程是通过调用线程库中的派生例程完成的。通过过程调用,控制权被传递给派生例程。

   使用用户级线程而非内核级线程有很多优点: 

   a.所有线程管理数据结构都在一个进程的用户地址空间,线程切换不需要内核态特权,因此进程不需要为了线程管理而切换内核态,节省了两次状态转换的开销。

   b.调度可以是应用程序相关的。

   c.用户级线程可以在任何操作系统中运行,不需要对底层内核进行修改以支持用户级线程。

   两个明显的缺点:

   a.许多系统调用会引起阻塞。

   b.在纯粹的用户级线程策略中,一个多线程应用程序不能利用多处理技术。内核一次只把一次进程分配给一个处理器,因此一次进程中只有一个线程可以执行。

 4.当用户程序调用系统API时,产生中断,进入内核态的API处理,处理完后,用中断再退出,返回用户态的调用函数。

    user api --> interrupt --> kernel api --> interrupt

5. windows使用两类与进程相关的对象:进程和线程。进程是对应一个拥有内存,打开的文件等资源的用户作业或应用应用程序的实体;线程是顺序执行的一个可分配的工作单元,并且它是可中断。所以处理器可以切换到另一个线程。

6. 消息传递

   进程交互时,必须满足两个基本要求:同步和通信。为了实现互斥,进程间需要同步;为了合作,进程间需要交换信息,提供这些功能的一种方法是消息传递。

你可能感兴趣的:(操作系统-线程)