Linux(1):开始

计算机组成概述

计算机:接受用户输入指令与数据,经由中央处理器的数学与逻辑单元处理后,以产生或存储有用的信息。
主要可以分为3个部分:输入单元、主机单元、输出单元。

中央处理器(Central Processing Unit, CPU) 为一个具有特定功能的芯片,内部含有微指令集。
因为CPU的主要工作在于管理和运算,因此,CPU 内又可以分为两个主要单元:
1.算数逻辑单元:负责程序运算与逻辑判断;
2.控制单元:协调各周边组件与各单元间的工作。

CPU 读取的数据都是从主存储器来的。主存储器内的数据则是从输入单元所传输进来。CPU 处理完毕的数据也必须要先写回主存储器中,最后数据才从主存储器传输到输出单元。
基本上数据都是流经过主存储器再转出去的

CPU 架构

CPU目前有两种主要的架构: 精简指令集(RISC)复杂指令集(CISC) 系统。
精简指令集(RISC) :微指令集较为精简,每个指令的运行时间都很短,完成的动作也很单纯,指令的执行效能较佳: 但是若要做复杂的事情,就要由多个指令来完成。
复杂指令集(CISC) :CISC 在微指令集的每个小指令可以执行一些较低阶的硬件操作,指令数目多而且复杂, 每条指令的长度并不相同。因为指令执行较为复杂所以每条指令花费的时间较长, 但每条个别指令可以处理的工作较为丰富。常见的 CISC 微指令集 CPU 主要有 AMD、Intel、VIA 等的 x86 架构的 CPU。

CPU 所谓的位指的是 CPU 一次数据读取的最大量。32(64)位 CPU 则是 CPU 一次只能读取 32(64)位的意思。

CPU 的工作频率:外频与倍频

频率就是CPU每秒钟可以进行的工作次数。

不同的 CPU 之间不能单纯的以频率来判断运算效能
因为不同 CPU 的微指令集不相同,架构也不见得一样,可使用的第二层快取及其计算器制可能也不同, 加上每次频率能够进行的工作指令数也不同。所以,频率目前仅能用来比较同款 CPU 的速度。

外频 指的是 CPU 与外部组件进行数据传输时的速度,
倍频 则是 CPU 内部用来加速工作效能的一个倍数,两者相乘才是 CPU 的频率速度。
CPU 的频率速度 = 外频 × 内频

超频 指的是: 将 CPU 的倍频或者是外Tips频透过主板的设定功能更改成较高频率的一种方式。但因为 CPU 的倍频通常在出厂时已经被锁定而无法修改,因此较常被超频的为外频

32 位与 64 位的 CPU 与总线

CPU 每次能够处理的数据量称为 字组大小(word size),字组大小依据 CPU 的设计而有 32 位与 64 位。
现在所称的计算机是 32 或 64 位主要是依据这个 CPU 解析的字组大小而来的。

超线程(Hyper-Threading,HT)

在每一个 CPU内部将重要的缓存器 (register) 分成两群, 而让程序分别使用这两群缓存器。也就是说,可以有两个程序同时竞争 CPU 的运算单元,而非透过操作系统的多任务切换! 这一过程就会像同时拥有两个核心一样。

计算机上常用的计算单位

容量单位
0/1 这个二进制的的单位称为 bit。但 bit 实在太小了,所以在储存数据时每份简单的数据都会使用到 8bits 的大小来记录,因此定义出 byte 这个单位,他们的关系为:1 Byte = 8 bitsK 代表 1024 byte,M 代表 1024K

速度单位
CPU 的指令周期常使用 MHZ 或者是 GH 之类的单位,这个 H 其实就是秒分之一
在网络传输方面,由于网络使用的是 bit 为单位,因此网络常使用的单位为 MbpsMbits per second,亦即是每秒多少 Mbit

内存

个人计算机的主存储器主要组件为动态随机存取内存(DynamicRandom Access Memory,DRAM), 随机存取内存只有在通电时才能记录与使用,断电后数据就消失了。因此也称这种 RAM 为挥发性内存

