当前位置: 首页 > news >正文

操作系统与进程【单身狗定制版】

在这里插入图片描述

大家好呀
我是浪前

今天给大家讲解的是操作系统与进程

祝愿所有点赞关注的人,身体健康,一夜暴富,升职加薪迎娶白富美!!!
点我领取迎娶白富美大礼包

前言:
我们今天我们来学习操作系统
当然啦,操作系统是一个很庞大的学科,远非小编一篇博客就可以掌握的

虽然小编我也没有怎么学会

但是还是斗胆将自己学到的一点点浅薄的知识

给大家胡编乱绉分享一下~

在我们现在的常用的操作系统中:
常用的有如下几个:
Windows10
Windows11
linux
mac os
ios

🎃为什么要有操作系统?

🎃 操作系统存在的背景:

因为我们的计算机中硬件设备各有不同,

需要操作系统来对不同的硬件设备进行统一管理

操作系统在管理的时候还要给软件提供统一的API
方便我们在写代码的时候进行调用不同的API,而且系统API都已经被jvm封装好的
程序员在写代码时就可以不用关注不同的硬件设备了;

🎃操作系统的存在的目的

统一管理硬件设备,对硬件设备进行抽象封装

所以操作系统是一个软件:作用是 管理硬件设备

上: 给软件提供稳定的运行环境
下: 管理所有的硬件设备

🎃操作系统是如何管理的

我们的硬件厂商在开发硬件的时候,会同时开发出一个驱动程序(软件)

这个驱动程序(软件)专属于这个硬件设备

此时操作系统通过这个驱动程序(软件)来完成对硬件设备的控制

一个计算机上可以运行多个程序,同时每个程序各自独立运行的, 不会相互干扰

🎃操作系统最核心的东西

内核

内核是操作系统的核心

在操作系统中,内核态用户态是指操作系统为确保系统安全和稳定性而设计的两种CPU工作模式。操作系统的内核是最核心的组件,负责管理系统资源(如CPU、内存、硬件设备)并提供各种服务。下面详细说明它们的关系。

🎃操作系统的核心:内核

内核是操作系统的核心部分,负责直接与硬件交互,并提供底层功能支持。它包含了:

  • 进程管理:创建、调度和终止进程。
  • 内存管理:分配和释放内存资源。
  • 文件系统管理:管理文件和目录。
  • 设备管理:控制硬件设备的操作,如硬盘、网络等。
  • 系统安全和访问控制:控制对系统资源的访问权限。

内核是系统的“大脑”,对系统资源拥有完全控制权。为了保护内核和系统资源不被损坏,操作系统将CPU的权限分为内核态用户态两种模式。

🎃什么是内核态(Kernel Mode)?

内核态是一种CPU的工作模式,在这种模式下,CPU可以访问系统的所有资源和硬件设备。内核态通常具有最高权限,可以执行敏感操作,如直接控制硬件、修改内存等。

  • 谁可以运行在内核态:只有操作系统内核代码和某些低级的系统服务会在内核态运行。
  • 什么操作在内核态执行:硬件访问、内存管理、进程调度等操作都需要在内核态下完成。
  • 优点:内核态具有最高权限,可以直接与硬件通信,因此可以高效地管理系统资源。
  • 风险:如果用户程序也在内核态执行,那么一旦出错,可能会导致系统崩溃,甚至硬件损坏。

🎃什么是用户态(User Mode)?

用户态是一种受限的CPU模式,在这种模式下,程序对系统资源的访问受到限制。用户态主要用于运行普通的应用程序。应用程序只能在受限的范围内执行,无法直接访问硬件资源。如果应用程序需要访问系统资源(比如读取文件或与硬件通信),必须通过“系统调用”来请求操作系统的帮助。

  • 谁运行在用户态:所有普通的应用程序(如浏览器、文本编辑器)和非关键性服务都运行在用户态。
  • 什么操作在用户态执行:普通的计算任务、非敏感操作等。
  • 优点:用户态的限制使得即使应用程序出错也不会影响系统核心资源,保证了系统的稳定性。
  • 风险:用户态权限受限,导致应用程序需要频繁进行“系统调用”以访问资源,增加了操作开销。

🎃内核态与用户态的关系

内核态和用户态之间的关系可以理解为:

  • 安全隔离:用户态和内核态隔离,用户态程序无法直接访问内核资源。这种隔离确保了系统安全,避免用户程序直接操作内核数据。
  • 权限分配:内核态拥有所有权限,而用户态的权限受限,这样可以保护系统资源不被误操作或恶意操作。
  • 切换机制:用户程序想要执行需要高权限的操作时,必须通过系统调用切换到内核态,由内核完成操作后再切回用户态。这种切换确保了系统安全性,同时实现了对用户态程序的服务。

🎃系统调用:内核态与用户态的桥梁

系统调用(System Call)是用户态和内核态之间的桥梁,是用户态程序与操作系统交互的唯一方式。系统调用的过程如下

  1. 用户程序在用户态下执行,但遇到需要内核帮助的操作(如文件读写)。
  2. 通过系统调用,CPU切换到内核态,操作系统内核接管。
  3. 内核执行系统调用请求的操作。
  4. 完成操作后,内核将CPU切回用户态,程序继续执行。

