进程调度

Kubernetes之POD

左心房为你撑大大i 提交于 2019-11-29 03:05:54
什么是Pod Pod是可以创建和管理Kubernetes计算的最小可部署单元。一个Pod代表着集群中运行的一个进程。 Pod就像是豌豆荚一样,它由一个或者多个容器组成(例如Docker容器),它们共享容器存储、网络和容器运行配置项。Pod中的容器总是被同时调度,有共同的运行环境。你可以把单个Pod想象成是运行独立应用的“逻辑主机”——其中运行着一个或者多个紧密耦合的应用容器——在有容器之前,这些应用都是运行在几个相同的物理机或者虚拟机上。 尽管kubernetes支持多种容器运行时,但是Docker依然是最常用的运行时环境,我们可以使用Docker的术语和规则来定义Pod。 Pod中共享的环境包括Linux的namespace,cgroup和其他可能的隔绝环境,这一点跟Docker容器一致。在Pod的环境中,每个容器中可能还有更小的子隔离环境。 Pod中的容器共享IP地址和端口号,它们之间可以通过 localhost 互相发现。它们之间可以通过进程间通信,例如 SystemV 信号或者POSIX共享内存。不同Pod之间的容器具有不同的IP地址,不能直接通过IPC通信。 Pod中的容器也有访问共享volume的权限,这些volume会被定义成pod的一部分并挂载到应用容器的文件系统中。 就像每个应用容器,pod被认为是临时实体。在Pod的生命周期中,pod被创建后

linux 优先级

百般思念 提交于 2019-11-28 22:30:45
为什么要有进程优先级?这似乎不用过多的解释,毕竟自从多任务操作系统诞生以来,进程执行占用cpu的能力就是一个必须要可以人为控制的事情。因为有的进程相对重要,而有的进程则没那么重要。 本文作者: 邹立巍 文章来源: https://linux.cn/article-7325-1.html Linux系统技术专家。目前在腾讯SNG社交网络运营部 计算资源平台组,负责内部私有云平台的建设和架构规划设计。 曾任新浪动态应用平台系统架构师,负责微博、新浪博客等重点业务的内部私有云平台架构设计和运维管理工作。 进程优先级起作用的方式从发明以来基本没有什么变化,无论是只有一个cpu的时代,还是多核cpu时代,都是通过控制进程占用cpu时间的长短来实现的。就是说在同一个调度周期中,优先级高的进程占用的时间长些,而优先级低的进程占用的短些。 从这个角度看,进程优先级其实也跟cgroup的cpu限制一样,都是一种针对cpu占用的QOS机制。我曾经一直很困惑一点,为什么已经有了优先级,还要再设计一个针对cpu的cgroup?得到的答案大概是因为,优先级这个值不能很直观的反馈出资源分配的比例吧? 不过这不重要,实际上从内核目前的进程调度器cfs的角度说,同时实现cpushare方式的cgroup和优先级这两个机制完全是相同的概念,并不会因为增加一个机制而提高什么实现成本。既然如此

我是如何学习写一个操作系统(六):进程的调度

纵饮孤独 提交于 2019-11-28 19:23:23
前言 既然引进了多进程,其实也就是在进程之间来回切换,那么就会有进程之间的调度问题。实则是在可运行进程之间分配有限的处理器时间资源的内核子系统。 几个简单的CPU调度算法 First Come, First Served(FCFS) 其实就是一个先进先出队列了,也就是说先申请的进程,先执行。当CPU空闲时,它会分配给位于队列头部的进程,并且这个运行进程从队列中移去。FCFS调度代码编写简单并且理解容易。 但是对于一个需要和用户进行交互的进程,这种调度算法就会造成体验非常不好,因为周转时间需要完成一整个队列的任务,非常的长 但FCFS调度算法是非抢占的。一旦 CPU 分配给了一个进程,该进程就会使用 CPU 直到释放 CPU 为止,即程序终止或是请求I/O。 Shortest Job First(SJF) SJF调度算法就指对短作业或者短进程优先调度的算法,将每个进程与其估计运行时间进行关联选取估计计算时间最短的作业投入运行。这样就可以缩短周转时间 最短作业优先(SJF)调度算法将每个进程与其下次CPU执行的长度关联起来。当 CPU 变为空闲时,它会被赋给具有最短 CPU 执行的进程。如果两个进程具有同样长度的 CPU 执行那么可以由FCFS来处理。 RR 该算法中,将一个较小时间单元定义为时间量或时间片。时间片的大小通常为 10~100ms。就绪队列作为循环队列

