计算机操作系统和进程
✨个人主页:bit me👇
✨当前专栏:Java EE初阶👇
✨每日一语:心平能愈三千疾,心静可通万事理。
目 录
- 🐬一. 操作系统
- 🍦1. 操作系统是什么?
- 🍨2. 操作系统的两个核心功能:
- 🍧3. 操作系统软硬件结构图
- 🐋二. 进程
- 📙1. 什么是进程/任务(Process/Task)?
- 📘2. 进程管理
- 📗3. PCB(进程控制块)
- 📕4. 进程的调度
- 📒5. 进程的虚拟地址空间
- 📔6. 进程间通信
🐬一. 操作系统
🍦1. 操作系统是什么?
- 操作系统是一组做计算机资源管理的软件的统称
目前常见的操作系统有:Windows系列、Unix系列、Linux系列、OSX系列、Android系列、iOS系列、鸿蒙等
🍨2. 操作系统的两个核心功能:
-
防止硬件被时空的应用程序滥用;(对下,要管理各种硬件设备)
-
向应用程序提供简单一致的机制来控制复杂而又通常大相径庭的低级硬件设备。(对上,要给各种软件提供稳定的运行环境)
🍧3. 操作系统软硬件结构图
- 操作系统内核是操作系统最核心的功能部分
- 系统调用:操作系统给应用程序提供的 API 接口,就比如你想往控制台打印一个 " hello " 这个过程你需要调用 printf.(库函数) 内部就要调用操作系统提供的系统调用 write,调用 write 就会进入到内核来执行,内核的话就要进一步的控制硬件,完成输出过程
- 当我们使用系统调用进入操作系统内核的时候,就会涉及到 用户态 到 内核态 之间的切换,由于内核只有一个,应用程序有很多,这些程序都需要靠我们的这个操作系统内核来提供工作支持,很可能就要排队等待
- 驱动程序:软件,是由硬件厂商提供的软件程序,直接和硬件设备打交道(硬件一般都会提供一些 " 寄存器 "),驱动程序相当于在 硬件 和 内核 之间来了一层转换
🐋二. 进程
📙1. 什么是进程/任务(Process/Task)?
- 一个程序,运行起来,完成一系列任务的模样
进程是操作系统对一个正在运行的程序的一种抽象,换言之,可以把进程看做程序的一次运行过程;
注:
- 进程和程序(可执行文件)之间的区别
打开任务管理器,里面的 QQ 是跑起来的模板,这是一个进程,是动态的,被加载到内存中的
在我们的电脑中找到 QQ 文件安装的位置,找到 Bin 目录里的 QQ.exe 文件,这是一个可执行文件,是静态的,躺在硬盘上的
一个计算机的硬盘上可能会躺着很多的可执行文件,同一时刻,可能只有一小部分在运行(变成了进程)
- 一个可执行文件,是 " 静态的 " ,当我们双击运行的时候,操作系统就会把这个可执行文件中的关键信息加载到内存中,并且开始运行里面的代码,就形成了一个进程.
📘2. 进程管理
一个操作系统上,同时跑着这么多进程,就需要操作系统来安排他们
管理:
- 先描述:使用一个类 / 结构体,把这个东西有啥特征,都表示出来
- 再组织:使用一个数据结构,把很多个这样的对象 / 结合体给整理到一起
结构体:进程管理是操作系统内核的功能,操作系统又是 C 语言实现的,C 语言的结构体就是低配的类.
📗3. PCB(进程控制块)
- 就是一个结构体,这个结构体里就包含了一些表示进程的核心信息
操作系统内核中,就把若干 PCB 串成了一个双向链表
PCB 里面都有啥信息?
最好的办法还是看看操作系统内核的源码
-
- 进程的身份标识 pid (学号)
-
- 内存指针
操作系统要把一些必要的数据加载到内存中(必要的数据:有些是要运行的指令(代码),有些是运行时依赖的数据(全局变量))
内存指针就描述了:该进程的内存中哪些部分是指令,哪些部分是数据
-
- 文件描述表
表示了当前进程都打开了哪些文件
在代码中打开一个 fopen 就会在进程的文件描述符表 (顺序表) 里给这个文件分配一个表项。每个元素就代表一个打开的文件,对应的数组下标就是 " 文件描述符 "。
内存指针 和 文件描述表 描述了进程持有哪些系统的资源,也认为 进程 是操作系统中 " 资源分配 " 的基本单位
📕4. 进程的调度
进程里有一组比较关键的属性,用来实现进程的调度
进程状态的优先级
进程的状态
进程的记账信息
进程的上下文
本质问题:当前计算机,CPU 是有限的,但是进程数量是比较多的,例如 CPU 核心数只有 6 核,进程数量非常多,几十个,几百个,这就形成了狼多肉少的局面,操作系统是要做到尽可能的公平,让每个狼都有吃肉的机会,就需要进行调度
那么如何调度呢?轮流吃!
并发式执行:宏观上同时执行,微观上不是同时执行
CPU 主频是1.9 Ghz,1s 有 19 亿个时钟周期,人是感知不到的,站在宏观的角度来看,好像这些进程是在同时进行,微观上并不是同时,而是 " 轮流 " 的方式占用 CPU 执行
并行式执行:宏观上同时执行,微观上也是同时执行
CPU 上有多个核心,每个核心上都可以跑一个进程,某一时刻两个进程就是在两个 CPU 上同时执行的
实际开发中,并不会对这俩概念做明确的区分,往往使用 " 并发 " 概括表示 " 并发 " 和 " 并行 " 。–> " 并发编程 "
进程状态的优先级:安排时间表的时候先排谁,后排谁。
进程的状态:安排时间表的时候要考虑到每个人当前特定的情况。
两种比较典型的状态:
- 就绪状态:进程是准备就绪的,随时可以在 CPU 执行
- 阻塞状态:进程在等待某个任务完成(读写磁盘),完成之后才能上 CPU,完成之前就没办法继续执行
进程的记账信息:安排时间表的时候,就要考虑到一些历史记录,操作系统在安排进程的时候,也会记录每个进程以往在 CPU 上执行的时间,如果发现某个进程被安排的太少,就会适当的调整策略。(不一定是以执行指令为单位,也可能是以执行的指令数为单位)
进程的上下文:对于进程来说,上下文,具体指的就是 CPU 里的一堆寄存器里的值,上下文就会在进程被切出 CPU 的时候,把寄存器的状态保存到 PCB里(内存),下次进程回到 CPU 上就把 PCB 里的上下文读取出来,恢复到 CPU 寄存器中。
类似于我们打游戏,存档和读档,存档保存的信息,就是我上次退出游戏之前的状态,就是这个 " 上下文 "。
📒5. 进程的虚拟地址空间
进程,需要使用一些系统资源,其中内存资源,就是一个很关键的资源
每个进程都希望用自己的内存,互相不干扰,但是在 C语言 中有一个操作,叫做指针解引用,解引用的时候需要保证这个指针里面包含的地址,指向的是我们弄的合法地址,但是指针也可能指向错误,把别的进程弄挂了,这种行为就会让整个操作系统都很不稳定(操作系统要给应用程序提供稳定的运行环境)。
为了让各个进程之间不要相互干扰,操作系统就引入了 “虚拟地址空间” 这样的概念,每个进程都只能访问到自己的地址空间,相互之间不会有影响了,哪怕你指针指错,操作系统也能及时发现,不会影响到其他的进程,就算出问题,问题也被限制到进程的内部了。
比如进程3里面,*p = xxx,p 成了野指针指到错误的地址上了,进行操作 p 指向的内存的时候需要进过 MMU 进行映射,MMU 就知道当前访问的是一个有问题的地址,于是就会向操作系统告状,有进程访问内存错了,操作系统就会给对应的进程发一个 " 信号 "(这个信号的默认处理行为就是让程序终止运行),告诉他你的内存访问出错。
因为虚拟地址空间,进程就有了一个重要的特征:隔离性
每个进程都有一个 " 虚拟地址空间 " ,一个系统里面里的进程又有那么多,这些虚拟地址空间加到一起,比物理内存大了可咋办?
实际上:
同一时刻执行的进程没几个
即使同一时刻,有好几个进程在跑,这些进程也不是同时把所有的虚拟地址空间使用上了
。(虽然每个进程的虚拟空间很大,但是实际使用的内存就只有一小部分,物理内存只需要把真实使用的这部分内存数据给表示出来即可)极端情况下,确实同时跑的这几个进程同时吃了很多的真实内存,确实是会导致物理内存不够
(出现这种情况,算 bug,因此程序猿就需要想办法优化一下内存占用,或者扩容换一个内存更大的机器)
📔6. 进程间通信
进程引入了隔离性,确实让系统更稳定了,但是也有别的问题,多个进程之间想要配合工作,就麻烦了,操作系统又引入了 " 进程间通信 ",在隔离性的前提下,开了个口子,让多个进程之间能相互通信
操作系统提供的进程间通信方式有很多种,但是本质上都是一样的!!!搞一个多个进程之间都能访问到的公共资源,借助公共资源来进行通信!!
在后面网络编程中会更加详细提及,网络通信本质上也是一种进程间通信!而且是现在最主要的使用方式。
相关文章:

