初始操作系统之进程

news2024/10/3 10:38:57

在这里插入图片描述

文章目录

  • 一、什么是操作系统
  • 二、进程
    • PCB
    • 内存管理

一、什么是操作系统

操作系统*(英语:Operating System,缩写:OS)*是一组主管并控制计算机操作、运用和运行硬件、软件资源和提供公共服务来组织用户交互的相互关联的系统软件程序。

简单来说:操作系统是一个软件,是用来管理的,操作系统是位于软件硬件用户交互的媒介。

1.对下,管理硬件设备

2.对上提供稳定的运行环境

常见的操作系统:

Windows:windows98, 2000, xp, vista,win7, win10, win11(普通人使用较多的操作系统)

Linux: 适合开发和部署(程序员经常使用的系统)

Mac: 苹果电脑的系统,和Linux有一些相似之处

还有一些手机上的系统;Android ,IOS等
在这里插入图片描述
蓝色圈起的就是操作系统的定位。

硬件设备: 我们实体看得见摸得着的就是硬件设备,更通俗易懂的就是电脑后盖打开看到的都是。

驱动程序: 我们每台电脑的硬件都不一样,系统如何去识别这些硬件设备,硬件厂商在开发硬件的同时会给电脑装上驱动程序,方便操作系统去调用硬件系统。

操作系统内核: 是操作系统最主要最核心的部位,承上启下。

系统调用: 操作系统给应用程序提供的一些API接口。

应用程序:QQ,java,英雄联盟等等都是。

大概的流程就是,应用程序通过一些系统调用指令告诉操作系统内核,内核去调用驱动程序去操作硬件设备。

二、进程

进程:进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。

简单来说进程就是一个正在运行的程序。
在这里插入图片描述
如果没有正在运行,那么就不能称之为进程,只能称为:程序.
在这里插入图片描述
因为没有运行我们操作系统并没有为其分配资源,当我们运行之后,我们就会为其分配一系列资源,所以我们称: 进程是操作系统资源分配的基本单位

PCB

我们操作系统内核要对进程管理(描述 + 组织)

描述: 使用C语言的结构体(PCB 进程控制块) 来描述进程属性,至于为什么不使用java的类或者其他来描述,因为我们的操作系统基本都是用(C/C++)写的。

组织: 通过双链表来将多个PCB串起来,每创建一个进程(创建一个PCB对象插入到链表中),销毁一个进程(把链表中的PCB节点删除掉)

PCB里面有哪些具体的属性呢?

1.pid: 进程的唯一标识表(类似于数据库的主键)
在这里插入图片描述
2.内存指针: 指向了自己分配到内存

3.文件描述符表: 硬盘上的文件等其他资源

硬件资源: 内存,硬盘,网卡等这些资源对进程来说都比较好分配。

CPU资源不太好分配: 我们电脑可能进程有几十上百个,但是我们电脑的CPU(虽然现在电脑都是多核CPU),但是远不够这些进程去分配。
在这里插入图片描述

我们可以通过设备管理器去查看自己的电脑是几核的。

我们肯定是希望进程都是同时运行的,原因很简单"爽",同时运行可以简单的分为(并行和并发)。

并行: 同一时刻,两个核心上的进行是同时执行的(真正的同时运行)。

并发: 同一时刻,一个核心只能够运行一个进程,但是我们能够快速的切换(感官上的同时运行)。

比如在CPU的一个核心上,我们先运行一下CSGO,在运行一下英雄联盟,只要切换速度很快(3.1GHz,每秒25亿条指令),我们感官上觉得是在同时运行。
在这里插入图片描述
4.进程调度的属性:

既然我们有这么多进程,那么就需要有人来管理,操作系统里有个调度器,负责让有限的CPU调度执行这些进程。

  1. 进程状态

    就绪状态: 准备就绪,随时等待CPU调度执行。

    运行状态: 正在CPU上实实在在运行

    阻塞状态: 简单地说就是等待状态,短时间内无法在CPU上执行.

  2. 优先级

    这么多进程,操作系统进行调度的时候,并不是完全平等,而是有一定的优先级的。

  3. 上下文

    操作系统并发执行时,进程与进程切换的时候,如何恢复到之前的状态,就需要我们把进程的“中间状态"保存下来。实际上就是保存CPU各个寄存器中的值到内存中。

  4. 记账信息

    操作系统,统计每个进程在CPU上的占用时间以及指令数目,来决定下一阶段如何调度。

内存管理

