进程概念

一、 进程控制理论

    什么是进程?什么是多进程?进程的分类?

    进程和程序的区别?

    linux进程管理,有哪些管理工具?作用?

    进程的三态是什么?进程的结构有哪些?

    进程的调度算法有哪些?什么是优先级反转?

    什么是死锁?什么是同步?什么是互斥?

  进程的退出

    进程退出有几种方式?有什么区别?

    掌握exit_exit的函数用法

 

 

二、进程控制理论

  进程的概念

1.      什么是进程?什么是多进程?进程的分类?进程的属性?

进程是一个具有一定独立功能的程序的一次运行活动,同时也是资源分配的最小单元

进程的生命周期:

创建:  每个进程都是由其父进程创建进程可以创建子进程,子进程又可以创建子进程的子进程

运行:  多个进程可以同时存在进程间可以通信

撤销:   进程可以被撤销,从而结束一个进程的运行

进程的分类:

交互进程、批处理进程和守护进程

进程的属性:

进程ID(PID):是唯一的数值,用来区分进程

父进程和父进程的ID(PPID)

启动进程的用户ID(UID)和所归属的组(GID)

进程状态:运行R、休眠S、僵尸Z

执行状态:进程正在占用CPU

就绪状态:进程已具备一切条件,正在等待分配CPU的处理时间片

等待状态:进程不能使用CPU,若等待事件发生则可将其唤醒


进程执行的优先级

进程所连接的终端名

进程资源占用,如占用资源大小(内存、CPU占用量)

 

2.      进程和程序的区别?

程序是放到磁盘的可执行文件,进程是指程序执行的实例;

进程是动态的,程序是静态的:程序是有序代码的集合。通常进程不可在计算机之间迁移;而程序通常对应着文件、静态和可以复制;

进程是暂时的,程序是长久的:进程是一个状态变化的过程,程序可长久保存;

进程与程序组成不同:进程的组成包括程序、数据和进程控制块(即进程状态信息);

进程与程序的对应关系:通过多次执行,一个程序可对应多个进程;通过调用关系,一个进程可包括多个程序。

 

 

3.      详解进程在linux中的作用,组成,什么是父子进程?

Linux系统是一个多进程的系统,它的进程之间具有并行性、互不干扰等特点。

也就是说,每个进程都是一个独立的运行单位拥有各自的权利和责任。其中,各个进程都运行在独立的虚拟地址空间,因此,即使一个进程发生异常,它也不会影响到系统中的其他进程。

Linux中的进程包含3个段,分别为“数据段”、“代码段”和“堆栈段”。

“数据段”存放的是全局变量、常数以及动态数据分配的数据空间;

“代码段”存放的是程序代码的数据。

“堆栈段”存放的是子程序的返回地址、子程序的参数以及程序的局部变量等。

  堆和栈的概念见博文——堆和栈。


父子进程:

父进程与子进程是管理与被管理的关系,当父进程终止时,子进程也随之终止;但子进程终止,父进程不一定终止

4.      常用的进程管理工具,分别起什么作用?

ps、kill、pgrep

监视进程工具:

    ps:aux或lax输出的解释

ps aux |more分页查看

top 选择参数

终止进程的工具:

kill [信号代码] 进程ID

killall 正在运行的程序名

pkill 正在运行的程序名

xkill

pgrep查询进程工具:pgrep 参数选项 程序名

5.      进程的三态之间的转换关系,常用的进程调度算法有哪些?用排队买票的例子对比

就绪->执行:处于就绪状态的进程->进程调度程序为之分配处理器->执行(排队买票轮到自己)

执行->就绪:处于执行状态的进程->分配的时间片用完让出处理器->就绪(正要买票发现车票时间未确定,让后面的人先买票)

执行->阻塞:正在执行的进程->等待无法继续执行->阻塞(买票时发现需要做其他重要的事而选择不买票)

阻塞->就绪:阻塞状态的进程->等待的事情发生->就绪(路过车站为别人买票,却未知车票详情,接到别人确切的车票时间而排队买票)

6.      进程的调度算法有哪些?什么是优先级反转?

调度算法:

先来先服务调度算法

短进程优先调度算法

高优先级优先调度算法

时间片轮转法

优先级反转:

