linux - Windows操作系统的多进程
PHP中文网
PHP中文网 2017-04-17 16:25:53
[Linux讨论组]

今天看这个教程,这个老师讲到多线程这一章节时说Windows和Linux相对于学术意义上的多进程来说,他们实际上是多线程单进程操作系统,init是他们的初始进程,其他的进程实际意义上是init的线程,他这么讲对不对,颠覆了我的价值观

这是URL http://www.icourses.cn/jpk/ch...

PHP中文网
PHP中文网

认证0级讲师

全部回复(3)
阿神

如果对内核是这样的,对上层应用程序不是这样的。因为内核是共享同一个地址空间的,但上层应用如果要共享内存,要有一个特别的操作的。

伊谢尔伦

线程和进程最大的区别是:一个进程内的全部线程可以共享资源,进程间是隔离的。

对于Linux内核而言,它是个单体结构的内核,内核里面的内核线程共享了全部的内核空间,而内核就是一个内核进程,说内核是单进程多线程也没错。

但是用户空间的程序还是以进程的形式隔离运行的。

init是他们的初始进程,其他的进程实际意义上是init的线程

看一下Linux的启动流程就知道,内核启动的时候会由pid=0的启动进程启动pid = 1的init和pid = 2的kthreadd,这两个都是内核线程。前者会启动用户空间的进程,后者会启动其他内核线程。如果老师说的init是这个pid = 1的init,那就肯定不对。

那老师说的init是概念(or学术上)上的第一个进程呢?那也不对。老师是把进程、线程和创建关系混淆了。一个进程创建了另一个进程,不代表这个子进程就是一个线程,它们会被独立地调度,也不共享资源,子进程 != 线程。

迷茫

实际上windows的进程更进程,线程更线程. Linux内核中实际上没有线程这种调度单位.嘛,不要纠结啦,就像linux也不是万物皆文件一样,理论和实际实现还是有一点区别的.

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号