这种机制确保了用户程序不会直接干扰内核资源,同时又能够访问系统服务。

🎃小结

  • 内核态:最高权限,直接访问硬件,内核代码在内核态执行。
  • 用户态:权限受限,应用程序在用户态执行,访问系统资源需通过系统调用。
  • 内核:操作系统的核心,负责管理资源,提供系统服务,运行在内核态。
  • 系统调用:用户态程序与内核交互的唯一方式,通过它可以安全地实现内核态和用户态的切换。

通过这种设计,操作系统既保证了系统的安全性和稳定性,又提供了丰富的系统功能给用户程序。

一个程序可以在内核态工作,也可以在用户态工作

内核是操作系统最核心的功能

而且硬件的驱动程序都是在系统内核中执行的

因为内核需要给很多应用程序提供支持

🎃 进程/任务(process / task)

进程就是任务

进程是操作系统最重要的概念;(和我们写代码密切相关)

进程定义: 正在运行的程序,只有正在运行的程序才是进程

没有正在运行的程序都不是进程

任务管理器中打开看见的就是进程

有的是系统自动创建的,有的是我们手动创建的

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

每个进程在执行的过程中都要消耗一定的系统资源(硬件资源)
比如CPU,内存,磁盘, GPU

每个进程都是系统资源分配的基本单位
上面这句话很重要,后面还会持续出现,(圈出来,后面要考)

系统是怎么分配资源的?

以进程为单位,每个进程分配一定的系统资源

🎃操作系统的进程管理

进程在系统中如何进行管理

注意:管理的前提是进程很多。

只有出现很多个进程的时候才会涉及到进程管理

管理从两个角度来进行管理

  1. 描述:先使用类/ 结构体这样的方式把实体属性给列出来

描述就是使用类/ 结构体 , 搞清楚被管理的这个对象都有哪些属性, 把这些属性都表示出来

2.组织 : 使用一定的数据结构把这些结构体/类/对象给串到一起

组织就是通过一定的数据结构,把这些表示出来的对象,串起来(为了后续的增删改查)

例子:
学校对学生进行管理:

先描述: 把每一个学生的各种属性都表示出来
再组织: 使用一定的数据结构(数据库/表格)把所有的学生信息都整理到一起

🎃 进程的描述

在操作系统中有一个结构体来描述进程的属性,操作系统是C/C++写的

所以我们使用结构体描述进程,而这个结构体叫做"进程控制块" PCB (Precess Control Bolck)

PCB是一个统称(描述进程的结构体都统称为PCB)

这个PCB是描述进程的属性,一个进程可以使用一个PCB/多个PCB来描述

🎃进程的组织

系统会使用类似于双向链表这样的数据结构来组织多个PCB

创建一个新的进程即创建PCB,并且把PCB插入到链表中去

销毁进程就是把这个PCB从链表中删除并释放

展示进程列表,就是遍历链表的每个节点

🎃 PCB 的属性

PCB中有哪些东西(重点的部分)?

  1. PID身份标识
  2. 一组内存指针
  3. 文件描述符表

🎃1. PID 身份标识

类似于每个人的身份证号

PID是从1开始,保证不会重复

并且每个进程的PID都是唯一

PID的作用
涉及到结束进程的操作

点击某个进程,并选择结束这个进程后,任务管理器就会获取到这个进程的PID

再调用一个系统的API ,把PID作为参数传递进去,于是就完成了结束进程的操作

🎃2. 一组内存指针 :

进程运行是要消耗系统资源的,内存就是重要的要消耗的资源…,所以内存需要申请了之后才可以使用

同时 每个进程都只能使用自己申请到到的内存

内存指针就是描述说你这个进程都能够使用哪些内存?

同时描述这个进程哪里存的是指令,哪里存的是数据…

内存指针描述了进程所使用的内存资源的详细信息

同时一个进程跑起来的时候,需要有指令数据

指令数据都是需要加载到内存当中去的

进程也需要知道哪里存的是指令,哪里存的是数据…
这也是内存指针的作用。

指令和数据是在进程跑起来之前加载的
我们双击一个.exe文件(可执行文件)就是系统先把这个exe文件里的内容(包含了指令和数据, 先加载到内存中) , 之后再去创建进程, 让进程开始执行
如下:
在这里插入图片描述

双击这个微信的.exe文件之后

系统会把这个 .exe 文件里的内容加载到内存中

之后再去创建微信这个进程,让微信这个进程开始运行
此时微信的进程就已经在任务管理器中开始出现了:
如图

在这里插入图片描述

指令一般不大,但是数据有可能会很大…

指令: CPU需要在内存中取走指令才能执行指令

内存指针描述了进程持有的内存资源是什么样的

🎃3. 文件描述符表:

描述这个进程所涉及的硬盘相关的资源

进程也涉及到硬盘操作 ,
而且进程是 按照文件的方式来操作的

当前进程关联了哪些文件, 能够操作哪些文件
都是通过文件描述表组织和进行操作

