一.操作系统的组成

1.无进程的内核

在一些操作系统当中操作系统的内核在所有的进程之外执行。也就是说操作系统有自己的内存区域和系统栈,当进程发生      中断,陷阱或系统调用时,此进程的上下文环境被保存在系统栈中,控制权转移给内核。操作系统执行完毕后,恢复进程的上       下文,此进程继续执行,或者保存该进程的上下文环境,然后指派另一进程执行。

2.在用户进程中执行

在操作系统管理的n个进程映像中,不仅仅有进程控制块,用户栈和用户专有数据空间,还有内核栈和所有进程共享着的操作系统代码。

当发生一个中断,陷阱或是系统调用时,处理器置于内核态,控制权交给操作系统处理,并将此进程上下文环境保存起来进行模式切换。当中断完成后,恢复进程继续执行或是将控制权交给进程切换例程进行进程切换,这样进程中断并恢复执行的过程中只需要进行模式切换而不需要进行进程切换,从而减少开销。

3.基于进程的操作系统

把操作系统作为一组普通的系统进程来执行,既当一个进程发生中断,陷阱或是系统调用时,处理器转变为内核态,进程切换例程切换至系统进程,并保存用户进程的上下文执行环境,也就是说,内核函数被组织成独立的进程。当终端结束时,恢复用户进程继续执行,处理器转变为用户态,由进程切换例程将系统进程切换为用户进程,或是将控制权交给分派器执行下一进程。

二.进程状态的转换

1. Linux进程状态有:

TASK_RUNNING : 就绪态或者运行态,进程就绪可以运行,但是不一定正在占有CPU,对应进程状态的R

TASK_INTERRUPTIBLE:睡眠态,但是进程处于浅度睡眠,可以响应信号,一般是进程主动sleep进入的状态,对应进程状态S

TASK_UNINTERRUPTIBLE:睡眠态,深度睡眠,不响应信号,典型场景是进程获取信号量阻塞,对应进程状态D

TASK_ZOMBIE:僵尸态,进程已退出或者结束,但是父进程还不知道,没有回收时的状态,对应进程状态Z

TASK_STOPED:停止,调试状态,对应进程状态T

2. 进程调度时机:

进程调度会引起进程状态转换,由上图可知如下情况会触发调度,进程终止或进程睡眠时主动exit或sleep释放CPU;浅度睡眠的进程被CFS调度选中唤醒,深度睡眠进程由于信号量,锁等的释放而被唤醒;进程收到信号量等;还有一种最常见的中断,异常。

三.进程是如何调度的

无论是在批处理系统还是分时系统中,用户进程数一般都多于处理机数、这将导致它们互相争夺处理机。另外,系统进程也同样需要使用处理机。这就要求进程调度程序按一定的策略,动态地把处理机分配给处于就绪队列中的某一个进程,以使之执行。

操作系统的常见进程调度算法:

1.先来先服务 (FCFS,first come first served)

在所有调度算法中,最简单的是非抢占式的FCFS算法。

算法原理:进程按照它们请求CPU的顺序使用CPU.就像你买东西去排队,谁第一个排,谁就先被执行,在它执行的过程中,不会中断它。当其他人也想进入内存被执行,就要排队等着,如果在执行过程中出现一些事,他现在不想排队了,下一个排队的就补上。此时如果他又想排队了,只能站到队尾去。

算法优点:易于理解且实现简单,只需要一个队列(FIFO),且相当公平

算法缺点:比较有利于长进程,而不利于短进程,有利于CPU 繁忙的进程,而不利于I/O 繁忙的进程

2.最短作业优先(SJF, Shortest Job First)

短作业优先(SJF, Shortest Job First)又称为“短进程优先”SPN(Shortest Process Next);这是对FCFS算法的改进,其目标是减少平均周转时间。

算法原理:对预计执行时间短的进程优先分派处理机。通常后来的短进程不抢先正在执行的进程。

算法优点:相比FCFS 算法,该算法可改善平均周转时间和平均带权周转时间,缩短进程的等待时间,提高系统的吞吐量。

算法缺点:对长进程非常不利,可能长时间得不到执行,且未能依据进程的紧迫程度来划分执行的优先级,以及难以准确估计进程的执行时间,从而影响调度性能。

3.最高响应比优先法(HRRN,Highest Response Ratio Next)

