计算机的一些基础知识

文章目录

编程语言

程序

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

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

在这里插入图片描述

编程语言发展

  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 机制,它除了支持同主机两个进程间通信,还支持同一网络内部非同一主机上的进程间进行通信。

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

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

相关文章

苏州金龙新V系客车创新引领旅游出行未来

10月25日,为期三天的“2024第六届旅游出行大会”在风景秀丽的云南省丽江市落下帷幕。本次大会由中国旅游车船协会主办,全面展示了中国旅游出行行业最新发展动态和发展成就,为旅游行业带来全新发展动力。 在大会期间,备受瞩目的展车…

【重生之我要苦学C语言】深入理解指针4

深入理解指针4 字符指针变量 指针指向字符变量 char ch w; char* p &ch;指针指向字符数组 char arr[10] "abcdef"; char* p arr;printf("%s\n", arr); printf("%s\n", p);结果是一样的 也可以写成: char* p "abc…

Java | Leetcode Java题解之第525题连续数组

题目&#xff1a; 题解&#xff1a; class Solution {public int findMaxLength(int[] nums) {int maxLength 0;Map<Integer, Integer> map new HashMap<Integer, Integer>();int counter 0;map.put(counter, -1);int n nums.length;for (int i 0; i < n;…

Docker部署学习

目录 前言 一、实验环境准备 二、Docker常见命令 三、Docker数据卷 四、Docker自定义镜像 五、Docker网络相关 六、Docker项目部署实践 七、Docker知识追问强化 前言 1. Docker是用以项目上线部署的工具 2. Docker并不会很难&#xff0c;只要你跟着将所有的命令敲一遍…

二叉树和堆

目录 1.二叉树的概念及结构 1.1概念 1.2特殊的二叉树 1.3二叉树的性质 1.4二叉树的存储结构 2.二叉树的顺序结构及实现&#xff08;堆&#xff09; 2.1二叉树的顺序结构 2.2堆的概念及结构 2.3堆的实现 2.3.1堆的插入 2.3.2堆的删除 2.3.3 Heap.h 2.3.4 Heap.c 2.…

linux驱动-输入子系统框架分析

接下来&#xff0c;来分析三个结构体 打开这个文件drivers\input\evdev.c 第一步&#xff1a;要找到它的入口函数evdev_init 看到了&#xff0c;入口的位置注册了一个 input_handler&#xff0c;并且对里面的值完成赋值&#xff0c;和之前学习&#xff0c;我自己注册platform驱…

【sqlmap使用】

sqlmap简介 sqlmap 目录结构 sqlmap常用参数 sqlmap实现注入 测试注入点&#xff0c;检测到注入点后&#xff0c;直接爆数据库名 python sqlmap.py –u http://172.16.12.2/7/9/strsql.php --data "usernameadmin" --dbs注意sqlmap在使用过程中可能会出现几个需要…

Redis为什么用跳表实现有序集合

Redis为什么用跳表实现有序集合 手写一个跳表 为了更好的回答上述问题以及更好的理解和掌握跳表&#xff0c;这里可以通过手写一个简单的跳表的形式来帮助读者理解跳表这个数据结构。 我们都知道有序链表在添加、查询、删除的平均时间复杂都都是 O(n) 即线性增长&#xff0c…

微服务核心——网关路由

目录 前言 一、登录存在的问题归纳 二、*微服务网关整体方案 三、认识微服务网关 四、网关鉴权实现 五、OpenFeign微服务间用户标识信息传递实现 六、微服务网关知识追问巩固 前言 本篇文章具体讲解微服务中网关的实现逻辑、用于解决什么样的问题。其中标题中标注* 涉…

消息中间件类型介绍

ActiveMQ&#xff1a; ActiveMQ可是个老将了&#xff0c;它功能全面、稳定可靠&#xff0c;还支持多种协议和编程语言。如果你需要一个兼容性好、易于集成的消息中间件&#xff0c;ActiveMQ可是个不错的选择。 RabbitMQ&#xff1a; RabbitMQ以其简单易用和高性能著称。它支持丰…

