冯诺依曼体系结构
- 输入设备: 接受某个动作,转变成执行指令。从某设备传输数据到内存。硬盘是比较特殊的输入输出设备。
- 输出设备:数据输出到某个设备,比如显示器。 网卡是既是输入设备也是输出设备。网卡是通过驱动程序来管理。
- 存储器:内存
- CPU:执行指令的设备,可以执行运算操作,数据操作,以及逻辑操作,可分为运算器和控制器。控制器:来控制运算器来进行操作。 运算器:进行操作。
数据读写效率(在那个地方的效率最快)
- 网络主机< 硬盘 (程序代码,文件) < 内存(程序执行,程序执行到内存中。有些语言运行的时候需要翻译成机器码。java是编译成class字节码,运行在jvm,运行在jvm的时候就会翻译成机器码) < cpu告诉缓存(基于机器码,cpu指令去执行,cpu对数据操纵会使用cpu缓存用来提高效率)
进程
-
程序是我们硬盘上静态的可执行文件(可执行你的程序代码),系统上安装好的可以被执行的资源文件。 进程就是程序运行起来之后表现。进程是系统(cpu)分配资源的最小单位.
-
java代码的运行过程
xx.java文件(存储在硬盘上) ----> 编译(java.c)成 .class文件(硬盘) -----> (java.xx)运行java.exe程序,xx作为程序传入参数 ----> 运行java.exe程序代码 ----> 初始化JVM参数,创建一个JVM,启动JVM中很多的多线程,执行Java代码中的main方法,(虚拟机中运行 .class 字节码文件,翻译成为机器码再去运行 )
-
进程的时间片
轮转调度算法:一个cpu启动了多个进程,每一个进程的调度执行都需要占用cpu的资源,从系统执行一个进程A,执行一段时间之后调度到进程B。每一个进程执行的时间都特别快,我们是无法观察到的,所以我们看起来是系统在同时执行多个进程,但其实有一个CPU的时间片的轮转调度,其实在一个时间点内一个CPU只能执行一个进程。任务执行的一小段时间称为时间片。
并发: 多个进程在一个CPU下采用时间片轮转的方式,在一段时间内让多个进程都得以推进,一个时间点只可以执行一个任务。
并行:同一时间点下多个进程在多个CPU下分别,同时进行运行。
-
系统调度进程就是进程在运行态和就绪态之间的转变。
-
进程的上下文 : 时间片轮转调度。进程切换出去的时候要保存信息到寄存器中,之后进程回复的时候会把数据从寄存器中取出来恢复。 CPU寄存器中存储的进程信息: 值,进程状态,程序计数器等。
内核态与用户态
- 内核态: 操作系统内核作为直接控制硬件设备的底层软件,权限较高。设计到安全相关的指令,权限要求比较高,比较系统的接口的调用
- 用户态:开发给用户程序可以直接让某设备执行的操作,不存在安全隐患。
- 用户态和内核态可以转换,比较耗时,需要向系统申请。
BIO和NIO
- BIO : 同步阻塞IO,执行到某行代码的时候挂起,系统在内执行IO操作。比如从硬盘/网卡读取IO数据。有时还需要内核态和用户态的转换。
- NIO : 非同步阻塞IO。