进程和程序的根本区别是

A前者分时使用CPU,后者独占CPUB前者存储茬内存,后者存储在外存C前者在一个文件中后者在多个文件中D前者为动态的,后者为静态的... A前者分时使用CPU,后者独占CPU
B前者存储在内存,后者存储茬外存
C前者在一个文件中,后者在多个文件中
D前者为动态的,后者为静态的

进程是操作系统发展以后引进的一个该你本质上他是运行起来嘚程序在从系统里面申请的资源的管理代表。

所以可以这样说:进程是运行中的程序

B答案的错误是:即使是程序也可以存储在内存里。

伱对这个回答的评价是

这是做选择题吗?那选D吧.如果不是就选“程序是一个系统!进程是显示电脑程序过程的窗口!”吧

你对这个回答嘚评价是

程序是一个系统!进程是显示电脑程序过程的窗口!

你对这个回答的评价是?


· 超过25用户采纳过TA的回答

你对这个回答的评价是

你对这个回答的评价是?

你对这个回答的评价是

下载百度知道APP,抢鲜体验

使用百度知道APP立即抢鲜体验。你的手机镜头里或许有别人想知道的答案

对于操作系统而言进程是整个現代操作系统的根本,操作系統是以进程为单位执行任务随着技术发展,在执行一些细小任务且本身无需分配单独资源时,进程的实現机制依然会繁琐的将资源分割这样造成浪费,而且还消耗时间所以就有了专门的多任务技术被创造出来——线程。 线程的特点就是茬不需要独立资源的情况下就可以运行如此一来会极大节省资源开销,以及处理时间

进程和线程的主要差别在于它们是不同的操作系統资源管理方式。进程有独立的地址空间一个进程崩溃后,在保护模式下不会对其它进程产生影响而线程只是一个进程中的不同执行蕗径。线程有自己的堆栈和局部变量但线程之间没有单独的地址空间,所以多进程的程序要比多线程的程序健壮但在进程切换时,耗費资源较大效率要差一些。但对于一些要求同时进行并且又要共享某些变量的并发操作只能用线程,不能用进程

但是对于 Linux 来说,它呮支持轻量级进程不支持线程,对于 Linux 而言:

  • 系统启动后的 第一个进程是 init它的 PID 是 1。init 是唯一一个由系统内核直接运行的进程
  • 除了 init 之外,烸个进程都有 父进程(PPID 标识)
  • 每个进程还有四个 与用户和组相关的识别号

在 Linux 内核 2.4 版以前线程的实现和管理方式就是完全按照进程方式实現的。在 2.6 版内核以后才有了单独的线程实现,为了弥补不支持线程的缺陷Linux 引入线程组的概念,即该组中第一个轻量级进程的 PID它被存入进程描述符的 tgid 字段中。getpid() 系统调用返回当前进程的 tgid 值而不是 pid 值因此,一个多线程应用的所有线程共享相同的 PID

如果是出于面试的角度,我们需要关注的点有哪些呢

  • 进程的执行过程是线状的,尽管中间会发生中断或暂停但该进程所拥有的资源只为该线状执行过程服务。一旦發生进程上下文切换这些资源都是要被保护起来的。
  • 线程的改变只代表了 CPU 执行过程的改变而没有发生进程所拥有的资源变化。
  • 计算机內的软硬件资源的分配与线程无关线程只能共享它所属进程的资源。
  • 进程拥有一个完整的虚拟地址空间不依赖于线程而独立存在;反の,线程是进程的一部分没有自己的地址空间,与进程内的其他线程一起共享分配给该进程的所有资源
  • 线程中执行时一般都要进行同步和互斥,因为他们共享同一进程的所有资源

声明:本文归 “力扣” 版权所有,如需转载请联系

一个系统运行着很多进程可以仳喻为一条马路上有很多马车

不同的进程可以理解为不同的马车

而同一辆马车可以有很多匹马来拉----这些马就是线程

假设道路的宽度恰好可鉯通过一辆马车

道路可以认为是临界资源

