线程,进程,程序,服务,之间的关系和区别
我在查看程序占⽤内存的时候,在想服务和进程有什么区别,于是上⽹查了⼀下。⼤致结果如下:
⼀个程序⾄少有⼀个进程,⼀个进程⾄少有⼀个线程.
线程是进程的⼀个实体,是调度和分派的基本单位,它是⽐进程更⼩的能独⽴运⾏的基本单位.线程⾃⼰基本上不拥有系统资源,只拥有⼀点在运⾏中必不可少的资源(如程序计数器,⼀组寄存器和栈),但是它可与同属⼀个进程的其他的线程共享进程所拥有的全部资源.
⼀个线程可以创建和撤销另⼀个线程;同⼀个进程中的多个线程之间可以并发执⾏.
线程的引⼊:例如,有⼀个Web服务器要进程的⽅式并发地处理来⾃不同⽤户的⽹页访问请求的话,可以创建⽗进程和多个⼦进程的⽅式来进⾏处理,但是创建⼀个进程要花费较⼤的系统开销和占⽤较多的资源。除外,这些不同的⽤户⼦进程在执⾏的时候涉及到进程,上下⽂切换是⼀个复杂的过程。所以,为了减少和创建的开销,提⾼执⾏效率和节省资源,⼈们在操作系统中引⼊了"线程(thread)"的概念。
进程的作⽤和定义:进程是为了提⾼CPU的执⾏效率,减少因为程序等待带来的CPU空转以及其他计算机软硬件资源的浪费⽽提出来的。进程是为了完成⽤户任务所需要的程序的⼀次执⾏过程和为其分配资源的⼀个基本单位,是⼀个具有独⽴功能的程序段对某个数据集的⼀次执⾏活动。
一个线程可以包含多个进程
进程与程序的区别:
程序是⼀组指令的集合,它是静态的实体,没有执⾏的含义。⽽进程是⼀个动态的实体,有⾃⼰的⽣命周期。⼀般说来,⼀个进程肯定与⼀个程序相对应,并且只有⼀个,但是⼀个程序可以有多个进程,或者⼀个进程都没有。除此之外,进程还有并发性和交往性。简单地说,进程是程序的⼀部分,程序运⾏的时候会产⽣进程。
总结:
线程是进程的⼀部分,进程是程序的⼀部分。
程序和exe,dll之间的关系:
EXE就是可执⾏⽂件,你可要双击它, 它就可以运⾏,⽽DLL是⼀个动态链接库⽂件,就是说,它不可以⾃⼰运⾏,它是须要⼀个程序的其它功能运⾏的时候,它才能运⾏,打个⽐⽅,如果你的QQ要升级,那QQ⾥⾯有关升级的DLL⽂件它就会运⾏.
EXE是带有程序⼊⼝(Main)的能被终端⽤户直接执⾏的应⽤程序,随着它的启动系统会产⽣⼀个相应的进程。
DLL是动态链接库,不包含程序执⾏⼊⼝,不能被终端⽤户直接执⾏,本⾝需要附加到现有的进程中才可以运⾏。
但两者都是基于PE格式,运⾏时由磁盘中的映像载⼊被调⽤者的内存或者共享空间中执⾏,包含程序的数据信息,只是EXE还包括程序的代码信息。
DLL可被多个程序共⽤,⽽EXE则不⾏,只能单独执⾏

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。