操作系统 - 进程

news2024/12/27 9:14:55

文章目录

  • 操作系统
    • 1.操作系统的定位
    • 2.进程
      • 2.1 PCB的一些属性
      • 2.3 进程调度相关属性 :
  • 本文小结

操作系统

操作系统是一个软件

用途 :管理

1.对下 :管理硬键设备

2.对上 : 为软件提供稳定的运行环境

进一步来说 : 操作系统是软件 硬件 用户之间交互的媒介 .

我们最熟悉的操作系统就是我们的Windows ,因为我们的电脑差不多都是这系统, 除了 windows 还有 Linux 关于 Linux 算是我们的必须要掌握的系统了 , 它特别适合我们进行开发和项目部署.

另外还有土豪标配的 苹果电脑使用的系统Map

另外 小扩充一下 : Android 本质上就是我们的Linux , iosMap 同宗同源.

下面来看一下我们的操作系统的定位 :

1.操作系统的定位

在这里插入图片描述


之前说过操作系统做两件事

一 : 管理硬件设备( 看的到摸得到 好理解 )

二 :为软件提供稳定的运行环境 ,这句话想要理解就不得不谈到操作系统的进程管理。

下面就来学习一下啥是进程

2.进程


进程 : 简单来说就是一个跑起来的程序,就是一个进程


这里我们就启动了idea ,此时他就相当于一个进程 。

在这里插入图片描述


下面我们就来看一下我的电脑有哪些进程

在这里插入图片描述

重点 : 进程是操作系统资源分配的基本单位

在这里插入图片描述


这里就对进程有了基本的了解, 但还不够,下面我们继续.


进程是一个重要的 资源管理 , 是由操作系统内核负责管理的 。


那么操作系统是如何管理的呢 ?


答案 : 描述 + 组织

描述 : 主要是讲清楚都有那些属性和特征 。

这里使用结构体(c语言的结构体) 来描述进程属性 , 另外用来描述进程的这个结构体 ,被称为 PCB ( process control block - 进程控制块进程控制块)


组织 : 通过一定的数据结构将多个这样的基本单位给串起来 。

组织使用的数据结构是双向链表,用双向链表键 多个PCB 给串到一起 。

创建一个进程 , 本质上就是船舰一个 PCB 这样的结构体对象,把它插入到链表中。

销毁一个进程,本质上就是把链表上的PCB 节点删除掉

任务管理器查看到的进程列表,本质上就是遍历整个PCB链表.

下面来了解一下 进程(PCB) 的一些属性/ 特征 :

2.1 PCB的一些属性


1.pid进程的身份标识符 (唯一的数字)

在这里插入图片描述


这里通过任务管理器同样是可以看到的

这些 进程的 pid 可以说是 进程的身份证号。其目的:就是为了区分进程。


2.内存指针 :

操作系统会给我们的进程分配一定的系统资源,这里最主要的就是内存, 内存指针就相当于划分了边界,表明了这一块内存是我们的, 相当于国家与国家的边界。


3.文件描述符表 :


硬盘上的文件等其他资源

这里内存指针和 文件描述符表 就描述了进程持有了那些硬件资源 。


补充 :

这里我们的硬盘资源 , 内存 ,硬盘 网卡 都比较好分 ,但是 CPU资源就不好分, 我们电脑上进程是有很多的, 几百个,但CPU就只有那么几个(多核CPU),

在这里插入图片描述


另外这里给不同进程安排时间就是进程调度 ,总的来说进程调度就是时间管理 , 这里根据上面的海王的例子来理解.

2.3 进程调度相关属性 :


进程的状态 :

这里的状态就描述了当前的进程接下来改如何去调度,。


三种重要状态

1.就绪 状态

2.运行状态 : 正在CPU上执行的状态

就绪和运行很多操作系统都不会明确区分开来,所以可以看成一个,也可以分成两个。

3.阻塞/休眠 ,此时处于这种状态CPU就不会执行当前的进程


继续采用上面的海王例子, 正常情况下,我们的时间安排的非常合理 , 我们能够让 三个女朋友随叫随到 ,

但有一天女友B被他的父亲叫去管理公司产业 1个月,此时女友B是不是就处于了阻塞状态,我们就可以不用去安排陪她的时间 了,也就不用去调度了,

如果进程处于阻塞状态 那么此时的进程就可能再进行密集的IO操作读写操作。


优先级 :


优先级也非常好理解 :

举例 : 再高中我们都肯定都有喜欢的课程, 那么是不是就会先去安排做那门课相关的作业,或多刷有关于这门课的题目, 此时这门课的优先级友高

