• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
xiaoyaovo
博客园    首页    新随笔    联系   管理    订阅  订阅
初识进程,为后面多线程编程打基础!

目录

    • 什么是进程?
    • 为什么要引入进程?
    • 怎样概述进程?
      • task struck 中存在哪些信息?
    • 什么是并行与并发?
    • 用户态与内核态

什么是进程?

  • 概念:一个正在运行的程序。
  • 示例
    进程也叫做任务, 任务管理器中就存在很多进程。
    在这里插入图片描述

为什么要引入进程?

  1. 希望能够执行多个任务,也就是多个进程。
    什么意思呢?也就是说,同一台电脑上,现在可以边打 LOL,一遍看直播,一遍聊天等等一系列的事。
    而在以前,只能打游戏,退出,看直播,退出,聊天,退出。(功能机了解一下)。
  2. 充分利用 CPU 资源。
    随着 CPU 的发展,CPU 的性能已经得到了巨大的提升,而如果继续执行单任务的话,无疑是比较浪费 CPU 资源的。

怎样概述进程?

  1. 描述进程:task struck 结构
    因为操作系统内核是由 c 语言写的,那怎么理解 struck ?
    可以理解为一个 Java 中的类,但是这个类只有属性,没有方法。
  2. 组织进程:使用双向链表把很多 task struck 变量串起来
    创建一个进程,就在这个双向链表中添加一个节点代表该进程。
    打开任务管理器,可以看到很多进程,可以认为是操作系统内核遍历了这个双向链表,然后获取每个节点的信息并展示出来。
    而结束一个进程,就删除代表这个进程的节点。
    在这里插入图片描述

task struck 中存在哪些信息?

  1. PID:进程的 ID。
    在这里插入图片描述
    点击右键,就可以选择是否显示 PID。
    在这里插入图片描述
  2. 进程内存的指针
    描述进程持有的内存资源范围(进程依赖的代码和数据在哪)
  3. 时间片
    进程执行的一小段时间叫时间片。
    操作系统的任务调度采用时间片轮转的抢占调度方式,也就是说一个任务执行一小段时间后强制暂停去执行下一个任务,每个任务轮流执行。
    每个程序不知道自己什么时候能够获取到 CPU 执行,也不知道自己什么时候失去 CPU ,更不知道自己下次获取到 CPU 是什么时候,一切听从操作系统。
  4. 进程的优先级
  5. 进程的上下文
  6. 进程的记账信息
  7. 进程的状态
    …

对于4、5、6和 7 这几个点,用一个小故事来理解。
逍遥对今天一天的时间进行了规划
9:00 — 12:00,打游戏
13:00 — 15:00 ,午睡
16:00 — 20:00,约会

  • 进程的优先级
    对于不同时间干不同的事情,就是进程的优先级;
  • 进程的上下文(记录今天活动的相关状态)
    早上打游戏队友太坑,明天早上不打游戏了;
    中午午睡睡得很香,明天继续午睡;
    晚上约会吵架了,明天不约会了。
    记录的目的:下次运行的时候,就能够回复之前的状态。(明天早上不打游戏,晚上不约会)
  • 进程的记账信息
    过了一段时间后,统计逍遥对自己一天的活动的信息。
    发现中午午睡特别合适,于是每天中午多分配点时间午睡;
    记账信息相当于一种统计信息,每个进程在 CPU 上执行了多久,调度了多>少次。
  • 进程的状态
    经常吵架,分手了,以后不约会了。
    上下文只是记录信息,不产生影响,但是状态会产生影响。
    进程状态图:在这里插入图片描述

什么是并行与并发?

  • 并行
    从微观角度来说,每个进程与进程之间,是同时执行的。例如 8 个 CPU 核心(拥有 8 个核的一个 CPU),可以同时执行 8 个进程。
  • 并发
    从微观角度来说,进程是串行的(功能机,完成一个进程结束后再执行另外一个程序); 从宏观角度来说,进程是同时执行的。CPU 处理完当前进程马上切换到下一个进程…速度很快,从从宏观上看起来像是同时执行的。

并行与并发的观念并不一样,但是一般概述的时候,用 并发 代指 并行 + 并发。

用户态与内核态

操作系统对执行权限进行了分级,内核态与用户态。

  • 内核态
    操作系统内核来执行任务。
    一旦某个操作进入内核态执行,此时这个操作就变得不可控,往往意味着比较低效。
  • 用户态
    应用程序来执行任务。
posted on 2021-08-07 10:11  豆本豆红枣豆奶  阅读(16)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3