计算机操作系统和进程
✨个人主页:bit me👇 ✨当前专栏:Java EE初阶👇 ✨每日一语:心平能愈三千疾,心静可通万事理。 目 录🐬一. 操作系统🍦1. 操作系统是什么?🍨2. 操作系统的两个…...

JAVA服务端实现页面截屏(附代码)
JAVA服务端实现页面截屏适配需求方案一、使用JxBrowser使用步骤:方案二、JavaFX WebView使用步骤:方案三、Headless Chrome使用步骤:综上方案对比记录我的一个失败方案参考适配需求 有正确完整的地址url;通过浏览器能打开该url对…...

Java入门要知道!
首先我们都知道的是Java是一门面向对象的编程语言,不仅吸收了C语言的各种优点,还摒弃了C里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向…...

[6/101] 101次软件测试面试之经典面试题剖析
01、自我介绍答:大家好,我是一名软件测试工程师,但我更喜欢称自己为“软件bug捕手”。我相信,软件测试工程师的使命就是让软件更加健壮、更加可靠、更加美好。我们就像是一群“特警”,在黑暗的代码中寻找漏洞和缺陷&am…...

电脑c盘满了变成红色了怎么清理,清理c盘详细攻略
我们的电脑当用了一段时间之后,其实自然而然的就会有一点点卡,其实这是因为我们的电脑c盘满了,所以会造成卡顿是正常的,今天我们就来聊一聊电脑c盘满了变成红色了怎么清理? 一.电脑c盘为啥会满 软件安装:当…...

