目录
一.计算机是如何工作的?
现代的计算机大体都分为几个大类:
1.终端设备(台式机,笔记本,手机,平板等)。
2.服务器(一般是由专业人员使用)。
3.嵌入式设备(针对一些特定的场景,量身定做的“计算机”)。
在了解计算机是如何工作的,我们需要知道现代的计算机都遵守冯诺依曼结构。
冯诺依曼强调了计算机应使用二进制来存储数据。
CPU中央处理器:进行算术运算和逻辑判断。
存储器:分为外存和内存,用于存储数据(使用二进制存储)。
输入设备:用户给计算机发号施令的设备。
输出设备:计算机各个用户汇报结果的设备。
存储空间:硬盘>内存>CPU。
数据访问速度:CPU>内存>硬盘。
二.CPU
一.主要功能
1.进行各种算术运算
2.进行各种逻辑判断
二.CPU是如何执行指令的
所谓的指令,都是要先加载到内存中,然后才能被CPU读取,并执行。
Java程序,写出来的是一个.Java源代码文件,编译得到.class二进制文件(仍然是在硬盘上)运行程序的时候,JVM就会把这个.class加载到内存中,再进一步的翻译成CPU能识别的二进制指令。
这一切不得不又说出冯诺依曼体系结构了,其规定一个程序,指令和依赖的数据,都是要在存储器中保存的CPU如果需要执行,都是要自动地从存储器中读取到对应的指令的。
CPU执行指令的阶段:
1.读指令(把内存中的指令数据,读取到CPU的寄存器中)。
2.解析指令
3.执行指令
指令分为4种,这里小编给演示一种。
先从地址0开始,拿到数据00101110,先把这八位数字分为两组,一组为0010,另外一组是1110,从上表发现0010代表寄存器(LOAD_A),另外一组二进制1110计算出来就是14,这时我们去地址为14的数据拿出来,计算出为3,放入寄存器A中。接着执行地址为1的数据,剩下的数据,小编在这里就不一一演示了,留给大家自行练习。值得一提的是当数据为00000000时,这个代表程序结束了。
三.操作系统
一.组成
操作系统要能够管理好各种硬件资源,让他们能很好的相互配合,也需要管理好各种软件资源,给每个软件都提供稳定的运行环境。
操作系统=内核 + 配套的应用程序。
内核:操作系统最核心的部分。前面提到的“管理”都是在内核里完成的。
配套的应用程序:往往要靠内核提供的一些功能支撑。
操作系统内核会给应用程序提供一系列的API。
举个例子:我们在Java中最简单的System.out,print这个语句,应用程序先执行了print,调用系统提供的API,然后再操作系统内核里,感知到说要执行操作显示器的行为,最后操作系统内核,通过驱动程序,找到对应的硬件设备(显示器),并且执行“显示字符串”操作。
二.进程
进程可以视作操作系统进行资源分配的基本单位。
在操作系统中,通常使用PCB(进程控制块)这样的结构体来描述进程。
在操作系统中,通常会使用链表这样的结构,来把多个PCB串起来。1.我们在任务管理器中查看进程列表就是在遍历链表的每个节点,并且获取显示出对应的信息。2.创建新的进程,就是创建一个对应的新的PCB,并且添加到上述的链表中。3.销毁某个进程:要把链表上对应的PCB节点给删除掉。
接下来我们进一步对PCB结构体进行分析
1.PID
进程的ID/标识符。同一台机器,同一时刻,进程id一定是不同的。
2.内存指针
进程运行时,需要消耗一定的硬件资源,内存就是一个关键的资源。一个程序在运行的时候就会被从硬盘(xxx.exe)加载到内存中。指针会告诉操作系统该进程要运行的指令都在内存的哪些房间里。也告诉系统,该进程的数据,又在哪些房间里。
3.文件描述符表
一个进程运行的时候,会操作一些文件,就通过一个“顺序表”这样的数据结构,记录下当前这个进程,都打开了哪些文件。
三.进程调度
我们在平时使用电脑时,不可能每时每刻都只执行一个程序,所以我们如今的CPU都是多核心的CPU,这时就需要进程调度来协调CPU的使用情况了。
并行执行:一个核心,同一时刻,只能运行一个进程,有16个核心,同一时刻,同时运行16个进程。(完全是同时执行)
并发执行:一个核心,不同时刻,可以执行不同的进程。CPU把总的执行时间切换成若干个小的片段,由于切换的时间极短,所以站在人的视角上是看不出来的。
操作系统会按照并行+并发相互配合,运行所有的进程。
1.进程调度的属性
1.状态
随时可以使用,在操作系统中,该进程就处于“就绪状态”。
处于“阻塞状态”的进程无法在CPU上执行。
2.优先级
CPU对于不同的进程所分配的资源是不同的。
3.上下文
进程在CPU执行过程中,会产生很多的“中间结果”,在进程切换出CPU之前,就需要把这些中间结果(CPU的各种寄存器中的值)保存到PCB上下文里。下次这个进程回到CPU上执行的时候,就需要把之前的存档恢复回来。
4.记账信息
记账信息指在之前CPU对于某个进程分配的资源很少,为了避免某个进程一直吃不到CPU,所以在之后对于这些进程就多分配一点资源。
四.总结
本篇文章给大家介绍了计算机的组成以及CPU是如何执行我们所输入的指令的,并给大家介绍了一下操作系统,以及进程的相关知识。欢迎各位大佬在评论区讨论,感谢大家观看!