调度相关知识小结

处理三级调度

  1. 高级调度(作业调度)

    决定把外存处于作业后备队列上的作业调入内存,并为它创建进程,分配必要的资源,然后将新创建的进程排在就绪队列上准备执行
    批处理系统作业是先存在外存的输入井上,因此需要有作业调度
    在分时系统中,通过键盘输入的命令和数据直接进入内存,无需作业调度

  2. 低级调度(进程调度)

    决定就绪队列中哪个进程获得处理机

    进程调度是最基本的调度,任何操作系统都有进程调度

  3. 中级调度(对换)

    引入中级调度为了提高主存利用率和系统吞吐率,将暂时不能运行的进程从内存调到外存盘交换区,将在盘交换区的等待事件已经发生急需调度运行的进程从盘交换区调入内存

处理机调度模型

  1. 仅有进程调度的调度队列模型

  2. 有进程调度和中级调度队列模型

  3. 具有高级调度和低级调度的调度队列模型

  4. 同时具有三级调度的调度队列模型

    高级调度(作业调度)

    作业及作业分类

    作业是由一组统一管理和操作的进程集合构成,是用户要求计算机系统完成的一项相对独立的工作,作业可以是完成了编译链接之后的一个用户程序,也可以是用各种命令构成的一个脚本

    根据需要处理工作的类型,作业可以分为计算型作业和I/O型作业

    • 计算型作业:需要CPU处理为主的作业称为计算型作业
    • I/O型作业:将以I/O过程为主的作业称为I/O型作业

    操作系统管理会对这两种作业进行区别对待:由于等待I/O过程需要更多的时间,所以以I/O过程为主的作业执行更慢,计算型为主的作业等待I/O过程需要的时间更短,执行更快

    根据提交方式不同,作业可以分为批处理作业和终端型作业

    • 批处理作业:用户的批处理作业被提交到系统的磁盘上,以批处理后备队列的形式进行组织,这样的作业为批处理作业。批处理作业需要作业调度,将后备队列上的作业调度到内存才能执行

    • 终端型作业:终端型作业用户通过终端登录到系统,直接将作业置于内存中,所以终端型作业不需要作业调度便能执行

    根据控制方式不同,作业可以分为联机作业和脱机作业

    • 联机作业:联机作业是用户通过外围设备直接与计算机系统进行交互,从而控制作业的运行,这种作业也叫交互型作业
    • 脱机作业:脱机作业是指用户不能和计算机直接交互,需要通过操作员从中干预的作业

    联机作业多出现在分时系统中,而脱机作业经常出现在批处理系统中

作业调度和终止作业

作业调度的定义:作业调度程序按照一定算法从后备作业队列中选一个满足资源要求的作业,分配它所要求的资源,建立一组相应的进程,设置该进程状态为就绪态,并将该进程插入内存就绪队列,参加CPU争夺

当进程正常运行结束或因发生错误终止时,调用终止作业程序,它负责将输出文件缓冲输出到输入井,并调用spooling系统输出进程并将作业输出文件在打印机输出,同时回收作业所使用内、外存、I/O设备等各种资源,最后调用记账程序结清作业费用

作业和进程的关系:一个作业可能由一个进程组成,运行在多个进程下,作业是计算机处理任务的实体,进程是计算机处理任务的执行体

一个系统能够接纳的作业的个数由系统的资源决定,特别是处理器和内存资源

一个系统能够接纳作业的个数称为系统的多道度,也称为系统的多道程序度

作业控制块(JCB)

作业控制块中包含的信息有:作业名称、作业对资源的需求信息、作业的资源使用信息、作业的控制方式、作业优先级和作业状态

作业控制块是作业存在的标志,存在于作业的整个过程之中,只有作业完成或退出系统时,作业控制块才被撤销

作业的状态

  • 提交状态

用户将作业提交给操作系统,等待输入程序和数据到磁盘

  • 后备状态

系统接收输入的用户作业,并将其放入计算磁盘,创建作业控制块(JCB)

  • 执行状态

作业被调度到内存,为作业分配资源并为其创建与之对应的进程,进程获得CPU,开始运行

  • 完成状态

释放作业所占用的资源,退出系统的整个过程

初级调度(进程调度)

引起进程调度的主要原因

  1. 处理器执行的进程完成任务,处理器空闲
  2. 处理器执行的进程进入阻塞状态,此时处理器空闲
  3. 处理器执行的进程被其他进程抢占
  4. 处理器执行的进程被挂起