最高响应比优先法(HRRN,Highest Response Ratio Next)是对FCFS方式和SJF方式的一种综合平衡。FCFS方式只考虑每个作业的等待时间而未考虑执行时间的长短,而SJF方式只考虑执行时间而未考虑等待时间的长短。因此,这两种调度算法在某些极端情况下会带来某些不便。HRN调度策略同时考虑每个作业的等待时间长短和估计需要的执行时间长短,从中选出响应比最高的作业投入执行。这样,即使是长作业,随着它等待时间的增加,W / T也就随着增加,也就有机会获得调度执行。这种算法是介于FCFS和SJF之间的一种折中算法。

算法原理:响应比R定义如下: R =(W+T)/T = 1+W/T

其中T为该作业估计需要的执行时间,W为作业在后备状态队列中的等待时间。每当要进行作业调度时,系统计算每个作业的响应比,选择其中R最大者投入执行。

算法优点:由于长作业也有机会投入运行,在同一时间内处理的作业数显然要少于SJF法,从而采用HRRN方式时其吞吐量将小于采用SJF 法时的吞吐量。

算法缺点:由于每次调度前要计算响应比,系统开销也要相应增加。

4.时间片轮转算法(RR,Round-Robin)

该算法采用剥夺策略。时间片轮转调度是一种最古老,最简单,最公平且使用最广的算法,又称RR调度。每个进程被分配一个时间段,称作它的时间片,即该进程允许运行的时间。

算法原理:让就绪进程以FCFS 的方式按时间片轮流使用CPU 的调度方式,即将系统中所有的就绪进程按照FCFS 原则,排成一个队列,每次调度时将CPU 分派给队首进程,让其执行一个时间片,时间片的长度从几个ms 到几百ms。在一个时间片结束时,发生时钟中断,调度程序据此暂停当前进程的执行,将其送到就绪队列的末尾,并通过上下文切换执行当前的队首进程,进程可以未使用完一个时间片,就出让CPU(如阻塞)。

算法优点:时间片轮转调度算法的特点是简单易行、平均响应时间短。

算法缺点:不利于处理紧急作业。在时间片轮转算法中,时间片的大小对系统性能的影响很大,因此时间片的大小应选择恰当

怎样确定时间片的大小:

1、系统对响应时间的要求

2、就绪队列中进程的数目

3、系统的处理能力

5.多级反馈队列(Multilevel Feedback Queue)

多级反馈队列调度算法是一种CPU处理机调度算法,UNIX操作系统采取的便是这种调度算法。

多级反馈队列调度算法描述:

1、进程在进入待调度的队列等待时,首先进入优先级最高的Q1等待。

2、首先调度优先级高的队列中的进程。若高优先级中队列中已没有调度的进程,则调度次优先级队列中的进程。例如:Q1,Q2,Q3三个队列,只有在Q1中没有进程等待时才去调度Q2,同理,只有Q1,Q2都为空时才会去调度Q3。

3、对于同一个队列中的各个进程,按照时间片轮转法调度。比如Q1队列的时间片为N,那么Q1中的作业在经历了N个时间片后若还没有完成,则进入Q2队列等待,若Q2的时间片用完后作业还不能完成,一直进入下一级队列,直至完成。

4、在低优先级的队列中的进程在运行时,又有新到达的作业,那么在运行完这个时间片后,CPU马上分配给新到达的作业(抢占式)。

在多级反馈队列调度算法中,如果规定第一个队列的时间片略大于多数人机交互所需之处理时间时,便能够较好的满足各种类型用户的需要。

四.我对Linux操作系统进程模型的看法

我认为操作系统是用户和计算机之间的界面. 一方面操作系统管理着所有计算机系统资源, 另一方面操作系统为用户提供了一个抽象概念上的计算机. 在操作系统的帮助下, 用户使用计算机时, 避免了对计算机系统硬件的直接操作.

对计算机系统而言,操作系统的对所有系统资源进行管理的程序的集合。

原文:https://www.cnblogs.com/zhouzhenghong/p/8977268.html