为什么会有文件描述表?

因为操作系统对硬盘这样的硬件设备,进行了封装

操作系统把硬件设备封装为了文件

存储器 = 内存 + 外存(硬盘, 软盘, 光盘 , U盘)

操作系统不管你是哪一个盘,都是进行统一的抽象, 都按照文件的方式来操作的

一个进程在操作文件之前,要先去打开文件
打开文件就是让你的进程在文件描述表中分配一个表项

那么进程是怎么去分配一个表项的?

使用文件描述表来构造一个结构体表示这个文件的相关信息

🎃总结

1: 操作系统的存在就是为了去管理各种硬件设备

2: 进程是系统资源分配的基本单位

3: 当进程很多的时候,需要对进程进行管理

4: 进程管理是从两个角度来进行的:

一个是描述:使用结构体来描述进程,这个结构体叫做PCB
一个是组织:使用双向链表来进行组织

而在PCB中有一些重要的属性
比如PID,内存指针,文件描述符表…

好啦,关于操作系统的一部分知识就讲到这里啦

下一篇我们将会详细讲解进程和线程

另外加一个题外话:
我自己最近在朋友圈看到有一位大佬(树林同学)发了一段话

有时候我感到自己的生活过得匮乏麻木的时,就会看一看他写的文章

我觉得很有意思,分享给大家~

想了好久,
我现在最在意的品质是什么?
柔软
它不是感性,也不是柔和
甚至都不是松弛
有点像五彩斑斓的黑

你在意,你好奇,你喜欢
你纠结,你痛苦,你愤怒
都是你的柔软

不物化自己,只觉得钱最重要
甚至比自己还重要,也不物化别人
没有人是你欲望的容器
无论是你的物欲,性欲,食欲,权力的欲望

人是一面镜子
看别人如何
自己亦如何

怕有些人把柔软当成是老好人

柔软不是脆弱
它不易碎
也并非没有形状
有自己的弹性

一定是有指向的
什么人,我不喜欢
什么事情,我不做
什么原则和底线,我不踏出
但也是有灰度的
和光同尘

这个世界对那些黑白分得太清的人
其实是不兼容的
什么都沾染一点
咱们就是自己人

说的可能还不够清楚
柔软
他的反面是:坚硬
心里面硬的跟个石头一样的人
自己活得也是很麻木的人
或者说是 僵硬
你心里面只有这一件事情
这件事无限大
你就装不下人了

我看过很多麻木的人
钱重要
公司重要
自己的名声重要
身体就不重要了
自己的情绪感受就不重要了
生活也就不重要了

我知道有人说
创业就是生活
但真的吗
真的吗

但应该不见得有这么顺口回答的那么多

少有人热爱
哪怕有人热爱
爱久了也会麻木

不为什么为定式
有弹性
偶尔会停下来

找人说说
聊聊
小酌一下
对影三人

身边红颜知己
身边贵人同好

人是社会关系的集合
最深度的关系
来自于看见和被看见

在哈萨克斯坦的语言体系里面
是没有喜欢的
他们的 “我喜欢你“
是”这一刻,我清楚地看见你“

在这里插入图片描述

http://www.lryc.cn/news/476505.html

相关文章:

  • 监听el-table中 自定义封装的某个组件的值发现改变调用函数
  • frida安装
  • 链表详解(三)
  • 【RESP问题】RESP.app GUI for Redis 连接不上redis服务器
  • 【github 有趣项目】AMULE
  • 【WRF数据准备】土地利用类型分类标准:USGS+MODIS IGBP 21
  • KVM虚拟机迁移:无缝迁徙,重塑云上未来
  • CSS常见适配布局方式
  • ArkUI常用布局:构建响应式和高效的用户界面
  • 论面向服务架构设计及其应用
  • HTML5 + CSS3 + JavaScript 编程语言学习教程
  • Java日志脱敏——基于logback MessageConverter实现
  • 在 Ubuntu 22.04 上部署Apache 服务, 访问一张照片
  • 从0学习React(10)
  • Redis-结构化value对象的类型
  • 【QT】Qt对话框
  • 【计算机网络篇】数据链路层(14)虚拟局域网VLAN(概述,实现机制)
  • 伺服中的电子凸轮与追剪
  • Oracle 第22章:数据仓库与OLAP
  • 在Ubuntu上安装TensorFlow与Keras
  • vue data变量之间相互赋值或进行数据联动
  • 如何理解ref,toRef,和toRefs
  • 从单一到多元:揭秘 Hexo Diversity 主题的运行原理
  • 软考中级(系统集成项目管理工程师)案例分析计算题-笔记
  • Docker打包自己项目推到Docker hub仓库(windows10)
  • CesiumJS 案例 P20:监听鼠标滚轮、监听鼠标左键按下与松开、监听鼠标右键按下与松开、监听鼠标左击落点
  • 如何使用Web-Check和cpolar实现安全的远程网站监测与管理
  • 随机生成100组N个数并对比,C++,python,matlab,pair,std::piecewise_construct
  • python爬虫获取数据后的数据提取
  • 前段(vue)