本文目录
C#里的应用程序域“AppDomain”是什么
应用程序域:(Application Domain,简称App Domain)一组程序集的一个逻辑容器,进程中的一个逻辑分区。通常由运行时宿主创建和操作。AppDomain唯一的作用就是进行隔离。
具体功能:
隔离,一个AppDomain中的代码创建的对象不能由另一个AppDomain中的代码直接访问。达到隔离应用程序的效果。当然如果要访问别的AppDomain中的内容,可以使用“按引用封送”或者“按值封送”的语义。
AppDomain可以卸载,但不能卸载单独的程序集或类型,只能卸载整个应用程序域。从而卸载包含在该AppDomain中的所有程序集。
AppDomain可以单独保护,AppDomain在创建后,会应用一个权限集,它决定了向这个AppDomain中运行的程序集授予的最大权限。从而保护宿主加载的代码不被破坏。
可以单独实施配置,AppDomain在创建后,会关联一组配置设置。这些设置主要影响CLR在AppDomain中加载程序集的方式。这些设置涉及搜索路径、版本重定向、卷影复制以及加载器优化。
什么叫应用软件
应用软件是指专门为某一应用目的而编制的软件。
应用软件包含以下几个方面:
1、办公室软件:文书试算表程式投影片报告数学程式创建编辑器绘图程式基础数据库档案管理系统文本编辑器。
2、互联网软件:即时通讯软件电子邮件客户端网页浏览器客户端下载工具。
3、多媒体软件:媒体播放器图像编辑软件音讯编辑软件视讯编辑软件计算机辅助设计计算机游戏桌面排版。
4、分析软件:计算机代数系统统计软件数字计算计算机辅助工程设计。
5、商务软件:会计软件企业工作流程分析客户关系管理Backoffice企业资源规划供应链管理产品生命周期管理。
扩展资料:
计算机中的应用软件有:
1、办公软件:微软Office、永中Office、WPS。
2、图象处理:Adobe、PS,绘声绘影。
3、媒体播放器:PowerDVDXP、realplayer、WindowsMediaPlayer、暴风影音(MyMPC)、千千静听。
4、媒体编辑器:会声会影、声音处理软件cool2.1、视频解码器ffdshow。
5、媒体格式转换器:MoyeaFLVtoVideoConverterPro(FLV转换器)、TotalVideoConverter(最全的,包括视频可以转为.gif格式)、WinAVIVideoConverter、WinMPGVideoConvert、WinMPGIPodConvert、Realmediaeditor(rmvb编辑)、格式化工厂。
参考资料来源:百度百科-应用软件
简述线程,进程和应用程序域的区别和联系
程序
程序是为解决一个信息处理任务而预先编制的工作执行方案,是由一串CPU能够执行的基本指令组成的序列,每一条指令规定了计算机应进行什么操作(如加、减、乘、判断等)及操作需要的有关数据。
进程
进程指是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位。
线程
线程是指线程是进程中的一个实体,是被系统独立调度和执行的基本单位。
管程
管程是指管程实际上是定义了一个数据结构和在该数据结构上的能为并发进程所执行的一组操作,这组操作能同步进程和改变管程中的数据。
关系
(1)作业是在较早的多道批处理系统中提出的,现代操作系统基本没有这个概念。一般来说作业是可以包含多个程序或数据集,但至少有一个程序。怎么理解呢?个人任务程序和作业可以从功能的角度来理解。打个比方,今天班主任要求我们进行班级大扫除,这可以看做一个作业。而这个作业被我们分成擦窗户,洗地板等等,这些所谓的“子作业”可以看成是一个一个的程序。
(2)一个程序可以有多个进程,一个线程可以包含多个程序。前半句比较好理解,那上面那个例子来说,比如说实现擦窗户这个程序。有些人(资源)去准备好布(资源)和水(资源),供别人擦洗;有些人(资源)接布进程擦窗户。这便可以理解为实现这个程序功能的两个线程。而为什么又说一个线程可以包含多个程序?仔细看清楚是“包含”。其实便是在这个进程里面直接调用其他程序,也就是使用程序的功能。
(3)一个进程至少有一个线程.线程的划分尺度小于进程,多个线程共享进程内存。多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别。一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行。还是拿上面的例子来讲,实现擦窗户这个功能的程序创建了两个进程。需要的资源有:人、布、水。这些资源早在创建的时候就已经申请了。第一条进程“有些人(资源)去准备好布(资源)和水(资源),供别人擦洗“现在可以开辟多个线程来细化这个任务。可以叫其中一个人去打水,其中一个人负责洗布,其中一个人传递干净的布等,这便是一个个线程。而无论开辟多少个线程,使用的资源都是来自进程已申请的,无法脱离进程而独自存在。另外,线程之间是独立的,打水的,洗布的,传递的,只要自己干好自己的活,没有必然的相互依赖的关系。而且可以同时进行,这便是多线程的好处所在。
(4)而对于管程呢?通俗的理解就是”管理进程“。死锁问题的存在导致管程于1971年被Dijkstra提出,说道:把所有进程对某一种临界资源的同步操作都集中起来,构成一个所谓的秘书进程。凡要访问该临界资源的进程,都需先报告秘书,由秘书来实现诸进程对同一临界资源的互斥使用。
管程由四部分组成:
1).管程内部的共享变量。
2).管程内部的条件变量。
3).管程内部并行执行的进程。
4).对于局部与管程内部的共享数据设置初始值的语句。
回到例子,上面说道两个进程中,有些人去准备布和水的工作,有些人要擦窗户。那么问题来了。准备布工作的人的名单中却写着准备水的人,那么问题来了,这个人到底该干吗?如果准备布工作要了这个人,这个人一直工作着,而准备水的工作一直等着他去做,那么就一直等着吗?更极端的情况下,这个一直在洗布就不去换水,这便是死锁的一个情形。没关系,此时班主任来了,看到在场的情形,他决定了此时这个人应该去干嘛,解决了用人冲突的问题,其作用类似管程。
应用程序域的介绍
应用程序域(application domain)(AppDomain)一种边界,它由公共语言运行库围绕同一应用程序范围内创建的对象建立(即,从应用程序入口点开始,沿着对象激活的序列的任何位置)。应用程序域有助于将在一个应用程序中创建的对象与在其他应用程序中创建的对象隔离,以使运行时行为可以预知。在一个单独的进程中可以存在多个应用程序域。