进程调度中的基本机制

  1. 排队器

    为使进程调度时能够快速有效的找到就绪队列中的每个进程,首先应该按照一定的方式将进程的就绪队列排成一个或者多个队列

  2. 分派程序

    分派程序将根据进程调度策略将所选中的进程从就绪队列中移出,然后进行上下文的切换,并将处理器分配给进程

  3. 上下文切换机制

    上下文切换机制是指在操作系统分派程序的执行下完成处理器的切换过程,实现进程上下文切换

进程调度的形式

  • 非抢占式调度方式
  • 抢占调度方式

抢占原则(抢占条件)

  • 时间片

    刚好获得时间片的进程抢占刚好执行完时间片的进程

  • 优先级

    优先级高的进程抢占优先级低的进程

  • 短进程

    处理器处理时间短的进程抢占处理器处理时间长的进程

抢占的弊端

  • 增加系统开销

    抢占时需要进行一次上下文切换(切换处理器),给系统带来额外开销

  • 进程间共享数据不一致问题

    抢占的过程中如果被抢占的进程的数据尚未更新结束而被抢占,得到处理器的进程恰好也要读取这一部分的共享数据,那么就可能会造成读取数据不一致的问题

  • 影响操作系统内核程序设计问题

    如果抢占发生在操作系统内核程序执行期间,如系统调用期间,核心程序可能在正在改变核心的重要数据时被抢占,从而造成系统核心出现问题,从而影响系统稳定性

评价调度算法的准则

1.面向用户的准则

  • 周转时间段

    周转时间是指从作业提交给系统开始,到作业完成为止这段时间间隔

  • 平均周转时间在这里插入图片描述

    Ti为作业 i 的周转时间

  • 平均带权周转时间在这里插入图片描述

    Ti 为周转时间,Tsi为实际服务时间

  • 响应时间快

    响应时间是从用户通过键盘提交一个请求开始,直至系统首次产生响应为止的时间

  • 截止时间的保证

    截止时间是指某任务执行的最迟时间或完成的最迟时间

  • 优先权准则

    采用优先权准则,让紧急的事情得到及时处理,在严格的场合,往往采用抢占调度方式保证紧急事件得到及时处理

  1. 面向系统的准则
    • 达到系统设计目标
    • 系统吞吐量大

      系统吞吐量是指单位时间内完成的作业数

    • 处理器利用率

      CPU利用率=CPU有效时间 / CPU总的运行时间
      CPU总的运行时间=CPU的有效工作时间 + CPU的空闲时间

    • 各类资源的平衡利用

      比如CPU、内存等

线程调度

用户级线程

用户级线程存在于用户地址空间,内核不能看见用户级线程,内核按照进程调度分配处理器,再由线程调度算法决定线程共享时间片,通常线程调度算法会采用先来先服务(FCFS)的方式

  • 无论线程有没有完成,进程的时间片都不会分配到其他进程

  • 进程中某个线程阻塞则该进程的所有线程都阻塞

内核级线程

内核可见,线程调度起决定作用,内核对于所有线程都是公平对待,如果一个线程受到阻塞,则内核将会选择下一个就绪内核线程运行

实时调度

实时调度满足的条件:

  1. 系统向实时调度提供与实施任务相关的信息:

    • 就绪起始时间
    • 截止时间
    • 处理时间
    • 实时任务的资源需求
    • 实时任务的优先级
  2. 对系统处理能力的衡量:在这里插入图片描述

    N为处理器数目,Ci为需要处理器处理的时间,Pi为周期事件i发生的周期,满足这个条件才能进行周期实时任务的调度

  3. 抢占调度和快速切换机制:允许优先权高的实时任务抢占优先权低的实时任务,从而满足实时任务对于截止时间的要求

实时调度算法

  1. 抢占式调度算法:

    • 基于时钟中断的优先权抢占调度算法:优先权高的任务在时钟中断的时候抢占正在运行的优先权低的任务
    • 立即抢占调度算法:出现外部抢断,只要系统不处于临界区。系统立即剥夺当前执行的任务,把处理器分配给当前紧急的任务
    • 单比率调度算法:实现为每个实施任务分配一个与任务发生频率呈正比的优先级,运行频率比较高的任务,其优先权越高
  2. 非抢占式调度算法

    • 非抢占式轮转调度算法

      等到前一个任务运行结束之后才轮到下一个任务运行

    • 非抢占式优先级调度算法

      先给每个任务赋予优先级,再按照任务的优先级决定任务的运行顺序

    • 期限调度算法

      根据实时任务的截止期限进行就绪队列的排队,截止期限短的实时任务排在队首,首先进行调度

