进程调度

python - 进程

流过昼夜 提交于 2019-11-28 11:29:47
一,理论知识 1,什么是进程 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动, 是系统进行资源分配和调度的基本单位 ,是 操作系统 结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。 狭义定义:进程是正在运行的程序的实例(an instance of a computer program that is being executed)。 广义定义:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是 操作系统 动态执行的 基本单元 ,在传统的 操作系统 中,进程既是基本的 分配单元 ,也是基本的执行单元。 第一,进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region)、数据区域(data region)和堆栈(stack region)。文本区域存储处理器执行的代码;数据区域存储变量和进程执行期间使用的动态分配的内存;堆栈区域存储着活动过程调用的指令和本地变量。 第二,进程是一个“执行中的程序”。程序是一个没有生命的实体,只有处理器赋予程序生命时(操作系统执行之),它才能成为一个活动的实体,我们称其为进程。[3] 进程是操作系统中最基本、重要的概念。是多道程序系统出现后

python:进程

我们两清 提交于 2019-11-28 11:29:12
一、操作系统的发展 1,计算机诞生的初期是没有操作系统 ,程序员将对应于程序和数据的已穿孔的纸带(或卡片)装入输入机,然后启动输入机把程序和数据输入计算机内存,接着通过控制台开关启动程序针对数据运行;计算完毕,打印机输出计算结果;用户取走结果并卸下纸带(或卡片)后,才让下一个用户上机。 手工操作方式两个特点:   (1)用户独占全机。不会出现因资源已被其他用户占用而等待的现象,但资源的利用率低。   (2)CPU 等待手工操作。CPU的利用不充分。 2,后来为了提升运行效率,就出现了批处理系统 。批处理系统:加载在计算机上的一个系统软件,在它的控制下,计算机能够自动地、成批地处理一个或多个用户的作业(这作业包括程序、数据和命令)。   批处理系统——串行、速度快 联机批处理 读磁带的时候速度快 脱机批处理 读磁带和cpu工作并发3,所谓多道程序设计技术,就是指允许多个程序同时进入内存并运行。即同时把多个程序放入内存,并允许它们交替在CPU中运行,它们共享系统中的各种硬、软件资源。当一道程序因I/O请求而暂停运行时,CPU便立即转去运行另一道程序。 多道程序系统 —— 并行 操作系统的各种管理功能 时空的复用 : 空间隔离开来,cpu看起来可以处理多个任务 4,分时技术:把处理机的运行时间分成很短的时间片,按时间片轮流把处理机分配给各联机作业使用。 分时系统 —— 更好的实现了 并行

【Kubernetes】基本概念和术语

人走茶凉 提交于 2019-11-28 11:00:51
目录 Master Node Pod Label(标签) Replication Controller(RC) Deployment Horizontal Pod Autoscaler(HPA) Service(服务) Volume(存储卷) Persistent Volume Namespace(命名空间) Annotation(注解) 原文: http://blog.gqylpy.com/gqy/393 命令小结 1.创建 kubectl create -f mysql-xx.yaml 2.查基本信息 kubectl get xx <name> # xx可以为:rc/rs/pods/deployments/nodes/svc/services/namespaces 可指定 <name> 查询某一个 node/deploy 的基本信息 3.查看详细信息 kubectl describe xx <name> # xx可以为:node/deploy等 # 可指定 <name> 查询某一个 node/deploy 的详细信息 4.指定命名空间 namespace 查询: kubectl get xx -n "namespace" # 或如下 kubectl get xx --namespace="namespace" @ Kubernets 中的大部分概念如 Node 、 Pod 、

操作系统

六眼飞鱼酱① 提交于 2019-11-28 08:15:25
文章目录 什么是操作系统 系统调度(分进程和线程) 进程的上下文切换 进程通信 管道 共享内存 信号量 消息队列 socket 死锁 内存管理 什么是内存 相对地址 绝对地址 逻辑地址 物理地址 线性地址 为什么要内存管理 虚拟内存 什么是缓存 缓存替换算法 内存管理方式 什么是操作系统 操作系统是管理和控制计算机硬件与软件资源的计算机程序。 操作系统主要有五大功能:处理机管理(CPU)、进程管理、内存管理、设备管理和文件系统管理。 系统调度(分进程和线程) 引起进程调度的原因有以下几类: (1)正在执行的进程执行完毕。 (2)执行中的进程自己调用阻塞原语将自己阻塞起来进入睡眠状态。 (3)执行中的进程调用了 P 原语操作,从而因资源不足而阻塞;或调用 V 原语操作激活了等待资源的进程队列。 (4)在分时系统中,当一进程用完一个时间片。 (5)就绪队列中某进程的优先级变得高于当前执行进程的优先级,也将引起进程调度。 进程的上下文切换 将CPU硬件状态从一个进程换到另一个进程的过程称为上下文切换,其实就是运行环境的切换。 进程运行时,其硬件状态保存在CPU上的寄存器中。寄存器有:程序计数器、程序状态寄存器、栈指针、通用寄存器、其他控制寄存器的值 进程不运行时,这些寄存器的值保存在进程控制块中;当操作系统要运行一个新的进程时,将进程控制块中相关值送到对应的寄存器中。 进程的内存布局

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