5G在汽车零部件行业的应用

5G技术在汽车零部件行业的应用正在不断深入&#xff0c;为行业的智能化、自动化和高效化转型提供了强大的技术支持。 1、5G技术特点与优势 5G技术具有高速度、低延迟、大连接和切片技术等特点与优势。这些特性为汽车零部件行业提供了稳定、可靠、高效的通信连接&#xff0c;使…

MySQL【二】

查询列 SELECT [ALL | DISTINCT ] * | 列名1[,……列名n] FROM 表名; 查询所有选课学生的学号&#xff0c;结果去除重复值 select distinct sno from sc; 选择行 查询满足条件的数据集 SELECT 字段列表 FROM 表名 WHERE 查询条件 查询不属于数学系或外国语系的学生全部信息 …

【LLM论文日更】LongReward:利用人工智能反馈改进长上下文大语言模型

论文&#xff1a;https://arxiv.org/pdf/2410.21252代码&#xff1a;https://github.com/THUDM/LongReward机构&#xff1a;清华大学 & 中科院 & 智谱领域&#xff1a;长上下文LLM发表&#xff1a;arxiv 研究背景 研究问题&#xff1a;这篇文章要解决的问题是如何在长…

Windows Terminal终端美化

Windows Terminal 1. 下载&#xff1a; 终端&#xff1a; 直接在微软的store中搜索 windows terminal &#xff0c;直接获取即可 美化用到的字体&#xff1a;https://www.nerdfonts.com/font-downloads 这里的随便一个都可以&#xff0c;下载解压后&#xff0c;选中所有ttf文…

Go语言基础语法

一、创建工程 说明&#xff1a; &#xff08;1&#xff09;go.mod文件是go项目依赖管理文件&#xff0c;相当于前端的package.json&#xff0c;也就是Java项目中的Maven的pom.xml。 二、打印数据到控制台 &#xff08;1&#xff09;引入fmt &#xff08;2&#xff09;使用fmt…

【数据结构】二叉树——层序遍历

层序遍历 一、层序遍历二、层序遍历&#xff08;递归&#xff09;三、层序遍历&#xff08;非递归&#xff09;四、总结 一、层序遍历 层序遍历是一种广度优先遍历 以图上二叉树为例&#xff0c;层序遍历就是按照二叉树的深度一层一层进行遍历 遍历顺序&#xff1a; A B C D …

使用DJL和PaddlePaddle的口罩检测详细指南

使用DJL和PaddlePaddle的口罩检测详细指南 完整代码 该项目利用DJL和PaddlePaddle的预训练模型&#xff0c;构建了一个口罩检测应用程序。该应用能够在图片中检测人脸&#xff0c;并将每张人脸分类为“戴口罩”或“未戴口罩”。我们将深入分析代码的每个部分&#xff0c;以便…

Pandas 数据清洗

1.数据清洗定义 数据清洗是对一些没有用的数据进行处理的过程。很多数据集存在数据缺失、数据格式错误、错误数据或重复数据的情况&#xff0c;如果要使数据分析更加准确&#xff0c;就需要对这些没有用的数据进行处理。 2.清洗空值 DataFrame.dropna(axis0, howany, threshN…

【GL08】STM32--ADC/DAC

一、ADC简介 ADC 即模拟信号到数字信号的转换&#xff0c;即用数字信号展现模拟的世界&#xff0c;所有的计算机或者数字处理器只能接受以 0 和 1 两种状态的数字信号&#xff0c;而对于模拟信号&#xff0c;则无法识别&#xff0c;而需要经过模拟数字转换器来感受模拟的世界。…

Blender进阶:着色器节点

11 着色器节点 11.1着色器 着色器Shader&#xff0c;负责给物体表面着色。 综合以下参数&#xff1a; -基础色-金属度、粗超度、透明度-法向-入射光颜色、强度、角度。。 着色器本质上是一段程序、算法&#xff0c;即着色器编程。 在节点编辑器中&#xff0c;支持算法的可…