🎉作者简介:👓:{博主在读机器人研究生,目前研一。对计算机后端感兴趣,喜欢c++,go,python,目前熟悉c++,go语言,数据库,网络编程,了解分布式等相关内容}
📃个人主页: 小呆鸟_coding
🔎支持: 如果觉得博主的文章还不错或者您用得到的话,可以免费的关注一下博主,如果三连收藏支持就更好啦,👍就是给予我最大的支持!🎁
💛本文摘要💛
本专栏主要讲解操作系统的相关知识,包括内存管理、虚拟内存、IO多路复用、进线程、死锁、磁盘调度 本节主要讲解 操作系统概述
🐋1.介绍
- 基本概述及原理
- 操作系统介绍
- 中断及系统调用
- 内存管理
- 进程及线程
- 调度
- 同步
- 文件系统
- I/O子系统
🐋2. 什么是操作系统
用户角度:操作系统是一个控制软件
- 管理应用程序
- 为应用程序提供服务
- 杀死应用程序
程序角度:操作系统是资源管理器
- 管理外设、分配资源
抽象
- 将CPU抽象成进程
- 将磁盘抽象成文件
- 将内存抽象成地址空间
🐻2.1 操作系统层次
- 位于硬件之上,应用程序之下。
🐻2.2 操作系统的界面和内核
- Linux Windows Android 的界面属于外壳(Shell) ,而不是内核(kernel)。操作系统研究的是内核,处于Shell之下。
🐻2.3 操作系统内部组件
- CPU调度器
- 物理内存管理
- 虚拟内存管理
- 文件系统管理
- 中断处理与设备驱动
cpu: 主要是cpu的调度和进程线程的管理
内存: 物理内存和虚拟内存,物理内存就是实际的内存,虚拟内存为应用提供一个相对独立的空间(在有限的物理内存之上,虚拟出一个更大的,更安全的环境)
文件: disk是以磁盘块作为一个读写的基本单位,访问比较底层不方便,于是在上面抽象成文件。
中断处理: 它是直接与底层硬件交流
🐻2.4操作系统特征
并发
- 一段时间内运行多个进程(并行 : 一个时间点运行多个进程,一般要求有多个CPU)
- 需要OS管理和调度
共享
- “同时”共享
- 互斥共享
虚拟
- 利用多道程序设计技术,让每一个用户觉得的有一个计算机专门为他服务
异步
- 程序是走走停停,而不是一直运行,
但是不管怎么走,只要运行环境相同,os要保证运行的结果也相同
- 程序是走走停停,而不是一直运行,
🐋3. 操作系统历史
- 早起计算机使用纸带传输程序和数据,os只起到加载作用
- 批处理阶段(一个程序一个程序的运行,每次都需要从外面导入程序)
- CPU执行多个程序。此时不需要将要跑的程序,从磁盘放到内存中,大大减少IO的开销(直接全部都放到内存中)
- 当一个程序运行阶段,可能要进行IO操作,此时时间非常长,这时就可以运行另一个程序,当程序1完成IO操作后,就进行中断,停止程序25,继续进行程序1
- 提高交互性,上述的操作不需要人参与,交互性差,此时出现
分时系统
(通过分时使得不同的程序都有时间去执行工作。),目前计算机是1/1000秒产生一次分时。(而分时主要靠时钟定期产生中断)
- 多核CPU
- 分布式操作系统
🐋4. 操作系统结构
MS-DOS
- 不分模块的单体内核(
单体意味着通过函数调用实现(紧耦合)
)
微内核
- 尽可能把内核功能移动到用户空间
(在操作系统内核中放基本功能(松耦合),其他的文件系统,内存管理等都放在外面以进程形式存在,进程与进程之间通过内核消息传递进制进行通信)