SDRAM 与DDR SDRAM 两种DRAM:差别除了在于脚位与工作电压上的不同之外,DDR 是所谓的双倍数据传送速度(DoubleData Rate), 他可以在一次工作周期中进行两次数据的传送,感觉上就好像是 CPU 的倍频,所以传输频率方面比 SDRAM 还要好。
现在的 PC 机,DDR内存用的多。

主存储器除了频率/带宽与型号需要考虑之外,内存的容量也很重要。
因为所有的数据都得要加载内存当中才能够被 CPU 判读,如果内存容量不够大的话将会导致某些大容量数据无法被完整的加载,此时已存在内存当中但暂时没有被使用到的数据必须要先被释放,使得可用内存容量大于该数据,那份新数据才能够被加载。所以,通常越大的内存代表越快速的系统,这是因为系统不用常常释放一些内存内部的数据。
以服务器来说,主存储器的容量有时比 CPU 的速度还要来的重要的。

多通道设计

主存储器的数据宽度当然是越大越好,但传统的总线宽度一般大约仅仅有 64 位,为了加大这个宽度,因此将两个主存储器汇整在一起,如果一支内存有 64 位,那么两支内存就可以有 128 位。这就是双通道的设计理念。

要启用双信道的功能必须要安插两支(或四支)主存储器,这两支内存最好连型号都一模一样比较好, 这是因为启动双信道内存功能时,数据是同步写入/读出这一对主存储器中,如此才能够提升整体的带宽。除了容量大小要一致之外,型号也最好相同。

DRAM 与 SRAM

某些很常用的程序或数据可以放置到 CPU 内部,CPU 数据的读取就不需要跑到主存储器重新读取了,效能大大提升。<第二层快取高速缓存>
静态随机存取内存(Static Random Access Memory,SRAM)的引入:因为第二层快取(L2 cache)整合到 CPU 内部,因此这个 L2 内存的速度必须要 CPU 频率相同。

只读存储器(ROM)

BIOS(Basic Input Output System) 对计算机系统来讲是非常重要的一套程序,因为他掌握了系统硬件的详细信息与开机设备的选择等等。这套程序是写死到只读存储器(Read OnlyMemory,ROM)。ROM 是一种非挥发性的内存。另外,BIOS 对于个人计算机来说是非常重要的,因为他是系统在开机的时候首先会去读取的一个小程序。

其他计算机设备组件

显示适配器

显示适配器又称为 VGA(Video Graphics Array),对于图形影像的显示重点在于分辨率与颜色深度,因为每个图像显示的颜色会占用掉内存, 因此显示适配器上面会有一个内存的容量,这个显示适配器内存容量将会影响到屏幕分辨率与颜色深度。

硬盘与储存设备

在硬盘盒里面由许许多多的圆形磁盘盘、机械手臂、 磁盘读取头与主轴马达所组成的,整个内部如同下图所示:
在这里插入图片描述
由于单一磁盘盘的容量有限,因此有的硬盘内部会有两个以上的磁盘盘。
磁盘盘上头的数据写入:
在这里插入图片描述
由于磁盘盘是圆的,并且透过机器手臂去读写数据,磁盘盘要转动才能够让机器手臂读写。因此,通常数据写入当然就是以圆圈转圈的方式读写。 所以,当初设计就是在类似磁盘盘同心圆上面切出个一个的小区块,这些小区块整合成一个圆形,让机器手臂上的读写头去存取。 这个小区块就是磁盘的最小物理储存单位,称之为 扇区 (sector),那同一个同心圆的扇区组合成的圆就是所谓的 磁道(track)。 由于磁盘里面可能会有多个磁盘盘,因此在所有磁盘盘上面的同一个磁道可以组合成所谓的 磁柱(cylinder)