纵饮孤独 提交于 2019-11-28 07:41:46
原文: 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 06:34:55
“ 进程是资源分配的最小单位,线程是CPU调度的最小单位 ” 一、进程(Process) 1、什么是进程 进程(Process) 是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。 在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。 程序是指令、数据及其组织形式的描述,进程是程序的实体。 二、线程 1、什么是线程 线程(thread) ,有时被称为轻量级进程(Lightweight Process,LWP), 是程序执行流的最小单元 。一个标准的线程由线程 ID、当前指令指针(PC)、寄存器集合和堆栈组成。 另外,线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。 一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。 由于线程之间的相互制约,致使线程在运行中呈现出间断性。 2、线程的基本状态 线程有 就绪 、 阻塞 和 运行 三种基本状态: 就绪状态 是指线程具备运行的所有条件,逻辑上可以运行,在等待处理机 运行状态 是指线程占有处理机正在运行 阻塞状态 是指线程在等待一个事件(如某个信号量),逻辑上不可执行

linux进程调度

和自甴很熟 提交于 2019-11-28 05:44:44
CFS调度: 新进程创建会调用到do_fork -->wake_up_new_task -->activate_task(rq, p, 0); --> enqueue_task(rq, p, flags); // 入就绪队列 -->p->sched_class->enqueue_task(rq, p, flags); --> check_preempt_curr(rq, p, WF_FORK); // 检查是否可抢占当前进程 对于CFS调度:会调用到fair_sched_class.enqueue_task = enqueue_task_fair static void enqueue_task_fair(struct rq *rq, struct task_struct *p, int flags) { struct cfs_rq *cfs_rq; struct sched_entity *se = &p->se; for_each_sched_entity(se) { if (se->on_rq) // 有父进程在队列上,退出for;没有就将该进程以及其父进程都入就绪队列cfs_rq break; cfs_rq = cfs_rq_of(se); //得到就绪队列 enqueue_entity(cfs_rq, se, flags); flags = ENQUEUE_WAKEUP;

【线程理论篇】

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

操作系统详解

时光毁灭记忆、已成空白 提交于 2019-11-28 03:28:29
目录 一 为什么要有操作系统 二 什么是操作系统 三 操作系统与普通软件的区别 四 操作系统发展史 五、操作系统原理 1. 操作系统的资源管理技术 2. 系统调用 3. 操作系统内核 4. 处理器状态: 内核态和用户态 5. 中断(Interupt) 6. 进程 7. 处理器调度 8. 进程的交互 9. 临界区管理 10. 信号量(samaphore)和PV操作 11. 管程 12. 死锁 13. 可变分区存储管理 14. 分页存储管理 15. 分段存储管理 16. 虚拟存储管理 17. 请求段页式虚拟内存管理 18. I/O硬件原理:I/O控制方式 19. I/O软件原理 20. 缓冲技术 21. 驱动调度技术 22. 设备独立性 23. 虚拟设备 24. 文件逻辑结构 25. 文件物理结构 二、Q&A 1. 什么是操作系统?操作系统在计算机系统中的主要作用是什么? 2. 什么是多道程序设计?多道程序设计有什么特点? 3. 计算机操作系统为什么引入进程? 4. 在分时系统中,什么是响应时间?它与哪些因素有关? 5. 解释并发性与并行性 6. 试述存储管理的基本功能。 7. 何谓地址转换(重定向)?哪些方法可以实现地址转换? 8. 什么是文件的共享?介绍文件共享的分类和实现思想。 一 为什么要有操作系统 ( 两本书:现代操作系统、操作系统原理,学好python以后再去研究吧~~)

(一) 进程调度

怎甘沉沦 提交于 2019-11-28 02:12:01
进程调度算法有FIFO,优先数调度算法,时间片轮转调度算法,分级调度算法,目前主要是考虑FIFO和优先数调度算法(静态优先级)。 输入: 进程流文件,其中存储的是一系列要执行的进程, 每个作业包括四个数据项: 进程名 进程状态(1就绪 2等待 3运行) 所需时间 优先数(0级最高) 输出: 进程执行流 和等待时间 平均等待时间 本程序包括:FIFO,优先数调度算法,时间片轮转调度算法 进程调度 #include < stdio.h > #include < string .h > #include < iostream.h > const int block_time = 10 ; // 定义时间片的长度为10秒 const int MAXPCB = 100 ; // 定义最大进程数 // 定义进程结构体 typedef struct node{ char name[ 20 ]; int status; int time; int privilege; int finished; int wait_time; }pcb; pcb pcbs[MAXPCB]; int quantity; // 初始化函数 void initial(){ int i; for (i = 0 ;i < MAXPCB;i ++ ){ strcpy(pcbs[i].name, "" ); pcbs[i]