进程和线程的概念与区别

 进程和线程的概念。

1、进程

  • 进程是计算机中因运行程序的实体
  • 进程是程序的真正运行,用户下达运行程序的命令后,就会产生进程。同一程序可产生   多个进程
  • 进程有三种基本状态:运行状态、就绪状态、阻塞状态

2、线程

  • 线程是程序执行流 的最小单位。一般由线程ID当前指令指针寄存器集合堆栈组成。
  • 线程是进程的一个实体,是系统独立调度和分派的基本单位。
  • 线程和同它在一个进程下的线程共享内存(但每个线程有自己独立的栈堆是所有线程共享的)。

 

3、线程与进程的区别?

(1)调度:在传统操作系统中,拥有资源和独立调度的基本单位都是进程。引入线程之后线程是独立调度的基本单位,进程是拥有资源的基本单位。在同一进程中,线程的切换不会引起进程的切换,而不同进程中进行的线程切换,则会引起进程切换。

(2)拥有资源:进程是拥有资源的基本单位,线程不会拥有资源,但线程可以共享其隶属于进程的共享资源。

(3)并发性:进程可以并发执行,而且同一进程内的多个线程也可以并发执行,从而使操作系统具有良好的并发性,大大提高了系统吞吐量。

(4)系统开销:创建和撤销进程时,系统都要为之分配或回收资源,如内存空间、I/O设备。在进程切换时,涉及当前执行进程CPU环境的保存以及新调度的进程CPU环境的设置;而线程切换时,只需保存和设置少量的寄存器内容。同一进程内的多个线程共享进程的地址空间,因此这些线程之间的同步与通信比较容易实现。

(5)地址空间和其他资源:进程的地址空间之间互相独立,同一进程的各个线程间共享进程的资源,某进程内的线程对于其他进程不可见。

(6)通信方面:进程间通信需要借助操作系统,而线程间可以直接读/写进程数据段来进行通信。

典型的调度算法包括先来先服务(FIFS)、短作业优先算法(SJF)、

优先级调度算法高响应比优先调度算法、时间片轮转算法、多级反馈队列调度算法。

死锁产生的原因和必要条件。

原因: (1)系统资源的竞争。

            (2)进程推进顺序非法。

必要条件:

       (1)互斥条件。

       (2)不剥夺条件。

       (3)请求和保持条件。

       (4)循环等待条件。

       银行家算法是著名的死锁避免算法。

常用的置换算法有:最佳置换算法(OPT)、先进先出页面置换算法(FIFO)、最近最久未使用(LRU)置换算法。 

4、进程通信

(1)管道(pipe)

  管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。

(2)有名管道 (namedpipe)

  有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。

(3)信号量(semaphore)

  信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。

(4)消息队列(messagequeue)

  消息队列是由消息的链表存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少管道只能承载无格式字节流以及缓冲区大小受限等缺点。

(5)信号 (sinal)

  信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生

(6)共享内存(shared memory)

  共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的 IPC 方式,它是针对其他进程间通信方式运行效率低而专门设计的。它往往与其他通信机制,如信号量,配合使用,来实现进程间的同步和通信。

(7)套接字(socket)

  套接字也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同设备及其间的进程通信

5、线程间的通信方式

(1)锁机制:包括互斥锁、条件变量、读写锁
  • 互斥锁提供了以排他方式防止数据结构被并发修改的方法。 
  • 读写锁允许多个线程同时读共享数据,而对写操作是互斥的。 
  • 条件变量可以以原子的方式阻塞进程,直到某个特定条件为真为止。对条件的测试是在互斥锁的保护下进行的。条件变量始终与互斥锁一起使用。

wait/notify 等待

Volatile 内存共享

CountDownLatch 并发工具

CyclicBarrier 并发工具

(2)信号量机制(Semaphore)

  包括无名线程信号量命名线程信号量

(3)信号机制(Signal)

  类似进程间的信号处理。

  线程间的通信目的主要是用于线程同步,所以线程没有像进程通信中的用于数据交换的通信机制。

 

 

posted @ 2019-07-30 08:11  轻轻的吻  阅读(724)  评论(0编辑  收藏  举报