简单了解计算机的工作原理

news2024/11/15 9:28:03

文章目录

  • 一.计算机操作系统
  • 二.进程/任务
  • 三、进程控制块抽象(PCB)
  • 四、进程调度相关属性
  • 五、内存管理

一.计算机操作系统

概念:操作系统是一组做计算机资源管理的软件的统称.

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

操作系统的分层示图

在这里插入图片描述
操作系统的两个最基本功能:

  1. 防止硬件被时空的应用程序滥用.
  2. 向应用程序提供简单一致的机制来控制复杂而又通常大相径庭的低级硬件设备。

二.进程/任务

进程是操作系统资源分配的最基本的单位.

进程是重要的软件资源,由操作系统内核进行管理, 管理可以分为----描述+组织.

描述: 使用结构体 (C语言结构体特别的称之为 PCB 的进程控制块)来描述进程属性.

组织: 通过双向链表,将多个PCB进程控制块串联起来.

  1. 创建: 创建一个 PCB 这样的对象插入到双向链表中.
  2. 销毁: 将 PCB 结点删除.
  3. 任务管理器: 即就是将 PCB 表进行遍历.

总而言之, 进程是操作系统对一个正在运行的程序的一种抽象,换言之,可以把进程看做程序的一次运行过程;同时,在操作系统内部,进程又是操作系统进行资源分配的基本单位。

三、进程控制块抽象(PCB)

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

PCB中描述进程的一些特征:

  1. 进程的唯一标识—— pid;
  2. 内存指针,即指向自己占用的内存是那些。
  3. 文件描述附表,表述硬盘上的文件等资源。
    上述两点,描述了进程持有那些硬件资源。
  4. 进程调度相关属性。

四、进程调度相关属性

  1. 进程的状态
  • 就绪状态:随叫随到,进程随时准备进入 CPU 进行执行。
  • 运行状态:正在 CPU 中执行的。
  • 阻塞状态:出差了,进程短时间内无法到达 CPU 上执行。例如:进程正在进行密集的 IO 操作,读取数据。
  1. 优先级
  • 对进程进行排序,优先执行哪一个进程,延后执行哪一个进程。
  1. 上下文(存档的内容)

操作系统中进程切换操作时,将进程执行的中间的状态记录并保存,下次运行时回复上次的状态。
进程的上下文就是 CPU 中的各个寄存器的值。

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

为了更好的理解上面的有关上下文的相关知识,我们需要知晓有关CPU 分配“分时复用” 的相关概念。

  • 并行: 微观上的同一时刻,两个核心上的进程,同时进行。
  • 并发: 微观上同一时刻,一个核心上只能运行一个进程,但是 CPU 可以对进程进行快速的切换。(切换速度相当快,宏观下难以察觉)

这样,我们就更好理解上下文中有关寄存器是如何工作的。

  1. 记账信息

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

五、内存管理

何为内存?

内存,物理上是一个内存条,可以用来存储许多数据。
内存可以想象为一个很大的走廊,走廊两边有许多房间,每一个房间的大小为 1byte 并且每一个房间都有着对应的编号。

内存编号就是我们所说的“地址”,在这里的“地址”指的是 “物理地址”

在进程访问地址时,访问方式是随机访问,即随机访问地址中的内存空间,可以很快地访问到内存中任意地址上的数据。 但是,这样有很大的缺陷,如下图。

在这里插入图片描述
上图中的两个地址范围,分别为 进程1和进程2 的,倘若出现 BUG 就很有可能会出现内存访问的问题 当出现访问越界时就会出现因为 进程1 的 BUG 导致 进程2 的奔溃。为了解决这样的问题,我们引入了虚拟地址空间。

虚拟地址空间(主要是避免进程间互相产生影响)

在虚拟地址空间中,代码中不在使用真实的物理空间地址,而是通过操作系统与专门的硬件设备进行虚拟地址到物理地址的转换,如图:
在这里插入图片描述
有了虚拟地址空间后,一但进程访问越界,操作系统就会及时发现地址超出访问范围此时,就会向进程反馈错误,将进程1构成崩溃(其余的进程不会被影响)

