① 程序是什么怎样编程序
首先的学几种编程语言,然后编写自己需用的东西。看看书就知道什么是程序了,具体的定义可能是那位老兄说的把,建议看看最基本的编程语言,像c语言就可以。
② 什么是程序
程序可以看作对一系列动作的执行过程的描述。刚才我们描述的是个形式非常简单的程序,实际上这个过程也可能变得复杂。例如,轮到取款时发现带的是个错误的储蓄卡,你就需要同家取卡,再次排队,这样就出现了重复性动作,步骤也会相应增加。
我们使用计算机,就是要利用计算机处理各种小同的问题。但是,计算机不会自己思考,它是人类手中的木偶啊,因此我们要明确告诉它做什么工作以及做哪几步才能完成这个工作。
试想一下,计算机程序执行的整个过程是怎样的呢?
计算机完成一件我们分配给它的任务,就像“取钱”这件工作,它按照我们的命令去做,我们说“立正”,它不能“稍息”,这样在我们的支配下完成预定工作。
这里,我们所下达的每个命令称为指令,它对应着计算机执行的一个基本动作。我们告诉计算机按照某种顺序完成系列指令,这一系列指令的集合称为程序。
(2)程序像什么扩展阅读:
在国标《质量管理体系 基础和术语》GB/T19000—2008/ISO9000:2005中第3.4.5条 程序procere中对于“程序”的定义进行了规定。
一个环节,内部嵌套着一系列复杂的列逻辑慎密的一个组件,如若一个地方出问题则会影响到整个主体(可以理解为事务)。
术语定义
在中华人民共和国国家标准《质量管理体系 基础和术语》GB/T19000—2008/ISO9000:2005(代替GB/T19000—2000)中第3.4.5条 程序procere中对于“程序”的定义是“ 为进行某项活动或过程(3.4.1)所规定的途径。”
程序,是管理方式的一种,是能够发挥出协调高效作用的工具,在我们的社会主义建设事业或者说现代化建设中,应该充分重视它的作用,应该不断地将我们的工作从无序整改到有序。
③ 什么叫程序
计算机程序(Computer Program)是指一组指示计算机或其他具有消息处理能力装置每一步动作的指令,通常用某种程序设计语言编写,运行于某种目标体系结构上。打个比方,一个程序就像一个用汉语(程序设计语言)写下的红烧肉菜谱(程序),用于指导懂汉语(编译器)同时也会烹饪手法的人(体系结构)来做这道菜。 通常,以英文文本为基础的计算机程序要经过编译和链接而成为一种人们不易看清而计算机可解读的一连串数字的格式,然后放入运行。未经编译就可运行的程序,通常称之为脚本程序(script)。
为了一个程序运行,计算机加载程序代码,可能还要加载数据,从而初始化成一个开始状态,然后调用某种启动机制。在最低层上,这些是由一个加载器开始的。
在大多数计算机中,操作系统例如Windows等,加载并且执行很多程序。在这种情况下,一个计算机程序是指一个单独的可执行的映射,而不是当前在这个计算机上运行的全部程序。
要讲的更加详细的话,必须说冯·诺依曼体系结构。
在一台基于最常见的冯诺依曼体系结构(又称普林斯顿结构)的计算机上,程序从某种外部设备,通常是硬盘,被加载到计算机之内。 如果计算机选择冯诺依曼体系结构,那么程序就被加载入内存。 指令序列顺序执行,直到一条跳转或转移指令被执行,或者一个中断出现。所有这些指令都会改变指令寄存器的内容。
基于这种体系的计算机,如果没有程序的支持,将无法工作。一个计算机程序是一系列指令的集合。
程序里的指令都是基于机器语言;程序通常首先用一种计算机程序设计语言编写,然后用编译器或者解释器翻译成机器语言。 有时,也可以用汇编语言编程,汇编语言实质就是表示机器语言的一组记号-在这种情况下,用于翻译的程序叫做汇编程序。
说说楼上没有说完的算法
算法指解决某个问题的严格方法,通常还需辅以某种程度上的运行性能分析。算法可以是纯理论的,也可以由一个计算机程序实现。理论算法通常根据复杂性分为不同类别;实现的算法通常经过剖析(Profiling)以测试其性能。请注意虽然一个算法在理论上有效可行,但是一个糟糕的算法仍会浪费宝贵的计算机资源。(更详细信息,参见算法信息论(Algorithmic Information Theory))
④ 程序是什么
计算机程序的定义LJ
程序(program)是为实现特定目标或解决特定问题而用计算机语言编写的命令序列的集合。 程序(港台称之为程式) program(me)或procere chéng xù
编辑本段概念
概念1.:为进行某活动或过程所规定的途径。 概念2.程序是由序列组成的,告诉计算机如何完成一个具体的任务。由于现在的计算机还不能理解人类的自然语言,所以还不能用自然语言编写计算机程序。
编辑本段指示计算机按解决问题的步骤
实现预期目的而进行操作的一系列语句和指令。一般分为系统程序和应用程序两大类。 计算机中的程序在港澳台地区称为程式。程序就是为使电子计算机执行一个或多个操作,或执行某一任务,按序设计的计算机指令的集合。由程序计数器(Program Counter)控制。程序(program)是为实现特定目标或解决特定问题而用计算机语言编写的命令序列的集合。是用汇编语言、高级语言等开发编制出来的可以运行的文件,在计算机中称可执行文件(后缀名一般为.exe)。我们玩的游戏一般都是应用程序(但现在后缀名为.swf的Flash影片类的游戏也比较流行)
⑤ 程序是什么
加壳和脱壳,简单说就是软件的加密和解密!
最早提出“壳”这个概念的,据我所知,应该是当年推出脱壳软件 RCOPY 3 的作者熊焰先生。在几年前的 DOS 时代,“壳”一般都是指磁盘加密软件的段加密程序,可能是那时侯的加密软件还刚起步不久吧,所以大多数的加密软件(加壳软件)所生成的“成品”在“壳”和需要加密的程序之间总有一条比较明显的“分界线”。有经验的人可以在跟踪软件的运行以后找出这条分界线来,至于这样有什么用这个问题,就不用我多说了。但毕竟在当时,甚至现在这样的人也不是很多,所以当 RCOPY3 这个可以很容易就找出“分界线”,并可以方便的去掉“壳”的软件推出以后,立即就受到了很多人的注意。老实说,这个我当年在《电脑》杂志看到广告,在广州电脑城看到标着999元的软件,在当时来说,的确是有很多全新的构思,单内存生成 EXE 可执行文件这项,就应该是世界首创了。但它的思路在程序的表现上我认为还有很多可以改进的地方(虽然后来出现了可以加强其功力的 RO97),这个想法也在后来和作者的面谈中得到了证实。在这以后,同类型的软件想雨后春笋一般冒出来,记得住名字的就有: UNKEY、MSCOPY、UNALL .... 等等,但很多的软件都把磁盘解密当成了主攻方向,忽略了其它方面,当然这也为以后的“密界克星”“解密机器”等软件打下了基础,这另外的分支就不多祥谈了,相信机龄大一点的朋友都应该看过当时的广告了。
解密(脱壳)技术的进步促进、推动了当时的加密(加壳)技术的发展。LOCK95和 BITLOK 等所谓的“壳中带籽”加密程序纷纷出笼,真是各出奇谋,把小小的软盘也折腾的够辛苦的了。正在国内的加壳软件和脱壳软件较量得正火红的时候,国外的“壳”类软件早已经发展到像 LZEXE 之类的压缩壳了。这类软件说穿了其实就是一个标准的加壳软件,它把 EXE 文件压缩了以后,再在文件上加上一层在软件被执行的时候自动把文件解压缩的“壳”来达到压缩 EXE 文件的目的。接着,这类软件也越来越多, PKEXE、AINEXE、UCEXE 和后来被很多人认识的 WWPACK 都属于这类软件,但奇怪的是,当时我看不到一个国产的同类软件。
过了一段时间,可能是国外淘汰了磁盘加密转向使用软件序列号的加密方法吧,保护 EXE 文件不被动态跟踪和静态反编译就显得非常重要了。所以专门实现这样功能的加壳程序便诞生了。 MESS 、CRACKSTOP、HACKSTOP、TRAP、UPS 等等都是比较有名气的本类软件代表,当然,还有到现在还是数一数二的,由台湾同胞所写的 FSE 。其实以我的观点来看,这样的软件才能算是正宗的加壳软件。
在以上这些加壳软件的不断升级较劲中,很多软件都把比较“极端”技术用了上去,因为在这个时候 DOS 已经可以说是给众高手们玩弄在股掌之间了,什么保护模式、反 SICE 、逆指令等等。相对来说,在那段时间里发表的很多国外脱壳程序,根本就不能对付这么多的加壳大军,什么 UPC、TEU 等等都纷纷成为必防的对象,成绩比较理想的就只有 CUP386 了,反观国内,这段时间里也没了这方面的“矛盾斗争”。加壳软件门挥军直捣各处要岗重地,直到在我国遇到了 TR 这个铜墙铁壁以后,才纷纷败下阵来各谋对策,但这已经是一年多以后的事情了。我常想,如果 TR 能早两年“出生”的话,成就肯定比现在大得多,甚至盖过 SICE 也有可能。TR 发表的时候 WIN95 的流行已经成为事实,DOS 还有多少的空间,大家心里都清楚。但话又说回来, TR 的确是个好软件,比起当年的 RCOPY3 有过之而无不及,同时也证明了我们中国的 CRACK 实力(虽然有点过时)。这个时候,前面提到过的 FSE 凭着强劲的实力也渐渐的浮出了水面,独领风骚。其时已经是 1997 年年底了,我也走完了学生“旅程”。工作后在CFIDO 的 CRACK 区认识了 Ding-Boy ,不久 CRACK 区关了,我从此迷上了 INTERNET,并于98年6月建起了一个专门介绍“壳”的站台: ;;,放上了我所收集的所有“壳”类软件。在这段时间里,各种“壳”类软件也在不段的升级换代,但都没什么太大的进展,差不多就是 TR 和众加壳软件的版本数字之争而已。
1998年8月,一个名为 UNSEC (揭秘)的脱壳软件发表了,它号称可以脱掉98年8月以前发表的所有壳。我测试之后,觉得并没传闻中的那么厉害,特别是兼容性更是令我不想再碰它。 Ding-Boy 给这个软件的作者提了很多建议,但寄去的 EMIAL 有如泥牛入海,可能是一怒之下吧,不久 Ding-Boy 的 BW (冲击波)就诞生了。这个使用内存一次定位生成 EXE 文件(后来放弃了)的脱壳软件,在我的站台公开后,得到了很多朋友们的肯定。要知道,从RCOPY 3 开始,绝大部分的脱壳软件都是要两次运行目标程序来确定 EXE 的重定位数据的。BW 的这一特点虽然有兼容性的问题,但也树立了自己的风格、特色。经过几个月的改善, BW 升级到了 2.0 版本,这个版本的推出可以说是 BW 的转折点,因为它已经是一个成熟、稳定脱壳软件了,它可以对付当时(现在)大多数的壳,包括当时最新的 FSE 0.6 等。更重要的是这个版本把选择壳的和软件“分界线”这个最令新手头疼的步骤简化到不能再简化的地步,使更多的朋友接受了它。另外,能加强 BW 功力的 CI 模式也是其它脱壳软件没有的东西。最近,BW 发表了最新的 2.5 BETA2 版本,增强了一些方面的功能,因它竟然可以脱掉号称最厉害的磁盘加密工具 LOCKKING 2.0 的加密壳,因而进一步奠定了它在“脱壳界”的地位。说到最新,就不能不提 GTR、LTR、EDUMP、ADUMP、UPS、UPX、APACK 这几个国外的好软件了,它们每个都有自己的特色,可以说都是当今各类“壳”中的最新代表了。(这些软件和详细介绍请到我的主页查阅)
由于 WINDOWS 3.1 只是基于 DOS 下的一个图形外壳,所以在这个平台下的“壳”类软件很少,见过的就只有像 PACKWIN 等几个有限的压缩工具,终难成气候。
可能是 MICROSOFT 保留了 WIN95 的很多技术上的秘密吧,所以即便是 WIN95 已经推出了 3 年多的时间,也没见过在其上面运行的“壳”类软件。直到 98 年的中期,这样的软件才迟迟的出现,而这个时候 WIN98 也发表了有一段日子了。应该是有 DOS 下的经验吧,这类的软件不发表由自可,一发表就一大批地的冲了出来。先是加壳类的软件如: BJFNT、PELOCKNT 等,它们的出现,使暴露了 3 年多的 WIN95 下的 PE 格式 EXE 文件得到了很好的保护。大家都应该知道现在很多 WIN95 下的软件都是用注册码的方法来区分、确定合法与非法用户的吧,有了这类加壳软件,这种注册方法的安全性提高了不少,如果大家也有自己编的 WIN95 程序,就一定要多留意一下本类软件了。接着出现的就是压缩软件了,因为 WIN95 下运行的 EXE 文件“体积”一般都比较大,所以它的实用价值比起 DOS 下的压缩软件要大很多,这类的软件也很多,早些时候的 VBOX、PEPACK、PETITE 和最近才发表的 ASPACK、UPX 都是其中的佼佼者。在 DOS 下很流行的压缩软件 WWPACK 的作者也推出了对应 WIN95 版本的 WWPACK32,由于性能并不是十分的突出,所以用的人也不太多。由于压缩软件其实也是间接给软件加了壳,所以用它们来处理 EXE 也是很多软件作者喜欢做的事情,最近新发表的很多软件里都可以看到这些加壳、加压缩软件的名字了。有加壳就一定会有脱壳的,在 WIN95 下当然也不例外,但由于编这类软件比编加壳软件要难得多,所以到目前为止,我认为就只有 PROCDUMP 这个软件能称为通用脱壳软件了,它可以对付现在大多数的加壳、压缩软件所加的壳,的确是一个难得的精品。其它的脱壳软件多是专门针对某某加壳软件而编,虽然针对性强、效果好,但收集麻烦,而且这样的脱壳软件也不多。前些时候 TR 作者也顺应潮流发表了 TR 的 WIN95 版本: TRW ,由现在的版本来看可以对付的壳还不多,有待改进。
BW 的作者 Ding-Boy 最新发表了一个 WIN95 的 EXE 加壳软件 DBPE 。虽然它还不太成熟,但它可以为软件加上使用日期限制这个功能是其它加壳软件所没有的,或者以后的加壳软件真的会是像他说的那样可以:加壳和压缩并重、并施;随意加使用日期;加上注册码;加软件狗(磁盘)保护;加硬件序列号判别;加... 。
⑥ 什么是程序
简单地说,程序可以看作对一系列动作的执行过程的描述。刚才我们描述的是个形式非常简单的程序,实际上这个过程也可能变得复杂。例如,轮到取款时发现带的是个错误的储蓄卡,你就需要同家取卡,再次排队,这样就出现了重复性动作,步骤也会相应增加。
那么,汁算机程序到底是什么?计算机里的程序和日常生活中的程序很相似!
我们使用计算机,就是要利用计算机处理各种小同的问题。但是,计算机不会自己思考,它是人类手中的木偶啊,因此我们要明确告诉它做什么工作以及做哪几步才能完成这个工作。试想一下,计算机程序执行的整个过程是怎样的呢?计算机完成一件我们分配给它的任务,就像“取钱”这件工作,它按照我们的命令去做,我们说“立正”,它不能“稍息”,这样在我们的支配下完成预定工作。这里,我们所下达的每个命令称为指令,它对应着计算机执行的一个基本动作。我们告诉计算机按照某种顺序完成系列指令,这一系列指令的集合称为程序。
⑦ 什么是程序 什么是数据
好像记得是汇编基础啊~~
就象汇编指令全部是放在内存里面的~
然而 数据 全部是放在寄存器 如 AX BX CX 等等~
数据和命令是分开存储的
就好像 汇编里debug调试时候 可以直接选择跳转到命令行内存地址 不一定要使用标识符号
所以 对这两块存储单元是不同的处理方法
程序是指令的有序集合
硬件里的“程序”是第一层 我们平时说的编程的“程序”是在它之上的
就好像 我们可以赤脚骑脚踏车 但是 我们习惯穿着鞋子骑车
可以说 是程序上面的程序~
就是低级语言 与 高级语言之分~ 高级语言是站在低级语言之上的
高级语言里的一条指令 就是在低级语言里就是一段程序
希望你能明白了~~ 不是太好解释的~ 多想想就行了
⑧ xp系统有很多自带的程序 像什么开发工具 等等的 哪些是可以卸载的 求高手解答
这要看你自己需要些什么不需要什么,才能决定,一般来说它提供的都是运行库,也就是说你可以使用xp系统作为平台运行一些与之有关的程序,所以不很清楚地话建议先不要忙着卸载它们。
⑨ 程序的概念
程序=算法+数据结构
程序就是一系列有序执行的指令集合。
第一个答案对于大多数人其实等于没有回答,因为算法这个概念可能是一个比程序更为复杂的概念。
第二个答案算是有点容易明白,但还不能让人明白程序能做什么不能做什么。
一,菜谱
材料: 五花肉半斤,尖椒一个,青蒜4-5根,(其实正宗的回锅肉还要放豆干,再放根红椒点缀,咱家没有,省略了),白糖2茶勺,生抽1汤勺,盐2克,鸡精,料酒,姜片,葱段;蒜片,郫县豆瓣酱1汤勺
做法: 预先处理:将整块五花肉放入热水中煮熟(筷子扎下去可以扎透),期间点些料酒,放两片姜,两三段葱;然后放入冷水中冷却。其中,冷水中冷却的步骤可以使肉快速收缩,帮助成型,增加嚼劲儿,是普通厨子变大厨的关键步骤,不可省略哈。
青椒切菱形段,青蒜拍一下蒜头,切寸段。蒜头和蒜叶分开放。
预先处理过的五花肉切薄片,越薄越好。俺就这刀工了,算比较厚的啊。
蒜拍碎(没拍),郫县豆瓣剁成茸(碎点儿好看也好吃)。
处理好的肉片下油锅,旺火煸炒。直至肉片打卷,变得焦黄。
将超好的肉片拨至一边,下入蒜末和郫县豆瓣,用小火炒出红油。
倒入尖椒段和青蒜蒜头,烹入糖,生抽,盐。注意:郫县豆瓣酱和生抽均有咸度,盐一定要酌情放。
待尖椒和蒜头香味出来,放入青蒜叶及鸡精兜匀。青蒜叶熟的很快,这个步骤只需要30秒或者更短,只要看到青蒜叶被油裹住就可以了。
出锅
以上是网上找的一个回锅肉的菜谱(貌似这个下酒好)。从广义的角度来说这也是一个程序,怎么说呢?
这个程序与计算机程序略微不一样,这个程序的运行者是一个可以认识上面的文字,能正确理解每句话的意义,且有能力得到材料并按步骤执行的人。而计算机程序则是计算机可以理解和执行语句。
二,为什么要有编程语言
就像上面的菜谱一样,我们只要识得汉字基本都可以照着来执行。为什么要有让人看起怎么都不能一下就接受的编程语言呢?
自然语言有歧义
男老师发现一女生上课睡觉,气愤的说:我在上面累的要死,你在下面一动不动!不配合也就罢了,连点反应都没有,将来要是肚子里没东西,可别怪老师不行!
中国足球队谁也打不赢。中国乒乓球队谁也打不赢。
冬天太冷,出门时衣服能穿多少就穿多少。夏天太热,出门时衣服能穿多少就穿多少。
地铁里听到一个女孩大概是给男朋友打电话,“我已经到西直门了,你快出来往地铁站走。如果你到了,我还没到,你就等着吧。如果我到了,你还没到,你就等着吧。”
老婆给当程序员的老公打电话:下班顺路买一斤包子带回来,如果看到卖西瓜的,买一个。当晚,程序员老公手捧一个包子进了家门…老婆怒道:你怎么就买了一个包子?!老公答曰:因为看到了卖西瓜的。
这是几则最典型的汉语歧义,其它语种中一样有很多这样的歧义。看最后程序员这则,那么就是老婆下了一系列指令但是执行者按照另一种意义去执行了。当然这例子还有不恰当的地方,我们也可以将指令改为:“下班顺路买一斤包子带回来,另外如果看到卖西瓜的,买一个西瓜。”。但是麻烦就在汉语本身并未限制我们必须如此,另外其它例子中的用法那就更加不容易确定意义了,还牵扯到语境。所以到今天为止计算机在处理自然语言上都还很糟糕。
自然语言不稳定
666, 虾米, 酱紫, 沙发, 粉丝
以上这些词语在有了网络后就多了一层意思,不上网的人可能根本不知道这多出一层意思。当然不稳定本质上还是带来歧义。
因为这些原因才有数学语言(其实一样有歧义,不然就不会产生数理逻辑这个分支了)、编程语言来规避歧义。
三,程序是什么
这真是一个不好下定义的词,比较可靠的回答都要涉及数理逻辑。无论是递归函数论、图灵机模型、lambda演算都不是那么容易掌握的。这些远比学一门编程语言及掌握写程序更难。所以在这里我们先只给出一个形象的比喻,程序就是一段编译器或解释器(这东西可能比任何人都要听你的话,只要你能用它懂的语言来指挥)能听懂的指令。
打开微信我们可以指挥微信,我们可以给好友发信息,可以加好友,可以发朋友圈,我们下什么指令它就做什么,我们下指令是通过点击屏幕。而编译器与解释器也是类似的东西,不过这东西它只接受它认识的指令,它接受指令都是文字(主要是英文,数字,标点)。
四,计算、同构、模拟
对于同一件事比如我们要计算3+5,那么我们可以有:
扳着手指头左手3个,右手5个放在一起是8个手指头
先拿出3个小球,再拿出5个小球放在一起是8个小球
我们在计算器输入3+5得出8
这三个方法都可以计算出3+5的值,他们用了不同方法的形式但在对于计算3+5这个核心上是计算等价的。也就是同构的概念。
有了同构我们就可以模拟了,比如你有小球,拿它做了一次加法运算。但是我没有小球我可以用手指头或者石子来代替小球模拟你用小球做加法运算,并且得出和你一样的结果。
我们是怎么用程序来事的呢?主要就是用计算机中的数据来模拟现实中的东西。
比如摄像头中的你脑袋往左移了一下,那么本质上计算机中代表脑袋的那些数据的x坐标减去了一定的值,最终再输出到显示器上。
比如你在纸上解了一个方程,那么在计算机也有一个模拟你每一步的计算的过程来得出和你一样的值。只是你用纸和笔来进行,而计算机用它的方式来进行。
⑩ 程序是什么意思
程序是计算机指令的集合,它以文件的形式存储在磁盘上。说白了你的所有的可运行软件都是以程序形式存在于硬盘上的。如果程序启动了(运行了)程序被加载后运行于内容中就形成了一个进程。进程只是线程的容器,里面至少包含一个线程,具体的功能需要由程序员编程通过线程执行相关的操作。如有兴趣,以下为C++中对 进程 线程 程序的孙鑫老师一个说明。
进程:通常被定义为一个正在运行的程序的实例,是一个程序在其自身的地址空间中的一次执行活动。进程是资源申请、调度和独立运行的单位,因此,它使用系统中的运行资源;而程序不能申请系统资源,不能被系统调度,也不能作为独立运行的单位,因此,它不占用系统的运行资源。
进程由两个部分组成:
1、操作系统用来管理进程的内核对象。内核对象也是系统用来存放关于进程的统计信息的地方。
2、地址空间。它包含所有可执行模块或DLL模块的代码和数据。它还包含动态内存分配的空间。如线程堆栈和堆分配空间。进程是不活泼的。进程从来不执行任何东西,它只是线程的容器。若要使进程完成某项操作,它必须拥有一个在它的环境中运行的线程,此线程负责执行包含在进程的地址空间中的代码。
单个进程可能包含若干个线程,这些线程都“同时” 执行进程地址空间中的代码。
每个进程至少拥有一个线程,来执行进程的地址空间中的代码。当创建一个进程时,操作系统会自动创建这个进程的第一个线程,称为主线程。此后,该线程可以创建其他的线程。系统赋予每个进程独立的虚拟地址空间。对于32位进程来说,这个地址空间是4GB。
每个进程有它自己的私有地址空间。进程A可能有一个存放在它的地址空间中的数据结构,地址是0x12345678,而进程B则有一个完全不同的数据结构存放在它的地址空间中,地址是0x12345678。当进程A中运行的线程访问地址为0x12345678的内存时,这些线程访问的是进程A的数据结构。当进程B中运行的线程访问地址为0x12345678的内存时,这些线程访问的是进程B的数据结构。进程A中运行的线程不能访问进程B的地址空间中的数据结构,反之亦然。
4GB是虚拟的地址空间,只是内存地址的一个范围。在你能成功地访问数据而不会出现非法访问之前,必须赋予物理存储器,或者将物理存储器映射到各个部分的地址空间。
4GB虚拟地址空间中,2GB是内核方式分区,供内核代码、设备驱动程序、设备I/O高速缓冲、非页面内存池的分配和进程页面表等使用,而用户方式分区使用的地址空间约为2GB,这个分区是进程的私有地址空间所在的地方。一个进程不能读取、写入、或者以任何方式访问驻留在该分区中的另一个进程的数据。对于所有应用程序来说,该分区是维护进程的大部分数据的地方。线程
线程由两个部分组成:
1、线程的内核对象,操作系统用它来对线程实施管理。内核对象也是系统用来存放线程统计信息的地方。
2、线程堆栈,它用于维护线程在执行代码时需要的所有参数和局部变量。
当创建线程时,系统创建一个线程内核对象。该线程内核对象不是线程本身,而是操作系统用来管理线程的较小的数据结构。可以将线程内核对象视为由关于线程的统计信息组成的一个小型数据结构。
线程总是在某个进程环境中创建。系统从进程的地址空间中分配内存,供线程的堆栈使用。新线程运行的进程环境与创建线程的环境相同。因此,新线程可以访问进程的内核对象的所有句柄、进程中的所有内存和在这个相同的进程中的所有其他线程的堆栈。这使得单个进程中的多个线程确实能够非常容易地互相通信。
线程只有一个内核对象和一个堆栈,保留的记录很少,因此所需要的内存也很少。
因为线程需要的开销比进程少,因此在编程中经常采用多线程来解决编程问题,而尽量避免创建新的进程。线程运行
操作系统为每一个运行线程安排一定的CPU时间 —— 时间片。系统通过一种循环的方式为线程提供时间片,线程在自己的时间内运行,因时间片相当短,因此,给用户的感觉,就好像线程是同时运行的一样。
如果计算机拥有多个CPU,线程就能真正意义上同时运行了。互斥对象
互斥对象(mutex)属于内核对象,它能够确保线程拥有对单个资源的互斥访问权。
互斥对象包含一个使用数量,一个线程ID和一个计数器。
ID用于标识系统中的哪个线程当前拥有互斥对象,计数器用于指明该线程拥有互斥对象的次数。