现在的00后,实在是太卷了
现在的小年轻真的卷得过分了。前段时间我们公司来了个00年的,工作没两年,跳槽到我们公司起薪18K,都快接近我了。后来才知道人家是个卷王,从早干到晚就差搬张床到工位睡觉了。 最近和他聊了一次天,原来这位小老弟家里条…...

RocketMQ概述
RocketMQ入门学习MQ概述MQ简介MO用途限流削峰异步解耦数据收集常见的MQ产品ActiveMQRabbitMQKafkaRocketMQ对比MQ常见协议JMSSTOMPAMOPMQTTMQ概述 MQ简介 MQ,Message Queue,是一种提供消息队列服务的中间件,也称为消息中间件,是…...

解决Ubuntu22.04.1上安装ch34x串口驱动报 Key was rejected by service 需要签名的问题
解决Ubuntu22.04.1上安装ch34x串口驱动报 Key was rejected by service 需要签名的问题问题官网下载解压驱动包编译安装给驱动签名再来载入模块(设备驱动程序)问题 Ubuntu22.04.1 Linux版本5.19.0-32-generic 运行Qt串口通信 m_serialPort->open(QIO…...

[python入门㊿] - python如何打断点
目录 ❤ 什么是bug(缺陷) ❤ python代码的调试方式 ❤ 使用 pdb 进行调试 测试代码示例 利用 pdb 调试 退出 debug debug 过程中打印变量 停止 debug 继续执行程序 debug 过程中显示代码 使用函数的例子 对函数进行 debug 在调试的时候动态改变值 ❤ 使用 PyC…...

CCNP350-401学习笔记(501-550题)
501、Refer to the exhibit. What is the effect of the configuration? A. The device will allow users at 192.168.0.202 to connect to vty lines 0 through 4 using the password ciscotestkey B. The device will allow only users at 192 168.0.202 to connect to vty …...

音箱上8键触摸芯片绿芯GTC08L完美替换启攀微
由工采网代理提供的韩国GreenChip电容式触摸芯片-GTC08L是GreenTouch5CTM电容式触摸传感器系列之一;可以在发动机运行下进行8通道电容传感;对电磁兼容、电磁干扰、温湿度变化、电压干扰、温度漂移、湿度漂移等都有较强的抗干扰能力。不会对CS, RS,EFT&am…...

php+vue加油站会员服务系统 java微信小程序
目 录 1绪论 1 1.1项目研究的背景 1 1.2开发意义 1 1.3项目研究现状及内容 5 1.4论文结构 5 2开发技术介绍 7 2.5微信小程序技术 8 3系统分析 9 3.1可行性分析 9 3.1.1技术可行性 9 3.1.2经济可行性 9 3.1.3操作可行性 10 3.2网站性能需求分析 10 3.3网站功能分析 10 3.4系统…...

ES6--class类(详解/看完必会)
目录 1、基本概念 2、基本用法 3、class与构造函数的区别 4、constructor的使用 5、自定义方法 6、extends和super (1)问题一:我们想要在点击按钮二的时候改变字体大小,如何写呢? (2)问…...

ChatGPT的出现网络安全专家是否会被替代?
ChatGPT的横空出世,在业界掀起了惊涛骇浪。很多人开始担心,自己的工作岗位是否会在不久的将来被ChatGPT等人工智能技术所取代。网络安全与先进技术发展密切相关,基于人工智能的安全工具已经得到很多的应用机会,那么未来是否更加可…...

游戏服务器框架设计 总纲
服务器框架篇: 1.配置文件系统 libxml 2.日志系统 log4xx 3.数据库保存以及接口设计 4.Proto协议定义 5.Redis接口设计 6.网络层设计 epoll/iocp 7.服务器内部协议路由层设计 8.分布式节点管理设计 9.服务器负载伸缩管理设计 10.服务器进程热更流程设计 11.GM系…...

PB里post提交
PB 通过 PostRul 一、 创建Standard Class对象 type为"internetresult" n_ir 二、 界面中,增加按钮。点击测试post提交。 Blob lblb_args String ls_header String ls_url String ls_args Long ll_length Integer li_rc inet iinet_base,iinet n_ir ir iinet_ba…...

Linux 配置网卡(基础配置、网卡会话配置、网卡绑定配置)
目录 配置网卡基本信息 通过nmcli命令配置网卡 通过配置网卡文件配置网卡 通过nmtui命令配置网卡 通过nm-connection-editor命令配置网卡 网卡高级配置 配置网络会话 配置网卡绑定(Bonding) 通过nmcli命令配置网卡绑定 nm-connection-editor 进…...

深度学习Week16-yolo.py文件解读(YOLOv5)
目录 简介 需要的基础包和配置 二、主要组件介绍 2.1 parse_model 2.2Detect类 2.3DetectionModel类 三、实验 🍨 本文为[🔗365天深度学习训练营]内部限免文章(版权归 *K同学啊* 所有) 🍖 作者:[K同学啊…...

富文本编辑组件封装,tinymce、tinymce-vue
依赖:package.json yarn add tinymce tinymce/tinymce-vue {"dependencies": {"tinymce/tinymce-vue": "5.0.0","tinymce": "6.3.1","vue": "3.2.45",}, } 本地依赖: 在publ…...

电子作业指导书系统能树立良好的生产形象
“制造”就是以规定的成本、规定的工时、生产出品质均匀、符合规格的产品。从全球新能源汽车的发展来看,其动力电源主要包括锂离子电池、镍氢电池、铅酸电池、超级电容器,其中超级电容器大多以辅助动力源的形式出现。那么,电子作业指导书系统…...

Doris单机部署
文章目录1. 前言2. 安装3. 启动4. 使用1. 前言 Apache Doris 是一款现代 MPP (Massively Parallel Processing大规模并行处理) 的分布式 SQL 分析数据库,所谓分析数据库就是将其数据集分布在许多机器或节点上,以处理大量数据,采用 Apache 2.0…...

利用身份证号获取生日信息
1 问题如何利用Java程序从身份证号中获取生日信息。2 方法采用“截图文字代码”的方式描述。//调用函数获取当前日期以及截取身份证号码中的数字import java.util.Calendar;import java.util.Scanner;public class nain { static Scanner sc new Scanner(System.in); st…...

c++模板的简单认识
文章目录 前言一.泛型编程 函数模板 模板参数的匹配原则 类模板总结前言 ADD函数很好写,但是如果我们要有int类型的,double类型的,char类型的等等各种类型,难道要写这么多不同的ADD函数吗,这么写简直太麻…...

真香!Linux 原来是这么管理内存的
Linux 内存管理模型非常直接明了,因为 Linux 的这种机制使其具有可移植性并且能够在内存管理单元相差不大的机器下实现 Linux,下面我们就来认识一下 Linux 内存管理是如何实现的。 一,基本概念 每个 Linux 进程都会有地址空间,这…...

计网之IP协议和以太网
文章目录一. IP协议1. IPv4报头介绍2. 解决IPv4地址不够用的问题3. IP地址管理4. 路由选择二. 以太网三. 浅谈DNS域名解析系统一. IP协议 IP协议是位于OSI模型中第三层(网络层)的协议, 在这层上工作的不止这一个协议, 但IP协议是网络层传输所使用的最主流的一种协议, 有IPv4和…...

华为OD机试 - 关联子串(Python) | 机试题+算法思路+考点+代码解析 【2023】
关联子串 题目 给定两个字符串str1和str2 如果字符串str1中的字符,经过排列组合后的字符串中 只要有一个是str2的子串 则认为str1是str2的关联子串 若不是关联子串则返回-1 示例一: 输入: str1="abc",str2="efghicaibii" 输出: -1 预制条件: 输入的…...

SpringBoot学习笔记(二)
配置文件分类 SpringBoot中4级配置文件 1级:file:config/application.yaml 【最高】 2级:file:application.yml 3级:classpath:config/application.yml 4级:classpath:application.…...

亚马逊云科技SageMaker:实现自动、可视化管理迭代
现如今,AI正在成为跨时代的技术,在数字经济发展中登上舞台,发挥关键作用。在Gartner发布的《2022年新兴技术成熟度曲线》*报告中,AIGC(即AI Generated Content,人工智能自动生成内容)被列为2022…...

汽车 Automotive > CAN Transceivers收发器选择
参考:https://www.nxp.com/products/interfaces/can-transceivers/3-3-v-5-v-io-can-transceivers:33VIO-CAN3.3 V / 5V IO CAN收发器组合TJA1042高速CAN收发器,具有待机模式,适用于所有类型的高速CAN网络,在需要低功耗模式的节点…...

AI将如何影响程序员的未来,以及如何不被AI所替代。
随着人工智能技术的不断发展,越来越多的工作被自动化和智能化所取代,其中程序员这个职业也不例外。然而,我们需要客观地分析AI在未来对程序员的影响,并且给出建议,以便程序员能够保持竞争力,不被AI所取代。…...