ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

操作系统底层工作的整体认识

2021-11-09 23:04:56  阅读:116  来源: 互联网

标签:缓存 操作系统 认识 指令 线程 内核 指令集 CPU 底层


计算机五大核心组成部分

  • 控制器:计算机的中枢神经,对程序规定的控制信息进行解释,根据其要求进行控制,调度程序、数据、地址,协调计算机各部分工作及内存与外设的访问

  • 运算器:对数据进行各种算术运算和逻辑运算,即对数据进行加工处理

  • 存储器:存储程序、数据和各种信号、命令等信息,并在需要时提供这些信息

  • 输入设备:有键盘、鼠标器、光电输入机、磁带机、磁盘机、光盘机等

  • 输出设备:显示终端CRT、打印机、激光印字机、绘图仪及磁带、光盘机等

最核心的部分:CPU、内存

1. CPU指令结构

CPU内存结构

  • 控制单元
  • 运算单元
  • 数据单元

内存和CPU通过控制总线、数据总线、地址总线进行通信。

CPU缓存架构

为了提升效率,减少CPU与内存的交互(交互影响CPU效率),一般在CPU上集成了多级缓存架构,常见的为三级缓存结构

  • L1 Cache,分为数据缓存和指令缓存,逻辑核独占
  • L1 Cache,分为数据缓存和指令缓存,逻辑核独占
  • L3 Cache,所有物理核共享

存储器存储空间大小:内存>L3>L2>L1>寄存器
存储器存储空间大小:内存>L3>L2>L1>寄存器
缓存是由最小的存储区块-缓存行(cacheline)组成,缓存行大小通常为64byte

为什么要加高速缓存?

空间局部性原则

如果一个存储器的位置被引用,那么将来他附近的位置也会被引用

时间局部性原则

如果一个信息正在被访问,那么近期被它可能还会被再次访问到

**带有高速缓存的CPU执行计算的流程 **

  • 程序以及数据被加载到主内存
  • 指令和数据被加载到CPU的高速缓存
  • CPU执行指令,把结果写到高速缓存
  • CPU执行指令,把结果写到高速缓存

2. CPU运行安全等级

四个级别:

  • ring0
  • ring1
  • ring2
  • ring3

Linux与Windows只用到了2个级别:ring0、ring3,操作系统内部内部程序指令通常运
行在ring0级别,操作系统以外的第三方程序运行在ring3级别,第三方程序如果要调用操作
系统内部函数功能,由于运行安全级别不够,必须切换CPU运行状态,从ring3切换到ring0,
然后执行系统函数

操作系统内存管理

Linux为内核代码和数据结构预留了几个页框,这些页永远不会被转出到磁盘上。从0x00000000 到 0xc0000000(PAGE_OFFSET) 的线性地址可由用户代码 和 内核代码进行引用(即用户空间)。从0xc0000000(PAGE_OFFSET)到 0xFFFFFFFFF的线性地址只能由内核代码进行访问(即内核空间

空间划分,CPU调度的基本单位线程:

  • 内核线程模型(KLT)
    • 系统内核管理线程,内核保存线程的状态和上下文信息 线程阻塞不会引起进程阻塞
    • 在多处理器系统上,多线程在多处理器上并行运行。线程的创建、调度和管理由内核完成,效率比ULT要慢,比进程操作快
  • 用户线程模型(ULT)
    • 用户程序实现,不依赖操作系统核心,应用提供创建、同步、调度和管理线程的函数来控制用户线程
    • 不需要用户态/内核态切换,速度快
    • 内核对ULT无感知,线程阻塞则进程(包括它的所有线程)阻塞

进程与线程

  • 进程:现代操作系统在运行一个程序时,会为其创建一个进程
  • 线程:线程是OS(操作系统)调度CPU的最小单元,也叫轻量级进程

3. 虚拟机指令集架构

栈指令集

  • 线程是OS(操作系统)调度CPU的最小单元,也叫轻量级进程
  • 避开了寄存器的分配难题:使用零地址指令方式分配;
  • 指令流中的指令大部分是零地址指令,其执行过程依赖与操作栈,指令集更小,编译器容易实现
  • 不需要硬件支持,可移植性更好,更好实现跨平台

**寄存器指令集架构 **

  • 典型的应用是x86的二进制指令集:比如传统的PC以及Android的Davlik虚拟机。
  • 指令集架构则完全依赖硬件,可移植性差。
  • 性能优秀和执行更高效。
  • 花费更少的指令去完成一项操作
  • 在大部分情况下,基于寄存器架构的指令集往往都以一地址指令、二地址指令和三地址指令为主,而基于栈式架构的指令集却是以零地址指令为主

Java符合典型的栈指令集架构特征,像Python、Go都属于这种架构

标签:缓存,操作系统,认识,指令,线程,内核,指令集,CPU,底层
来源: https://www.cnblogs.com/steven158/p/15531367.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有