操作系统的一些知识

一、操作系统

1、操作系统的定义

操作系统是一个搞管理的软件

对下,要管理硬件设备;对上,要给软件提供稳定的运行环境。

操作系统是软件、硬件、用户之间交互的媒介。

2、常见的操作系统

Windows、Linux、Mac

3、操作系统的定位

我们平时所说的操作系统,指的是系统调用,操作系统内核,驱动程序这三个部分。 

应用程序java运行在JVM上,属于应用程序
系统调用

操作系统给应用程序提供的API

比如,有个程序想操作一下硬件设备,就需要先通过系统调用,

把操作命令告诉给系统内核,内核调用驱动程序,进一步操作硬件设备

比如,你写了一个System.out.println("hello world"),想要在显示器上打印hello world

也是这个流程,print这个方法在底层一定调用了系统调用,系统调用通知操作系统内核,

内核通过驱动程序找到显卡,最终把数据渲染到界面上。

操作系统内核

操作系统的核心功能,管理功能。

对下,要管理硬件设备;对上,要给软件提供稳定的运行环境。

驱动程序

因为硬件设备种类繁多,厂商各异,

硬件厂商开发硬件时会提供对应的驱动。

电脑装了对应的驱动,才能让系统正确识别硬件设备。

硬件设备也就是硬件,电脑后盖打开,能看到的都是硬件设备

4、并行和并发 

并行:微观上同一时刻,两个CPU核心上的进程,就是同时执行的。

并发:微观上同一时刻,一个核心上只能运行一个进程,但是它能够对进程进行快速的切换。(比如先运行一下QQ,再运行一下画图板,再运行一下CCtalk,非常快速的切换。)宏观上看起来就像是几个进程在同时运行。

究竟是并行和并发,是由操作系统内核负责处理的,我们宏观上感知不到。

因此,往往把并行和并发,统称为并发!!除非显示声明,谈到并发,就是指并行和并发。

二、进程

1、进程的定义

进程(process),也叫任务(task),一个“跑起来”的程序就是一个进程。也就是说,一个正在运行的程序是一个进程,不在运行中的不叫进程,只能说是程序。

如何看电脑上运行了多少进程?

打开任务管理器,就可以看到你电脑上正在运行的所有进程。

每个进程都对应一些资源,进程是操作系统资源分配的基本单位。 

2、操作系统内核是如何管理进程的?

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

操作系统内核是如何管理进程的呢?

通过描述+组织的方式。

描述:就是讲清楚进程有哪些属性特征。

使用结构体(C语言的结构体)来描述进程属性,给这个结构体起了个特殊的名字,叫做PCB,即进程控制块。

那么可以说,操作系统内核通过PCB来描述进程的属性。

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

通过双向链表,把多个PCB给串起来。

也就是说,我们在任务管理器上看到的进程列表,本质上就是遍历这个PCB链表。

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

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

3、PCB这个结构体中哪些属性 用来描述进程属性特征?

PCB里包含的用来描述进程特征的属性是非常多的,下述这些都是核心的属性:

  1. pid
  2. 内存指针
  3. 文件描述符表
  4. 进程调度相关的属性:(1)进程的状态(2)优先级(3)上下文(4)记账信息

 下面分别进行详细介绍:

PCB中的核心属性说明
pid进程的身份标识符,是唯一的数字
内存指针指向了分配给自己的内存是哪些,描述了进程持有哪些内存资源
文件描述符表硬盘上的文件等其他资源,描述了进程持有哪些文件等其他资源

进程调度相关的属性

进程的状态

  1. 就绪状态:随叫随到,进程随时准备好去CPU上执行
  2. 运行状态:正在CPU上执行
  3. 阻塞状态:短时间内无法到CPU上执行,比如进程在进行密集的IO操作,读写数据。
优先级

先调度哪个进程,后调度哪个进程,

操作系统进行进程调度也是有优先级的,

不是一碗水端平的。

上下文

操作系统在进行进程切换的时候,需要把进程执行的“中间状态”记录下来,保存好。

下次这个进程再上CPU上运行的时候,就能恢复上次的状态好继续往下执行。

也就是“存档,读档”。

进程的上下文,就是CPU中各个寄存器的值(CPU中的寄存器:CPU内置的存储数据模块,保存的是程序运行过程中的中间结果)

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

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

记账信息操作系统统计每个进程在CPU上占用的时间和执行的指令数目,根据这个来决定下一阶段如何调度。

进程调度:

