文章目录计算机的构成CPU的基本情况多核CPU简单模拟指令操作系统进程是系统分配资源的基本单位进程的调度计算机的构成CPU的基本情况常见的CPU架构x86架构 (intel, amd, 家用pc, 服务器等)arm架构 (苹果,高通,苹果电脑和苹果手机)不同架构的CPU对应的指令集是不同的不同架构的CPU指令集不同对应的机器语言汇编语言也是不同的。其中8086是上个世纪典型的一款CPU代表后续(80286,80386,80486)等等CPU统称为x86。多核CPU将多个可以独立工作的CPU聚集成一起合成一个CPU,原本一个任务一个CPU干活现在一个任务多个CPU一起干活当然一份活就需要拆分成多份给多个CPU这就需要软件合理的将大任务拆分成多个小任务。软件就引入了(“并发编程”)。既然CPU可以并发编程那一个CPU能否做两个工作呢答案是可以的称作超线程技术。可以看做是物理核心和逻辑核心比如4个物理核心有8个逻辑核心4个人能干8个人的活。如何查看自己的电脑有多少逻辑核心打开任务管理器点击性能右击鼠标点击将图形更改为逻辑处理器可以看到“内核”以及“逻辑处理器之间的关系”、简单模拟指令指令(instruction)功能说明4位 opcode操作的地址或者寄存器LOAD_A从 RAM 的指定地址将数据加载到 A 寄存器00104 位 RAM 地址LOAD_B从 RAM 的指定地址将数据加载到 B 寄存器00014 位 RAM 地址STORE_A将数据从 A 寄存器写入 RAM 的指定地址01004 位 RAM 地址ADD计算两个指定寄存器的数据的和并将结果放入第二个寄存器10002 位的寄存器 ID 2 位的寄存器 ID当前只是一个简单的版本实际情况要复制的多什么是寄存器寄存器是CPU上存储数据的单元和硬盘、内存类似CPU上也可以存储数据读取数据速度是内存的上万倍但是CPU较为珍贵存储的数据量不会太大。比方说我们有这一些指令集一开始指针指向地址0.地址数据000101110100011111210000100301001101……1400000011那么数据“00101110”可以看作两部分“0010”对应上表中的操作命令LOAD_A“1110”是内存中的地址总体表示的意义为将内存地址为“1110”里面的数据读取到寄存器A当中。“1110”对应的值为14也就是说“00000011”数据被寄存器A读取了。由于现代计算机CPU执行速度大大提高读取内存的速度已经跟不上CPU执行的速度缓存能够很好的解决这种问题一次性的先读取一部分数据在CPU缓存中就近拿取数据。地址2进行add操作”10000100“拆分为三部分:1000为指令ADD,计算两个指定寄存器的数据的和并将结果放入第二个寄存器.01代表寄存器B,00代表寄存器A.操作系统操作系统是计算机中最重要的软件需要管理各种硬件设备给其他软件提供稳定的运行环境。操作系统给各种硬件提供了统一的API,在JAVA语言当中JVM已经将系统的API进行了封装直接调用JVM的API,不需要充分学习系统原生的API,并且JVM的API是跨平台的对于Windowslinux都适用。进程是系统分配资源的基本单位电脑上打开的各种软件都可以看作是进程任务。进程的管理先描述使用类、结构体的方式把实体属性列出来Process Control BlockPCB结构体有很多的属性常见的有1.pid每一个进程都有它自身对应的进程id号同一台机器的进程id号都是唯一的利于进行添加与删除2.内存指针一组进程运行是需要占用内存资源的系统分配给了你多少内存你就只能在当中使用不能随意的逾越鸿沟。一个进程运行起来指令和数据都需要分配到对应的内存中。3.文件描述符表进程经常需要访问硬盘操作系统对硬盘进行了封装文件进程要访问文件就要先打开文件构造一个结构体将文件的信息装进结构体。4.CPU的分时复用进程的数量往往都比逻辑核心要多为了多进程能运行进程需要分时复用某个时刻进程1占用某个时刻进程2占用…再组织使用一定的数据结构把这些类、结构体连在一起使用复杂的链表将进程串到一起进行增加或删除操作。进程的并发执行多个核心同时运行时称为“并行执行”一个核心要对不同的进程分时复用称为‘’并发执行“当代计算机都是并行和并发同时进行的人类感知不到往往将这两个概念统称为并发进程的调度状态描述某个进程当前是否适合进入CPU执行 就绪状态 / 阻塞状态。优先级进程资源的分配是不公平的重要的进程往往更优先被调度。记账信息针对每一个进程统计它占用CPU的时间合理的调整进程调度的策略。上下文相当于游戏的读档存档接着上一次的指令继续往下执行。