王道考研复习-操作系统-进程管理(二) (3)

线程是一个轻量级级进程,它是一个基本的CPU执行单元,也是程序执行流的最小单元,由线程id,程序计数器,寄存器集合,堆栈组成,线程是进程中的一个实体,是被系统独立调度和派发的基本单位

目的

引入线程的目的是为了更好地使用多道程序并发执行,提高资源利用率和系统吞吐量,而引入线程的目的则是为了减小程序在并发执行时候所付出的开销,提高操作系统的并发性能。

效果

引入线程之后,进程的内涵发生了改变,进程除了作为CPU外的系统资源的分配单元,而线程作为处理机的分配单元,由于一个进程内部有多个线程,若线程切换发生通一个进程内部,则只需要很少的时间开销。

下面是一个线程的基本结构
C typedef __darwin_pthread_t pthread_t;
struct _opaque_pthread_t {
long __sig;
struct __darwin_pthread_handler_rec *__cleanup_stack;
char __opaque[__PTHREAD_SIZE__];
};
struct __darwin_pthread_handler_rec {
void (*__routine)(void *); // Routine to call
void *__arg; // Argument to pass
struct __darwin_pthread_handler_rec *__next;
};

线程与进程比较

调度: 在传统的操作系统中,拥有资源和独立调度的基本单位都是进程,而在引入线程的操作系统中,线程是独立的调度单位,进程是拥有资源的基本单位,同一进程中,线程的切换不会引起进程的切换; 在不同的进程中进行切换线程,会引起继承的切换

拥有资源: 不论在传统的操作系统还是设置有线程的操作系统,进程都是拥有资源的基本单位,而线程不拥有系统资源,它只是能共享所在进程的资源

并发性: 都拥有

地址空间和其它资源(如打开文件): 同一进程下的线程共享资源,不同进程的线程不能共享

系统开销: 切换线程只需要保存和设置少量的寄存器内容,开销很小,同一个进程內的线程通信开销小,甚至无需操作系统的干预

通信方面: 进程通信(IPC)需要进程同步和同步手段辅助,保证数据的一致性,而线程可以直接读写数据段来进行通信

线程状态

创建,阻塞,就绪,运行,销毁

线程的实现方式

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

内核级别线程(Kernel-Level)

多线程模型

多对一: 将多个用户级线程映射到一个内核级线程, 容易阻塞

一对一: 创建线程开销大,影响程序性能

多对多: 综合方案

处理机调度

概念

多道程序操作系统的基础,操作系统设计的核心问题

调度层次

作业调度: 内存与辅存之间的调度

中级调度: 内存调度,其作作用是提高系统的吞吐量,暂时不用而不运行的进程调至室外等待,把此时的进程挂起,当他们具有已经运行的条件的时候,同时内存有空闲的时候再调度回来,修改PCB状态为就绪状态,挂在等待队列上

进程调度: 按照某种方法和策略,从就绪队列汇总选取一个进程,将处理机分配给他。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwdpwy.html