1. 进程的概念
进程是LInux事务管理的基本单元,所有的进程均有自己独立的处理环境和系统资源。进程的环境由单钱系统状态及其父进程信息决定和组成。系统的第一个进程init有内核产生,以后所有的进程都是通过fork()/vfork()创建。系统在内核头文件中定义了进程控制PCB结构体struct tack_struct来管理每个进程的资源。
进程是资源分配的最小单元
2. 进程和程序的区别
- 进程是动态的,而程序是静态的
- 进程是暂时的,而程序是长久的
- 进程需要在内存中运行,是不可以在计算机之间迁移的
- 一个程序可以对应多个成不成,一个进程可以对应多个程序(如多文件编译)
3. 进程的生命周期
- 创建
- 运行
- 撤销
4. 进程的状态
执行:程序正在占用CPU
就绪:进程已具备一切条件,正在等待分配CPU的处理时间片
等待:进程不能使用CPU,若等待时间发生则可将其唤醒
5. 什么是进程互斥
进程互斥是指当有若干进程都要使用某一共享资源时,任何时刻做多允许一个进程使用,其他要使用该资源的进程必须等待,直到占用该资源者释放了盖子也为止。
6. 进程同步
一组并发进程按一定的允许执行的过程成为 进程贱的同步具有同步关系一个并发进程成为合作进程,合作进程间互相发送的信号成为消息或事件。
7. 进程调度
按一定算法,从一组待运行的进程中选出一个来占有CPU运行。
调度方式:
- 抢占式
- 非抢占式
8. 进程调度算法有哪些
- 先来先服务调度算法
- 短进程优先调度算法
- 高优先级优先调度算法
- 时间片轮转法
9. 什么是死锁
多个进程因竞争资源而形成一个僵局,若无外力作用,这些进程豆浆永远不能再向前推进。
10. fork()与vfork()的区别
- fork()函数使用写时拷贝技术
- fork()函数拷贝父进程的数据段、堆、栈,不完全拷贝父进程的代码段
- vfork()函数子进程共享父进程的4G虚拟内存
- fork()函数的父、子进程执行顺序不全定
- vfork()函数的父、子进程执行顺序为:子进程先执行,父进程后执行