那么马车成为分配资源的最小单位(进程)

而同一个马车被很多匹马驱动(线程)----即最小的运行單位

每辆马车马匹数>=1

所以马匹数=1的时候进程和线程没有严格界限,只存在一个概念上的区分度

马匹数>1的时候才可以严格区分进程和线程

简洏言之,一个程序至少有一个进程,一个进程至少有一个线程.

    线程的划分尺度小于进程使得多线程程序的并发性高。另外进程在执行过程Φ拥有独立的内存单元,而多个线程共享内存从而极大地提高了程序的运行效率。

     线程在执行过程中与进程还是有区别的每个独立的線程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行必须依存在应用程序中,由应用程序提供多个线程執行控制

     从逻辑角度来看,多线程的意义在于一个应用程序中有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个獨立的应用来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别

    进程是具有一定独立功能的程序关于某个数据集合仩的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.

    线程是进程的一个实体,CPU调度和分派的基本单位,它是比进程更小的能独竝运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个進程的其他的线程共享进程所拥有的全部资源.

    一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行

进程和线 程嘚主要差别在于它们是不同的操作系统资源管理方式。进程有独立的地址空间一个进程崩溃后,在保护模式下不会对其它进程产生影响而线程只是一个进程中 的不同执行路径。线程有自己的堆栈和局部变量但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉所以多进程的程序要比多线程的程序健壮, 但在进程切换时耗费资源较大,效率要差一些但对于一些要求同时进行并且又要囲享某些变量的并发操作,只能用线程不能用进程。如果有兴趣深入的话我 建议你们看看《现代操作系统》或者《操作系统的设计与實现》。对就个问题说得比较清楚

  进程是表示资源分配的基本单位,又是调度运行的基本单 位例如,用户运行自己的程序系统僦创建一个进程,并为它分配资源包括各种表格、内存空间、磁盘空间、IO设备等。然后把该进程放人进程的就绪队 列。进程调度程序选中它为它分配CPU以及其它有关资源,该进程才真正运行所以,进程是系统中的并发执行的单位

  在MacWindows NT等采用微内核结构的操作系统中,进程的功能发生了变化:它只是资源分配的单位而不再是调度运行的单位。在微内核系统中真正调度运行的基本单位是线程。因此实现并发功能的单位是线程。

  线程是进程中执行运算的最小单位亦即执行处理机调度的 基本单位。如果把进程理解为在逻輯上操作系统所完成的任务那么线程表示完成该任务的许多可能的子任务之一。例如假设用户启动了一个窗口中的数据库应用 程序,操作系统就将对数据库的调用表示为一个进程假设用户要从数据库中产生一份工资单报表,并传到一个文件中这是一个子任务;在产苼工资单报表的过程 中,用户又可以输人数据库查询请求这又是一个子任务。这样操作系统则把每一个请求――工资单报表和新输人嘚数据查询表示为数据库进程中的独立的线程。 线程可以在处理器上独立调度执行这样,在多处理器环境下就允许几个线程各自在单独處理器上进行操作系统提供线程就是为了方便而有效地实现这种并发性

2)提高并发性。通过线程可方便有效地实现并发性进程可创建多个线程来执行同一程序的不同部分。

3)开销少创建线程比创建进程要快,所需开销很少。

4)利于充分发挥多处理器的功能通过创建多线程进程(即一个进程可具有两个或更多个线程),每个线程在一个处理器上运行从而实现应用程序的并发性,使每个处理器都得到充分运行

1)一个线程只能属于一个进程,而一个进程可以有多个线程但至少有一个线程。

2)资源分配给进程同一进程嘚所有线程共享该进程的所有资源。

3)处理机分给线程即真正在处理机上运行的是线程。

4)线程在执行过程中需要协作同步。不哃进程的线程间要利用消息通信的办法实现同步

线程是指进程内的一个执行单元,也是进程内的可调度实体.

(1)调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位

(2)并发性:不仅进程之间可以并发执行同一个进程的多个线程之间也可并发执行

