首页 > 编程知识 正文

程序的本质,进程和程序的关系

时间:2023-05-05 16:03:01 阅读:135389 作者:2757

过程是什么? 程序不能单独执行。 只有将程序加载到内存中,系统才能为其分配资源才能运行。 这样运行的程序称为进程。 程序与进程的区别在于,程序是指令的集合,是进程执行的静态说明文本。 过程是程序的执行活动,属于动态概念。

多程序可以同时将多个程序加载到内存中,并且可以在操作系统的调度下同时执行。 这样的设计大大提高了CPU的利用率。 的出现,让每个用户觉得自己独占了CPU,因此,为了在CPU上实现多个编程,提出了进程。

既然有进程,为什么还要有线程? 流程有很多优点,它提供了多种编程,我们每个人都有自己的CPU和其他资源,我觉得可以提高计算机的利用率。 很多人不理解。 既然过程如此出色,为什么还需要线程呢? 其实,仔细观察,过程还存在很多缺陷,主要体现在两点上。

过程每小时只能做一件事。 如果你想同时做两件事或多件事,过程就会变得无能为力。 如果进程在运行中被阻止(例如,等待输入),则整个进程将挂起,即使进程中存在与输入的数据无关的工作,也无法执行。 如果这两个缺点难以理解的话,举个现实的例子也许就能明白了。 如果把我们上课的过程当成一个过程,我们就要亲耳听老师讲课,手里记笔记,脑子思考问题。 这样,你就能有效地完成课堂任务。 另一方面,如果只提供流程这个机制,以上三件事就不能同时执行了。 同一时间只能做一件事,听的时候不能做笔记,不能用脑子思考。 这是其中之一。 老师在黑板上写运算过程的话,我们就开始记笔记。 但是,老师突然一步也推不动了,卡住了。 他在那里想,但我们不能做别的。 此时,想考虑一下刚才没听明白的一个问题也不行。 这就是那两个。

现在你应该理解了过程的缺陷,但是解决方法很简单。 我们可以使听、写、思三个独立的过程并行。 这样做,显然可以提高上课的效率。 实际操作系统也引入了这种类似的机制——线程。

因为线程的优点是合并的,所以我们发明了流程,还发明了线程。 但是,进程和线程的并发层次不同。 流程属于处理器这一层提供的抽象。 线程是在进程这个层面上提供了又一个层面的同时抽象。 一旦进入计算机体系结构,就可以看到流水线提供的同时,也是指令级同时。 这样,流水线、线程、进程从低到高,在三个层次上提供了我们渴望的并发!

线程不仅可以提高进程的并发性,还可以有效利用多处理器和多核计算机。 现在的处理器倾向于多核的方向。 在没有线程之前,多核无法提高单个进程的执行速度。 其理由是上述所有两点的限制。 但是,如果一个进程分解为多个线程,则不同的线程可以在不同的内核上运行,从而提高了进程的执行速度。

例如,我们使用微软的Word很好地拼写,但实际上我们打开了多个线程。 这些线程一个负责显示,一个接受键盘输入,一个进行内存等。 这些线程一起运行,在屏幕显示的同时进行输入,而不是输入字符,过了一会儿就像显示了一样。 我们在不知不觉中,也进行了自动保存操作。 这就是线程给我们带来的便利之处。

进程和线程的区别进程是针对某个数据集合上的执行活动,具有某种独立功能的程序,是系统进行资源分配和调度的独立单位。 线程是进程的实体,是CPU调度和调度的基本单元,是比进程小且可以独立执行的基本单元。 线程本身基本上没有系统资源,虽然只有一点执行必不可少的资源(例如程序计数器、寄存器和栈),但可以与属于同一进程的其他线程共享进程拥有的所有资源。 一个线程可以创建另一个线程来撤消,并可以在同一进程中的多个线程之间同时运行。 进程和线程的主要区别在于操作系统管理资源的方式不同。 进程具有独立的地址空间,当一个进程崩溃后,保护模式不会影响其他进程,线程只是一个进程中不同的执行路径。 线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间。 如果一个线程死了,整个过程就等于死了。 因此,多进程程序比多线程程序更强大,但在进程切换时会消耗资源,导致效率降低。 但是,需要同时进行并共享某些变量的并发操作只能使用线程,不能使用进程。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。