操作系统-进程

进程和线程

进程
进程是资源分配的基本单位
进程控制块PCB(Process Control Block)描述进程的基本信息和运行状态
线程
独立调度的基本单位
一个进程中的多个线程共享进程的资源

进程状态的切换

就绪状态(ready):等待被调度
运行状态(running)
阻塞状态(waiting):等待资源
只有就绪态和运行态可以相互转换,其它都是单向转换。

进程调度算法

批处理系统
先来先服务(FCFS)
短作业优先(SJF)
最短剩余时间优先(SRTN)

交互式系统

交互式系统有大量的用户交互操作,在该系统中调度算法的目标是快速地进行响应。
时间片轮转
将所有就绪进程按 FCFS 的原则排成一个队列,每次调度时,把 CPU 时间分配给队首进程,该进程可以执行一个时间片。当时间片用完时,由计时器发出时钟中断,调度程序便停止该进程的执行,并将它送往就绪队列的末尾,同时继续把 CPU 时间分配给队首的进程。
优先级调度
为每个进程分配一个优先级,按优先级进行调度。
为防止低优先级进程永远等不到调度,可以随着时间的推移增加等待进程的优先级。
多级反馈队列
设置了多个队列,每个队列时间片大小都不同。

实时系统
实时系统要求一个请求在一个确定时间内得到响应。
分为硬实时和软实时,前者必须满足绝对的截止时间,后者可以容忍一定的超时。

进程同步

临界区
对临界资源进行访问的那段代码称为临界区
同步与互斥
同步:多个进程因为合作产生的直接制约关系
互斥:多个进程在同一时刻只有一个进程能进入临界区

信号量
PV操作,也就是常见的down和up操作
信号量只能为0或者1,那么就成为了互斥量
使用信号量实现生产者-消费者问题
问题描述:使用一个缓冲区来保存资源,缓存区没满才能放入资源
因为缓冲区属于临界资源,因此需要使用一个互斥量 来控制对缓冲区的互斥访问。
管程
使用信号量机制实现的生产者消费者问题需要客户端代码做很多控制,而管程把控制的代码独立出来,不仅不容易出错,也使得客户端代码调用更容易。
管程有一个特性:在一个时刻只能有一个进程是用管程。
管程引入了条件变量一见你相关的操作:wait()和signal()来实现同步操作。对条件变量执行
wait()操作会导致调用进程阻塞,把管程让出来给另一个进程持有。signal()操作用于唤醒被阻塞的进程。

经典同步问题

哲学家进餐问题
问题描述:五个哲学家围着一张圆桌,每个哲学家面前放着食物。哲学家的生活有两种交替活动:吃饭以及思考。当一个哲学家吃饭时,需要先拿起自己左右两边的两根筷子,并且一次只能拿起一根筷子。

为了防止死锁的发生,可以设置两个条件:
1、必须同时拿起左右两根筷子
2、只有在两个邻居都没有进餐的情况下才允许进餐

读者-写者问题
问题描述:允许多个进程同时对数据进行读操作,但是不允许读和写以及写和写同时发生

进程通信

进程通信:进程间的传输数据。
进程同步:控制多个进程按一定顺序运行。
为了进程同步需要让进程进行通信,传输一些进程同步需要的必要信息

管道
管道是通过调用pipe函数创建的,fd[0]用于读,fd[1]用于写。

#include<unitser.h>
int pipe(int fd[2])

它具有以下限制:
只支持半双工通信(单向交替传输):
只能在父子进程或者兄弟进程中使用
在这里插入图片描述

FIFO
也称为命名管道,去除了管道只能在父子进程中使用的限制。
FIFO常用语客户-服务器应用程序中,FIFO用作汇聚点,在客户进程和服务器进程之间传递数据。

#include <sys/stat.h>
int mkfifo(const char *path, mode_t mode);
int mkfifoat(int fd, const char *path, mode_t mode)

在这里插入图片描述
消息队列
消息队列可以独立于读写进程存在,从而避免了FIFO中同步管道的打开和关闭可能产生的困难。
避免了FIFO的同步阻塞问题,不需要进程自己提供同步方法
读进程可以根据消息类型有选择地接受消息,而不像FIFO只能默认接受

共享存储
允许多个进程共享一个给定的存储区。数据不需要在进程之间复制。

套接字
与其他通信机制不同的是,它可用于不同机器间的进程通信。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值