进程管理
1.进程和线程以及他们的区别
进程是对运行时程序的封装,是系统进行资源调度和分配的基本单位,实现了操作系统的并发性;
线程是进程的子任务,是CPU调度和分派的基本单位,用于保证程序的实时性,实现进程内部的并发;
一个程序至少有一个进程,一个进程至少有一个线程,线程依赖于进程为存在;
进程在执行过程中拥有独立的内存单元,而多个线程共享进程的内存。从操作系统的角度来看,进程=程序+数据+PCB(进程控制块)
2.进程有哪几种状态
- 就绪状态:进程已获得处理机以外的所需资源,等待分配处理机资源
- 运行状态:占用处理机资源运行,处于此状态的进程数小于等于CPU数
- 阻塞状态:进程等待某种条件,在条件满足之前无法执行
孤儿进程,僵尸进程?产生的原因,这两种进程对系统的影响(如:会不会消耗系统资源,如何处理这两种进程,在编程时如何避免这两种进程)
3.线程有哪几种状态 - new:在这个状态中,一个线程还没有开始
- runable:在这个状态中,线程在java虚拟机上执行
- blocked:在这个状态线程被阻塞
- waiting:等待状态,等待被唤醒
- time waiting:等待时间满后自动环形
- terminated:停止
线程的状态转换如下:
4.进程间的通信
进程之间的信息交换成为进程通信。根据交换信息量的多少,进程通信分为两种类型:低级通信和高级通信。低级通信传送的信息量少,主要用于控制信息的传送;高级通信是指进程间大批量的数据交换。
进程通信的类型
(1)共享存储器通信:交互进程之间有一个可以直接访问的共享存储区,并发进程通过对这个共享存储区的读和写进行信息交换。如基于共享数据结构的通信方式(如公用数据结构,只适合传递少量数据,如信号量,低级);基于共享存储区的通信方式(如公共内存块,高级),在这种通信方式下,操作系统只负责为通信进程提供可使用的存储空间和进程同步工具,数据交换由用户进程通过读、写命令来完成。
(2)消息传递系统(高级):进程之间的数据交换以格式化的消息为单位,放在内核中。这种通信方式可以进一步划分为:直接通信方式(通过发送和接受原语来实现)和间接通信方式(如邮箱通信方式)。
邮箱通信方式
备注:一般地,把系统态下执行的某些具有特定功能的程序段成为原语;原语的执行必须是连续的
(3)管道(pipe)及命名管道(named pipe,FIFO)通信方式:管道:是指连接一个读进程和一个写进程之间用以实现通信的共享文件,也称pipe文件。UNIX中的管道是一个环形的缓冲区,允许两个进程以生产者/消费者模型进行通信。管道可用于具有亲缘关系的父子进程间的通信,命名管道除了具有管道所具有的功能外,他还允许无亲缘关系进程间的通信。
(4)信号(signal):信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生,信号产生的条件:按键、硬件异常,进程调用kill函数将信号发送给另一个进程、用户调用kill命令将信号发送给其他进程,传递的消息比较少用于通知接收进程某个时间已经发生;
(5)信号量:主要作为进程之间(系统西濠梁)及同一种进程的不