计算机的一些基础知识

文章目录

编程语言

程序

所谓程序,就是 一组指令 以及 这组指令要处理的数据。狭义上来说,程序对我们来说,通常表现为一组文件。

程序 = 指令 + 指令要处理的数据。

在这里插入图片描述

编程语言发展

  1. 机器语言:0、1 二进制构成
  2. 汇编语言:用一些容易理解和记忆的字母 + 单词 代替机器指令
  3. 高级语言:C、C++、Java、Python 等

对比:

  • 汇编语言:代码 --> 指令 -->CPU
  • C :代码 --> 编译 --> 指令 -->CPU
  • Java:代码 --> --> JVM --> 编译 --> 指令 -->CPU

Java 运行在 JVM 上

JVM 针对不同的操作系统做了不同的实现,对 JAVA 程序员提供了统一的调用方式

操作系统(Operating System)

操作系统是一组管理计算机资源的软件的统称。每台电脑或手机等设备都会装一个操作系统。

目前常见的操作系统有:Windows系列、Unix系列、Linux系列、OSX系列、Android系列、iOS系列、鸿蒙等。

操作系统的定位

在这里插入图片描述

操作系统的作用

  1. 对下(硬件):管理各种计算机设备,比如鼠标、键盘、显示器等可以看到的与计算机连接的任何设备
  2. 对上(软件):为应用程序提供一个稳定的运行环境
  3. 对于有图形化界面的操作系统:提供良好的人机交互界面
  4. 文件管理

操作系统是如何管理运行中的程序?

程序安装后,在系统中是静态文件。

双击之后,从磁盘加载到内存,系统会创建一个与程序的进程,这时程序就运行起来了。

每一个运行的程序在操作系统中都对应着一个进程。

进程分为:用户执行的进程、前台进程、系统创建的进程、后台进程

进程

什么是进程/任务(Process/Task)

每个应用程序运行于现代操作系统之上时,操作系统会提供一种抽象,好像系统上只有这个程序在运行,所有的硬件资源都被这个程序在使用。这种假象是通过抽象了一个进程的概念来完成的,进程可以说是计算机科学中最重要和最成功的概念之一。

进程是操作系统对一个正在运行的程序的一种抽象,换言之,可以把进程看做程序的一次运行过程

在操作系统内部,进程是操作系统进行资源分配的基本单位


先描述,再组织进程

描述进程

进程控制块(PCB Process Control Block)

计算机内部要管理任何现实事物,都需要将其抽象成一组有关联的、互为一体的数据。在 Java 语言中,我们可以通过类/对象来描述这一特征。

每一个 PCB 对象,就代表着一个实实在在运行着的程序,也就是进程

操作系统再通过数据结构,例如线性表、搜索树等将 PCB 对象组织起来,方便管理时进行增删查改的操作。

PCB 描述的 7 个属性:
  1. 进程控制符( PID Process Identifier)

也称为进程标识符,是各进程的身份标识

程序一运行,系统就会自动分配给进程一个独一无二的PID。

进程中止后PID被系统回收,可能会被继续分配给新运行的程序。

  1. 内存指针

当程序运行时,操作系统先从磁盘加载程序文件到内存中,在程序运行之前,要在内存中分配一片有效的空间。在内存中的数据和指令,最终被 CPU 读取和执行。

  1. 文件描述符表

当程序运行之后,需要访问一些文件资源,这时操作系统就负责给程序分配这些资源。

程序所需要的每个文件,称为文件描述符;多个文件描述符 合在一起,就组成了文件描述符表,类似于一个集合。

在 Linux 中的所有计算机设备(网卡、硬盘、磁盘、外接设备),都用文件的方式去描述。

默认每个程序运行时,都会被分配 3 个文件描述符:

- 标准输入:System.in
- 标准输出:System.out
- 标准错误:System.error

在这里插入图片描述
电脑上有百十个进程,但是只有 16 个逻辑处理器,即只可以同时处理 16 条指令

一个逻辑处理器,并不是一次就把一个进程执行完,而是一个进程执行一会儿就休息一会儿,再去执行另一个进程,不停的轮换执行。

由于 CPU 的频率很高,轮换的速度也很快,人察觉不到。

【并发编程】
  1. 并发:在单个处理器上不停地轮换执行指令

在这里插入图片描述

  1. “并行”:在多个处理器上,可以同时执行不同的指令

在这里插入图片描述
并行可以说是真正意义上的同时执行。


  1. 进程状态
  • 运行状态:当前在 CPU 上正在执行指令
  • 就绪状态:排队中,随叫随到,随时可以在 CPU 上运行
  • 在 CPU 中,一般不区分运行状态和就绪状态,一般统称为就绪状态。
  • 阻塞状态:当前进程不适合在 CPU 上执行。

  1. 进程优先级

