内核线程和进程的区别

http://blog.csdn.net/tigerjibo/article/details/8299686

前言:

从 内核的角度来说,它并没有线程这个概念。Linux把所有线程都当做进程来实现。内核并没有准备特别的调度算法或者定义特别的数据结构来表示线程。相反, 线程仅仅被视为一个与其他进程共享某些资源的进程。每个线程都拥有唯一属于自己的task_struct,所以在内核中,它看起来就像是一个普通的进程 (只是该进程和其他一些进程共享某些资源,如地址空间)

一.内核线程

1.内核经常需要在后台执行一些操作。这种任务可以通过内核线程 (kernel thread)完成。

2.内核线程和普通的进程间的区别在于内核线程没有独立的地址空间,(实际它的mm指针被设置为NULL)

3.内核线程只在内核空间运行,从来不切换到用户空间去。内核进程和 普通进程一样,可以被调度,也可以被抢占

4.内核线程也只能由其他内核线程创建。在现有内核线程中创建一个新的内核线程的方法如下:

intkernel_thread(int (*fn)(void *),void *arg, unsigned long flags)

新的任务也是通过向普通的clone()系统调用传递特定的flags参数而创建的。在上面的函数返回时,父线程退出,并返回一个指向子线程task_struct的指针。子线程开始运行fn指向的函数,arg是运行时需要用到的参数。

5.一般情况下,内核线程会将它在创建时得到的函数永远执行下去(除非系统重启)。改函数通常由一个循环构成,在需要的时候,这个内核线程就会被唤醒和执行吗,完成了当前任务,它会自行休眠。

时间: 2024-07-30 03:21:34

内核线程和进程的区别的相关文章

iOS线程和进程的区别和联系

线程和进程的区别主要在于它们是不同的操作系统资源管理方式.进程有独立的地址空间,一个进程崩溃后,在保护模式的影响下不会对其他进程产生影响,而线程只是一个进程中的不同执行路径.线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等同于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些.但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程. 线程是CPU独立运行和独立调度的基本单位(可以理解为一个进程中执行的代码

iOS_线程和进程的区别与联系

呼~明天有一家面试,不知道为啥,有点小紧张... 首先是线程和进程的联系: 线程和进程都是由操作系统所负责的程序运行的基本单元,系统利用该基本单元实现对应用的并发性. 接下来就是线程和进程的区别: 线程和进程最大的区别就是它们是操作系统的两种资源管理方式,进程有独立的地址空间,一个进程奔溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同的执行路线,线程有自己的堆栈和局部变量,但是线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但

线程与进程的区别以及对多线程并发的理解

转自: http://blog.sina.com.cn/s/blog_12f5264ff0102v8eq.html http://blog.csdn.net/suxinpingtao51/article/details/8113509 http://blog.csdn.net/cqkxboy168/article/details/9026205/ 一.线程与进程的区别 先简单说说线程与进程的概念: (1)进程是指一个内存中运行的应用程序,比如在Windows系统中,一个运行的exe就是一个进程.

linux内核线程,进程,线程

http://blog.csdn.net/dyllove98/article/details/8917197 Linux对于内存的管理涉及到非常多的方面,这篇文章首先从对进程虚拟地址空间的管理说起.(所依据的代码是2.6.32.60) 无论是内核线程还是用户进程,对于内核来说,无非都是 task_struct这个数据结构的一个实例而已,task_struct被称为进程描述符(process descriptor),因为它记录了这个进程所有的context.其中有一个被称为'内存描述符‘(memo

操作系统(10 线程和进程的区别 --非法操作)

1.并发执行:多进程和多线程. 2.  apache 和 iis 对比(多进程和多线程的之间区别) apache 是多进程实现的,iis是多线程实现的. 区别: 1>效率上:线程效率比进程效率高. 2>稳定性:线程和进程比,线程不稳定,一个线程出现问题,多个线程一起出现问题.而进程是独立的,有自己独立的空间. 3>安全性:进程是隔离的,单独的.线程之间可以互相访问 3.平时会遇到一些非法操作,非法操作的原理是? 因为操作系统分为两个态,用户只能存在于用户态,不能越界到内核态.只要用户越界

线程与进程的区别以及联系

在操作系统中,线程与进程是非常重要的概念,深刻地理解它们很有必要.那么,什么是线程,什么是进程呢?它们之间又有什么区别什么联系呢? 进程是具有独立功能的程序关于某个数据集合的一次运行活动,可以申请和运行资源,是系统资源分配和调度的最小单位.一个程序可以对应一个或多个进程,一个进程可以对应一个程序或一段程序.进程由程序(描述进程要完成的功能).数据集合(程序在执行时所需要的数据和工作区).PCB控制块(包含进程的描述信息和控制信息,进程存在的唯一标志)组成,在进程创建时,创建PCB,进程结束时,撤

线程与进程的区别

线程是指进程内的一个执行单元,也是进程内的可调度实体. 与进程的区别: (1)地址空间:进程内的一个执行单元;进程至少有一个线程;它们共享进程的地址空间;而进程有自己独立的地址空间; (2)资源拥有:进程是资源分配和拥有的单位,同一个进程内的线程共享进程的资源 (3)线程是处理器调度的基本单位,但进程不是. 4)二者均可并发执行. 进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性.进程和线程的区别在于: 简而言之,一个程序至少有一个进程,一个进程至少有

线程与进程极其区别

1.进程和线程 1.1 概述: 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位. 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源. 一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行. 相对进程而言,线程是一个更加接近于执

C语言中线程和进程的区别

线程是指进程内的一个执行单元也是进程内的可调度的实体,与进程的区别 1) 调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位 2) 并发性:不仅进程之间可以并发执行,同一个进程之间的多个线程可以并发执行 3) 拥有资源:进程是拥有资源的一个独立单位,线程不拥有系统资源,但是可以访问隶属于进程的资源 4)系统开销: 在创建或撤销进程时,由于系统都要之分配和回收资源,导致系统的开销明显大于创建或撤销线程时的开销