固态硬盘 最大的好处是,它没有马达不需要转动,而是透过内存直接读写的特性,因此除了没数据延迟且快速之外,还很省电。

主板

I/O 地址 有点类似每个装置的门牌号码,每个装置都有他自己的地址,一般来说,不能有两个装置使用同一个 I/O 地址, 否则系统就会不晓得该如何运作这两个装置了。而除了 I/O 地址之外,还有个IRQ 中断(Interrupt)

CMOS 主要的功能为记录主板上面的重要参数, 包括系统时间、CPU 电压与频率、各项设备的 I/O 地址与 IRO 等,由于这些数据的记录要花费电力,因此主板上面才有电池。
BIOS 为写入到主板上某一块 flashEEPROM 的程序,他可以在开机的时候执行,以加载 CMOS 当中的参数, 并尝试呼叫储存装置中的开机程序,进一步进入操作系统当中。
BIOS 程序也可以修改 CMOS 中的数据,每种主板呼叫 BIOS设定程序的按键都不同,一般桌面计算机常见的是使用[del]按键进入 BIOS 设定画面。

数据表示方式

常用的英文编码表为 ASCII 系统,这个编码系统中, 每个符号(英文、数字或符号等)都会占用 1 bytes的记录,因此总共会有 2^8 = 256 种变化。
至于中文字当中的编码系统早期最常用的就是 big5 这个编码表了。每个中文字会占用 2 bytes,理论上最多可以有 2^16 = 65536,亦即最多可达 6 万多个中文字

Unicode 编码系统, 我们常常称呼的UTF8 或万国码的编码,打破了所有国家的不同编码。

软件程序运作

操作系统

操作系统(Operating System,OS) 其实也是一组程序, 这组程序的重点在于管理计算机的所有活动以及驱动系统中的所有硬件
操作系统核心主要在管控硬件与提供相关的能力(例如存取硬盘、网络功能、CPU 资源取得等)。
这些管理的动作是非常的重要的,如果使用者能够直接使用到核心的话,万一用户不小心将核心程序停止或破坏, 将会导致整个系统的崩溃!因此核心程序所放置到内存当中的区块是受保护的,并且开机后就一直常驻在内存当中。

系统呼叫(System Call)

计算机系统主要由硬件构成,然后核心程序主要在管理硬件,提供合理的计算机系统资源分配(包括CPU 资源、内存使用资源等等), 因此只要硬件不同(如 x86 架构与 RISC 架构的 CPU),核心就得要进行修改才行 。而由于核心只会进行计算机系统的资源分配,所以在上头还需要有应用程序的提供用户才能够操作系统的。
为了保护核心,并且让程序设计师比较容易开发软件,因此操作系统除了核心程序之外,通常还会提供一整组开发接口,那就是系统呼叫层

核心功能

系统呼叫接口(System call interface)
为了方便程序开发者可以轻易的透过与核心的沟通,将硬件的资源进一步的利用,于是需要有这个简易的接口来方便程序开发者。

程序管理(Process control)
总有听过所谓的[多任务环境]吧? 一部计算机可能同时间有很多的工作跑到 CPU 等待运算处理, 核心这个时候必须要能够控制这些工作,让 CPU 的资源作有效的分配才行!另外, 良好的 CPU 排程机制(就是CPU 先运作那个工作的排列顺序)将会有效的加快整体系统效能。

内存管理(Memory management)
控制整个系统的内存管理,这个内存控制是非常重要的,因为系统所有的程序代码与数据都必须要先存放在内存当中。 通常核心会提供虚拟内存的功能,当内存不足时可以提供内存置换(swap)的功能。

文件系统管理(Filesystem management)
文件系统的管理,例如数据的输入输出(IO)等等的工作,还有不同文件格式的支持等等,如果你的核心不认识某个文件系统,那么您、将无法使用该文件格式的文件。例如: Windows 98 就不认识 NTFS 文件格式的硬盘;

