目录
一、第一章——操作系统的概念
1、操作系统的概念、功能
(1)层次
(2)总结
2、操作系统的特征(4个)
(1)并发与并行
(2)共享与互斥
(3)虚拟
(4)异步(Asyn)
3、操作系统的发展与分类
(1)实时操作系统
(2)网络、分布式、个人
4、操作系统的运行机制
(1)用户态 & 内核态
(2)总结
5、中断(※※※※※)
(1)外中断 & 内中断
(2)中断程序——内核程序(内核态)
(3)总结
6、系统调用
(1)总结
7、操作系统的内核(结构体系)
(1)大内核 & 微内核
(2)优缺点
(3)总结
8、操作系统(电脑开机做了什么事情)
9、虚拟机
(1)一个物理机上(可以有多个操作系统)
(2)虚拟机的分配方式
一、第一章——操作系统的概念
1、操作系统的概念、功能
(1)层次
(2)总结
2、操作系统的特征(4个)
(1)并发与并行
并发——时间段(服务器——高并发:对请求接口可以实现很多的应答~)
并行——时刻(同时进行——多线程——多核CPU)
(2)共享与互斥
共享——可以同时使用(资源)
互斥——只能让一个人使用(数据一致性)
互相依靠(共享 & 并发)
(3)虚拟
(4)异步(Asyn)
有并发,才有异步~
那必然是多线程啦~(单独开一个线程,实现异步操作,不会阻塞主线程)
1. 同步(Synchronous):同步指的是任务按照顺序依次执行,并且每个任务必须等待前一个任务完成后才能开始执行。在同步模式下,任务之间的执行是阻塞的,即一个任务的执行会阻碍其他任务的进行,直到该任务完成。
2. 异步(Asynchronous):异步指的是任务可以并发或并行地执行,任务之间相互独立。在异步模式下,任务的执行是非阻塞的,即一个任务的执行不会等待其他任务的完成,而是通过回调函数、事件监听等机制,实现任务的并发执行和结果的返回。
异步编程通常用于处理涉及网络请求、文件操作、数据库查询等需要等待耗时操作的情况,以提高系统性能和资源利用率。
异步编程一般采用事件驱动、回调函数、协程等技术来实现。
- 同步编程更加直观和易于理解,但在处理大量并发任务或需要等待的情况下,可能导致程序性能下降和资源浪费。
- 异步编程可以更好地利用系统资源,提高程序的效率和响应性。
- 选择使用同步还是异步取决于具体的应用场景和需求。
- 在编程中,可以根据任务的特性选择适合的模式,或者将同步和异步结合起来,灵活地处理不同的任务和情况。
3、操作系统的发展与分类
(1)实时操作系统
(2)网络、分布式、个人
4、操作系统的运行机制
(1)用户态 & 内核态
当用户态要“越权”时,硬件CPU会检测出问题!自动变态,并且中断程序!
(2)总结
5、中断(※※※※※)
(1)外中断 & 内中断
内中断——异常(缺页、指令非法、陷入指令-系统调用)
外中断——程序处理(IO、时钟)
(2)中断程序——内核程序(内核态)
硬件和软件都可以实现中断——计算机组成原理有讲
【中断向量表】——查询之后——就知道该执行怎么样的【中断处理程序】
(3)总结
6、系统调用
陷入指令——系统调用
由操作系统提供对应的接口,让应用程序可以使用该指令
当CPU遇到【陷入指令】时,就会…(应用程序把控制权还给了操作系统)
Unix 确实是用【C 语言】编写的,而且是世界上第一个用 C 语言编写的操作系统。
【Windows操作系统】是用【C和汇编语言】开发的
现在【Windows操作系统】正在使用【Rust语言】重构
Windows还支持使用其他编程语言编写应用程序,如C++、C#和Visual Basic等。
(1)总结
7、操作系统的内核(结构体系)
Ubuntu和CentOS都是Linux内核
他们主要开发的是——非内核功能(GUI、命令等)
(1)大内核 & 微内核
为什么是大内核?——因为好几个功能都被划分到了内核态
微内核——状态变换更多
(2)优缺点
大:快(难以维护)
微:慢(模块化、方便维护)
(3)总结
8、操作系统(电脑开机做了什么事情)
首先,我们已经通过BIOS引导,安装了一个操作系统,并且划分了分区,还安装了软件
现在开始开机:
- CPU读取磁盘信息(执行主引导程序——硬件自检)
- 执行【磁盘引导程序+分区表】
- 读取操作系统的初始化程序
- 执行操作系统的初始化程序——完成初始化
你的大致描述是正确的,但还可以添加一些细节。以下是对操作系统启动过程的修正和补充:
- 电源开启后,计算机进行电源自检,确保各硬件设备正常。
- 主板上的BIOS芯片被访问,执行Basic Input/Output System (BIOS)程序。BIOS负责初始化各硬件设备,并进行一系列自检,包括检查RAM、显示适配器等。
- BIOS通过读取硬盘驱动器的引导区(Master Boot Record,MBR)来加载引导程序。MBR位于分区表的第一个扇区,其中存储了引导程序的位置和大小信息。
- 引导程序加载操作系统的引导加载程序(bootloader),如GRUB或Windows Boot Manager。引导加载程序位于磁盘的特定位置,它负责加载操作系统内核并将控制权转交给它。
- 操作系统内核被加载入内存,并开始执行初始化程序。初始化程序负责配置系统环境、加载设备驱动程序和初始化各种子系统。
- 初始化过程通常涉及加载一些核心组件、建立内存管理和进程管理结构,以及准备其他必要的系统资源。
- 一旦初始化完成,操作系统进入可用状态,用户可以进行交互,并且其他应用程序可以在操作系统上运行。
需要注意的是,不同的操作系统和计算机架构可能会有所不同,但基本过程大致相似。此外,硬盘分区和软件安装的细节通常在操作系统初始化之后完成。
自检——找到引导程序——加载——执行
9、虚拟机
(1)一个物理机上(可以有多个操作系统)
类似docker
(2)虚拟机的分配方式
第一类——直接运行在物理资源上(权限高、速度快、可安装多个)
第一类——我搞一个双系统(一个Windows、一个Ubuntu)
第二类——在一个操作系统的基础上运行的(速度慢、权限低、一个都够呛~)
第二类——我在Windows上安装一个乌邦图的VMM虚拟机
第二类——方便迁移——可以打包——然后供别人使用(类似docker)
- 双系统:你可以在一台计算机上安装两个不同的操作系统,如Windows和Ubuntu,并且可以在开机时选择进入哪个操作系统。
- VMM虚拟机:你可以在Windows操作系统上安装虚拟机软件,如VMware或VirtualBox,并在虚拟机中安装Ubuntu操作系统。虚拟机可以模拟出一个独立的计算环境,在其中运行另一个操作系统。
长路漫漫,我越学,感觉越发吃力,是因为正反馈来得不够么?不行,我得继续努力,星光不负赶路人!你还记得三年前么?你那时还是一个小白,什么都不懂,但有一腔热血!三年来,你的热血还在么?你的一切!!!就看今朝了!!!坚持下去,别放弃,你一定得成功!你必须得成功啊!——总之,加油啊!!!咬牙挺住!
时间:2023年8月14日15:09:25