Linux与Windows线程机制简单比较
来源:互联网 发布:获取手机的gps数据 编辑:程序博客网 时间:2024/05/02 04:18
线程机制是现代编程技术中常用的一种抽象。该机制提供了在同一程序内共享内存地址空间运行的一组线程。这些线程还可以共享打开的文件和其他资源。线 程机制支持并发程序设计(concurrent programming),在多处理器系统上,它也能保证真正的并行处理(parallelism)。
Linux实现线程的机制非常独特。从内核的角度来说,它并没有线程这个概念。Linux的线程都当作进程来实现。内核并没有准备特别的调度算 法或定义特别的数据结构来表征线程。相反,线程仅仅被视为一个与其他进程共享某些资源的进程。每个线程都拥有唯一隶属于自己的task_struct,所 以在内核中,它看起来就像是一个普通的进程(只是该进程和其他一些进程共享某些资源,如地址空间)。
上述线程机制的实现与Microsoft Windows或是Sun Solaris等操作系统的实现差异非常大。这些系统都在内核中提供了专门支持线程的机制(这些系统常常把线程称作轻量级进程,lightweight process)。“轻量级进程”这种叫法本身就概括了Linux在此处与其他系统的差异。在其他的系统中,相较于重量级的进程。线程被抽象为一种耗费较 少资源、运行迅速的执行单元。而对于Linux来说,它只是一种进程间共享资源的手段(Linux的进程本身就够轻了)。举个例子来说,加入我们有一个包 含四核线程的进程,在提供专门线程支持的系统中,通常会有一个包含指向四个不同线程的指针的进程描述符。该描述符负责描述像地址空间、打开的文件这样的共 享资源。线程本身再去描述它独占的资源。相反,Linux仅仅负责创建四个进程并分配四个普通的task_struct结构。建立这四个进程是制定它们共 享某些资源就行了。
\
我们知道,Linux下没有任何关于线程的系统调用,内核对线程一无所知,用于实现多线程的,是几个线程包(LinuxThreads,pthread等 等),而Windows下,内核把线程当作调度实体,线程调度在内核内完成。而其他Unix系统,比如FreeBSD,Minix3同样是选择了在用户层 面实现多线程,而一些系统比如Solaris则使用混合方案。
记得Windows核心编程说过,Windows不存在“进程调度”,只有“线程调度”,这是最基本的调度方式(Windows下,任何一个进程都至少有一个线程,main函数会自动成为主线程的函数),这一点是和Linux下以“进程”为调度单位最大的不同。
其实,看线程效率绝不能孤立地看线程模型,要看整个系统,在Windows下,gui是在内核态运行的(参见Windows Internals),Linux下gui是用户态,那么对于gui程序的线程来说,Windows下的内核态线程似乎更适合。
- Linux与Windows线程机制简单比较
- Linux与Windows线程机制简单比较
- Linux与Windows线程机制简单比较
- Linux与Windows线程机制简单比较
- Windows与Linux比较
- Windows与Linux比较
- Windows线程同步机制的区别与比较及进程通信方法
- windows和linux下的线程比较
- linux与windows使用比较
- Linux与windows之比较
- Linux与Windows的比较
- Linux/windows 进程/线程间通信机制
- Linux/windows 进程/线程间通信机制
- 进程与线程(Linux、windows)
- Windows与Linux比较:相似与不同
- Windows与Linux比较:相似与不同
- Linux进程与线程的比较
- linux线程系列(6)线程与进程的比较
- 不少程序员都会碰到的三个面试题
- 如何提高词汇量
- HDU4876 ZCC loves cards
- linux 下 svn的一些基本指令
- 入侵检测ids--ping of death
- Linux与Windows线程机制简单比较
- hdu 2114 Calculate S(n)
- JS中如何定义全局变量
- 我理解的逻辑地址、线性地址、物理地址和虚拟地址
- 软件开发中注意事项
- 重写Java Object对象的hashCode和equals方法实现集合元素按内容判重
- Android Studio(三)创建新项目
- 计算机学院研发第二轮考核-------浏览器之数据库篇(添加书签)
- 设置tableViewCell颜色