线程基础

﹥>﹥吖頭↗ 提交于 2019-11-28 17:33:45
摘要:在计算机发展早期,CPU的资源十分昂贵,如果一个CPU只能运行一个程序,那么当读写磁盘是CPU就只能处于空闲状态,造成了极大的浪费。从而有了 多道程序 的方式,即编译一个监控程序,当程序不需要使用CPU时,将其他在等待CPU的程序启动。该方式大大提高了CPU的利用率,但它的弊端是不分轻重缓急,有时候一个交互操作可能要等待数十分钟。 分时系统 :每个CPU运行一段时间后,就主动让出给其他CPU使用。Windows早期版本和Mac OS版本都是采用的这种分时系统来调度程序的。但是一旦有任何程序出现问题无法主动让出CPU给其它程序的话那么操作系统也没有办法,其它程序只能等待,造成死机假象。 多任务系统 :操作系统接管了所有的硬件资源,并且本身运行在一个受硬件保护的级别。所有的应用都以进程的方式运行在比操作系统更低的级别,每个进程都有自己独立的地址空间,使得进程之间的地址空间相互隔离。CPU由操作系统进行同一分配,每个进程根据进程优先级的高低都有机会获得CPU,但如果运行超过一定的时间,CPU会将资源分配给其他进程,这种CPU分配方式是抢占式,操作系统可以强制剥夺CPU资源并且分配给它认为目前最需要的进程。如果操作系统分配每个进程的时间很短,就会造成很多进程都在同时运行的假象,即所谓的宏观并行,微观串行。 什么是线程 线程(Thread),有时被称为轻量级进程(Lightweight

进程,进程池

a 夏天 提交于 2019-11-28 15:56:13
进程的概念 1.进程是指应用程序,内存空间,操作系统的调度称为一个进程 2.进程是竞争计算机系统有限的资源的基本单位,也是进行处理机调度的基本单位 3.进程是程序的基本执行体 来源: https://www.cnblogs.com/jingandyuer/p/11414231.html

Centos 7之进程的控制与调度

﹥>﹥吖頭↗ 提交于 2019-11-28 15:52:08
本篇博客将详细介绍Liunx系统中与进程有关的相关命令,主要可以分为以下几个方面: 目录: 查看进程 控制进程 一次性任务设置 周期性任务设置 前言: 在正式开始博客正文之前,这里先对进程做一个简单的概述。进程是什么? 进程实际上只是一段代码,不过与我们经常听到的程序不同的是。 程序是保存在介质中的代码,属于静态保存的代码; 而进程是在CPU及内存中运行的代码,属于动态保存的代码。 一、查看进程 查看进程我们通常使用的命令有两种:PS命令和TOP命令,接下来我就针对这两个命令分别进行详细的解释: 1、PS命令 PS命令用来列出系统中当前运行的那些进程,但与我们后面介绍的TOP命令不同的是,PS命令所展现的进程类似于快照,属于静态的;而TOP命令则属于动态的。 常用命令选项组合: [root@localhost ~]# ps aux 其中,ps后面每个选项的意义分别为: a————列出系统当前所有进程 u————使用以用户格式为主的方式输出 x————该用户在终端下的所有进程 界面示意截图: “ps aux”所展现的列表的表头也有着自己不同的含义,从左到右分别为: USER——代表进程在哪个用户下 PID——代表进程对应的进程号 %CPU——代表进程的CPU占用率 %MEM——代表进程的内存占用率 VSZ——虚拟内存占用 RSS——物理实际内存占用 TTY——终端(这里都是?的原因是

【并发编程必备基础之进程】

本秂侑毒 提交于 2019-11-28 14:58:56
原文: http://blog.gqylpy.com/gqy/236 目录 1.操作系统背景知识 2.什么是进程 3.进程调度 4.进程的并行与并发 5.同步异步阻塞非阻塞 6.进程的创建与结束 1.操作系统背景知识 顾名思义 ,进程即正在执行的一个过程,进程是对正在运行的程序的一个抽象。进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老的最重要的抽象概念之一,操作系统的其他所有内容都是围绕进程的概念展开的。 所以想要真正了解进程,应先了解操作系统, 点击进入操作系统介绍 PS:即使可以利用的cpu只有一个(早期的计算机确实如此),也能保证支持(伪)并发的能力。将一个单独的cpu变成多个虚拟的cpu(多道技术:时间多路复用+空间多路复用+硬件上支持分离),如果没有进程的抽象,现代计算机将不复存在。 必备理论基础 1.操作系统的作用: 1)隐藏复杂的硬件接口,提供良好的抽象接口. 2)管理,调度进程,并且将多个进程对硬件的抢夺变得有序 2.多道技术 1)产生背景:针对单核,实现并发 2)空间上的复用:如内存中同时有多道程序 3)时间上的复用:复用一个cpu的时间片,强调:遇到io切,占用cpu的时间过长也切,核心在于切之前将进程的状态保存下载,这样才能保证下次切换回来时能基于上次切走的位置继续运行. PS:现在的cpu一般都是多核的,同样

【线程理论篇】

北慕城南 提交于 2019-11-28 14:54:55
原文: http://blog.gqylpy.com/gqy/231 一、线程概念的引入背景 1. 进程 之前的博客 已经整理了操作系统中进程的概念,程序并不能单独运行,只有将程序装载到内存中,系统为它分配资源才能运行,而这种执行的程序就称之为进程。程序和进程的区别就在于:程序是指令的集合,它是进程运行的静态描述文本;进程是程序的一次执行活动,属于动态概念。在多道编程中,我们允许多个程序同时加载到内存中,在操作系统的调度下,可以实现并发地执行。正是这样的设计,大大提高了CPU的利用率。进程的出现让每个用户感觉到自己独享CPU,因此,进程就是为了在CPU上实现多道编程而提出的。 2. 有了进程为什么还要有线程 进程有很多优点,它提供了多道编程,让我们感觉我们每个人都拥有自己的cpu和其它资源,可以提高计算机的利用率。很多人就不理解了,既然进程那么优秀,为什么还有线程呢?其实,仔细观察就会发现进程还有很多缺陷的,主要体现在以下两点: 进程只能在同一时间处理一件任务,如果想在同一时间处理两件任务,进程就无能为力了. 进程在执行过程中如果遇到阻塞,例如等待i/o,整个进程就会挂起,即便进程中有些工作不依赖之例,也将无法执行. 3. 线程的出现 60年代,在OS中能拥有资源和独立运行的基本单位是进程,然后随着计算机技术的发展,进程出现了很多弊端。一是由于进程是资源拥有者,创建、撤销

【线程理论篇】

一个人想着一个人 提交于 2019-11-28 14:54:02
原文: http://blog.gqylpy.com/gqy/231 一、线程概念的引入背景 1. 进程 之前的博客 已经整理了操作系统中进程的概念,程序并不能单独运行,只有将程序装载到内存中,系统为它分配资源才能运行,而这种执行的程序就称之为进程。程序和进程的区别就在于:程序是指令的集合,它是进程运行的静态描述文本;进程是程序的一次执行活动,属于动态概念。在多道编程中,我们允许多个程序同时加载到内存中,在操作系统的调度下,可以实现并发地执行。正是这样的设计,大大提高了CPU的利用率。进程的出现让每个用户感觉到自己独享CPU,因此,进程就是为了在CPU上实现多道编程而提出的。 2. 有了进程为什么还要有线程 进程有很多优点,它提供了多道编程,让我们感觉我们每个人都拥有自己的cpu和其它资源,可以提高计算机的利用率。很多人就不理解了,既然进程那么优秀,为什么还有线程呢?其实,仔细观察就会发现进程还有很多缺陷的,主要体现在以下两点: 进程只能在同一时间处理一件任务,如果想在同一时间处理两件任务,进程就无能为力了. 进程在执行过程中如果遇到阻塞,例如等待i/o,整个进程就会挂起,即便进程中有些工作不依赖之例,也将无法执行. 3. 线程的出现 60年代,在OS中能拥有资源和独立运行的基本单位是进程,然后随着计算机技术的发展,进程出现了很多弊端。一是由于进程是资源拥有者,创建、撤销

进程、线程与协程

蹲街弑〆低调 提交于 2019-11-28 13:47:11
进程:一个运行的程序就是一个进程。是系统资源分配的最小单位,拥有自己独立的内存空间。既不共享堆也不共享栈;由操作系统调度 线程:调度执行的最小单位,不能独立存在,共享内存。共享堆不共享栈;由操作系统调度 协程:是一种用户态的轻量级线程,调度完全由用户控制。和线程一样,共享堆不共享栈;由程序员调度 多进程适合在CPU密集型操作,如位数多的浮点运算 多线程适合在IO密集型操作,如爬虫 来源: https://www.cnblogs.com/kingshine007/p/11409518.html