linux下有四个作业优先级,第一次作业:对Linux系统分析相关推荐

  1. linux运行隐藏文件,Linux下如何隐藏文件_网站服务器运行维护,Linux,隐藏文件

    linux系统怎样安装软件_网站服务器运行维护 linux系统安装软件的方法:1.使用apt命令进行安装,如[apt install app_name]:2.使用rpm命令进行安装,如[rpm -i ...

  2. linux系统电脑的权限设置,Linux下的文件权限设置修改详解linux操作系统 -电脑资料...

    在linux中更改所属用户组是使用chgrp,更改文件拥有者, chown,更改9个属性, chmod这三种常用的问题,在linxu中这三个命令就是对文件目录权限的控制命令了,下面我来介绍它们的用法与 ...

  3. Linux下安装tuned以使用tuned-adm命令优化Linux系统性能

    本文介绍在RHEL.CentOS 8/7.Ubuntu.Debian Linux下安装tuned以使用tuned-adm命令优化Linux系统性能.作为系统管理员,您应该能够通过调整各种设置来优化Li ...

  4. 在Linux下安装tuned以使用tuned-adm命令优化Linux系统性能

    本文介绍在RHEL.CentOS 8/7.Ubuntu.Debian Linux下安装tuned以使用tuned-adm命令优化Linux系统性能.作为系统管理员,您应该能够通过调整各种设置来优化Li ...

  5. 视频教程-Linux下Shell从入门到精通完整版-Linux

    Linux下Shell从入门到精通完整版 京东商城运维架构师,京峰Linux云计算教学总监,担任国内多家知名社区运维专家网站Linux版主,专注Linux自动化运维,熟练LVS.Nginx,前端架构及 ...

  6. 第一次作业:Linux 2.6.32的进程模型与调度器分析

    1.前言 本文分析的是Linux 2.6.32版的进程模型以及调度器分析.在线查看  源码下载 本文主要讨论以下几个问题: 什么是进程?进程是如何产生的?进程都有那些? 在操作系统中,进程是如何被管理 ...

  7. linux下软件编译终止,[2018年最新整理]linux下编译运行程序命令大全.ppt

    [2018年最新整理]linux下编译运行程序命令大全 1. 项目课题引入 2. Vi编辑器的使用方法 3. Linux中C语言程序的编辑 4. Linux中C语言程序的运行 5. 现场演示案例 课题 ...

  8. linux下usb设备节点名不固定,解决Linux下USB设备节点ttyUSB名不固定的问题,生成固定USB转串口设备节点...

    解决Linux下USB设备节点ttyUSB名不固定的问题,生成固定USB转串口设备节点 2018-09-19 http://blog.sina.com.cn/s/blog_8b58097f0102wx ...

  9. linux下共享文件夹(windows可访问,linux也可访问)

    2019独角兽企业重金招聘Python工程师标准>>> 本文是转字网上的两段,如果是菜鸟,想懂有点难度,我这里给点注释 在linux上共享文件夹windows下看 ********* ...

最新文章

  1. solrlucene3.6.0源码解析(三)
  2. unity3D游戏开发三之unity编辑器二
  3. 大话设计模式—适配器模式
  4. java计算器简单吗,java简单计算器
  5. Java JDBC篇4——数据库连接池
  6. mysql c 调用存储过程返回值_Mysql:使用返回值调用存储过程
  7. pass by value pass by reference
  8. python 日期排序_python 日期排序
  9. [Linux 性能检测工具]DF
  10. SLAM 无人车融合 IMU 前与 融合 IMU 后的实测效果演示
  11. 42.mysqldump
  12. linux NVMe驱动总结
  13. opmanager邮件告警配置
  14. 20脚的RSIC-V MCU,竟然可以基于FOC开发PMSM电机
  15. 对接圆通查询物流信息
  16. SMS 短信 API 接口调用
  17. 游戏外挂开发原理初探——植物大战僵尸内存挂为例
  18. LOGO特训营 第三节 首字母创意手法
  19. matlab编程求卫星轨道长度,GPS卫星轨道计算及其MATLAB仿真.pdf
  20. 工商银行网银助手无法安装:系统无法打开指定的设备或文件

热门文章

  1. python学习的一个定位_python学习之——selenium元素定位
  2. foursquare nyc数据集_炫酷的python地理数据可视化
  3. 如何使WordPress博客添加多个sidebar侧边栏
  4. 给超链接(a标签)加onclick事件
  5. html2canvas生成海报的各种问题
  6. path.join 和 path.resolve的区别
  7. Fedora 17 下 Samba 服务快速设置
  8. ubuntu tree 显示中文的方法
  9. [react-router] React-Router怎么获取URL的参数?
  10. [react] 为什么建议Fragment包裹元素?它的简写是什么?