进程是一个执行环境,包含了私有的进程内存空间、句柄表和其他的一些东西,为线程的存活提供了一个环境,这句话其中的含义是当创建进程时往往要创建一个默认的线程,线程是具体干活的,当一个进程中的最后一个线程被CPU执行完毕后,进程也就消亡了。这些事情都是OS内核的进程和线程管理干的事情。了解这些对使用一些高层语言来做多进程或者多线程的程序时就能在了解其底层原理的基础上发挥更大的创作空间(对于线程的竞争,同步等等的问题,其实就是OS的问题,高层语言不过还是利用OS的能力做到这些罢了)
上面是一段对进程和线程关系的描述,但是本文的重点是比较windows和Linux在这方面的不同之处!
Linux在由一段汇编程序引导其内核载入其核心态所在的内存空间并交由CPU执行时,会产成一个进程0,之后所有的进程都是通过这个进程0复制出来的,进程0总是处于空闲的状态,不占用CPU,只是一个所有进程的根,其中就推导出进程之间是有父子关系的,而且是一种强的关系,可以做一个实验:在具有root权限的shell中运行init 0时,系统会发生什么事情?init 0命令其实就是让进程0关闭掉,由于它是所有进程的父亲,当它消亡时,其后代也全部消亡了,此时你会看到linux采取的工作就是杀掉所有的进程而开始关机!
Windows则不同,进程之间的关系是松散的关系,只不过在子进程中记录了父进程的ID而已,杀掉父进程不一定会使子进程也被杀掉!
这种异同会带来什么哪,在Linux管理进程会比较简单的多!但也危险的多!Windows下会麻烦一些,但安全的多。
分享到:
相关推荐
linux 进程和线程编程 pipe --原始管道 命名管道 消息队列 信号量 内存共享 线程编程
在Windows下创建进程和线程的API 对线程和进程的使用进行了详细描述
linux下的进程、线程
linux unix 进程 线程linux unix 进程 线程linux unix 进程 线程linux unix 进程 线程linux unix 进程 线程linux unix 进程 线程
Windows下查看进程中的线程
1.在linux下编写一个应用程序,命名为an_ch2_1b。这个程序不断地输出如下行: Those output come from child,[系统时间] 另外写一个应用程序,命名为an_ch2_1a。这个程序创建一个子进程,执行an_ch2_1b。这个程序...
支持Windows和Linux的PC多线程支持模块,用于实现线程的方便创建和线程管理的模块化
但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别。 说法三:多线程共存于应用程序中是现代操作系统中的基本特征和重要标志。用过UNIX操作系统...
基础知识:线程和进程,二.Linux 2.4内核中的轻量进程实现,三.LinuxThread的线程机制,1.线程描述数据结构及实现限制,2.嵌入式linux开发教程:管理线程,3.嵌入式linux开发教程:线程栈,4.嵌入式linux开发教程:...
详细讲解进程和线程之间的区别,方便初学者能更深透的理解
Linux进程、线程和调度(1).pdf 进程调度学习资料共享。
详细介绍了linux下的程序、进程、线程的区别与共同点,是学习linux不可多得的好帮手
讲解windows下的进程与线程之间的关系和API函数的基本操作
进程、线程和优先级 工作线程和用户界面线程 线程同步 线程通讯
linux系统下,C语言多线程多进程编程
进程和线程详解,比较详细的介绍了进程和线程详解的相关知识,对初学者有很好的借鉴
linux 进程 线程 fork 的深入思考 一道面试题的思考
linux系统,包括五项实验,多线程管理,多进程管理,以及完善的实验报告
该文档为进程与线程的生动详细地理解,个人认为讲的非常好。形象生动。
在linux上分别用多进程和多线程实现的同步互斥操作(源代码)