装置的驱动(Device drivers)
就如同上面提到的,硬件的管理是核心的主要工作之一,当然,装置的驱动程序就是核心需要做的事情,好在目前都有所谓的[可加载模块] 功能,可以将驱动程序编辑成模块,就不需要重新的编译核心了。

《鸟哥的Linux私房菜-基础篇》学习笔记

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

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

相关文章

Linux | 进程间通信

目录 前言 一、进程间通信的基本概念 二、管道 1、管道的基本概念 2、匿名管道 &#xff08;1&#xff09;原理 &#xff08;2&#xff09;测试代码 &#xff08;3&#xff09;读写控制相关问题 a、读端关闭 b、写端关闭 c、读快写慢 d、读慢些快 &#xff08;4&a…

【JUC】九、线程池ThreadPool

文章目录 1、线程池2、分类3、线程池的使用4、工作流程5、拒绝策略6、线程池的七个参数7、自定义线程池8、什么时候考虑使用线程池&#xff1f; 1、线程池 线程池和数据库连接池的理念很相似&#xff0c;对于数据库连接池&#xff1a;普通的连接数据库是建立一个JDBC连接&…

目标检测一 SSD代码复现

SSD 背景 这是一种 single stage 的检测模型&#xff0c;相比于R-CNN系列模型上要简单许多。其精度可以与Faster R-CNN相匹敌&#xff0c;而速度达到了惊人的59FPS&#xff0c;速度上完爆 Fster R-CNN。 速度快的根本原因在于移除了 region proposals 步骤以及后续的像素采样或…

项目Git分支管理规范

Git 是一个开源的分布式版本控制系统&#xff0c;用于敏捷高效地处理任何或小或大的项目。 一、分支管理 项目中&#xff0c;一般会创建三个常用分支&#xff1a; develop&#xff1a;开发环境的稳定分支&#xff0c;公共开发环境基于该分支构建。pre-release&#xff1a;测试…

Zabbix钉钉机器人告警

目录 一.在钉钉群里添加机器人 二.配置钉钉告警脚本 1.安装python依赖模块python-requests 2.配置钉钉告警配置脚本zabbix_ding.conf 3.创建告警日志并且授权。 4.配置钉钉告警执行脚本dingding.py 5.测试 三.配置zabbix告警 1.创建媒介 2.给用户添加报警媒介 3.配置…

C++初阶--内存管理

文章目录 内存分布new/delete基本用法malloc/free和new/delete的区别进一步理解new和delete的实现原理 定位new&#xff08;了解&#xff09; 内存分布 栈&#xff08;stack&#xff09;&#xff1a;栈是由编译器自动管理的内存区域&#xff0c;用于存储局部变量&#xff0c;函…

OpenCV基础应用(3)— 把.png图像保存为.jpg图像

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。本节课就手把手教你如何把.png图像保存为.jpg图像&#xff0c;希望大家学习之后能够有所收获~&#xff01;&#x1f308; 目录 &#x1f680;1.技术介绍 &#x1f680;2.实现代码 &#x1f680;1.技术介绍 如果在电脑某…

【以图会意】文件系统从外存到内存到用户空间

首先&#xff0c;在文件目录中&#xff0c;装有很多块FCB&#xff0c;由文件名和i指针两部分构成&#xff0c;指针指向文件所在的索引结点&#xff0c;包含了例如&#xff1a;文件存储权限&#xff0c;文件长度等一系列文件的信息&#xff0c;最重要的当然是物理地址&#xff0…

Python中带图例的条形图的具体画法和参数调节

首先如上图所示的图是如何画出来的呢&#xff0c;它主要是分三个部分&#xff0c; 首先第一部分是将四个单独的图按照横轴的方式叠加起来&#xff0c;第二部分是如何调节右上角图例的位置和大小&#xff0c;第三部分是标注出整个横轴和竖轴的坐标并调节字体的大小。 一.将四个…

QQ邮箱地址一键自动粘贴,工作效率迅速提升

