windows服务和进程的区别和联系

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了windows服务和进程的区别和联系相关的知识,希望对你有一定的参考价值。

Windows Service 是主要用于服务器环境而长期运行的应用程序, 这类程序不需要有用户界面或者任何模拟输出。 任何的用户消息通常都是记录在Windows 事件日志里。Windows Service可以在操作系统启动的时候开始,一直在后台运行,当有需要时也可以手动启动,我们可以通过管理工具里面的服务进行统一管理。
当系统启动完毕后,Windows服务并不需要通过登陆页面后才能启动,而我们启动一般的exe文件却要先登陆Windows后才能启动它。

Windows Service 是一种可随 Windows 操作系统启动而启动的,在后台运行的,通常不和用户产生交互的程序。它无法通过双击来运行,类似于 Unix 守护进程(daemon processes),当用户注销时它也不会停止。
Windows 服务由三部分组成:1.一个服务可执行文件;2.一个服务控制程序(SCP);3.服务控制管理器(SCM),负责在 HKLM\\SYSTEM\\CurrentControlSet\\Services 下创建服务键值。用户可通过 SCP 控制服务的启动、停止、暂停等,SCP 会通过 SCM 调用服务程序。
Window 标准的exe可执行程序通常有一个用户界面,Console或GUI,通常由用户来启动或停止
Windows服务是运行在windows后台指定用户下(默认System)的应用程序,它没有标准的UI界面,想比标准的EXE程序,Windows服务是在服务开始的时候创建,而在服务结束的时候销毁,而且可以设置服务是否与操作系统一起启动,一起关闭。它支持三种方式:1)自动方式 2)手动方式 3)禁用 。自动方式的时候,windows服务将在OS启动后自动启动运行,而手动方式则必须手工启动服务,禁用的情况下服务将不能被启动。另外标准的EXE默认使用的当前登录的用户,而windows服务则默认使用System用户,这在对系统资源访问的时候特别需要注意。
Windows上的单个进程所能访问的最大内存量是多少?它与系统的最大虚拟内存一样吗?这对于系统设计有什么影响?
32 位Windows上单个进程所能访问的最大内存量是4G,单由于操作系统需要给系统核心分配2G的空间,所以一般用户程序的进程可使用的最大内存为2G。
不一定一样,32位的操作系统的进程可访问的最大内存量是4G,这4G包含了虚拟内存,而一个进程可访问的最大内存量也是4G,所以进程内存访问量在物理内存大于等于4G的时候跟虚拟内存无关,而当物理内存小于4G时,进程访问的内存量随着虚拟内存的增加而增加,直到4G
Windows使用一个系统:虚拟寻址系统。该系统把程序可用的内存地址映射到硬件内存中的实际地址上,这些任务完全有Windows后台管理,其实际结 果是32位处理器上的每个进程都可以使用4GB的内存------无论计算机上有多少硬盘空间(在64位处理器上这个数值会更大)。这个4GB内存实际上 包含了程序的所有部分------包括可执行代码,代码加载的所有dll,以及程序运行时使用的所有变量的内容。这个4GB内存称为虚拟地址空间,或虚拟 内存。
EXE和DLL之间的区别是什么?
EXE就是可执行文件,你可要双击它, 它就可以运行,而DLL是一个动态链接库文件,就是说,它不可以自己运行,它是须要一个程序的其它功能运行的时候,它才能运行,打个比方,如果你的QQ要升级,那QQ里面有关升级的DLL文件它就会运行.
EXE是带有程序入口(Main)的能被终端用户直接执行的应用程序,随着它的启动系统会产生一个相应的进程。
DLL是动态链接库,不包含程序执行入口,不能被终端用户直接执行,本身需要附加到现有的进程中才可以运行。
但两者都是基于PE格式,运行时由磁盘中的映像载入被调用者的内存或者共享空间中执行,包含程序的数据信息,只是EXE还包括程序的代码信息。
DLL可被多个程序共用,而EXE则不行,只能单独执行。
参考技术A 进程是指在系统中正在运行的一个应用程序;线程是系统分配处理器时间资源的基本单元,或者说进程之内独立执行的一个单元。对于操 作系统而言,其调度单元是线程。一个进程至少包括一个线程,通常将该线程称为主线程。一个进程从主线程的执行开始进而创建一个或多个附加线程,就是所谓基于多线程的多任务。
服务相当于支持系统运行的一些必要程序,程序里运行的则是 当前使用的软件一般来讲程序里的任务可以关闭,后台则有一些不能关闭,如果关了系统进程就不能正常运行了。

Windows 服务和 Windows 进程有啥区别?

【中文标题】Windows 服务和 Windows 进程有啥区别?【英文标题】:What the difference between a Windows service and a Windows process?Windows 服务和 Windows 进程有什么区别? 【发布时间】:2013-12-10 03:31:56 【问题描述】:

Windows 服务和Windows 进程之间有什么区别

【问题讨论】:

服务始终是一个进程(甚至可能不止一个进程),但进程不一定作为服务运行。 你可以看看这个post。 这听起来更像是一个超级用户的问题 【参考方案1】:

Windows 服务本质上是长时间运行的可执行应用程序,它们在自己的 Windows 会话中运行并且不拥有任何用户界面。这些可以在计算机启动时自动启动,并且可以暂停和重新启动。

【讨论】:

【参考方案2】:

服务是一个没有用户界面的进程。您可以将服务称为流程的子集。

【讨论】:

【参考方案3】:

服务是真正的 Windows 进程,没有区别。服务的唯一特别之处在于它由操作系统启动并在单独的会话中运行。一个隔离的,可以防止它干扰桌面会话。传统上命名为daemon

【讨论】:

但是没有 UI 的进程不也被视为守护进程吗?我们以 Apache Web 服务器为例,将 Apache 作为 Windows 服务运行是否比直接调用 bin\httpd.exe 运行 Apache 提供更多的“运行能力”? 当然,Apache 不会在用户注销时退出运行。 使用runas 运行它怎么样,vs 使用windows 服务运行它呢? “运行能力”是否存在差异,或者它们实际上是相同事情的不同方式? 这只是更改进程的用户帐户,而不是它运行的会话。请单击按钮提问。

以上是关于windows服务和进程的区别和联系的主要内容,如果未能解决你的问题,请参考以下文章

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

[转帖]进程线程和协程之间的区别和联系

进程和线程的区别和联系

线程与进程之间的联系和区别

进程跟线程区别与联系

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