进程也一样,优先级高的就优先给他排给他资源,一些不那么重要的就最后排。

同样海王的例子也可以举例, 比如我最喜欢女友C 谁叫人家身材好呢,那么我们是不是就可以优先将时间排给 (星期一 , 星期二 , 星期三 )女友C ,然后是(星期四 , 星期 五) 女友A , 最后是 B (星期 六, 星期天 )。


上下文 :

还是拿海王的例子来 举例 :

有一天 女友A 与海王说 下次见面我想要你给我买一个包包 , 此时我们答应了,

过了几天,我们陪女友C ,然后女友C 说 下次见面想你带我去游乐场玩一天,此时我们也答应了,

但是因为有了两个请求一个 买包包一个去游乐场玩,但是作为初级海王的我给弄叉了, 把女友A带去了游乐场, 把包包送给了女友C,此时不就露馅了吗,


高级的海王是不会有这种低级的错误的, 他们都会有一个小本本,每次都会记录一下每次约会后的小细节,下次再约会的时候是不是就可以通过小本本快速恢复到之前的状态。

所以上下文总的来说就是操作系统再进行进程切换的时候,就需要把进程执行的 中间状态 记录下来,保存好


这里也可以理解未 存档 和读档 ,所以上下文本质上就是你存档的内容.

扩展 :

更细节点来说进程的上下文就是CPU 中的各寄存器的值

寄存器 : CPU内置的存储数据模块 保存的就是程序运行过程中的中间结果 ,

保存上下文 : 就是把这些CPU 寄存器的值记录保存到内存中(PCB中)

回复上下文 : 就是把内存中的这些寄存器值恢复回去.


记账信息 :

还是用我们的好朋友的例子 : 还是这个海王他已经与 ABC相处了一段时间。

他有一个小习惯 , 每隔一段时间 做一个总结 ,统计一下,一个月内再每个人身上大概花费了多少精力。

假设 A 陪了 10 天 , B陪了 5天 , C 陪了 15天,那么他发现,这个月陪B的天数有点少了, 下个月多陪陪她,防止人家的好感度降低最后不和我们谈了

这里就需要始终保持一个合适的尺度,不能太远也不能太近.


总的来说记账信息就是统计了每个进程,都分别被执行了多久,分别都执行了那些指令。分别都排队等了多久了…

这里记账信息就可以统计每个进程当前再CPU的资源,然后再根据这里面的统计结果,来去对那些分配特别少,特别不均衡的进程,再去做出一些补偿。


最后来看一下我们的内存管理 :


上面我们一直将的进程调度, 知道了进程调度主要是如何去将CPU资源分配给各个进程, 但我们的电脑上除了CPU还有其他的资源,典型的就是我们的内存资源,那么内存资源又是如何进行分配的呢 ? 这里就需要要学习一下我们的下一个话题 虚拟地址空间

虚拟地址空间

在我们的程序中所获取都的内存地址, 并非真实的物理内存的地址,而是经过一层抽象出来的地址

如果学过c语言的同学, 肯定知道指针, 指针所指向的内存地址就是虚拟的内存地址,并非真实的物理内存地址


这里补充一下内存是一个啥东西 :

就拿我们的宿舍楼来举例 ,在宿舍楼的每一层会有很多的房间,每一个房间就是一个宿舍,每一个宿舍上面拥有房间编号,如 101 , 102 等,我们通过这些编号快速定位到房间如外卖送饭上楼假设我在 9栋102,那么地址就可以添 9栋102那么就能直接送过里, 这里的房间编号就相当于地址


内存 :在物理上就是一个内存条, 里面可以存很多数据


物理地址 :
在这里插入图片描述


为啥使用虚拟地址空间 :

在这里插入图片描述


总结 : 虚拟地址空间 ,主要就是为了避免进程之间相互产生影响.

到这还没完 ,这里通过虚拟地址空间将进程进行了隔离,但是我们进程之间需要进行数据交互(相互配合) 呢 ?

这里就不好办了, 这里我们就需要再隔离性的基础上,开一个口子。

这口子咋开呢 ? 其实很简单,就那我们现在的外卖来说,因为我们的疫情吗,我们可以选择无接触拿外卖, 相当于我们叫外卖小哥将我们的外卖送到一个指定的地方,我们自己去拿,这里指定的地方就是一块公共的空间,进程A可以将数据放在这里,等进程A放完,进程B就可以去拿,此时进程A和B就不用碰面也能拿到数据,这里就完成了交互过程,这样的操作就被称为进程间通信.

