`
cloudtech
  • 浏览: 4611209 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

关于系统线程与进程的讨论

 
阅读更多

下面的讨论是在学校的论坛上一问一答的形式展开的,答案不一定正确

问:

像ucOS,acoral这样的只支持多线程系统,每个时间片分给不同的线程。但对于像linux这样的多进程多线程系统呢?难道是10ms的时间片先分给不同的进程,然后获得时间片的进程下的线程再划分这10ms的时间片,来实现并行?
答:

1、linux的线程就是进程,进程会请求时间片,当cpu空闲时就让这个进程转化为活跃状态,如果时间片结束或者进程主动转化为其它状态,时间片就给其它进程。至于进程之间是怎么分配时间片的有几种算法,在编译内核时可以选择
2、如果是系统级线程,就跟进程一样获得一个时间片,如果是用户级线程就分享它们所属进程的时间片。比如JAVA的多线程就是用户级线程。

3、linux的线程又叫轻量级进程
4、linux提供线程和进程的api是没错,但是在内核级别,创建进程和线程都是通过__clone系统调用(创建进程和创建线程使用的参数不一样),所以从CPU调度的角度上看,线程和进程并没有本质区别,它们都是CPU所能调度的最小单位

PS1:早期的Linux内核,同一进程的不同线程中,对其使用getpid(),获得的值是不一样的,因为内核把线程都当作进程,所以会产生这样的情况。新版本的Linux,相同进程里的不同线程的pid是相同的,但这只是为了在接口上使线程更像线程

PS2:多线程编程是windows鼓励的做法,这是因为windows的进程创建需要耗费大量的时间,多进程在windows下的效率很低,所以windows的多线程模式大大提高了并行运算的效率。但在Linux下,进程创建耗费的时间要远小于windows的,所以Unix/Linux从很早就开始广泛使用多进程编程。Linux引入多线程比起windows,意义就不那么大了,因为多进程就可以具备较好的效率(当然多线程一般还是要快一些,因为clone的属性更少)。

PS3:在CPU看来。对于Linux而言,多线程和多进程没有本质区别,对windows,CPU调度的最小单位是线程,如果没有用多线程,那一个进程就相当于是一个线程,使用了多线程,则一个进程等同于多个线程,然后cpu对这些线程进行统一调度
PS4: Linux的进程开销比windows要小得多,但据说windows的线程开销要略小于Linux的线程

PS5: Linux下的进程和线程还有很多可以挖掘的东西, 为了效率至上,apache的某种工作模式使用了进程池+线程池+内存池的资源分配方式(chrome也是)
重新看了下帖子,貌似我讲多了,不过大家看看也好哈,深化下对这两个概念的印象(面试常用哦)

如果要本帖的答案的话,可以这么认为:

不管是windows还是linux,把进程都折算成线程,然后cpu对线程进行调度就可以了。

比如你举的例子,在cpu看来都是两个任务,管它在用户态是线程还是进程
5、进程调度是根据动态优先级来的,内核下线程等同于进程
6、线程windows效率高,进程linux效率高
问:
1六楼的说法怎么说呢?也就是说确实存在进程占用时间片,然后线程在分割进程占有的时间片这样的机制么?(windows下的?)

2lili大神在9楼说,“在内核级别”,那除了内核级别还有什么级别呢?”linux提供线程和进程的api是没错“这句话中提供的api是什么级别呢?
答:
1. 一般说的线程都是系统级线程。java那种线程是java虚拟机提供的线程机制,是怎么用系统实现的我也不清楚,了解有限。这个可以忽略

2. 搜索内核态和用户态
3、除了内核还有用户级别,即ring0和ring3,”linux提供线程和进程的api是没错“指的是用户级别的api
4、线程windows效率高,进程linux效率高

ps:感谢河畔大神们的参与,尤其是lili

分享到:
评论

相关推荐

    进程与线程 进程与线程

    为了描述程序在并发执行时对系统资源的共享,我们需要一个描述程序执行时动态特征的概念,这就是进程。在本章中,我们将讨论进程概念、进程控制和进程间关糸.

    对Solaris操作系统中多线程进程体系结构的研究

    按照教科书上的定义。进程是资源管理的最 小单位.线程是程序执行的最小单位。在操作系统设计 ...以及多线程的进程体操结构,内容包括进程、轻量进程 和内核线程.最后将讨论进程的创建和终止。

    操作系统(实验1进程管理)

     Csrss.exe:这是子系统服务器进程,负责控制Windows创建或删除线程以及16位的虚拟DOS环境。  System Idle Process:这个进程是作为单线程运行在每个处理器上,并在系统不处理其它线程的时候分派处理器的时间。  ...

    操作系统 进程管理

    进程管理的基本概念 进程控制块 进程控制 进程调度 实时系统的进程调度 线程(Thread) 关于调度讨论

    操作系统实训报告进程同步和互斥

    操作系统实训报告进程同步和互斥通过实现哲学家进餐问题的同步深入了解和掌握进程同步和互斥的原理。哲学家有N个,也定全体到达后开始讨论:在讨论的间隙哲学家进餐,每人进餐时都需使用刀、叉各一把,所有哲学家刀...

    linux系统编程之线程.zip

    线程id的类型是thread_t,它只在当前进程中保证是唯一的,在不同的系统中thread_t这个类型有不同的实现,它可能是一个整数值,也可能是一个结构体,也可能是一个地址,所以不能简单地当成整数用printf打印,调用...

    C#线程参考手册

    首先描述了Windows线程的定义,它们与.NET进程、应用程序域的关系以及线程之间的关系。讨论了线程的调度(操作系统如何确定下一个要处理的线程),接着论述了如何编写.NET代码来处理线程。之后介绍了线程的同步,让...

    操作系统--第七章进程同步

    协作进程(cooperating process)不但影响系统中其它的进程,也受它们影响。协作进程之间可以直接 共享一个逻辑地址空间(确切的说是代码和数据),也可以通过文件实现数据共享。前者通过轻量级进程 或线程实现,...

    嵌入式系统/ARM技术中的计算机操作系统进程(线程)调度

    尽管对象发生了变化,但在调度的策略和方法方面并没有发生实质性的变化,加之一些小型操作系统根本就没有线程的概念,因此下面有关调度问题的讨论都是以进程为对象的。  所谓进程调度,是指在系统中所有的就绪进程...

    操作系统:精髓与设计原理(原书第6版)

    第一部分 背景:提供关于计算机组织与系统结构的综述,重点讲述与操作系统设计相关 的主题,并且概述了本书的其余部分操作系统(OS)的各个主题。 第二部分 进程:详细分析进程、多线程、对称多处理(SMP)和微内核...

    关于Linux线程的线程栈以及TLS

    本文描述LinuxNPTL的线程栈简要实现以及线程本地存储的原理,实验环境中Linux内核版本为2.6.32,glibc版本是2.12.1,Linux发行版为ubuntu,硬件平台为x86的32位系统。b.对于LinuxNPTL线程,有很多话题。本文挑选了...

    现代操作系统.xmind

    本书是操作系统领域的经典之作,与第2版相比,增加了关于Linux、Windows Vista和Symbian操作系统的详细介绍。书中集中讨论了操作系统的基本原理,包括进程、线程、存储管理、文件系统、输入/输出、死锁等,同时还...

    python进程和线程用法知识点总结

    为此,我们需要先讨论两个概念,一个叫进程,一个叫线程。 概念 进程就是操作系统中执行的一个程序,操作系统以进程为单位分配存储空间,每个进程都有自己的地址空间、数据栈以及其他用于跟踪进程执行的辅助数据,...

    线程同步机制代码,用c++写的,:使用Windows互斥信号量操作函数和同步机制的Peterson,实现进程互斥和同步

    小实验二:使用Windows互斥信号量操作函数解决上述线程并发问题,并分析、尝试和讨论线程执行体中有关信号量操作函数调用的正确位置 小实验三:根据同步机制的Peterson软件解决方案尝试自己编程实现线程同步机制和...

    操作系统教程 孙钟秀主编

    本书是一本关于操作系统的基本概念、基本方法、设计原理和实现技术的教材,目的是尽可能系统、清晰、全面、综合地展示当代操作系统的概念、特点、本质和精髓。全书共分八章,每章的最后一节是小结,涉及的内容有:CH...

    打通Linux脉络系列:进程、线程和调度

    第二部分:深入分析进程创建的写时拷贝技术、以及Linux的线程究竟是怎么回事(为什么称为轻量级进程),此部分也会搞清楚进程0、进程1和托孤,以及睡眠时的等待队列;第三部分:搞清楚Linux进程调度算法,不同的调度...

    操作系统教程---好书

    接着,引入进程和线程的概念,介绍进程管理的实现模型、线程不同级别的实现方法;介绍处理机调度的三个层次,着重讨论了各种单处理机调度算法,也涉及到多处理机调度算法和实时调度算法。实例研究讨论了Window2000/XP...

Global site tag (gtag.js) - Google Analytics