操作系统
操作系统
1.硬件组成
核心:冯诺依曼体系结构
组成:
- 输入设备: 键盘、鼠标、扫描仪等
- 中央处理器(CPU):运算器和控制器
- 输出设备:显示器、打印机等
特点:
- CPU 和输入设备或输出设备之不能直接交互,必要依靠中间的储存部分(内存)
内存中数据不能持久化,电脑重启后就没了,磁盘中的数据可以持久化
2. 软件OS
2.1 什么是操作系统?
任何计算机系统都包含一个基本的程序集合,称为操作系统(OS)。笼统的理解,操作系统包括:
- 内核(进程管理,内存管理,文件管理,驱动管理)
- 其他程序(例如函数库,shell程序等等)
2.1 怎么理解操作系统?
类比银行系统和操作系统的:
区别 | 银行系统 | 操作系统 |
---|---|---|
业务 | 存取款、贷款、转账 | 基本API的调用 |
提供服务的方式 | 以窗口的形式对外提供各种服务 | 以接口的形式对用户提供各种服务 |
管理者的角色 | 通过硬件设备负责人进行硬件管理 , 如:电脑是否正常工作,工作环境是否干净等也要在系统内部进行常规的业务管理,比如:传款接待等 | 通过硬件设备驱动进行硬件管理,比如:硬盘当前是否正常工作,网卡是否收到数据等。在系统内部进行常规的软件业务管理,比如:文件管理、去顶管理、进程管理 |
执行者的角色 | 硬件设备的负责人 | 各种负责硬件正常进行基本工作的软件程序、驱动程序 |
被管理者的角色 | 银行安保设备、调度设备、货币设备、员工公寓等其他硬件设备 | 各种计算机硬件、整体以冯诺依曼框架组织、如CPU、内存、网卡、硬盘等 |
总的来说:
- 管理者的任务分为两种:硬件管理和软件管理
- 按照目标对象分两种:对内管理和对外的业务管理
2.3 为什么要设计OS
设计操作系统的目的:
- 与硬件交互,管理所有的软硬件资源(对内且对下)
- 为用户程序(应用程序)提供一个良好的执行环境(对外且对上)
3.进程
3.1 什么是进程
一个执行任务就说一个进程。
可执行文件(.exe) 不等于进程
但当运行一个exe时候就会产生一个进程
编写一个java进程:
public class HelloJava {
public static void main(String[] args) throws InterruptedException {
Thread.sleep(2*60*1000); // 等待 2分钟
}
}
在cmd中编译并运行:
javac Test.java
java Test
打开任务管理器中查该进程:
3.2 进程的本质
进程在操作系统中是由一个链表组成的多个 PCB(进程管理模块)结构体
每次运行exe文件时相当于在内核中PCB链表中把这个exe文件
转换成了一个 PCB 结构体
PCB(进程管理模块)结构体:
-
PID (主键ID、身份识别)
PID 是进程的身份ID,是唯一的,但是重启后 PID 就变了
[外链图片转存失败,源站可能有防盗在这里插入!链机制,建描述]议将图片上https://传(imbl.csdnimg.cn/202CGjT10502010848190.285)(https://img-哇ng)] -
状态信息(就绪、运行、堵塞、终止)
-
优先级 (用于资源分配)
-
记账信息(记录进程运行次数,把防止CPU分配资源不均)
-
一组指针(进程需要使用的资源)
-
上下文信息(进程运行时是分时运行的,当分配到CPU 资源时执行,然后没有CPU资源之后, 暂时保存当前状态,等待下一次执行,这个过程叫做一个上下文)
- 就是一个进程在执行的时候,CPU的所有寄存器中的值、进程的状态以及堆栈上的内容。
- 切换时需要保存当前进程的所有状态,即保存当前进程的进程上下文,以便再次执行该进程时,能 够恢复切换时的状态,继续执行。
3.3 时间片
操作系统的任务调度是猜用时间片轮转的抢占式调度方式,当一个任务执行一小段时间后强制暂停去执行下一个任务,每个任务轮流执行,任务执行的一小段时间就叫做时间片。
这样每个任务都能得到执行,由于CPU的执行效率非常高,时间片非常短,在各个任务之间快速地切换,给人的感觉就是多个任务在“同时进行”,这也就是我们所说的并发。
3.4 并发与并行
- 并发:多个进程在一个CPU下采用时间片轮转的方式,在一段时间之内,让多个进程都得以推进, 称之为并发。
- 并行:多个进程在多个CPU下分别,同时进行运行,这称之为并行。
并发相当于:一个银行只有一个窗口,工作人员轮流给每个人办业务,但是只给每个人 1 分钟,时间一到保存进度,然后接着下一个人上一次的保存的进度继续办理业务。
并行相当于:银行有很多窗口,同时给所有人办理业务。
3.5 内核态与用户态
操作系统对执行权限进行分级:用户态和内核态。
- 操作系统内核作为直接控制硬件设备的底层软件,权限最高,称为内核态,或核心 态。
- 用户程序的权限最低,称为用户态。
举个例子:
张三去银行办业务,在表上填写自己写姓名,电话,邮箱等等,做着自己的事情,这叫做用户态,而张三通过窗口的工作人员,把自己的需求给工作人员,自此,张三在等,银行工作人员在忙,对张三来讲,就叫做陷入内核。
内核态就是工作人员在帮你办理业务时的状态