我们程序中所获取的内存地址,不是硬件上真真实实的地址,而是进行一些计算之类出来的虚拟地址。
img
这就是一个真实的内存条,我们的内存时有一个内存编号,这个内存编号就是"物理地址",真实的地址,正因如何所以我们内存支持随机访问(通过这个编号)。
在这里插入图片描述
如果我们程序直接访问的是物理地址,如果正常操作还好,但是如果越界访问了,就会对其他进程的数据进行改变,比如我们正在写代码,不一会把网易云写崩了,这是很危险的操作,所以我们程序操作的是虚拟内存。
在这里插入图片描述
所以我们引入了一个虚拟地址的概念,对物理地址进行隐藏和隔离,避免进程之间的相互影响,MMU硬件设备(集成在CPU)是为了虚拟地址和物理地址的转换速度更快.

当我们操作系统内核发现转换后的地址超过了物理地址的访问返回,就会直接向进程返回一个错误,进而引发进程崩溃,这里的崩溃不会影响到其他进程。

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

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

相关文章

Mybatis的BindingException异常产生原因及解决办法详解

一. 问题背景 今天壹哥在讲完MyBatis后,有学生在进行代码练习时遇到了下面这样的一个异常,先上图: 二. 问题分析 1. 原因分析 首先我们看到,这里抛出的异常是org.apache.ibatis.binding.BindingException,接着再看异…

老板说我最近飘了,都敢用 MySQL 实现分布式锁了

​ 编辑切换为居中 添加图片注释,不超过 140 字(可选) 以前参加过一个库存系统,由于其业务复杂性,搞了很多个应用来支撑。这样的话一份库存数据就有可能同时有多个应用来修改库存数据。比如说,有定时任务…

专为医疗领域打造!飞凌嵌入式新一代FDU显控一体机发布

飞凌嵌入式重磅推出一款专为医疗打造的显控一体机——FDU070K02 & FDU101K02。产品采用无外壳设计、支持戴医疗手套触摸,支持双屏同显或异显,兼顾场景灵活性与使用便捷性。 同时飞凌为用户提供开箱即用的硬件和操作系统,极大简化了开发流…

vue+element模仿电商商城,前后端分离实现,下单微信扫码支付

1.前言 接上一篇《vueelementSpringBootOAuth2Spring SecurityRedismybatis-plusmysqlswagger模仿商城,前后端分离实现》。 上篇文章介绍了: 用户注册用户登录首页商品推荐展览商品搜索商品分类按商品分类预览商品商品详情预览加入购物车 上一篇文章有…

【使用 BERT 的问答系统】第 5 章 :BERT模型应用:问答系统

🔎大家好,我是Sonhhxg_柒,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 📝个人主页-Sonhhxg_柒的博客_CSDN博客 📃 🎁欢迎各位→点赞…

arthars在线诊断

官网地址:https://arthas.aliyun.com/doc/quick-start.html#_6- 1.安装启动 curl -O https://arthas.aliyun.com/arthas-boot.jar java -jar arthas-boot.jar2.选择对应进程编号回车3.watch命令 官网命令文档:https://arthas.aliyun.com/doc/arthas-t…

[python][学习]循环与嵌套---打印乘法口诀