哪个进程有更的大机会去 CPU 上运行,它的优先级就越高。

  1. 进程的上下文

进程调度的过程中,进程一会儿失去了 CPU,一会儿又回到 CPU 上继续执行;当回到 CPU 之时,要沿着上次的状态继续执行,而不是从头开始

  • 失去 CPU 时,进程的中间值:从寄存器保存到内存中(存档)
  • 回到 CPU 时,进程的中间值:从内存中读回到寄存器中(读档)
  • 进程的中间值存储:当前执行的指令、下一条指令、中间产生的一些变量
  1. 进程的记账信息

统计功能:统计每个进程在 CPU 上运行了多久,哪些进程很长时间没有在 CPU 上运行了。

进程的组织方式

通过一个双向链表组织 PCB

  1. 创建一个进程,就是把 PCB 加入到链表中
  2. 销毁一个进程,就是把 PCB 从链表中删除
  3. 查看所有的进程,就是遍历双向链表

内存分配⸺内存管理(Memory Manage)

程序运行时会分配内存空间。

在这里插入图片描述

操作系统为了防止野指针,使用了虚拟内存来规避上述现象。

通过使用内存管理单元(Memory Management Unit,MMU)的方式来实现:
在这里插入图片描述

进程间通信(Inter Process Communication,IPC)

进程是操作系统进行资源分配的最小单位,这意味着各个进程互相之间是无法感受到对方存在的,这就是操作系统抽象出进程这一概念的初衷,这样便带来了进程之间互相具备**“隔离性(Isolation)”**。

但现代的应用,要完成一个复杂的业务需求,往往无法通过一个进程独立完成,总是需要进程和进程进行配合地达到应用的目的,如此,进程之间就需要有进行“信息交换”的需求。

进程间通信的需求就应运而生。

在这里插入图片描述

目前,主流操作系统提供的进程通信机制有如下:

  1. 管道
  2. 共享内存
  3. 文件
  4. 网络
  5. 信号量
  6. 信号

其中,网络是一种相对特殊的 IPC 机制,它除了支持同主机两个进程间通信,还支持同一网络内部非同一主机上的进程间进行通信。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

简记Vue3(三)—— ref、props、生命周期、hooks

个人简介 👀个人主页: 前端杂货铺 🙋‍♂️学习方向: 主攻前端方向,正逐渐往全干发展 📃个人状态: 研发工程师,现效力于中国工业软件事业 🚀人生格言: 积跬步…

WPF+MVVM案例实战(十二)- 3D数字翻牌计时实现

文章目录 1、运行效果2、功能实现1、文件创建2、控件代码实现3、控件引用与菜单实现1.引用用户控件2.按钮菜单3、计时器界面实现4、源代码获取1、运行效果 3D数字翻牌计时 2、功能实现 1、文件创建 打开项目 Wpf_Examples ,在用户控件 UserControlLib 中创建 NumberFoldi…

3.1 快速启动Flink集群

文章目录 1. 环境配置2. 本地启动3. 集群启动4. 向集群提交作业4.1 提交作业概述4.2 添加打包插件4.3 将项目打包4.4 在Web UI上提交作业4.5 命令行提交作业 在本实战中,我们将快速启动Apache Flink 1.13.0集群,并在Hadoop集群环境中提交作业。首先&…

逻辑编程填词游戏

逻辑编程 接前面着色应用回溯倒水递归汉诺塔代码从hello world开始 填词游戏题目答案验证 后话 接前面 着色应用 让人眼前一亮。能不能解决其他冲突问题呢? 回溯倒水 也有冲突检测,一步一步试探。倒水逻辑跟着色很像。怎么写成逻辑编程代码呢&#x…

AprilTag在相机标定中的应用简介

1. AprilTag简介 相机标定用的标靶类型多样,常见的形式有棋盘格标靶和圆形标靶。今天要介绍的AprilTag比较特别,它是一种编码形式的标靶。其官网为AprilTag,它是一套视觉基准系统,包含标靶编解码方法(Tag生成)和检测算法(Tag检测),可用于AR、机器人、相机标定等领域。…