操作系统决定让哪个进程上CPU运行,进程分配CPU资源

进程调度相关的属性:

本质上是为了解决“狼多肉少”的问题,通过并发,让大量的进程可以在少数的CPU上同时运行

操作系统里有一个重要的模块调度器,就是负责让有限的CPU来调度执行这么多进程的,而实现这个模块调度器,就需要PCB提供进程调度相关的属性来完成进程调度。

4、进程的虚拟地址空间

程序中获取到的内存地址,并非是真实的物理内存的地址,而是经过了一层抽象的虚拟地址。

那么,什么是物理地址,为什么不使用物理地址而是使用虚拟地址呢?

物理地址:

内存,物理上就是个内存条,内存条上的内存编号就是“地址”,也就是真是的“物理地址”。

内存有个重要的特点:支持机访问。正是因为这个特点,所以数组取下标操作是O(1)

使用真实的物理地址时,当你写的程序出现了内存越界,反而把人家的Chrome或者其他程序给搞坏了,明明是进程1出的问题,反而把进程二给搞坏了。这就很难受了。

所以为了避免进程之间相互产生影响,在代码中不在使用“物理地址”,而是使用“虚拟地址”。

由操作系统和专门的硬件设备MMU(MMU很多时候也是集成在CPU里的)负责进行虚拟地址到物理地址的转换。

一旦进程访问越界了,这个越界的地址MMU硬件设备就翻译不了了,操作系统内核发现地址超过进程的访问范围,直接会向进程反馈一个错误,引起进程的崩溃。谁出了bug,谁崩溃,其他进程不受影响。

使用虚拟地址解决了进程之间相互影响的问题。

5、进程间的通信

搞一个多个进程都能访问到的“公共空间”,基于这个公共空间来进行交互数据。

通信方式/公共空间有很多具体的体现形式,比如说:基于文件、基于网络。

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

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

相关文章

视频剪辑教程:如何批量制作滚动字幕,提升画面质感的方法

在视频剪辑中,字幕的处理是至关重要的一环。合适的字幕不仅能提供必要的信息,还能增强画面的视觉效果。下面详解云炫AI智剪如何批量制作滚动字幕,提升画面质感的方法,助您更好地完成视频剪辑工作。 批量制作滚动字幕的方法&#x…

Mysql详细安装步骤

Linux 安装 MySQL【超详细版】 ​编辑 我叫BuGu    2023-05-11 16:48:10 发布 一、安装 MySQL 的准备工作 1. 查看系统版本 cat /etc/redhat-release2. 查看系统是否已经安装过 MySQL 查看是否安装了 MySQL rpm -qa | grep mysql查看是否有安装 mariadb,该软件与 MySQ…

逆向分析C++类的本质

面向对象的语言中,类这种语言特性是最基本也是最重要的东西。这篇博客记录下从汇编角度去理解类的本质是什么。创建一个对象的本质又是什么。 一.C语言中的结构体和C的类有啥区别 我们知道在C语言中,有语言本身自带的一些内置类型。比如int&#xff0c…

kafka(一)——简介

简介 Kafka 是一种分布式、支持分区、多副本的消息中间件,支持发布-订阅模式,多用于实时处理大量数据缓存的场景,类似于一个“缓存池”。 架构 Producer:消息生产者;Consumer:消息消费者;Brok…

SpringCloud之Nacos的学习、快速上手

1、什么是Nacos Nacos是阿里的一个开源产品,是针对微服务架构中的服务发现、配置管理、服务治理的综合型解决方案,用来实现配置中心和服务注册中心。 Nacos 快速开始 2、安装运行nacos nacos下载地址 下载地址: https://github.com/alibaba/nacos/rel…

【Linux】Linux系统的生态

Linux中安装软件 Linux中安装软件一般有三种方式: 源代码安装rpm包安装yum安装 1.源代码安装 有些软件本来就是开源的,如果不想用别人直接发布好的软件,我们就可以把源代码下载下来,在我们的环境中编译,自己安装 …

防伪技术行业研究:年复合增长率约为10%

近年来,我国各种新的防伪技术不断涌现,部分防伪技术已经达到国际先进水平,并广泛应用于产品防伪、票证防伪等领域,推动了防伪行业的持续、健康发展。 常见的产品防伪技术有:隐形分子技术、二维码防伪、揭开留底防伪、安…

「Kafka」Broker篇

