IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 操作系统(三)进程 -> 正文阅读

[系统运维]操作系统(三)进程

进程和线程的区别是老八股文了。这里要好好学习。

1 进程综述

1.1 历史变化的角度

1.1.1 进程

我之前是做单片机的嘛,所以从我的经历来说。一开始是程序员直接录入裸机程序跑,那时候你的程序在cpu上需要直接跟周围IO设备交互,不需要经过io控制器。
后来逐步提取了公共程序,比如汇编器,以及简单的执行库。
类似DOS这种操作系统出现,多个程序要执行,那么这个时候,进程就是“执行或者可供调用的程序实体,负责管理对应程序的执行资源,比如CPU周期,内存,IO。

1.1.2 线程

后来大家发现进程之间通信起来,共享资源太重了,希望有轻量级的“进程”有独立的执行栈,但是共享代码跟数据段,甚至整个内存空间。方便快速的通信,于是有了线程的需求,这时候进程内部有了至少一个执行线程(),而同时对于内核调度,其实所有线程都会对接真正的CPU资源,这个负责执行的,就是所谓的内核线程,

1.1.3 协程

1.2 三者区别

进程是一个程序的被分配的资源,线程是cpu调度和执行的对象。
linus都说过这两个没有严格意义上的区别。
感觉实际使用的时候线程主要是为了省内存,协程省操作系统的调度开销

1.3 多线程与多进程

linux里的多线程,就是共享同一段内存的多个进程。

1.4 进程

一个进程可以被认为是一个正在执行的程序。一个进程将需要某些资源来完成它的任务,例如CPU的哪些周期给这个进程、内存、文件和I/O设备。这些资源是在进程创建或执行时分配给它的。

在大多数系统中,进程是工作单元。系统由一组进程组成:操作系统进程执行系统代码,用户进程执行用户代码。所有这些进程都可以并发执行。

尽管传统上一个进程在运行时只包含一个控制线程,但大多数现代操作系统现在支持具有多个线程的进程。

操作系统负责进程和线程管理的几个重要方面:创建和删除用户和系统进程;进程的调度;以及同步、通信和死锁处理机制的提供。

2 进程

2.1 概念

job VS process VS task: https://www.baeldung.com/cs/job-vs-task-vs-process
一个task组成多个job,某些情况下,task和process是一样的。

进程就是内存中执行的一个程序。启动new、就绪ready、运行run、等待wait和终止terminate五个步骤。
程序是磁盘上的一个可执行文件,当程序进入内存后,程序成为了一个进程。多个用户运行同一个程序,一个程序就成为了多个进程。

2.2 内存中的进程

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.3 进程控制块(PCB process control block)

进程控制块(Processing Control Block),是操作系统核心中一种数据结构,主要表示进程状态。 或者说,OS是根据PCB来对并发执行的进程进行控制和管理的。

  • Process state – running, waiting, ready, new, terminated.
  • Program counter – location of instruction to next execute
  • CPU registers – contents of all process-centric registers
  • Memory-management information – memory allocated to
    the process
  • I/O status information – I/O devices allocated to process,
    list of open files
  • CPU scheduling information- priorities, scheduling queue
    pointers
  • Accounting information – CPU used, clock time elapsed
    since start, time limits
    在这里插入图片描述

2.4 进程状态

在这里插入图片描述
这里可以跟随PPT的图片变化理解整个过程。

2.5 CPU进程切换

在这里插入图片描述
在这里插入图片描述

2.5.1 上下文切换

在这里插入图片描述
上下文切换是需要时间的,这断时间内,操作系统没干有意义的工作。时间和硬件有关系。这个时间是日常开销,无法省略。
在这里插入图片描述

2.6 Ready Queue And Various I/O Device Queues

现在的操作系统都是多线程,同时在内存中,等待cpu的调用。
在这里插入图片描述
ready queue: 放在内存中准备被cpu执行的进程队列
Process scheduler : 从队列中选择进程交给cpu
Device queue / IO queue: 准备使用io设备的进程队列

2.6.1 进程在队列间的迁移(看pdf的图对应)

在这里插入图片描述

2.7 调度器(scheduler)

  • Short-term scheduler (or CPU scheduler) – selects which process should be executed next and allocates CPU

    • Sometimes the only scheduler in a system
    • Short-term scheduler is invoked frequently (milliseconds) -> (must be fast)
  • Long-term scheduler (or job scheduler) – selects which processes should be brought into the ready queue

    • Long-term scheduler is invoked infrequently (seconds, minutes) ? (may be
      slow)
    • The long-term scheduler controls the degree of multiprogramming
  • Medium-term scheduler can be added if degree of multiple programming needs to decrease

    • Remove process from memory, store on disk, bring back in from disk to
      continue execution: swapping

2.7.1 IO绑定和CPU绑定

进程还可以分类为:

  • I/O bound:进程会发出更多的I/O请求,(所以该进程的执行时间更受限于IO,所以叫IO绑定)
  • CPU 绑定:进程更多去进行计算

2.8 进程操作

父进程创建子进程,形成进程树。

2.8.1 进程创建

在这里插入图片描述

  • pid process identifier
    在这里插入图片描述
    上图需要看书和代码理解。P118

2.8.2 进程终止

进程自己通过exit()终止
父进程通过abort()终止子进程
Cascading Termination: 父进程终止,操作系统令所有子进程都终止。
父进程通过wait()等待子进程终止

orphan 进程:父进程终止,子进程还存在
zombie 进程:父进程没有使用wait()进程,不知道子进程已经终止

2.8.3 合作进程和独立进程Cooperating Processes independent process

合作进程需要进程间的通信interprocess communication (IPC)
在这里插入图片描述

  • 共享内存是被用户进程所控制的,而不是操作系统。
    生产者:
    消费者:

  • 信息传递:
    直接通信:经常是2个进程1个连接,双向的通信,互相发
    间接通信:通过邮箱,许多进程可以有一个连接

2.8.4 Client-Server Systems 通信

  • pipes
  • Sockets
  • Remote Procedure Calls
  • Remote Method Invocation (Java)
    了解管道
    unidirectional
    在这里插入图片描述
    命名管道
    在这里插入图片描述
  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-07-29 12:03:21  更:2021-07-29 12:04:43 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/27 11:19:38-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计