操作系统:进程管理

Posted liu++

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了操作系统:进程管理相关的知识,希望对你有一定的参考价值。

操作系统(2):进程管理

前言

上一篇写了操作系统的基本概念,但是没有概述,先把概述补上。

操作系统的学习分为五部分

  • 概述
  • 进程管理
  • 内存管理
  • 文件管理
  • IO管理

目前是学完了内存管理,感受是太简单了,核心就是进程管理(从页数上就能看出来),面试考的多的也是进程管理,内存管理就是内存、地址、分页简单的很,文件管理是讲的文件、目录、磁盘,IO更不用说,后三个加起来才顶一个进程管理进程。

说了不少那么就开始吧。

进程

  • 什么是进程?进程和程序的区别

    进程是程序的一次执行,进程是动态的程序是静态的,可以说进程包含程序。

  • 进程的组成

    PCB(进程控制块)、程序、数据,可以是多个程序生成一个进程。其中PCB是核心,是进程的唯一标识,创建进程实际上创建的是PCB。

  • 进程状态转换

在这里插入图片描述

  • 进程切换

    程切换因为这有涉及到一系列的概念:上下文

    上下文有进程上下文、中断上下文、处理机上下文。

进程上下文: 就是一个进程在执行的时候,CPU的所有寄存器中的值、进程的状态以及堆栈上的内容。

中断上下文: 就是硬件为了让内核处理中断而传递过来的这些参数和内核需要保存的一些其他环境(主要是当前被中断的进程环境)。

​ 处理器上下文就相当于进程上下文,是书上的概念网上并没有查到。

参考:进程上下文切换与处理器上下文切换

​ 操作系统是在并发的执行多个进程,实现的方法就是进程间切换。

  • 进程通信

    共享存储、消息队列、网络通信、管道通信

  • 线程

    轻量的进程,基本的CPU执行单元,进程是资源分配的基本单元,线程无法直接请求系统资源,只能是使用进程请求来的系统资源。

处理机调度

要并发,进程就要切换(调度),如何调度:

作业调度——》内存调度——》进程调度

进程同步

事实上这里与多线程学习是重合的。

  • 临界资源

    和竞态条件貌似是一回事,资源只有一个,如果争抢那就会出现错误

  • 同步

    对于某个任务,要让进程有执行,很像async/await

  • 互斥

    对于临界资源,一个进程用完了另一个再用,不要抢。

  • 信号量

    信号量,顾名思义就是一个用来标志的变量,在实现同步和互斥的时候用。

  • 管程

    信号量必须用PV原语操作,PV原语是要每个进程自己写一个,这太不方便了。

    管程实际上是在“面向对象”(资源抽象)的基础上实现的,

死锁

就是两个进程同时申请一个资源,系统不知道把资源给谁,那就都等着吧。

感悟与近况

操作系统我是大二上学的这门课,当时真的是怎么都不明白,我比较喜欢怪环境哈哈,当时看的书、看的视频清一色的风格都用概念去解释一个概念,根本看不到,当时也没用清晰的脉络。

现在有了,是真的简单,后面的内存管理、文件管理、IO我可能还会也博客,但是也可能不会,因为内容我看了真的简单,面试问的也比较少,下篇关于操作系统的文章应该就是问答题的模式了。

这个进程管理很多算法都没有写,概念也省略了很多,就都在书里面了。重点是概述,还有进程管理。

内容来自:王道考研操作系统考研复习指导

以上是关于操作系统:进程管理的主要内容,如果未能解决你的问题,请参考以下文章

在 Python 多处理进程中运行较慢的 OpenCV 代码片段

java 简单的代码片段,展示如何将javaagent附加到运行JVM进程

代码片段:Shell脚本实现重复执行和多进程

《java精品毕设》基于javaweb宠物领养平台管理系统(源码+毕设论文+sql):主要实现:个人中心,信息修改,填写领养信息,交流论坛,新闻,寄养信息,公告,宠物领养信息,我的寄养信息等(代码片段

Linux系统管理10——进程和计划任务管理

使用 Git 来管理 Xcode 中的代码片段