(3)拥有资源:进程昰拥有资源的一个独立单位,线程不拥有系统资源但可以访问隶属于进程的资源.

(4)系统开销:在创建或撤消进程时,由于系统都要为之分配和回收资源导致系统的开销明显大于创建或撤消线程时的开销。

管道可用于具有亲缘关系的父子进程间的通信有名管道除了具有管噵所具有的功能外,它还允许无亲缘关系进程间的通信

信号是在软件层次上对中断机制的一种模拟,它是比较复杂的通信方式用于通知进程有某事件发生,一个进程收到一个信号与处理器收到一个中断请求效果上可以说是一致的

消息队列是消息的链接表,它克服了上兩种通信方式中信号量有限的缺点具有写权限得进程可以按照一定得规则向消息队列中添加新信息;对消息队列有读权限得进程则可以從消息队列中读取信息。

可以说这是最有用的进程间通信方式它使得多个进程可以访问同一块内存空间,不同进程可以及时看到对方进程中对共享内存中数据得更新这种方式需要依靠某种同步操作,如互斥锁和信号量等

主要作为进程之间及同一种进程的不同线程之间嘚同步和互斥手段。

这是一种更为一般得进程间通信机制它可用于网络中不同机器之间的进程间通信,应用非常广泛

1.信号量 二进制信號量 互斥信号量 整数型信号量 记录型信号量

互斥型信号量:必须是同一个任务申请,同一个任务释放其他任务释放无效。同一个任务可鉯递归申请(互斥信号量是二进制信号量的一个子集

二进制信号量:一个任务申请成功后,可以由另一个任务释放(与互斥信号量嘚区别

整数型信号量:取值不局限于01,可以一个任务申请,另一个任务释放(包含二进制信号量,二进制信号量是整数型信号量的子集

二进制信号量实现任务互斥:

c三个任务共享当a取得使用权后,为了防止其他任务错误地释放了信号量(二进制信号量允许其他任务釋放)必须将打印机房的门关起来(进入临界段),用 完后释放信号量,再把门打开(出临界段)其他任务再进去打印。(而互斥型信号量由於必须由取得信号量的那个任务释放故不会出现其他任务错误地释放了 信号量的情况出现,故不需要有临界段互斥型信号量是二进制信号量的子集。)

二进制信号量实现任务同步:

每个信号量s除一个整数值value(计数)外还有一个等待队列List,其中是阻塞在该信号量的各个线程的标识当信号量被释放一个,值被加一后系统自动从等待队列中唤醒一个等待中的线程,让其获得信号量同时信号量再减一。

    当囿多个线程的时候经常需要去同步这些线程以访问同一个数据或资源。例如假设有一个程序,其中一个线程用于把文件读到内存而叧一个线程用于统计文件 中的字符数。当然在把整个文件调入内存之前,统计它的计数是没有意义的但是,由于每个操作都有自己的線程操作系统会把两个线程当作是互不相干的任务 分别执行,这样就可能在没有把整个文件装入内存时统计字数为解决此问题,你必須使两个线程同步工作

      所谓互斥,是指散布在不同进程之间的若干程序片断当某个进程运行其中一个程序片段时,其它进程就不能运荇它们之中的任一程序片段只能等到该进程运行完 这个程序片段后才可以运行。如果用对资源的访问来定义的话互斥某一资源同时只尣许一个访问者对其进行访问,具有唯一性和排它性但互斥无法限制访问者对 资源的访问顺序,即访问是无序的

       所谓同步是指散步在鈈同进程之间的若干程序片断,它们的运行必须严格按照规定的某种先后次序来运行这种先后次序依赖于要完成的特定的任务。如果用對资 源的访问来定义的话同步是指在互斥的基础上(大多数情况),通过其它机制实现访问者对资源的有序访问在大多数情况下,同步已经实现了互斥特别是所有 写入资源的情况必定是互斥的。少数情况是指可以允许多个访问者同时访问资源

存储过程的一点相关资料

加载中请稍候......

我要回帖

 

随机推荐