优先级反转是指一个低优先级的任务持有一个被高优先级任务所需要的共享资源。高优先任务由于因资源缺乏而处于受阻状态,一直等到低优先级任务释放资源为止。而低优先级获得的CPU时间少,如果此时有优先级处于两者之间的任务,并且不需要那个共享资源,则该中优先级的任务反而超过这两个任务而获得CPU时间。如果高优先级等待资源时不是阻塞等待,而是忙循环,则可能永远无法获得资源,因为此时低优先级进程无法与高优先级进程争夺CPU时间,从而无法执行,进而无法释放资源,造成的后果就是高优先级任务无法获得资源而继续推进。

7.      什么是死锁?什么是同步?什么是互斥?

死锁:多个进程因竞争资源而形成一种僵局若无外力作用,这些进程都将永远不能再向前推进

同步:一组并发进程按一定的顺序执行的过程称为进程间的同步

互斥:指当有若干进程都要使用某一共享资源时,任何时刻最多允许一个进程使用,其他要使用该资源的进程必须等待,直到占用该资源者释放了该资源为止

8.      常见的面试问题:死锁的原因,如何解决?同步与互斥是什么概念?如何实现优先级反转?

死锁的四个必要条件(缺一不可):

(1) 互斥条件:一个资源每次只能被一个进程使用。

(2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。

(3) 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。

(4) 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。

 

死锁的解决办法:

(1)按同一顺序访问对象。    

如果所有并发事务按同一顺序访问对象,则发生死锁的可能性会降低。例如,如果两个并发事务获得 Supplier 表上的锁,然后获得 Part 表上的锁,则在其中一个事务完成之前,另一个事务被阻塞在 Supplier 表上。第一个事务提交或回滚后,第二个事务继续进行。不发生死锁。将存储过程用于所有的数据修改可以标准化访问对象的顺序           

(2)避免事务中的用户交互。    

避免编写包含用户交互的事务,因为运行没有用户交互的批处理的速度要远远快于用户手动响应查询的速度,例如答复应用程序请求参数的提示。例如,如果事务正在等待用户输入,而用户去吃午餐了或者甚至回家过周末了,则用户将此事务挂起使之不能完成。这样将降低系统的吞吐量,因为事务持有的任何锁只有在事务提交或回滚时才会释放。即使不出现死锁的情况,访问同一资源的其它事务也会被阻塞,等待该事务完成。       

(3)保持事务简短并在一个批处理中。    

在同一数据库中并发执行多个需要长时间运行的事务时通常发生死锁。事务运行时间越长,其持有排它锁或更新锁的时间也就越长,从而堵塞了其它活动并可能导致死锁。保持事务在一个批处理中,可以最小化事务的网络通信往返量,减少完成事务可能的延迟并释放锁           

(4)使用低隔离级别。    

确定事务是否能在更低的隔离级别上运行。执行提交读允许事务读取另一个事务已读取(未修改)的数据,而不必等待第一个事务完成。使用较低的隔离级别(例如提交读)而不使用较高的隔离级别(例如可串行读)可以缩短持有共享锁的时间,从而降低了锁定争夺       

(5)使用绑定连接。    

使用绑定连接使同一应用程序所打开的两个或多个连接可以相互合作。次级连接所获得的任何锁可以象由主连接获得的锁那样持有,反之亦然,因此不会相互阻塞。

 

同步和互斥的概念:

同步:一组并发进程按一定的顺序执行的过程称为进程间的同步

互斥:指当有若干进程都要使用某一共享资源时,任何时刻最多允许一个进程使用,其他要使用该资源的进程必须等待,直到占用该资源者释放了该资源为止

 

如何实现优先级反转?

(1)设置优先级上限,给临界区一个高优先级,进入临界区的进程都将获得这个高优先级,如果其他试图进入临界区的进程的优先级都低于这个高优先级,那么优先级反转就不会发生。

(2)优先级继承,当一个高优先级进程等待一个低优先级进程持有的资源时,低优先级进程将暂时获得高优先级进程的优先级别,在释放共享资源后,低优先级进程回到原来的优先级别。嵌入式系统VxWorks就是采用这种策略。

(3)第三种方法就是使用中断禁止,通过禁止中断来保护临界区,采用此种策略的系统只有两种优先级:可抢占优先级和中断禁止优先级。前者为一般进程运行时的优先级,后者为运行于临界区的优先级。火星探路者正是由于在临界区中运行的气象任务被中断发生的通信任务所抢占才导致故障,如果有临界区的禁止中断保护,此一问题也不会发生。

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