「Kafka」Broker篇 主要讲解的是在 Kafka 中是怎么存储数据的,以及 Kafka 和 Zookeeper 之间如何进行数据沟通的。 Kafka Broker 总体工作流程 Zookeeper 存储的 Kafka 信息 启动 Zookeeper 客户端: [atguiguhadoop102 zookeeper-3.5.7]$ bin/zkCli.sh通…

使用 Docker 部署 的WAF: 雷池社区版

Web应用防火墙(WAF)是保护网站不受恶意攻击的关键组件。 使用 Docker 部署雷池社区版,可以大大简化安全管理工作。 一、WAF 雷池社区版简介 雷池社区版是一种流行的开源 Web 应用防火墙,它提供基本的安全保护,如防止…

多维表格产品vika多维表、Flowus、Wolai体验记录

昨天从下午6点肝到凌晨2点多体验低代码平台多维表格产品,体验了3个国内产品,vika多维表、Flowus、Wolai。 具有多维表格新型关系数据库的鼻祖是 Airtable,国内模仿产品有vika多维表、飞书多维表格等。 还有一种类型就是以在国内鼎鼎大名的N…

细讲Labview条件结构用法及易错点

本文讲解Labview条件结构的常用情景及易错点注意事项。帮助大家深刻理解并使用该结构,欢迎点赞关注加评论,有问题可以私聊或在下方评论区留言。 本文程序均附在文章结尾,可自行下载学习。 博主之前讲过Labview事件结构、For循环等的基础知识介…

第十四章 MyBatis

第十四章 MyBatis 1.入门-课程介绍2.入门-快速入门程序3.配置SQL提示4.入门-JDBC5.入门-数据库连接池6.入门-lombok工具包介绍7.基础操作-环境准备8.基础操作-删除9.基础操作-删除(预编译SQL)10.基础操作-新增11.基础操作-新增(主键返回&…

Python初识——小小爬虫

一、找到网页端url 打开浏览器,打开百度官方网页点击图片,打开百度图片 鼠标齿轮向下滑,点击宠物图片 进入宠物图片网页,在网页空白处点击鼠标右键,弹出的框中最下方显示“检查”选项,点击(我是…

安全帽识别-赋能深圳自贸中心智慧工地

在当今的建筑行业中,安全管理一直是一个至关重要的议题。深圳自贸中心项目在这方面进行了一次有益的尝试——实施智慧工地安全帽识别系统。本文将对这一创新举措进行简要介绍。 项目背景 深圳自贸中心,作为一项标志性建设项目,承载着城市发展…

怎么用小程序将身份证转为结构化Excel?

随着科技的不断发展,我们的生活变得越来越智能化。现在,我们可以使用金鸣表格文字识别小程序来识别身份证并转为结构化的excel,并且可自动核对真伪,保留头像。金鸣表格文字识别小程序是一种基于人工智能技术的应用程序&#xff0c…

将字符串中的制表符替换为指定数量的空格expandtabs()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 将字符串中的制表符 替换为指定数量的空格 expandtabs() [太阳]选择题 请问以下代码text3的空白处是? text1 "这里有一个\t制表符" text2 "这里有一个12345制表符…

第二次作业+第三次作业

第二次作业第三次作业 第二次作业 题目: 网站需求: ​ 1.基于域名[www.openlab.com](http://www.openlab.com)可以访问网站内容为 welcome to openlab!!! 2.给该公司创建三个子界面分别显示学生信息,教学资料和缴费网站,基于[ww…

利用HTML+CSS+JS打造炫酷时钟网页的完整指南

引言 在现代Web开发中,制作一个引人注目的时钟网页是一种常见而令人愉悦的体验。本文将介绍如何使用HTML、CSS和JavaScript来创建一个炫酷的时钟网页,通过这个项目,你将学到如何结合这三种前端技术,制作一个动态且美观的时钟效果…

深入探索 Android 中的 Runtime

深入探索 Android 中的 Runtime 一、什么是 Runtime二、Android 中的 Runtime 类型2.1. Dalvik Runtime2.2. ART(Android Runtime) 三、Runtime 的作用和特点3.1. 应用程序执行环境3.2. 跨平台支持3.3. 性能优化3.4. 应用程序优化 四、与应用开发相关的重…

Unity3D Pico VR 手势识别物体交互 适配 MRTK3

当前Pico已经支持手势识别了,但是提供的PICO Unity Integration SDK 中是没有手势和物体交互的功能,Unity XR Interaction Toolkit提供的手势识别物体交互对 Quest适配的挺好的,Pico 当前只能用指尖点触还不能对物体进行抓握以及手势控制射线…