打印乘法口诀表 打印乘法口诀表 按照规律可以直接用一个for循环进行实现 加就是显示字符串,没有加就是直接计算或者显示 for i in range(1,10): print(i,*,1,,i*1,end ) print(i,*,2,,i*2,end ) print(i,*,3,,i*3,end ) print(i,*,4,,i*…

STC 51单片机50——中断问题演示

// 功能要求&#xff1a;按下按钮后&#xff0c;Led的状态改变。 #include "reg51.h" sbit LedP1^0; sbit ButtonP3^2; //外中断0对应的引脚 void delay(unsigned char m) { unsigned char i,j,k; for(i0;i<m;i) for(j0;j<250;j) for(k…

JWT生成tonken验证+AOP拦截验证

JSON Web Token&#xff08;JWT&#xff09;是目前都在用的前后分离跨域验证规则。 JWT由3部分组成 Header——头部一般Base64URL编码&#xff0c;作用&#xff1a;声明token类型&#xff0c;声明token使用的加密算法。一般都是使用HMAC-SHA256或者RSA支持很多种算法&#xf…

岩藻多糖-聚乙二醇-刀豆球蛋白A,ConcanavalinA-PEG-Fucoidan,刀豆球蛋白A-PEG-岩藻多糖

岩藻多糖-聚乙二醇-刀豆球蛋白A&#xff0c;ConcanavalinA-PEG-Fucoidan&#xff0c;刀豆球蛋白A-PEG-岩藻多糖 中文名称&#xff1a;岩藻多糖-刀豆球蛋白A 英文名称&#xff1a;Fucoidan-ConcanavalinA 别称&#xff1a;刀豆球蛋白A修饰岩藻多糖&#xff0c;ConA-岩藻多糖 …

分享从零开始学习网络设备配置--任务2.6 避免网络环路

任务描述 某公司最近由于业务迅速发展和对网络可靠性的要求&#xff0c;使用了两台高性能交换机作为核心交换机&#xff0c;接入层交换机与核心层交换机互联&#xff0c;形成冗余结构&#xff0c;来满足网络的可靠性&#xff0c;达到最佳的工作效率。 生成树技术&#xff08;S…

在一次又一次的失败中, 我总结了这份万字的《MySQL 性能调优笔记》

MySQL 性能调优学习导图》概要 说明&#xff1a;本文篇幅有限&#xff0c;故只展示部分内容&#xff0c;《MySQL 性能调优学习导图》资料已整理成文档&#xff0c;需要获取的小伙伴可以直接转发关注后私信&#xff08;学习&#xff09;即可获取哦 一、性能监控 1. 使用 show p…

2022/12/1 结构体

结构体 声明结构体&#xff1a; struct 结构体名 例如&#xff1a;struct student 其中&#xff0c;student又称为结构体标记 结构体可以拥有成员&#xff0c;例如&#xff1a; struct student { int num; int score; char name[20] }; 注意&#xff0c;分号不可以少…

万应低代码11月重点更新内容速递

速览版 详情版 低代码开发效率升级 1.页面变量支持快速构建 在「数据提交」、「调用逻辑」等存在数据返回的节点中&#xff0c;支持根据其输出的内容去自动创建数据类型相同的变量&#xff0c;并自动建立好映射关系。 ● 【功能上线前】&#xff1a; 需要为每一个输出字…

Elasticsearch_第一章_ elasticsearch基础

Elasticsearch_第一章_ elasticsearch基础 – elasticsearch基础 文章目录Elasticsearch_第一章_ elasticsearch基础0.学习目标1.初识elasticsearch1.1.了解ES1.1.1.elasticsearch的作用1.1.2.ELK技术栈1.1.3.elasticsearch和lucene1.1.4.为什么不是其他搜索技术&#xff1f;1…

企业该如何选择自己合适的云财务软件?

据相关数据统计&#xff0c;2021年&#xff0c;我国云服务市场规模达274亿美元&#xff08;超1700亿元人民币&#xff09;&#xff0c;预计到2026年将增长至850亿美元&#xff08;约5400亿元人民币&#xff09;。可见&#xff0c;云服务市场的发展之迅。对于企业而言&#xff0…

python入门项目03:完成黑心资本家发工资的程序

本题来源于黑马程序员b站视频&#xff0c;如有侵权&#xff0c;请联系删除。 import random #总金额10000 all_money10000 n0#记录发放工资的人 #发工资 for i in range(1,21):#20个员工jixiaorandom.randint(1,10)#生成一个1&#xff0c;10的随机数if jixiao<5:print(f员工…

12.1排序

目录 0.修改栈堆内存 一.堆排序 1 原理 2.代码实现 3.分析 二.冒泡排序 1 原理 2.实现 3.分析 三.快速排序(重要) 1 原理-总览 2.方法:挖坑法 步骤一 步骤二 步骤三 步骤四 步骤五 步骤六 3.代码实现挖坑法 4.分析 四.字符串转整数 1.字符串方法 2.字符…

【C++重点语法下】可变参数模板,STL里面的push_back和emplace_back区别 ,包装器function,bind

目录 1.可变参数模板 1.1取出参数包内的参数方法一&#xff1a; 1.2取出参数包内的参数方法二&#xff1a; 1.3STL里面的push_back和emplace_back区别 2.包装器function 2.1function&#xff08;头文件functional&#xff09; 2.1.1可调用类型和包装器 2.1.2类的成员函数…

实验十 符号计算基础与符号微积分(matlab)

目录 实验十 符号计算基础与符号微积分 1.1实验目的 1.3流程图 1.4程序清单 1.5运行结果及分析 1.6实验的收获与体会 1.1实验目的 1.2实验内容 符号计算基础与符号微积分 课本第372页 1.3流程图 1.4程序清单 实验十 1 clear xsym(6); ysym(5); z(1x)/(sqrt(…