到此, 文章结束, 如有不足, 欢迎提出. 如有错误, 欢迎指正!

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

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

相关文章

百度安全在线查询,网站弹出风险提示怎么处理

站长们要避免网站打开弹出风险提示,需要要时刻关注自己的网站是否存在风险,时刻知道自己的网站是不是安全的。 百度安全在线查询步骤: 1、打开站长工具 2、添加需要查询的网站域名。 3、勾选百度安全。 4、点击开始查询。 等…

22个Python的万用公式分享

在大家的日常python程序的编写过程中,都会有自己解决某个问题的解决办法,或者是在程序的调试过程中,用来帮助调试的程序公式。小编通过几十万行代码的总结处理,总结出了22个python万用公式,可以帮助大家解决在日常的py…

再学C语言22:循环控制语句——循环嵌套和数组处理

嵌套循环&#xff08;nested loop&#xff09;&#xff1a;在一个循环内使用另一个循环 一、循环嵌套 示例代码&#xff1a; #include <stdio.h> int main(void) {int i;int j;for(i 0; i < 10; i){for(j 0; j < 9; j){printf("%5d", j); // 里面的…

共享模型之管程(二)

1.Moniter对象 1.1.Java对象头 1>.以32位虚拟机为例 ①.普通对象 Klass Word表示对象的类型,它是一个指针,指向了对象所从属的class; ②.数组对象 在32位虚拟机中,integer包装类型的长度为12个字节,而int基本数据类型的长度为4个字节; 其中Mark Word结构为: 2>.64位…

shell第一天练习

题目&#xff1a; 1、在当前主机编写脚本文件history_max.sh显示主机中执行频率最高的前5个命令。 2、判断主机是否存在rhel用户&#xff0c;如果存在则设置密码为redhat,如果不存在则创建用户并设置密码。 3、通过设置变量HISTTIMEFORMAT&#xff0c;使得当执行history命令时…

16. BootStrap

文章目录一、Bootstrap1、概念2、快速入门二、响应式布局三、CSS样式和JS插件1、全局CSS样式2、组件1. 导航条2. 分页条3、插件1. 轮播图四、案例1、案例描述2、案例分析3、实现一、Bootstrap 1、概念 * 概念&#xff1a; 一个前端开发的框架&#xff0c;Bootstrap&#xff0…

Linux网络配置(如何设置静态IP?如何设置查看主机名?)

文章目录Linux网络配置一、网络地址配置1.1. 查看网络地址1.2. 测试两个地址是否连接1.3. Linux系统的网络配置二、主机名以及hosts映射2.1. 查看和设置主机名2.2. hosts映射2.3. DNSLinux网络配置 一、网络地址配置 如果在一台Windows电脑上安装了Linux虚拟机&#xff0c;那…

颤抖开篇,从php角度谈谈IO模型(BIO)

颤抖开篇&#xff0c;从php角度谈谈IO模型&#xff08;BIO&#xff09; IO 是什么? 在计算机系统中I/O就是输入&#xff08;input&#xff09;和输出&#xff08;Output&#xff09;的意思。针对不同的操作对象&#xff0c;可以划分为磁盘I/O模型&#xff0c;网络I/O模型&am…

开发神器VSCode配置C/C++编译环境

hi&#xff0c;小伙伴们大家好&#xff0c;今天给大家介绍一款程序员常用的开发神器VSCode&#xff0c;想必大家肯定有所了解&#xff0c;也有很多小伙伴在日常工作中经常使用。当木荣君初次见到VSCode时&#xff0c;真正的被它惊艳到了&#xff0c;可以说是一见钟情。从此就爱…

13.6-14.8读书笔记

13.6 对象移动 13.6.1 右值引用 概念: 为了支持移动操作,新标准引入了的一种新的引用类型.所谓右值引用就是必须绑定到右值的引用. 通过&&来获得右值引用 int i 42;int &r i;int &&rr i; // 错误,不能将一个右值引用绑定到一个左值上int &r3 …

