2.25——进程

1. 进程的概念

进程是LInux事务管理的基本单元,所有的进程均有自己独立的处理环境和系统资源。进程的环境由单钱系统状态及其父进程信息决定和组成。系统的第一个进程init有内核产生,以后所有的进程都是通过fork()/vfork()创建。系统在内核头文件中定义了进程控制PCB结构体struct tack_struct来管理每个进程的资源。

进程是资源分配的最小单元

2. 进程和程序的区别

  1. 进程是动态的,而程序是静态的
  2. 进程是暂时的,而程序是长久的
  3. 进程需要在内存中运行,是不可以在计算机之间迁移的
  4. 一个程序可以对应多个成不成,一个进程可以对应多个程序(如多文件编译)

3. 进程的生命周期

  • 创建
  • 运行
  • 撤销

4. 进程的状态

执行:程序正在占用CPU

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

等待:进程不能使用CPU,若等待时间发生则可将其唤醒

5. 什么是进程互斥

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

6. 进程同步

一组并发进程按一定的允许执行的过程成为 进程贱的同步具有同步关系一个并发进程成为合作进程,合作进程间互相发送的信号成为消息或事件。

7. 进程调度

按一定算法,从一组待运行的进程中选出一个来占有CPU运行。

调度方式:

  • 抢占式
  • 非抢占式

8. 进程调度算法有哪些

  • 先来先服务调度算法
  • 短进程优先调度算法
  • 高优先级优先调度算法
  • 时间片轮转法

9. 什么是死锁

多个进程因竞争资源而形成一个僵局,若无外力作用,这些进程豆浆永远不能再向前推进。

10. fork()与vfork()的区别

  1. fork()函数使用写时拷贝技术
  2. fork()函数拷贝父进程的数据段、堆、栈,不完全拷贝父进程的代码段
  3. vfork()函数子进程共享父进程的4G虚拟内存
  4. fork()函数的父、子进程执行顺序不全定
  5. vfork()函数的父、子进程执行顺序为:子进程先执行,父进程后执行
二、【实验内容】 编写程序模拟实现短进程优先调度算法。 要求:以进入系统的进程所要求的CPU运行时间的长短为挑选依据,优先选取预计所需服务时间最短的进程进行调度。 (1) 输入进程序列(含进程标识符、进程状态、到达时间、服务时间)。 (2) 输出系统中进程时序图、各进程带权周转时间、开始时间、结束时间; (3) 计算系统平均带权周转时间。 三、【实现提示】 用C语言实现提示: (1) 程序中进程可用PCB表示,其类型描述如下: struct PCB_type { //以下成员已知 char name ; //进程名 int state ; //进程状态 2——表示“执行”状态 1——表示“就绪”状态 0——表示“阻塞”状态 int arriv_time; //进程到达时间 int cpu_time; //运行需要的CPU时间 /////以下成员初始为空。 int finish_time; //进程结束时间 int start_time; //开始运行时间 int waiting_time; //进程等待时间 int turnaround_time; //进程周转时间 int weightturn_time; //进程带权周转时间 } 五、【实验测试】 【输入】 请输入进程个数:5 进程标识符、进程状态、到达时间、服务时间 A 就绪 0 4 B 就绪 1 3 C 就绪 2 5 D 就绪 3 2 E 就绪 4 4 【输出】 进程、 开始时间、结束时间、等待时间、运行时间、周转时间、带权周转时间 A 0 4 0 4 4 1 B 6 9 5 3 8 2.67 C 13 18 11 5 16 3.2 D 4 6 1 2 3 1.5 E 9 13 5 4 9 2.25 系统平均带权周转时间:2.12
03-12
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值