Gokong Space | 行空空间 - 2026年5月
type: channel
link: https://gokong.space/2026/05/
description: 在自由的原野上奔跑，于璀璨的星河里穿行。
items: 『操作系统』期末复习
items: Good First Issue 指南

『操作系统』期末复习
type: item
date: 2026-05-25T17:10:00+08:00
description: 本文页码均指课件页码操作系统概述一、核心主线操作系统是位于硬件之上、其他软件之下的系统软件，它负责管理计算机软硬件资源，并为用户和应用程序提供方便、安全、高效的服务。也就是说，操作系统既是：资源管理者：管理 CPU、内存、设备、文件等资源。 用户接口：提供命令行、图形界面、系统调用等使用方式。 虚拟机：把复杂硬件包装成更易用的逻辑资源，比如虚拟 CPU、虚拟内存、虚拟设备。 控制程序：通过中断、调度、保护机制控制程序运行。二、操作系统的概念1. 操作系统的地位课件中强调：操作系统位于 硬件层 HAL 之上，位于 其他系统软件和应用软件之下。可以理解成：应用软件 系统软件 / 系统库 操作系统 硬件 / HAL应用程序通常不会直接操作硬件，而是通过 库函数 或 系统调用 请求操作系统完成底层工作。例如：printf("Hello");表面上是 C 语言函数，实际上最终要通过操作系统完成显示设备或终端输出。2. 操作系统的作用主要有两类：第一，管理资源：资源操作系统做什么CPU调度多个程序运行内存分配、保护、共享、扩充设备分配设备、驱动设备、管理 I/O文件组织文件系统，支持读写、目录、权限第二，提供服务接口：包括 API、GUI、命令行、作业控制语言 JCL 等。3. 操作系统定义课件中的定义可以背下来：操作系统是位于硬件层之上、所有其他软件层之下的系统软件，通过它管理系统中各种软硬件资源，使它们被充分利用，并方便用户使用计算机系统。考试中如果问“什么是操作系统”，答这个定义基本够用。三、操作系统的发展历史这一部分容易考“发展阶段”和“各阶段特点”。1. 手工操作阶段时间大约是 20 世纪 40 年代，无操作系统。特点：程序员手工操作机器； 使用纸带、卡片、开关、接线板； CPU 经常等待人操作，效率极低； 资源被一个作业独占。重点理解：机器越来越快后，人工操作时间反而成了主要瓶颈。2. 批处理阶段为了解决人工干预太多的问题，出现批处理。分为：联机批处理：作业从读卡机进入计算机，按批处理执行。优点是减少人工干预，缺点是 I/O 慢，主机等待时间长。脱机批处理：使用卫星机完成输入输出转换，主机专心计算。优点是减少主机等待 I/O，缺点是需要人工搬磁带和额外设备。3. 执行系统阶段出现了 通道 和 中断 技术。通道可以理解为专门负责 I/O 的处理机，它接受 CPU 委托执行 I/O 操作。这样 CPU 和 I/O 可以并行工作。这一阶段出现了 SPOOLing 假脱机技术。4. 多道批处理系统这是操作系统走向成熟的重要标志。核心思想：内存中同时放入多个作业，当一个作业等待 I/O 时，CPU 可以去执行另一个作业。优点：提高 CPU 利用率； 提高系统吞吐量； 适合大型科学计算任务。但它也带来了一系列新问题：互斥、同步、通信、死锁、饥饿等。这些正是后面几章重点内容。5. 分时系统分时系统面向交互式用户。特点：多用户通过终端连接主机； 系统轮流给每个用户分配 CPU 时间片； 用户感觉自己独占一台机器。典型系统：CTSS、Multics、UNIX。6. 实时系统实时系统强调 及时响应 和 高可靠性。应用场景：工业控制、军事控制、医疗控制、航班订票、联机检索等。重点：实时系统不是单纯追求“快”，而是要求 在规定时间内完成响应。7. 通用操作系统通用操作系统把批处理、分时、实时等功能结合起来。常见模式：前台分时 + 后台批处理； 前台实时 + 后台批处理。四、操作系统的四大特性这部分常考简答题。1. 并发性多个程序在宏观上同时向前推进。注意区分：概念含义并发宏观同时，微观交替并行真正同时，需要多个处理器或多个核心单 CPU 上可以有并发，但不能真正并行执行多个程序。2. 共享性多个程序共同使用系统资源。例如：多个程序共享 CPU； 多个进程共享内存中的某些区域； 多个用户共享打印机； 多个进程共享文件。共享必须由操作系统协调，否则会产生冲突。3. 异步性程序推进速度不可预知。原因是：多个程序交替运行； 中断随机发生； 调度时机不确定。所以程序执行顺序并不完全由程序员控制，而受中断、调度、资源状态影响。4. 虚拟性通过某种技术把一个物理实体变成多个逻辑实体。例子：物理实体虚拟效果一个 CPU多个虚拟 CPU内存 + 外存更大的虚拟存储空间独占设备可共享的虚拟设备这一点非常重要，后面虚拟存储、虚拟设备都会继续展开。五、操作系统的主要类型1. 多道批处理系统关键词：多道、成批、吞吐量、资源利用率。适合非交互、大批量计算任务。重点概念：SPOOLing。SPOOLing 又叫假脱机技术或排队转储技术，由输入井、输出井和常驻 I/O 进程组成。它可以把独占设备改造成共享设备，实现虚拟设备功能。2. 分时操作系统关键词：多路性、交互性、独占性。多路…

