# 操作系统定义
操作系统(Operating System)是一组主管并控制计算机操作、运用和运行硬件、软件资源和提供公共服务来组织用户交互的相互关联的系统软件应用程序,同时也是计算机系统的内核和基石。
操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入与输出设备、操作网络与管理文件系统等基本事务。
# 进程
进程是:操作系统进行
资源分配
的基本单位
# 线程
线程是:操作系统进行
资源调度
的基本单位
# 内存
内存是:计算机的随机访问存储器(RAM),是计算机的主要存储资源之一,用于存储计算机运行时正在使用或即将使用的数据和指令。
内存具有:易失性(计算机关闭时内存中的数据会丢失)、访问速度快等特点
# 虚拟内存(地址空间)
虚拟内存是:虚拟内存是操作系统对物理内存的抽象,是一种内存管理技术,允许操作系统将硬盘空间用作临时的 RAM 来使用
虚拟内存能够运行比物理内存更多的内存的程序,同时也为操作系统提供了更大的地址空间,虚拟内存的关键有:
- 地址转换
- 分页
- 页面置换算法
- 硬盘空间使用
- 性能影响
- 内存管理
# 文件
文件是:操作系统对物理磁盘的抽象,是一个基本的数据存储单元,用于在计算机系统或存储设备上保存数据。
# shell
shell 是:一个程序,可以从键盘中获取命令并将其提供给操作系统进行执行。
# GUI
GUI 是:一个用户界面,用户可以通过图形或图标指示符与电子设备进行交互
# 计算机架构
计算机架构是:计算机体系结构是描述计算机系统功能,组织和实现的一组规则和方法,主要包括:指令集、内存管理、I/O 和总线结构等。
# 多处理系统
多处理系统是:指计算机同时运行多个程序的能力。
# 程序计数器
程序计数器是:一个 CPU 中的寄存器,用于指示计算机在其程序序列中的位置。
# 多线程
多线程是:指一个软件或硬件上实现多线程并发执行的技术。
# CPU 核心(core)
CPU 核心是:CPU 的大脑,它接收指令,并执行计算或运算以满足这些指令,一个 CPU 可以有多个内核。
# 图形处理器(视觉处理器)
图形处理器是:
# 缓存命中
当应用程序或软件请求数据时,会首先发生缓存命中
# RAM(随机存取存储器、主存)
RAM 是:与 CPU 直接交换数据的内存存储器
# ROM(只读存储器)
ROM 是:一助攻半导体存储器,特点是一旦存储数据就无法改变或删除
# 驱动程序
驱动程序是:一个允许高级别电脑软件与硬件交互的程序
# USB
USB 是:连接计算机系统与外部设备的一种串口总线标准,也是一种输入输出接口的技术规范
# 地址空间
地址空间是:内存中可供程序或进程使用的有效地址规范
# 进程间通信
进程间通信是:指至少两个进程或线程间传送数据或信号的一些技术或方法
进程间的通信方式有:管道、消息队列、共享内存、信号量、信号、套接字
- 管道
管道一种半双工的通信方式,数据只能单向流动,管道实质上是一个内核缓冲区,且以先进先出的方式存取数据。
管道分为命名管道和匿名管道
匿名管道它的优点是:简单方便;缺点是:
因为管道局限于单向通信且缓冲区有限,所以它的通信效率低,不适合进程间频繁地交换数据
只能在父子进程间使用
命名管道,和匿名管道相比,它的优点是:可以实现任意关系的进程间的通信;缺点是:
长期存在系统中,使用不当容易出错 - 消息队列
消息队列是保存在内核中的消息链表
优点:可以实现任意进程间的通信,并且通过系统调用函数来实现消息发送和接收之间的同步,无需考虑同步问题
缺点:
消息队列不适合比较大数据的传输,因为每个消息体都有最大长度限制,同时全体消息也有总长度上限
通信过程中,存在用户态与内核态之间的数据拷贝开销 - 共享内存
共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问
优点:进程可以直接读写这块内存而不需要进行数据拷贝,提高效率
缺点:
多个进程同时修改同一个共享内存,会发生冲突
共享内存只能在同一计算机系统中共享 - 信号量
信号量是一个整型的计数器,主要用于实现进程间的互斥与同步,而不是用于缓存进程间通信的数据
优点:信号量解决了止多进程竞争共享资源,而造成数据的错乱的
缺点:信号量有限 - 信号
信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生 - 套接字
套接字通信不仅可以跨网络与不同主机的进程通信,还可以在同主机进程通信
优点:
传输数据为字节级,传输数据可自定义
适合客户端和服务端之间信息实时交互
可以加密,数据安全性强
缺点:需对传输的数据进行解析,转化成应用级的数据
# 目录(文件夹)
目录或文件夹是:指一个装有数字文件系统的虚拟容器
# 路径
路径是:一种电脑文件或目录的名称的通用表现形式,它指向文件系统上的一个唯一位置
# 根目录
根目录是:
# 文件描述符
文件描述符是一个用于表述指向文件的引用的抽象化概念
# 客户端
客户端是:访问服务器提供的服务的计算硬件或软件
# 服务端
服务端是:为其他程序或设备提供功能的计算机程序或设备