Java项目实战II基于Spring Boot的秒杀系统设计与实现(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。 一、前言 在互联网电商蓬勃发展的今天&#xff0…

AI产品经理全攻略:策略制定、开发过程与商业化路径【AI产品经理必读书籍】

通过《AI产品经理手册》,将可以了解不同类型的AI,如何将AI整合到产品或业务中,以及支持创建AI产品或将AI集成到现有产品所需的基础设施。熟悉实践管理AI产品开发流程、评估和优化AI模型,以及应对与AI产品相关的复杂伦理和法律问题…

Efficient Cascaded Multiscale Adaptive Network for Image Restoration 论文阅读笔记

Efficient Cascaded Multiscale Adaptive Network for Image Restoration 论文阅读笔记 这是新国立和新加坡管理大学发表在ECCV2024上的一篇image restoration的文章,提出了一个新的网络结构ECMA,从实验结果上看在超分,去噪,去模糊…

Web服务器(理论)

目录 Web服务器www简介常见Web服务程序介绍:服务器主机主要数据浏览器 网址及HTTP简介URLhttp请求方法:2.3 HTTP协议请求的工作流程: www服务器的类型静态网站动态网站 快速安装Apache安装准备工作httpd所需目录主配置文件 nignx安装1、安装2、准备工作 …

钉钉平台开发小程序

一、下载小程序开发者工具 官网地址:小程序开发工具 - 钉钉开放平台 客户端类型 下载链接 MacOS x64 https://ur.alipay.com/volans-demo_MiniProgramStudio-x64.dmg MacOS arm64 https://ur.alipay.com/volans-demo_MiniProgramStudio-arm64.dmg Windows ht…

青春的海洋:海滨学院班级回忆录项目

3系统分析 3.1可行性分析 通过对本海滨学院班级回忆录实行的目的初步调查和分析,提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本海滨学院班级回忆录采用SSM框架,JAVA作为开…

【Linux】IPC 进程间通信(一):管道(匿名管道命名管道)

✨ 无人扶我青云志,我自踏雪至山巅 🌏 📃个人主页:island1314 🔥个人专栏:Linux—登神长阶 ⛺️ 欢迎关注:👍点赞 &#…

SpringBoot源码(四):run() 方法解析(一)

run()方法: public ConfigurableApplicationContext run(String... args) {// 记录应用启动时间long startTime System.nanoTime();DefaultBootstrapContext bootstrapContext createBootstrapContext();// 创建 ConfigurableApplicationContext 对象Configurabl…

FCP-报表开发工程师 考试内容

报表开发工程师考试内容 文章目录 报表开发工程师考试内容1. 报考说明2. 考试内容2.1 FineReport 产品能力 80%2.2 前端语言 10%2.3 SQL 编程语言 5%2.4 运维能力 5 % 3. 考试知识结构3.1 复杂报表开发 20% ~ 30%3.2 数据填报功能 10%3.3 决策报表 0%~10%3.4 层次坐标专题 0%~5…

Spring中的资源以及分类

Spring中的资源都被封装成 Resource 对象 以上是我测试代码的项目编译后的目录结构,target 所在的目录是 D:\\IdeaProjects\\study-spring\\ public void printStream(InputStream inputStream) throws IOException {Reader reader new InputStreamReader(input…

xtu oj 连接字符串

文章目录 回顾思路代码 回顾 AB III问题 H: 三角数问题 G: 3个数等式 数组下标查询,降低时间复杂度1405 问题 E: 世界杯xtu 数码串xtu oj 神经网络xtu oj 1167 逆序数(大数据)xtu oj 原根xtu oj 不定方程的正整数解xtu oj 最多的可变换字符串…

[Prometheus学习笔记]从架构到案例,一站式教程

文章目录 Prometheus 优势Prometheus 的组件、架构Prometheus Server 直接从监控目标中或者间接通过推送网关来拉取监控指标,它在本地存储所有抓取到的样本数据,并对此数据执行一系列规则,以汇总和记录现有数据的新时间序列或生成告警。可以通…

鸿蒙打包hvigorw clean报错No npmrc file is matched in the current user folder解决

问题 在执行hvigorw clean等命令时,报错如下: Error: The hvigor depends on the npmrc file. No npmrc file is matched in the current user folder. Configure the npmrc file first解决方案 在用户当前目录下新建.npmrc文件,并配置如下…

读数据工程之道:设计和构建健壮的数据系统27转换

1. 转换 1.1. 转换与查询不同 1.1.1. 查询是根据过滤和连接逻辑从各种来源检索数据 1.1.2. 转换将结果持久化,供其他转换或查询使用 1.1.2.1. 结果可以被短暂地或永久地保存 1.1.3. 除了持久性,转换区别于查询的另一个特点是复杂性 1.1.3.1. 你可能会建…

市场分化!汽车零部件「变天」

全球汽车市场的动荡不安,还在持续。 本周,全球TOP20汽车零部件公司—安波福(Aptiv)发布2024年第三季度财报显示,三季度公司经调整后确认收入同比下降6%;按照区域市场来看,也几乎是清一色的下滑景…