现在最主要使用的 进程间通信 方式,有两种:

1.文件操作 :

2.网络操作 :

本文小结


1.操作系统 , 定位 , 结构

结构 : 应用程序 ,系统调用(操作系统给应用程序的API ) , 内核 ,驱动, 硬件设备.


2.进程 (重点)

跑起来的程序就是进程

操作系统就需要管理很多进程

如何管理?

描述 (PCB) + 组织 (双向链表)


PCB 相关属性 :

1.pib

2.内存指针

3.文件描述符

4.进程调度的属性 :状态 , 优先级 , 上下文 ,记账信息


另外 : 进程调度本质上是要解决 狼多肉少的问题 ,让大量的进程可以在少数的 CPU 上同时运行 . --> 可以想到我们海王的例子来记忆


最后扩展了一下 进程的虚拟地址空间

关于虚拟地址空间主要解决的进程之间因为某种原因导致出现bug,使原本进程1的bug 影响到了进程2 导致进程2崩溃。

通过虚拟地址空间使用进程之间隔离开,如果需要进程之间进行数据交互就需要使用到进程间通信.


下文预告 多线程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/20933.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

多重背包问题

多重背包也是 0-1 背包的一个变式。与 0-1 背包的区别在于每种物品有ki个,而非一个。 一个很朴素的想法就是:把「每种物品选ki次」等价转换为「有ki个相同的物品,每个物品选一次」。这样就转换成了一个 0-1 背包模型,套用上文所述…

智慧民政解决方案-最新全套文件

智慧民政解决方案-最新全套文件一、建设背景二、建设思路三、建设方案四、获取 - 智慧民政全套最新解决方案合集一、建设背景 在城市信息化建设的大浪潮中,民政信息化建设关系就业、收入、教育、文体、健康、养老和社保等民间社会事务的管理与服务,在智…

Kettle运行Spoon.bat出现命令框然后闪退【BUG已解决】

文章目录项目场景:问题描述原因分析:解决方案:项目场景: 在内科大数据处理课程中,要求安装Kettle。 Kettle: Pentaho Data Integration以Java开发,支持跨平台运行,其特性包括&#…

【算法入门搜索法】走迷宫|单源最短路径1

✅作者简介:热爱后端语言的大学生,CSDN内容合伙人 ✨精品专栏:C面向对象 🔥系列专栏:算法百炼成神 文章目录🔥前言1、AB20 走迷宫1.1、解题思路1.2、代码实现与注释2、AB19 【模板】单源最短路12.1、单源最…

CMake中while/continue/break的使用

CMake中的while命令用于在条件为true时评估(evaluate)一组命令&#xff0c;其格式如下&#xff1a; while(<condition>)<commands> endwhile() 在while和匹配的endwhile之间的所有命令都被记录下来而不被调用。一旦评估了endwhile&#xff0c;只要<condition&g…

MIT 6.S081 Operating System Lecture4 (随意的笔记)

系列文章目录 文章目录系列文章目录xv6 中的内存页是如何分配的RISC-V 是多级页表对page table的理解xv6 中的内存页是如何分配的 在本课中&#xff0c;内存也相关源码路径为&#xff1a; kernel/kallo.c // Physical memory allocator, for user processes, // kernel stack…

uni-app入门:wxs基本使用

1.wxs相关介绍 2.wxs标签内嵌在wxml中使用 3.在.wxs文件中外联使用 4.wxs与JavaScript区别 1.wxs相关介绍wxs(weixin script),是小程序的一套脚本语言&#xff0c;结合 WXML&#xff0c;可以构建出页面的结构。可以编写在 wxml 文件中的 标签内&#xff0c;或以…

Spring 项目的创建和 “使用“

目录 1. 创建 Spring 项目 1.1 创键一个 Maven 项目【无需模板】 1.2 添加 Spring 依赖【Spring-context/Spring-beans】 1.3 创建一个启动类 2. 将对象存储到 Spring 中 2.1 创建一个 bean 对象 2.2 将 bean 注册到 Spring 中【使用 Spring 配置文件进行注册】 3. 从 …

【树莓派不吃灰】命令篇⑧ 校准树莓派时间

目录1. systemd-timesyncd1.1 systemd-timesyncd 客户端1.2 systemd-timesyncd 服务1.3 systemd-timesyncd 配置文件1.4 timedatectl命令2. 校准时间2.1 查看时间状态2.2 校准时区2.3 没有时钟同步服务器&#xff0c;手工设置时间2.3.1 禁止ntp自动同步2.3.2 设置时间2.3.3 设置…

