操作系统基础知识-用户空间实现线程-内核实现线程
2017-06-02 20:08
246 查看
(多)线程存在的意义
1.某些活动随着时间的推移会被阻塞,将应用程序分解成可准并行运行的多个顺序线程,程序设计模型会简单些。
2.线程比进程更轻量级,创建,销毁都方便。
3.多个线程允许计算和I/O处理类活动彼此重叠进行,从而加快应用程序执行速度。
4.为真正并行提供实现可能。
在用户空间实现线程
优
1.整个线程包放在用户空间,内核对此一无所知。所以它可以在不支持线程的操作系统上实现。
2.用户空间管理线程时,每个进程需要其专有的线程表,用来跟踪该进程中线程,与内核的进程表类似。不过他仅仅记录各个线程的属性,如线程的程序计数器,堆栈指针,寄存器和状态等。也就是说当一个线程的状态切换时,只需程序计数器,堆栈指针,寄存器的相应信息改变就可以,也即其线程切换速度极快。
3.允许进程有自己的调度算法,拓展性强(这是相比于内核空间内核线程需要一定固定表格和堆栈空间)。
缺
4.一个线程开始运行,除非该线程自动放弃CPU,否则该进程其他线程就不能运行(此时的单独进程无法进行轮转调度,也没有时钟中断)。
5.阻塞系统的调用问题,一个线程阻塞时,整个进程将阻塞。
在内核中实现线程
此时每个进程没有自己的线程表,而是内核中有该线程表,此时线程的切换等需要系统调用.
优
1.一个线程阻塞时,内核可以调用进程其他线程。
2.当有多个处理机时,一个进程的多个线程可以同时执行
缺
3.线程创建,销毁开销大(需要内核的调度)
参考《现代操作系统》
1.某些活动随着时间的推移会被阻塞,将应用程序分解成可准并行运行的多个顺序线程,程序设计模型会简单些。
2.线程比进程更轻量级,创建,销毁都方便。
3.多个线程允许计算和I/O处理类活动彼此重叠进行,从而加快应用程序执行速度。
4.为真正并行提供实现可能。
在用户空间实现线程
优
1.整个线程包放在用户空间,内核对此一无所知。所以它可以在不支持线程的操作系统上实现。
2.用户空间管理线程时,每个进程需要其专有的线程表,用来跟踪该进程中线程,与内核的进程表类似。不过他仅仅记录各个线程的属性,如线程的程序计数器,堆栈指针,寄存器和状态等。也就是说当一个线程的状态切换时,只需程序计数器,堆栈指针,寄存器的相应信息改变就可以,也即其线程切换速度极快。
3.允许进程有自己的调度算法,拓展性强(这是相比于内核空间内核线程需要一定固定表格和堆栈空间)。
缺
4.一个线程开始运行,除非该线程自动放弃CPU,否则该进程其他线程就不能运行(此时的单独进程无法进行轮转调度,也没有时钟中断)。
5.阻塞系统的调用问题,一个线程阻塞时,整个进程将阻塞。
在内核中实现线程
此时每个进程没有自己的线程表,而是内核中有该线程表,此时线程的切换等需要系统调用.
优
1.一个线程阻塞时,内核可以调用进程其他线程。
2.当有多个处理机时,一个进程的多个线程可以同时执行
缺
3.线程创建,销毁开销大(需要内核的调度)
参考《现代操作系统》
相关文章推荐
- 操作系统之用户空间和内核空间实现线程
- 线程实现的两种方式——用户空间和内核中
- Operating System-Thread(3)用户空间和内核空间实现线程
- 用户空间实现线程 内核实现线程 线程的调度
- 漫谈操作系统3 -- 基础知识 (用户态和内核态分离)
- 管态、目态、内核空间、用户空间 #操作系统知识#
- Operating System-Thread(3)用户空间和内核空间实现线程
- 线程实现的两种方式 —— 用户空间和内核中
- 用户空间实现线程 内核实现线程 线程的调度
- Linux 系统内核空间与用户空间通信的实现与分析
- 使用/proc实现内核与用户空间通信
- java基础知识回顾之java Thread类--java线程实现常见的两种方式实现Runnable接口(二)
- Linux基础(七)内核线程和用户线程
- 内核和用户空间共享内存的实现例程-proc和mmap
- Linux 系统内核空间与用户空间通信的实现与分析
- Linux 系统内核空间与用户空间通信的实现与分析 from [http://www-900.ibm.com/developerWorks/cn/linux/]
- 使用Forms Authentication实现用户注册、登录 (一)基础知识
- Linux 系统内核空间与用户空间通信的实现与分析
- Linux的内核空间和用户空间通过内存共享来进行通信的实现
- 使用Forms Authentication实现用户注册、登录 (一)基础知识