【python基础_05】面向对象

文章目录1. 类和对象1.1 使用对象组织数据的模版1.2 成员变量和成员方法1.3 实现代码2. 内置方法&#xff08;魔术方法&#xff09;2.1 构造方法&#xff1a;__init__&#xff08;&#xff09;1. 类和对象 1.1 使用对象组织数据的模版 1.2 成员变量和成员方法 1.3 实现代码 1…

jupyter notebook无法启动内核

jupyter notebook无法启动内核问题概述方法一使用Window PowerShell方法二更改文件路径重新启动内核参考问题概述 遇到的问题是在使用jupyter的时候无法正常运行,所以在这里尝试一些办法,在这里进行记录,希望能够帮助到大家 方法一 使用Window PowerShell 首先第一个方法就…

Java IO流 - 释放资源的方式

资源释放的方式 书接上文, 在上一篇文章我们做过一个文件拷贝的练习, 但是在联系中是有释放资源隐患的的, 例如在下面代码中, 在文件释放之前有许多行的逻辑代码; 如果这许多行的逻辑代码有报错, 导致程序不运行, 那么资源就得不到释放 public static void main(String[] args)…

Crack:ActiveReportsJS 3.2.2 EN:ActiveReportsJS

ActiveReportsJS - 高级 JavaScript 报告解决方案 ActiveReportsJS 是一种用于在前端应用程序中可视化数据的报告解决方案。Ω578867473自定义报告布局并将我们的报告设计器和查看器组件集成到 Web 应用程序中&#xff0c;以便在任何平台上预览、导出或打印报告。 使用我们的跨…

WPF+ASP.NET SignalR实现动态折线图

在实际业务中&#xff0c;当后台数据发生变化&#xff0c;客户端能够实时的收到通知&#xff0c;而不是由用户主动的进行页面刷新才能查看&#xff0c;这将是一个非常人性化的设计。有没有那么一种场景&#xff0c;后台数据明明已经发生变化了&#xff0c;前台却因为没有及时刷…

ElementUI——案例2用户管理(基于SpringBoot实现增删改)

1.ElementUI整合SpringBoot前后端分离实现用户增删改查 效果展示 2.前端核心代码 项目目录 main.js引入 import ElementUI from element-ui; import element-ui/lib/theme-chalk/index.css; import router from ./router import axios from axiosVue.prototype.$http ax…

SQL 存储过程

文章目录存储过程简介存储过程的创建及调用存储过程的删除 如何删除存储过程存储过程的优缺点现需要向学生表中插入新的学生数据。但在插入学生数据的时&#xff0c;需要同 时检查老师表里的数据。如果插入学生的老师不在老师表里&#xff0c;则先向老师表中插入一条老师数据&a…

高级IO-多路转接

高级IO 以前的都是拷贝接口。write什么的就是将字符串拷贝到发送缓冲区中。 应用层等待接收缓冲区填写数据的过程算是IO吗&#xff1f;算 IO等待拷贝数据&#xff1b; 真正的IO的过程就是拷贝的过程。比如等待鱼上钩的时候也算是钓鱼(adj)&#xff0c;当把鱼拿上来的时候也…

【Spring篇】代理模式

&#x1f353;个人主页&#xff1a;个人主页 &#x1f352;系列专栏&#xff1a;SSM框架 目录 一、场景模拟 二、提出问题 三、代理模式 1.静态代理 2.动态代理 一、场景模拟 ①声明接口 声明计算器接口Calculator&#xff0c;包含加减乘除的抽象方法 public interface…

hadoop基础搭建(hadoop+hive+hbase+zk)(一)

文章目录一、基础环境&插件安装&#xff08;root&#xff09;二、创建启动脚本&#xff0c;后续使用三、安装JDK&#xff08;root&#xff09;四、安装Hadoop五、安装 rsync&#xff08;root&#xff09;六、网络配置&#xff08;4台服务器&#xff0c;root&#xff09;七、…