总之,实时调度系统中的调度是在一般的进程调度基础上,考虑实时系统对时间的需要再进行改进

调度算法

详情见于我的另一篇博文:作业调度算法和进程调度算法

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: Kubernetes 的网络系统是由多个组件组成的, 它们协作为应用程序提供网络连接和通信. 其中一些主要的组件包括: - kube-proxy: 运行在每个节点上, 负责为 Pod 和 Service 提供代理服务. - kube-dns: 为应用程序提供 DNS 服务. - 网络插件: 用于为 Pod 提供网络连接, 支持不同的网络模型, 如 Calico, Flannel, Cilium 等. - Service: 为应用程序提供负载均衡和服务发现. Kubernetes 的网络模型是基于 Pod 的, 每个 Pod 都有一个独立的 IP 地址, 使得容器间直接通信成为可能. Service 则提供了一种发现和负载均衡的机制, 让外部客户端可以访问 Pod. ### 回答2: Kubernetes(K8s)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。下面是一些与K8s网络相关知识点。 1. 服务发现:K8s通过DNS(域名系统)服务提供内部服务发现机制。每个服务都会被分配一个唯一的域名,其他服务可以通过该域名访问该服务。 2. Pod网络:Pod是K8s中的最小调度单元,它可以包含一个或多个容器。每个Pod都有一个唯一的IP地址,容器可以通过本地回环地址访问其他Pod中的容器。 3. 容器网络接口(CNI):CNI是一个规范,用于定义容器网络的实现方式。K8s使用CNI插件来设置和管理Pod的网络。不同的CNI插件可以支持不同的网络方案,如VLAN、VXLAN、Calico等。 4. 服务代理:K8s使用服务代理来实现服务之间的通信。服务代理可以在集群各个节点上运行,并通过负载均衡来分发到后端Pod。 5. 网络策略:K8s允许用户通过网络策略来定义集群中的网络访问规则。网络策略可以限制哪些Pod可以与另一个Pod通信,以及允许的协议和端口。 6. Ingress控制器:Ingress控制器是K8s中用于管理入站网络流量的组件。它可以将外部流量路由到集群内部的服务,并提供负载均衡和SSL终止等功能。 7. 可插拔网络解决方案:K8s提供了一些可插拔的网络解决方案,如Flannel、Calico等。这些解决方案可以根据具体需求选择,以提供不同的网络拓扑结构和性能。 总而言之,K8s网络相关知识点包括服务发现、Pod网络、CNI、服务代理、网络策略、Ingress控制器和可插拔网络解决方案。这些知识点帮助我们理解和管理K8s集群中的网络配置和通信。 ### 回答3: Kubernetes(简称k8s)是一种用于容器编排和管理的开源平台,它涉及到一些重要的网络概念和组件。 首先,k8s网络模型是基于虚拟网络的概念。每个k8s集群中的容器都会被分配一个独立的IP地址,并且可以通过这个IP地址跨节点进行通信。这是通过一个称为kube-proxy的组件实现的,它会在每个节点上监听API服务器上的变化,并使用iptables或者IPVS等工具在宿主机上进行流量转发。 其次,k8s通过Service和Endpoint来暴露和访问容器。Service是一个逻辑概念,用于封装一组具有相同功能的容器,在集群内部提供服务的访问入口。一个Service可以通过ClusterIP、NodePort或者LoadBalancer等不同的类型暴露。而Endpoint是实际运行容器的IP和端口的集合,用于告诉Service流量应该转发到哪里。 此外,k8s还支持Ingress资源,用于在集群外部暴露服务,实现外部访问。Ingress通过定义一个或多个规则,将外部流量转发到不同的Service上,从而实现域名或路径的复杂路由。 最后,网络插件是k8s网络中的重要组件。k8s提供了一些默认的网络插件,如Flannel、Calico等,用于管理Pod之间的网络通信。网络插件负责创建网络的子网和路由表,并将Pod的IP地址与宿主机的虚拟网卡进行关联。 总结来说,k8s网络涉及到虚拟网络、kube-proxy、Service、Endpoint、Ingress等概念和组件,这些都是为了实现容器间的通信和外部访问的需求。不同的网络插件可以根据具体需求选择,以满足集群的网络需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值