进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。具有地址空间
一个进程中可以包含若干个线程;
程序并发的特征:
间断性、失去封闭性(资源共用)、不可再现性
程序的特征:
动态、并发、独立、异步
程序的三种基本状态:
就绪、执行、阻塞 以及三种基本状态的转换
为什么要引入挂起状态:
终端用户需要、父进程要求、负荷调节需求、操作系统需求(观察记账)
引入挂起状态后的状态转换
非挂起:活动态;挂起:静止态,,然后在就绪与静止状态之间转换(带有活动或静止态)
进程控制块PCB的作用:
作为独立运行基本单位的标志、能够实现间接运行方式、提供经常管理所需要的信息、提供进程调度所需要的信息、实现与其他进程的同步与通信
什么是临界区?如何解决冲突?
每个进程中访问临界资源的那段程序称为临界区,每次只准许一个进程进入临界区,进入后不允许其他进程进入。
1:如果有若干进程要求进入空闲的临界区,一次仅允许一个进程进入;
2:任何时候,处于临界区内的进程不可多于一个。如已有进程进入自己的临界区,则其它所有试图进入临界区的进程必须等待;
3:进入临界区的进程要在有限时间内退出,以便其它进程能及时进入自己的临界区;
4:如果进程不能进入自己的临界区,则应让出CPU,避免进程出现“忙等”现象。
进程同步机制应遵循的规则(避免两个进程进入临界区):
空闲让进、忙则等待、有限等待、让权等待
- 空闲让进。临界区空闲时,可以允许一个请求进入临界区的进程立即进入临界区。
- 忙则等待。当已有进程进入临界区时,其他试图进入临界区的进程必须等待。
- 有限等待。对请求访问的进程,应保证能在有限时间内进入临界区。
- 让权等待。当进程不能进入临界区时,应立即释放处理器,防止进程忙等待。
进程同步经典问题:
“生产者-消费者” “哲学家进餐问题” “读者-写者问题”(可以了解一下)
进程间通信是如何实现的?
早期的属于低级通信:原因:1:效率低,生产者每次只能向缓冲池投放一个信息 2:通信对用户不透明,隐藏了通信的具体细节。现在发展为高级通信:用户可以利用操作系统所提供的一组通信命令传送大量数据。操作系统隐藏了进程通信的实现细节。或者说,通信过程对用户是透明的。
高级通信机制:共享存储器系统、消息传递系统、管道通信系统、客户机-服务器系统
进程与线程的区别:(区别可以自己再详细看看)
1、定义:
进程:进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位(包括程序段,相关数据段,和进程控制块PCB)
线程:线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.
2、关系:
一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行.相对进程而言,线程是一个更加接近于执行体的概念,它可以与同进程中的其他线程共享数据,但拥有自己的栈空间,拥有独立的执行序列。
3、区别:
主要差别在于它们是不同的操作系统资源管理方式。进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。
4.优缺点:
线程和进程在使用上各有优缺点:线程执行开销小,但不利于资源的管理和保护;而进程正相反。同时,线程适合于在SMP机器上运行,而进程则可以跨机器迁移。