Good First Issue 指南
type: item
date: 2026-05-11T22:00:00+08:00
description: Good First IssueGood = 友好的、适合新手的 First = 给第一次做开源贡献的人 good-first-issue ： 适合新手第一次贡献的优质入门任务。它是开源社区吸引新成员、降低入门门槛的重要机制，也是开启开源贡献之旅的最佳起点。声明这里首先演示 HTTPS 方式master / main 请根据实际情况选择不同环境或系统的命令不一定相同，本文仅作为参考。基础准备环境配置# 安装 git、vim sudo dnf install -y git vim git-lfs # 配置Git全局信息（与 AtomGit/GitHub 账号一致） git config --global user.name "用户名" git config --global user.email "注册邮箱" # 查看配置是否生效 git config --list 访问令牌在个人设置→安全设置之类的地方找到访问令牌，生成新令牌（勾选 repo 权限），复制并保存生成的令牌字符串（该字符串只显示一次，务必保存好）ForkFork 相当于「把官方仓库复制一份到自己的账号下」，是参与项目的第一步。 页面右上角的 Fork 按钮，选择 Fork 到自己的账号下。Clone克隆 = 「把远程仓库下载到本地」，必须克隆「自己 Fork 后的仓库」，而非官方仓库。打开本地终端；进入想存放代码的文件夹（比如 cd ~/code，表示进入用户目录下的 code 文件夹）；执行克隆命令（替换成自己 Fork 后的仓库地址）git clone https://******.git 进入克隆后的仓库目录cd 仓库名配置上游官方仓库（该动作仅需 1 次）目的是让本地仓库「知道官方仓库的地址」，方便后续同步。确保终端在仓库目录下（已执行 cd 仓库名 ）；执行添加命令git remote add upstream 官方仓库地址验证是否添加成功git remote -v 正常的输出大概是： origin https://***.com/我的账号/***.git (fetch) origin https://***.com/我的账号/***.git (push) upstream https://***.com/官方账号/***.git (fetch) upstream https://***.com/官方账号/***.git (push)同步官方仓库的最新代码官方仓库会不断更新，每次本地开发前，先同步上游代码，避免本地的修改和官方代码冲突。确保当前在仓库根目录；拉取官方仓库的最新代码（只下载，不修改本地文件）git fetch upstream 切换到本地主分支（master/main）git checkout master合并官方最新代码到本地主分支（最终同步）git merge upstream/master验证同步成功git log --oneline # 同步上游代码后，验证本地是否是官方最新版 创建并切换到开发分支严禁在主分支（master/main）修改代码，因为这会导致代码混乱。 所以需要新建一个专属分支用来修改/更新，任务完成后直接提交这个分支即可。分支命名规范格式：issue-编号-简单描述示例：修复文档：issue-1234-fix-docs修复错别字：issue-5678-fix-typo完善注释：issue-9012-add-commentIssue 数字编号方便之后关联任务创建 + 切换分支git checkout -b issue-1234-fix-docs checkout：切换分支-b：create branch（创建新分支）自定义分支名# 分开的命令 git branch 分支名 # 创建分支 git checkout 分支名 # 切换分支验证分支切换成功 执行命令查看当前所在分支：git branch 示例效果：* issue-1234-fix-docs # 前面带*的分支，就是当前正在使用的开发分支 master 开发# 打开需要修改的文件（根据Issue要求，例：修改README.md） vim README.md # Vim 基础操作（新手必看） # 按 i → 进入编辑模式 # 修改内容（修复错别字、补全注释、调整格式等） # 按 Esc → 退出编辑模式 # 输入 :wq → 保存并退出 # 输入 :q! → 不保存退出（放弃修改） # 查看修改内容（确认修改正确） git diff 提交与推送当我们完成本地开发后，需要把修改推到自己 Fork 的仓库（ origin 仓库）。# 1. 添加修改的文件到暂存区 git add 文件名 # 例：git add README.md # 或 git add . （添加…