美文网首页
进程之基础

进程之基础

作者: 遇明不散 | 来源:发表于2019-04-19 10:01 被阅读0次

多任务编程

意义

充分利用计算机的资源提高程序的运行效率

定义

通过应用程序利用计算机的多个核心达到同时执行多个任务的目的,一次提高计算机运行效率

实施方案
  • 多进程
  • 多线程
并行

多个计算机核心在同时处理多个任务,这时多个任务间是并行关系

并发

同时处理多个任务,内核在多个任务间不断的切换,达到好像都在处理运行的效果。但实际一个时间点内核只能处理其中一个任务

进程

定义

进程就是程序在计算机中一次执行的过程

程序与进程的区别
  • 程序一个可执行文件,一个静态文件的描述,静态的占有磁盘空间,不占计算机的系统资源
  • 进程是一个动态的过程,占有计算机的系统资源(CPU内存等),有一定的生命周期
  • 同一个程序的不同运行过程即为不同的进程,占用资源和生命周期都不一样
什么决定了进程的创建
  • 用户通过应用层程序进行进程的创建申请
  • 调用操作系统接口进行进程创建
  • 告知系统内核创建新的进程提供给应用层使用
进程如何占有CPU
  • 同一个内核同一个时刻只能运行一个进程
  • 多个进程对内核资源进行抢占,由操作系统进行分配
  • 哪个进程占有计算机内核我们称为该进程占有CPU的时间片
进程的创建流程
  • 用户空间通过运行程序或者调用接口发起创建进程
  • 操作系统接受用户请求,开始创建进程
  • 操作系统分配计算机资源,确定进程状态,开辟进程空间等工作
  • 操作系统将创建好的进程提供给应用程序使用

进程相关概念

CPU时间片
  • 如果一个进程占有计算机核心,我们称为改进程占有计算机cpu时间片
  • 多个任务之间是争夺cpu的关系,谁占有cpu最终是操作系统决定
PCB(进程控制块)
  • 在Linux和Unix操作系统中,进程创建后会在内存中开辟一块空间存放进程的相关信息,这个空间称为PCB
  • 进程控制块是操作系统查找识别进程的标志
进程相关命令
  • ps aux 查看进程列表信息
  • pstree 查看进程树
  • ps -ajx 查看父进程PID
PID

在操作系统中每个进程都有一个唯一的ID号用来区别于其他进程。ID号由操作系统自动分配,是一个大于0的整数

虚拟内存

每个进程占有4G内存地址空间,这里的内存指的是虚拟内存

父子进程

在系统中除了初始化进行之外每个进程都是由父进程创建的,每个进程有一个唯一的父进程,一个父进程可能有多个子进程

进程状态

三态
  • 就绪态
    进程具备运行条件,等待系统分配处理器资源以便运行
  • 运行态
    进程占有CPU处于运行状态
  • 等待态
    又称为阻塞或者睡眠态,指进程不具备运行条件,正在等待某些条件的达成
五态
  • 新建态
    创建一个新的进程,获取资源的过程
  • 就绪态
    进程具备运行条件,等待系统分配处理器以便运行
  • 运行态
    进程占有CPU处于运行状态
  • 等待态
    又称为阻塞或者睡眠态,指进程不具备运行条件,正在等待某些条件的达成
  • 终止态
    进程执行结束,资源释放回收的过程
Linux下进程状态表示
  • D:等待态(不可中断等待)
  • S:等待态(可中断等待)
  • T:等待态(暂停状态)
  • R:运行态(包含就绪态)
  • Z:僵尸态
  • +:前台进程
  • N:低优先级的进程
  • <:高优先级的进程
  • l:有子进程的,进程链接
  • s:会话组组长

进程的优先级

优先级往往决定了一个进程的执行权限和占有系统资源的优先程度

优先级范围

-20 ~ 19 数越小,优先级越高,用户创建进程默认优先级为0

  • top 动态查看系统进程运行信息,用<>翻页
  • nice 以指定的优先级运行某个进程,小于以下的优先级需要加sudo
    • nice -9 ./while.py 以9的优先级运行程序
    • sudo nice --9 ./while.py 以-9的优先级运行程序
    • renice n PID 修改一个正在运行的进程的优先级

进程特征

  • 进程之间运行互不影响 各自独立运行
  • 进程是操作系统资源分配的最小单位
  • 每个进程空间独立,各自占有一定的虚拟内存

相关文章

  • RabbitMQ基础教程之Spring&JavaConf

    RabbitMQ基础教程之Spring使用篇 相关博文,推荐查看: RabbitMq基础教程之安装与测试 Rabb...

  • RabbitMQ基础教程之使用进阶篇

    RabbitMQ基础教程之使用进阶篇 相关博文,推荐查看: RabbitMq基础教程之安装与测试 RabbitMq...

  • 年薪50W阿里P7架构师必备知识:并发+JVM+多线程+Nett

    并发编程 线程基础、线程之间的共享和协作一 线程基础、线程之间的共享和协作二 线程的并发工具类 线程的并发工具类、...

  • Kotlin通道

    通道 延期的值提供了⼀种便捷的⽅法使单个值在多个协程之间进⾏相互传输。通道提供了⼀种在流中传输值的⽅法。 通道基础...

  • 07 JMM

    1 JMM基础 线程之间如何通信及线程之间如何同步共享内存 java线程之间共享程序的公共状态,通过写-读内存中的...

  • 进程之基础

    多任务编程 意义 充分利用计算机的资源提高程序的运行效率 定义 通过应用程序利用计算机的多个核心达到同时执行多个任...

  • QT

    《Qt基础教程之Qt学习之路》 - 欧阳磊 - CSDN博客

  • 解析Binder框架

    第一节:了解一些基础 进程隔离 在操作系统中,进程与进程之间的内存和数据都是不共享的,称之为进程隔离机制。 关于进...

  • 3-Java内存模型

    1.Java内存模型的基础 ①并发编程模型的两个关键问题 线程之间如何通信、线程之间如何同步 通信是指线程之间以何...

  • java锁(1)java内存模型

    1、内存模型基础 在并发编程中,需要处理两个关键问题:线程之间如何通信及线程之间如何同步。通信是指线程之间以何种机...

网友评论

      本文标题:进程之基础

      本文链接:https://www.haomeiwen.com/subject/jggfgqtx.html