【操作系统】3.3实时调度

本文深入探讨实时系统的定义及其核心调度原则,包括实时调度的基本条件、系统处理能力需求、抢占式调度机制与快速切换机制。此外,还介绍了两种关键的实时调度算法——最早截止时间优先(EDF)和最低松弛度优先(LLF),并解释了它们如何根据任务的截止时间和紧急程度确定优先级。

1.实时系统

指系统能够在限定的响应时间内提供所需水平的服务。

2. 实现实时调度的基本条件

1)提供必要的信息

为了实现实时调度,系统应向调度程序提供有关任务的下述信息:

就绪时间:该任务成为就绪状态的时间。

开始截止时间、完成截止时间

处理时间:从开始执行到完成所需时间。

资源要求:任务执行时所需的一组资源。

优先级:根据任务性质赋予不同优先级。

2)系统处理能力足够强

3)采用抢占式调度机制

4)具有快速切换机制

3. 常用的几种实时调度算法

a.最早截止时间优先EDF(Earliest Deadline First)算法

1)根据任务的开始截止时间来确定任务的优先级。 截止时间越早,其优先级越高。

  • 系统保持一个实时任务就绪队列
  • 队列按各任务截止时间的早晚排序
  • 调度程序总是选择就绪队列中的第一个任务,分配处理机使之投入运行。

2)新任务产生时,是否等当前程序执行完:

抢占式/非抢占式

3)可能会使作业错过,但可适用于软实时系统

b.最低松弛度优先LLF

根据任务紧急(或松弛)的程度,来确定任务的优先级。任务的紧急程度越高(松弛度值越小),优先级就越高。

松弛度= 截止完成时间 – 还需执行时间 - 当前时间

4.进程切换发生的时机

  • 进程执行完
  • 进程I/O阻塞
  • 新进程出现时可能的抢占
  • 某进程松弛度为0时发生抢占

有的时刻,其他并发的实时任务下一周期未到来,会出现只有一个任务的情况。

 

在麒麟信安操作系统 3.3 中,设置和管理定时任务主要依赖于 `cron` 和 `systemd` 定时器两种机制。以下是具体的操作方法: ### 使用 `crontab` 设置定时任务 `crontab` 是 Linux 系统中常用的定时任务调度工具,用户可以通过编辑 `crontab` 文件来配置个人的定时任务。 1. **编辑当前用户的 `crontab` 文件**: 执行以下命令以编辑当前用户的 `crontab` 配置文件: ```bash crontab -e ``` 2. **添加定时任务条目**: 在打开的编辑器中,按照 `cron` 的语法格式添加任务。例如,要每天凌晨 2:00 执行 `/home/user/backup.sh` 脚本,可以添加如下行: ``` 0 2 * * * /bin/bash /home/user/backup.sh ``` 其中字段含义依次为:分钟(0)、小时(2)、日(*)、月(*)、星期几(*)[^1]。 3. **保存并退出**: 保存更改后退出编辑器,系统会自动加载新的 `crontab` 配置。 4. **查看已设置的任务**: 可通过以下命令查看当前用户的 `crontab` 内容: ```bash crontab -l ``` 5. **删除所有任务**: 如果需要清除所有任务,可使用: ```bash crontab -r ``` ### 使用 `systemd` 定时器 对于更复杂或需要与系统服务集成的任务,推荐使用 `systemd` 提供的定时器功能。 1. **创建服务单元文件**: 首先创建一个 `.service` 文件定义要执行的任务。例如,在 `/etc/systemd/system/` 目录下创建名为 `daily-backup.service` 的文件,内容如下: ```ini [Unit] Description=Daily Backup Service [Service] Type=oneshot ExecStart=/bin/bash /home/user/backup.sh ``` 2. **创建定时器单元文件**: 接着在同一目录下创建对应的 `.timer` 文件,如 `daily-backup.timer`,内容如下: ```ini [Unit] Description=Run Daily Backup at 2:00 AM [Timer] OnCalendar=*-*-* 02:00:00 Persistent=true [Install] WantedBy=timers.target ``` 3. **启用并启动定时器**: 使用以下命令启用并启动定时器: ```bash systemctl enable daily-backup.timer systemctl start daily-backup.timer ``` 4. **检查定时器状态**: 可通过以下命令查看定时器的状态和下次触发时间: ```bash systemctl list-timers ``` ### 管理定时任务 - **日志记录**:无论是 `crontab` 还是 `systemd` 定时器,都可以通过查看系统日志来跟踪任务执行情况。使用 `journalctl` 或查看 `/var/log/cron` 日志文件。 - **权限管理**:确保脚本具有正确的执行权限,并且运行任务的用户拥有对相关文件和目录的访问权限。 - **测试任务**:建议在正式部署前手动测试任务脚本,确保其能够正常运行。 以上方法适用于大多数基于 Linux 的发行版,包括麒麟信安操作系统 3.3。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值