操作系统,启动!
本文最后更新于39 天前,其中的信息可能已经过时,如有错误请发送邮件到big_fw@foxmail.com

2024.11.20

  • 想代码文件这种用阿克斯码值来表示的文件是文本文件,其他所有的文件都是二进制文件
  • 数字的机器表示是对真值的有限近似( 二进制导致的)
  • 文件是对I/O设备的抽象,在操作系统的设计中,无论是存储在磁盘上的数据、键盘输入、屏幕输出,还是网络通信,都可以被视为“文件”。这种抽象统一了不同类型设备的操作接口,使得程序可以用相同的方式处理不同的I/O设备。
  • 并发的上下文切换,会保存当前进程的上下文,加载新进程的上下文,并将控制权交给新进程(肯定会有开销)
  • 如果一个进程需要用操作系统的功能(如打开文件),会将控制权交给系统内核。
  • 内核不是一个独立的进程,是一个管理所有进程和数据结构的集合
  • 多线程比多进程更容易共享数据

2024.11.21

  • 前后端交互用JSON不用xml的原因是,xml比较臃肿,内容没多少,标签很多
  • 指针也有值跟类型,值是指向位置处的地址,类型是所储存对象的类型
  • 大多数计算机都以字节为最小的可寻址单位而非一个比特位。每个对象都是一个字节块,而程序就是一个更大的字节块、
  • 机械级程序将内存看做一个非常大的字节数组,称为虚拟内存,内存的每一个字节都由唯一的数字来表示,称为地址
  • 所有可能的地址的集合就是虚拟地址空间
  • 意思就是,有的数据类型在不同的编译环境下占的内存大小不同,所以整了几个不会变的(解释的下图)

2024.10.23

  • 乘除运算的开销(*约10个时钟周期,/30个)非常大可以用位移运算代替尤其是2的整数次幂

2024.11.29

操作系统,启动

  • 计算机的基本结构运算器,控制器,储存器,输入设备,输出设备冯诺依曼模型
  • 储存的基本单位是字节,每个字节是八个比特位,每个字节对应一个内存地址。内存地址也是从零开始编号的
  • cpu
    • cpu64位和32位是cpu位宽,决定cpu一次可以处理多少位的数据。cpu位宽也代表一次最多能控制多少线路位宽,所以cpu位宽一般与线路位宽是一致的,cpu位宽少于线路位宽会有的线路位宽用不上。大于则同理。
    • 超过32位的数据(包括各种类型的数据整数,地址啥的都算),32位的cpu无法一次性访问。所以32位的cpu最多可以控制4gb左右的内存(装的内存再多也不行),而64位的cpu可以操控的地址非常大2的64次方个字节,超级大,根本用不完。然后32位的cpu运算超过三十二位的数字的时候,无法一次运算就解决。得先拆开,再各部分相加,再运算进制,会多好几步。如果计算小于32位的数据,64位和32位并没有什么区别
  • cpu执行程序的过程(cpu的指令周期)
    • 第一步cpu读取程序计时器的值(该指令所在的地址)。再通过cpu的控制单元控制地址总线访问指令所在地址,通知内存准备好数据,数据准备好之后通过数据总线将数据传给cpu,然后cpu将数据存到指令寄存器
    • 第二步程序计数器自增如果是64位那就自增八个字节
    • 第三步分析指令寄存器中的数据,确定指令的类型和参数,若是计算指令就交给逻辑运算单元,若是存储指令就交给控制单元
  • 总结一下就是先获取指令到指令寄存器,再程序计数器自增,最后执行指令寄存器里面的指令就行。
  • 数据段存数据,正文段存指令,这俩是分开的
  • 每一条指令占的内存大小都是固定的,而数据占的内存大小则取决于数据
  • 上图是一个32位的指令
  • 执行指令的四个阶段
    1. 获取指令
    2. 指令解码
    3. 执行指令
    4. 数据回写

指令一共有五种类型

  1. 数据传输指令 数据的存储
  2. 运算类型 无需多言 数学预算 逻辑运算 位运算都算
  3. 跳转类型 分支循环啥的 函数调用
  4. 信号类型 如中断
  5. 闲置类型 如cpu空转

指令执行速度 GHz (cpu的一个参数)代表1秒可以产生多少G次数的脉冲信号,每一次脉冲信号高低电平的转换就是一个周期,称为时钟周期 对于cpu来说一个时钟周期只能执行一个最基本的动作,所以时钟频率越高,时钟周期就越短,工作速度就越快 一般来说,每个指令需要多个时钟周期,乘除法的时钟周期要远大于加减和位移运算

计算机的存储设备

除了内存和硬盘计算机还有其他的存储设备

cpu运算速度特别快,但是从硬盘读取数据就非常慢了,从硬盘读取数据会拖慢整体的结构,所以在cpu和硬盘之间加了一层内存,减少对硬盘的操作(有的数据可以从头到尾都不经过硬盘,我们平常写的变量,通常只有存入数据库了(持久化)才会存入硬盘),加快速度。

上面的很好理解,那么为什么在cpu与内存之间又加了那么多层呢。那是因为,随着硬件技术的发展,cpu的运算速度越来越快,就连内存存取数据的速度也跟不上了,所以多加了几层速度更快的,相应的,容量也更小。64位cpu大多容量只有8个字节。速度越快,能耗越高,材料越贵,所以容量小,而且太大也没必要。

寄存器
寄存器的存取速度超级快,只需要半个时钟周期。cpu执行一条指令的时候,除了要存取寄存器还需要解码指令,控制指令执行和计算。所以读取寄存器的速度非常重要。

cpu cache
首先这个是分为三层的

L1跟L2是每个核心都有的,L3是多个核心共享的。
L1的访问速度几乎和寄存器一样快,需要2-4的时钟周期,大小在几十kb和几百kb之间不等。
指令和数据在L1中是分开存放的,所以分为指令缓存和数据缓存

文末附加内容
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