您是否曾经为了输入邮箱地址而烦恼&#xff1f;每次需要输入邮箱地址时&#xff0c;总是要反复复制粘贴&#xff0c;不仅浪费时间&#xff0c;还容易出错。现在&#xff0c;我们为您带来了一项全新的QQ邮箱自动粘贴功能&#xff0c;让您的工作更加高效便捷&#xff01; 首先&a…

《变形监测与数据处理》笔记/期末复习资料(择期补充更新)

变形&#xff1a; 变形是物体在外来因素作用下产生的形状、大小及位置的变化&#xff08;随时间域和空间域的变化&#xff09;&#xff0c;它是自然界普遍存在的现象。 变形体&#xff1a; 一般包括工程建筑物、构筑物、大型机械设备以及其他自然和人工对象等。 变形体和变形…

华为鸿蒙开发记录

错误 1No module found. Make sure the project sync is completed successfully and the module is set in Edit Configuration > General 应该是项目建立的是Api是9 &#xff0c;但是 华为远程模拟器是应该建立的是 8的&#xff0c;导致 版本过低。从新建立项目选择APi8就…

QtiPlot for Mac v1.1.3(科学数据分析工具)

QtiPlot是一款跨平台科学绘图软件&#xff0c;它可以在Windows、Linux和Mac OS X等多个平台上运行。QtiPlot具有强大的数据分析和可视化功能&#xff0c;被广泛应用于学术界和工业界的数据处理和图形制作。 QtiPlot支持多种语言&#xff0c;包括但不限于英语、中文等&#xff…

JS-项目实战-批量删除水果库存记录

1、fruit.js function $(name) {if (name) {//假设name是 #fruit_tblif (name.startsWith("#")) {name name.substring(1); //fruit_tblreturn document.getElementById(name);} else {return document.getElementsByName(name);}} }//当页面加载完成后执行后面的…

人人商城app禁用

api.map.baidu.com 换成 lbs.map.baidu.com

SQL存储过程和函数

SQL存储过程和函数 变量系统变量用户定义变量局部变量 存储过程存储函数 变量 在MySQL中变量分为三种类型: 系统变量、用户定义变量、局部变量。 系统变量 系统变量 是MySQL服务器提供&#xff0c;不是用户定义的&#xff0c;属于服务器层面。分为全局变量&#xff08;GLOBA…

MCAL实战三(S32K324-NXP EB tresos Port驱动配置详解)

一、前言 PORT驱动初始化就是对微控制器(MCU)的整个PORT模块进行初始化配置。很多端口和管脚被分配有多种不同的功能,即可以进行引脚功能复用,比如通用I/O、模数转换、脉宽调制等功能。因此,对PORT必须有一个整体的配置和初始化,对各管脚的具体配置和使用取决于微控制器和…

【部署篇】宝塔liunx中使用docker部署nestjs项目【全过程】

一、 &#x1f44b; 前序工作 连接服务器 获取宝塔面板信息 在命令行输入sudo /etc/init.d/bt default 进入宝塔面板输入账号密码 通过上面网址进入宝塔 安装自己需要的东西 **PS&#xff1a;**这里还需要自己登录宝塔账号&#xff0c;没有账号的同学需要注册一下 安装pm2…

高性能架构设计

1. 引言 高性能架构设计在现代系统中至关重要&#xff0c;它能够应对大规模的数据和用户需求增长&#xff0c;提供优秀的用户体验和实时数据处理能力。同时&#xff0c;它也是解决"三高"问题&#xff08;高并发、高性能、高可用性&#xff09;的关键。 2. 高性能定…

GZ038 物联网应用开发赛题第10套

2023年全国职业院校技能大赛 高职组 物联网应用开发 任 务 书 &#xff08;第10套卷&#xff09; 工位号&#xff1a;______________ 第一部分 竞赛须知 一、竞赛要求 1、正确使用工具&#xff0c;操作安全规范&#xff1b; 2、竞赛过程中如有异议&#xff0c;可向现场考…