目录
操作系统初识
1.冯诺依曼体系结构
注意事项:
输入设备、输出设备和CPU不能直接进行交互,他们只能直接和内存打交道
内存VS外存
- 内存一般比较小,磁盘一般比较大
- 造价不同,内存造价比较贵,磁盘便宜
- 内存是以纳秒级别度,磁盘读写单位是微秒;内存操作速度比磁盘快很多
- 内存不能进行持久化,磁盘可以持久化
2.操作系统
任何计算机系统都包含一个基本的程序集合,称为操作系统(OS
)。笼统的理解,操作系统包括:
- 内核(进程管理,内存管理,文件管理,驱动管理)
- 其他程序(例如函数库,shell程序等等)
3.进程
3.1进程的初步认识
进程是操作系统分配资源(内存/CPU),进程是程序组成的时间单位
1.进程≠可执行文件
2.当把一个可执行文件加载到内存中,运行起来之后,可执行文件就变成了一个进程。
对于操作系统来说,一个任务就是一个进程(Process
)。程序的一个执行实例,正在执行的程序。
按照下面步骤可以查看系统进程:
手写并运行代码
- 记事本创建一个类和 mian 方法
- 将 .java 代码成 .class(字节码) 【javac xxx.java】
- 运行java【java xxx】
- 运行之后启动Java程序(进程),可以在任务管理器中查看到该进程
进程组成:
- PID(代表这个进程的代号)
- 状态(新建、就绪、运行中、终止、阻塞)
就绪:进程处于可运行的状态,只是 CPU 时间片还没有轮转到该进程,则该进程处于就绪状态。运行:进程处于可运行的状态,且 CPU 时间片轮转到该进程,该进程正在执行代码,则该进程处于运行状态。阻塞:进程不具备运行条件,正在等待某个事件的完成。- 优先级
- 一组指针(资源)
- 记账信息(解决资源分派不均的问题)
- 上下文(当没有时间片时需要保持状态等待下次执行,这个暂存状态和后面的运行状态就是一个上下文)
3.2时间片
操作系统(如
Windows
、
Linux
)的任务调度是采用
时间片轮转
的抢占式调度方式,也就是说一个任务执行一小段时间后强制暂停去执行下一个任务,每个任务轮流执行。
任务执行的一小段时间叫做
时间片
,任务正在执行时的状态叫
运行状态
,任务执行一段时间后强制暂停 去执行下一个任务,被暂停的任务就处于就绪状态
等待下一个属于它的时间片的到来。 这样每个任务都能得到执行,由于CPU
的执行效率非常高,时间片非常短,在各个任务之间快速地切 换,给人的感觉就是多个任务在“
同时进行
”
,这也就是我们所说的
并发
。
3.3并发和并行
并发编程:所有程序 轮流执行任务。 多个进程在一个 CPU 下采用时间片轮转的方式,在一段时间之内,让多个进程都得以推进,称之为并发。并行编程:所有程序 同时执行任务。 多个进程在多个 CPU 下分别,同时进行运行,这称之为并行。
3.4内核态与用户态
- 操作系统内核作为直接控制硬件设备的底层软件,权限最高,称为内核态,或核心态。
- 用户程序的权限最低,称为用户态。
3.5 进程中的上下文
上下文简单说来就是一个环境,进程在时间片轮转切换时,由于每个进程运行环境不同,就涉及到转换前后的上下文环境的切换
就是一个进程在执行的时候,
CPU
的所有寄存器中的值、进程的状态以及堆栈上的内容。切换时需要保存当前进程的所有状态,即保存当前进程的进程上下文,以便再次执行该进程时,能够恢复切换时的状态,继续执行。
3.6 进程状态
就绪:进程处于可运行的状态,只是
CPU
时间片还没有轮转到该进程,则该进程处于就绪状态。
运行:进程处于可运行的状态,且
CPU
时间片轮转到该进程,该进程正在执行代码,则该进程处于运行状态。
阻塞:进程不具备运行条件,正在等待某个事件的完成。