操作系统--进程管理1--单个CPU情况
1.进程概念
进程:一个正在执行的程序;操作系统提出进程概念目的:是为了跟踪程序在执行期间的状态。而程序只是一段代码,是一个静态的概念
无法准确描述程序执行时候发生的一切。程序代码被加载进内存后就以进程的形式存在。
2.进程的组成
逻辑地址空间:这个概念是由操作系统提出来的,目的是为了程序员更方便的编程,不用考虑实际的内存分配情况内存管理等情况,只有出现在存储性地址总线
上的地址是真实的物理地址,其他任何阶段出现的地址都是逻辑地址。程序看到的逻辑地址空间可以比实际的内存空间大很多,进程执行过程中
CPU需要访存的时候,由OS完成地址映射过程----把逻辑地址转换为物理地址。
执行引擎;程序代码;数据;占用的系统资源
PCB:进程控制块---是一个复杂数据结构---里面维护者进程运行所需要的所有信息。进程创建时候就要创建对应的PCB并进行相应的初始化,同时随着进程的执行
操作系统需要维护PCB的内容。操作系统管理进程实际上就是在管理进程的PCB。
3.进程PCB的组成
进程标识;进程上下文切换;进程控制信息:调度信息、状态、进程通信、存储信息、所用资源、进程所在队列信息
4.进程的特点:动态性;并发性;独立性;制约性,在多进程的系统中强调进程之间独立性,但是进程之间也需要进行合作,就需要配合;以及对共享资源的访问存在限制
5.进程的状态--主要分析3中主要的状态
注意:前提条件是仅有一个CPU的情况,多个进程竞争获得CPU的执行权,得到执行
进程创建:进程创建是由一个已经存在的进程,通过系统调用由操作系统内核创建的,此时就给进程分配PCB并初始化。
进程就绪态:进程创建后并完成了相应的初始化获得了除了CPU以外的其他资源,等待CPU的调度。OS管理所有处于就绪状态的进程方式:把进程的PCB组织成就绪队列。
进程执行:通过OS设定的CPU调度策略从就绪队列中选出一个进程获得CPU执行权。
进程阻塞:进程在运行的过程中,由于需要等待某个外部事件的发送,自己将CPU执行权让出,自身处于等态。
操作系统根据进程等待的事件分类,维护了多个等待队列。
6.进程状态之间的转换:
就绪态--运行态:新的进程被CPU调度
运行态--就绪态:CPU分配给进程的时间片用完
运行到--阻塞态:进程等待外部事件发生,放弃CPU执行权;CPU要进行新的调度
阻塞态--就绪态:阻塞的进程等待的外部事件发生,被唤醒,进入就绪队列
注意:在进行调度时,调度器决定新调度的进程是哪个,接着需要进行进程上下文切换:进入OS内核态,要保存上个进程的执行状态(寄存器值等),
加载新调度进程的状态,完成后将CPU执行权交给将要执行的进程。进程的状态保存在OS内核中进程对应的内核栈中。
随着进程的执行进程状态不断发生变化,操作系统管理的进程本质就是将PCB在几个队列之间进行迁移。
7.进程按照操作分类
IO绑定的进程:大多时候是需要进行IO操作、与用户交互的进程,这些进程真正的使用CPU的时间很短,假如给进程设置优先级:这些进程的优先级应该高
CPU绑定的进程:通常是一些要进行大量计算的,不常和用户交互的进程,这些进程需要的CPU时间比较长,但是没有严格的完成时间限制,设置优先级低
8.CPU调度器:是一段算法其功能就是在就绪队列中选择一个进程,完成进程上下文切换,让该进程被CPU执行。
CPU调度策略分类:非抢占式:当前进程正在执行,就绪队列来一个优先级较高的进程,当前进程会继续执行直到自愿放弃CPU执行权。
抢占式:当前进程正在执行,就绪队列来一个优先级较高的进程,当前进程被迫让出CPU,优先级较高的进程被调度。
操作系统--进程管理1--单个CPU情况的更多相关文章
- 检测系统中进程占满单个cpu的情况
#!/bin/bash function thread_used_cpu(){ # $1 为单个cpu负载的百分比 if [[ $1 == "" ]];then full_load ...
- 十天学会CS之操作系统——进程管理01
进程管理01 进程的概念 进程是计算机中一个非常重要的概念,在整个计算机发展历史中,操作系统中程序运行机制的演变按顺序大致可以分为: 单道程序:通常是指每一次将一个或者一批程序(一个作业)从磁盘加载进 ...
- [进程管理]Load和CPU利用率是如何算出来的
本文内容遵从CC版权协议, 可以随意转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明 网址: http://www.penglixun.com/tech/system/how_to_ca ...
- 操作系统--进程管理(Processing management)
一.进程的组成 进程通常由程序.数据和进程控制块(Process Control Block,PCB)组成. 二. 进程的状态以及状态切换 进程执行时的间断性决定了进程可能具有多种状态,最基本的三种状 ...
- linux关于进程、内存和cpu情况
1.load average: 2.03, 1.76, 1.80 1分钟.5分钟.15分钟平均负载 2.%Cpu(s):100.0 us, 0.0 sy, 0.0 ni, 0.0 id, 0.0 wa ...
- 操作系统实验一:进程管理(含成功运行C语言源代码)
目录 操作系统实验一:进程管理 1.实验目的 2.实验内容 3.实验准备 3.1.1进程的含义 3.1.2进程的状态 3.1.3进程状态之间的转换 3.2 进程控制块PCB 3.2.1进程控制块的作用 ...
- 【CPU】进程管理之五状态模型
本文为第三篇,进程管理之五状态模型,进程在操作系统里边是有多个状态的,本文就是了解进程在操作系统中的多个状态 1.进程的五个状态 创建状态 就绪状态 阻塞状态 执行状态 终止状态 2.进程处于这五种状 ...
- OS之进程管理---实时CPU调度
引言 一般来说,我们将实时操作系统区分为软实时系统(soft real-time system)和硬实时系统(hard real-time system).软实时系统不保证会调度关键实时进程,而只保证 ...
- Linux 操作系统(四)用户组管理&进程管理&任务调度
以下实例均在Centos7下验证 Centos7 查看命令帮助 man xxx 用户组管理 useradd useradd user1 password user1 cat /etc/passwd # ...
随机推荐
- 检测Linux硬盘IO数据
首先安装sysstat(有些系统会预装): apt install sysstat 然后使用命令: iostat -x -k 2 x选项用于显示和io有关的扩展数据 k某些使用block为单位的字段改 ...
- Mybatis(1)
properties 标签的作用引入外部properties 文件的内容typeAliases 的作用可以用package这个标签批量给这个包下的所有类起一个别名 name属性写包的名字. 默认别名为 ...
- snmp之GenericAddress
GenericAddress 注册地址类型,而不是默认的,第一次调用解析(java.lang.String的)方法之前,设置系统属性ADDRESS_TYPES_PROPERTIES. 这个类涉及到了工 ...
- 51nod 1270 数组的最大代价 思路:简单动态规划
这题是看起来很复杂,但是换个思路就简单了的题目. 首先每个点要么取b[i],要么取1,因为取中间值毫无意义,不能增加最大代价S. 用一个二维数组做动态规划就很简单了. dp[i][0]表示第i个点取1 ...
- apollo实现c#与android消息推送(四)
4 Android代码只是为了实现功能,比较简单,就只是贴出来 package com.myapps.mqtttest; import java.util.concurrent.Executors; ...
- Happy 2006 poj2773
Happy 2006 Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 9049 Accepted: 3031 Descri ...
- java中log4j学习笔记
Log4j是apache的一个开源项目,用来操作程序日志信息的框架.因便于管理,在工程中用来代替System.out打印语句.通过配置Log4j中的log4j.properties,可以指定日志信息的 ...
- 23.Linux-块设备驱动(详解)
通过上节的块设备驱动分析,本节便通过内存来模拟块设备驱动 参考内核自带的块设备驱动程序: drivers/block /xd.c drivers/block /z2ram.c 1.本节需要的结构体如 ...
- 扩展js,实现c#中的string.format方便拼接字符串
//"{0}-{1}-{2}".format("xx","yy","zz") //显示xx-yy-zz String.p ...
- C# 多线程、异步线程、线程池相关知识
/* 线程池ThreadPool类会在需要时增减池中线程的线程数,直到最大的线程数.池中的最大线程数是可配置的. 在双核CPU中,默认设置为1023个工作线程和1000个I/O线程.也可以指定在创建线 ...