目录
1.什么是操作系统:
2.操作系统有哪些功能?
3.常见的操作系统有哪些
4.用户态和内核态
5.内核态权限这么高,为什么不还要用户态?
6.用户态和内核态是如何切换的?
7.系统调用
8,系统调用的过程
1.什么是操作系统:
(1)操作系统(OS)是管理计算机软硬件资源的程序,运行在你计算机上的所有软件都通过操作系统调用内存和磁盘等硬件
(2)操作系统是硬件管理员,屏蔽了硬件的复杂性
(3)操作系统的核心是内核(Kernel),负责内存,硬件,文件系统,以及应用程序管理.
区分内核和CPU:
1.内核属于操作系统层面,CPU属于硬件
2.CPU提供运算和处理指令的能力,内核负责系统管理
2.操作系统有哪些功能?
(1)进程和线程的管理:进程的创建,撤销,阻塞,唤醒,进程间的通信等
在Window系统直观的表现是任务资源管理器,可以看到同一个软件,却分出了多个不同的线程
Java的JUC包和操作系统线程之间的关系:
JUC构建在Java线程模型之上,而Java线程最终依赖操作系统
(2).存储管理:内存的分配和管理,外存(磁盘)的分配和管理
(3).文件管理:文件的创建,读写,及删除等
最直接的体现是Window资源管理器,新建,打开,编辑,删除文件
(4)设备管理
完成设备(输入输出设备和外部存储设备等)的请求或释放,以及设备启动等功能
这里的输入输出设备有键盘,显示器等,外部存储设备有U哦按,磁带等
设备启动过程:(以U盘为例)
设备检测,设备驱动加载,设备初始化和设备就绪
(5)网络管理
操作系统提供计算机网络的使用
(6)安全管理
用户的身份认证,访问控制,文件加密等
3.常见的操作系统有哪些
window(打游戏好用),linux(编程),macos(编程体验和linux相当,还有自己的苹果生态)
4.用户态和内核态
进程在系统上的运行分为两个级别
(1).用户态:读取用户程序的数据,较低权限
(2).内核态:几乎可以访问计算机的任何资源.当操作系统接收到系统调用请求时,就会从用户态切换到内核态,执行相应的系统调用并将结果返回给进程后,切换回用户态
开销大,需要进行一系列上下文切换和权限检查,不利于系统的性能和稳定性,因此尽量少的使用内核态
5.内核态权限这么高,为什么不还要用户态?
(1).一些指令比较危险,比如内存分配,设置时钟,IO处理等,这些指令需要被限制在内核中运行,也叫特权指令
(2).只有内核态,所有的程序必须共享系统资源,资源的竞争和冲突会影响系统性能和效率
6.用户态和内核态是如何切换的?
1.系统调用,为了实现功能主动切换到内核态
2.中断:当外围设备完成用户请求的操作后,会向CPU发送相应的中断信号,这时CPU会暂停执行下一条即将执行的指令转而去执行与中断程序相对应的处理程序
3异常:CPU在执行用户态下的程序时,发生了某些不可预知的异常,会切换到处理次异常的内核相关程序中去
7.系统调用
我们运行的程序基本都是用户态,当需要访问系统资源时需要通过系统调用向操作系统提出服务请求并让其代为完成,包括内存管理,存储管理,进程管理,文件管理,网络管理等
8,系统调用的过程
1用户态因为权限不足发起系统调用
2,发生中断后,CPU停止执行当前程序跳转到中断处理程序开始执行内核程勋
3.系统调用完成后操作系统使用特权指令切换回用户态,回复用户态的上下文,继续执行用户程序包