敏感词检测库ToolGood.Words中IllegalWordsSearch类使用简介

C#开源敏感词检测库ToolGood.Words中的类IllegalWordsSearch为过滤非法词&#xff08;敏感词&#xff09;专用类&#xff0c;可设置跳字长度&#xff0c;支持全角转忽略大小、跳词、重复词、黑名单等功能&#xff0c;本文对照参考文献1&#xff0c;对该类的用法进行简要介绍。 …

k8s资源对象service-四层负载均衡详解

理论 工作原理如图: service的定义:是一组pod的逻辑组合,通过clusterIP和服务端口接收请求,并将这些请求代理至使用标签选择器来过滤符合条件的pod对象。 作用:服务发现和服务访问,为弹性变动且存在生命周期的pod对象提供了一个固定的访问接口。 service的代理类型:…

Vue动态切换class属性:数组法、对象法

需求&#xff1a;在style里创建好不同的属性&#xff0c;后期可以给标签动态绑定这些属性&#xff0c;也可以实现属性的切换方法&#xff1a;对象法、数组法事先创建好class属性&#xff1a; <style>.aa{}.bb{}.cc{} </style> 对象法&#xff1a; <body><…

矩阵(加速)。。。

我限定你在明天中午之前搞定这东西&#xff01;毕竟之前做过了欸。矩阵&#xff0c;一个看起来很神奇的东西&#xff0c;不过我不打算花太多的时间做这个&#xff0c;还是图论和数论好点儿&#xff0c;还要复习一下之前的数据结构和dp呢。那么先谈谈定义&#xff0c;定义一个矩…

kubernetes介绍与资源管理

#kubernetes介绍与资源管理 1应用部署方式演变 在部署应用程序的方式上&#xff0c;主要经历了三个时代&#xff1a; 传统部署&#xff1a;互联网早期&#xff0c;会直接将应用程序部署在物理机上 优点&#xff1a;简单&#xff0c;不需要其它技术的参与 缺点&#xff1a;…

CMSC5713-IT项目管理之人力资源管理Human Resources Management

文章目录9.1. Introduction9.1.1. Motivation Theories9.1.2. Influence and Power9.1.3. Motivating Team9.2. Project Human Resource Management9.3. Human Resource Planning9.3.1. Project Organization Charts9.3.2. Responsibility Assignment Matrices9.3.2.1. RACI Ch…

锐捷BFD基础实验配置

目录 BFD与静态路由联动 BFD与静态路由联动&#xff08;单跳&#xff09; BFD与静态路由联动&#xff08;多跳&#xff09; BFD与动态路由联动 配置BFD与OSPF联动 配置BFD与BGP联动 BFD与静态路由联动 BFD联动静态路由注意事项 1、配置需要联动的静态路由时&#xff0c…

Java线程池

自定义线程池 1. 简介 1.1 引入原因 1. 一个任务过来&#xff0c;一个线程去做。如果每次过来都创建新线程&#xff0c;性能低且比较耗费内存 2. 线程数多于cpu核心&#xff0c;线程切换&#xff0c;要保存原来线程的状态&#xff0c;运行现在的线程&#xff0c;势必会更加耗…

idea创建spring boot工程及配置

目录 一、dea 创建spring boot工程 二、打包 三、启动配置文件 一、dea 创建spring boot工程 new project 选择Spring Initializr ,Type&#xff1a;选择Maven&#xff0c;Java 8, Packagin 选择Jar。然后点击next 添加依赖&#xff1a; 选择Sprint Boot版本&#xff0c;选…

差分约束算法

差分约束是为了解决这样一组不等式问题&#xff1a; 这个咋解决》我们来看 对于某个下标k而言&#xff0c;提取出关于其的所有不等式&#xff0c;&#xff08;其中xk在第一个),也就是 xk-x1<m1 xk-x2<m2 xk-x3<m3....对于这些不等式相当于是 xk取min(x1m1,x2m2,x3m3…

面试常问:HTTPS的加密过程 ----- 光明和黑暗的恩怨情仇

目录 关于运营商劫持 &#xff1a; 什么是运营商劫持?? 什么是运营商? 为什么要劫持? 如何劫持? 劫持的危害 互联网公司怎么办? HTTPS 什么是HTTPS 一些概念&#xff1a; HTTPS加密 1. 对称加密&#xff1a; 2. 非对称加密 3. 非对称加密对称加密 4. 加密…