首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >操作系统的初步了解

操作系统的初步了解

作者头像
海棠未眠
发布2025-10-22 15:39:23
发布2025-10-22 15:39:23
840
举报

引言:什么是操作系统?

你有没有想过,当你按下电脑电源键后,它是如何从一块“冰冷的铁盒子”变成可以玩游戏、写文档、上网冲浪的智能工具的? 背后的关键就是——操作系统(Operating System, OS)。 它就像电脑的“大管家”,负责管理硬件、协调软件,让你能轻松地和电脑“对话”。

操作系统的本质,其实就是一个进行软硬件资源管理的软件!

他是我们买来的电脑这个豪宅的一个管家,所做的最重要的工作,就是做管理


一、设计操作系统的目的

1、对下,与硬件交互,管理所有的软硬件资源,使其稳定的,高效的,安全的进行良好的工作(手段)

2、对上,为用户程序(应用程序)提供一个良好的执行,运行环境。(目的)


二、操作系统是做什么的:

操作系统主要有四大核心任务:

1. 管理硬件
  • 键盘、鼠标、显示器、打印机……这些硬件设备千差万别,但操作系统让它们能协同工作。
  • 举例:当你打字时,操作系统把键盘信号转换成屏幕上显示的字符。
2. 运行软件
  • 电脑可以同时运行微信、浏览器、游戏,而不会混乱,全靠操作系统分配资源。
  • 举例:你在听音乐的同时写文档,操作系统确保两者不会互相干扰。
3. 存储数据
  • 文件存到哪里?怎么快速找到?操作系统帮你管理硬盘、U盘甚至云存储。
  • 举例:你保存的“作业.docx”其实是被操作系统安排到硬盘的某个位置。
4. 提供用户界面
  • 图形界面(如Windows的桌面)或命令行(如Linux的终端),都是操作系统提供的“交互方式”。
  • 举例:你点击图标打开软件,其实是操作系统在背后执行程序。

如何理解操作系统的管理呢?

我们把学校简化为校长-辅导员-学生这三个层次,那么校长就是管理的人,也就是操作系统,学生就是被管理的人。那么学生和校长之间会经常见面吗?答案是否定的,所以操作系统管理软硬件也不需要经常“见面”。

校长在进行管理的时候,会借助“辅导员“这个中间角色,这个中间角色,承担的就是对上(校长)获取数据,对下(学生)进行执行决策工作。

我们可以将操作系统的事件管理类比为学校对学生的管理方式,并借助数据结构(如链表)来理解其核心逻辑。


1. 什么是操作系统中的"事件"?

想象一下,你在用电脑时:

  • 按下键盘("老师,我有问题!")
  • 点击鼠标("老师,这个我不懂!")
  • 程序请求打开文件("老师,我要借书!")

这些就是操作系统要处理的"事件"。就像教务处要处理学生的各种申请一样。

操作系统的事件(如硬件中断、用户输入、程序请求)需要被高效处理,其管理逻辑可总结为: “先描述,再组织”

  • 描述:用数据结构(如struct)定义事件的属性(类似“学生档案”)。
  • 组织:通过链表、队列等结构管理多个事件(类似“班级花名册”)。
2. 事件管理的四个步
步骤1:事件发生 - 学生举手
  • 硬件事件:键盘被按下(就像学生突然举手)
  • 软件事件:程序请求资源(就像学生提交请假条)
步骤2:登记事件 - 老师记名字

操作系统会把每个事件记录下来,就像老师在小本本上记下学生的问题:

代码语言:javascript
复制
struct 事件记录 
​​​​​​​{
    int 事件类型;      // 是键盘问题?还是鼠标问题?
    void *具体内容;    // 比如按下了"A"键
    struct 事件记录 *下一个; // 下一条记录
};
步骤3:排队处理 - 教务处整理申请

所有事件会被放进一个待办清单(队列):

代码语言:javascript
复制
struct 事件记录 *待办清单; // 所有等待处理的事件

操作系统不会一下子处理所有事,而是:

  • 紧急事件优先(就像受伤学生可以插队看校医)
  • 普通事件按顺序(就像交作业要排队)
步骤4:分配处理 - 老师找对应的负责人
  • 键盘问题 → 交给输入法老师
  • 文件请求 → 交给文件系统老师
  • 网络请求 → 交给网络老师

就像教务处会把请假申请转交给班主任,把食堂问题转交给后勤处。

3. 真实例子:你按下键盘时发生了什么?
  1. 你按下"A"键(学生举手)
  2. 键盘说:"OS大人,有人按我!"(登记事件)
  3. OS把这个按键事件放进待办清单(记在小本本上)
  4. OS看清单后说:"这是输入问题,交给输入法处理"
  5. 输入法收到"A",显示在屏幕上(老师解答了问题)
4. 为什么要这样设计?

优点

学校类比

操作系统

不混乱

不会所有学生同时围着老师

硬件/软件不会互相干扰

高效率

教务处用名单快速处理

OS用队列快速响应

好维护

新老师来只需看名单

新硬件只需加驱动


如果同时按下100个键会怎样呢?

想象课间休息时,100个学生同时冲向老师办公室问问题:

  • 老师办公室只有一个门 → 相当于计算机的中断控制器
  • 老师一次只能处理一个学生 → 相当于CPU的单核处理能力

那我们的操作系统会如何处理呢?

硬件层面

  • 键盘控制器会把这些按键转换成扫描码,暂时存在自己的小仓库(缓冲区)
  • 就像学生们先在办公室外排队领号码牌

操作系统层面

代码语言:javascript
复制
// 操作系统维护的键盘缓冲区
#define KEY_BUFFER_SIZE 128
char key_buffer[KEY_BUFFER_SIZE];
int buffer_index = 0;
  • 当缓冲区快满时(比如已经存了120个键):
    • 键盘会亮起指示灯警告(就像办公室挂出"排队已满"的牌子)
    • 新按的键可能被丢弃(就像后来的学生被劝退)

用户感知

  • 你会看到字符一个接一个出现,可能有轻微延迟
  • 高端键盘(如机械键盘)的"防鬼键"技术就像增加了更多老师助理

例如

  • 键盘轮询速率:普通键盘100-1000Hz,相当于老师每分钟能接待100-1000个学生
  • N-key Rollover:游戏键盘的"全键无冲"就像办公室开了10个接待窗口

总结的来说,任何计算机对象,在进行管理的时候都需要遵守“先描述,再组织”这一原则。这也是现在主流的面向对象的语言,都要提供1、面向对象。2、标准库的原因。

计算机管理硬件

1、描述起来,用struct结构体。

2、组织起来,用链表或者其他的高效的数据结构


三、系统调用与库函数概念:

我们以买外卖的两种方式来进行比较:

场景

系统调用

库函数

点外卖方式

直接打电话给餐厅老板(内核)

使用外卖APP(如美团)

操作复杂度

需要说清楚所有细节

一键下单,自动填充常用信息

安全性

餐厅老板可能拒绝奇怪要求

APP会过滤危险请求

效率

慢(每次都要详细沟通)

快(自动记忆历史订单)

灵活性

可以提特殊要求(多加辣)

只能选APP提供的选项

实质上

对比维度

系统调用

库函数

定义

操作系统内核提供的底层服务接口

开发者封装的函数集合

执行权限

需要切换到内核态(高权限)

在用户态运行(普通权限)

性能开销

高(需上下文切换)

低(无模式切换)

功能范围

基础硬件操作(如读写磁盘)

复杂功能组合(如格式化输出)

稳定性

长期不变(接口稳定)

可能随版本变化

示例

open(), fork(), write()

printf(), fopen(), malloc()

库函数就是对系统调用接口的封装,方便我们安全的,高效的处理任务。

就好比政府的基础服务一样

  • 就像你去政务大厅办理身份证(必须本人亲自到场)
  • 每次都要安检切换(用户态→内核态)(用户态和内核态是操作系统最核心的安全机制,它们就像计算机世界的"平民区"和"特权区",其实就是权限的不同)
  • 只能办理基础业务(不能一站式解决所有问题)

库函数就是一个便民APP

  • 就像使用政务APP在线办事
  • 无需亲自到场(全程用户态完成)
  • 整合多个服务(如同时预约医保+社保)
  • 在开发角度,操作系统对外会表现为一个整体,但是会暴露自己的部分接口,供上层开发使用,这部分由操作系统提供的接口,就叫做系统调用
  • 系统调用在使用上,功能比较基础,对用户的要求也相对较高,所以,有心的开发者可以对部分系统调用进行适度封装,从而形成了库。有了库,就更有利于上层用户或者开发者进行二次开发

结语

操作系统作为计算机系统的核心,不仅是硬件与软件之间的桥梁,更是现代数字世界的基石。它通过高效、安全地管理资源,让复杂的计算机操作变得简单易用,使开发者能专注于创新,而无需深陷底层细节。

从按下电源键的那一刻起,操作系统便开始无声地协调一切——它像一位无形的指挥家,确保每个组件和谐运作;又像一位智慧的管家,让技术服务于人,而非成为负担。

理解操作系统,不仅是学习计算机科学的关键,更是洞察数字时代运行逻辑的窗口。无论是开发者、研究者还是普通用户,认识其背后的管理哲学,都能让我们更高效地驾驭技术,探索更广阔的可能性。

正如计算机先驱艾伦·凯所言:“真正优秀的软件不是让人惊叹它能做什么,而是让人忘记它需要存在。”

操作系统,正是这样的存在。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-10-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 引言:什么是操作系统?
  • 一、设计操作系统的目的
  • 二、操作系统是做什么的:
    • 操作系统主要有四大核心任务:
      • 1. 管理硬件
      • 2. 运行软件
      • 3. 存储数据
      • 4. 提供用户界面
    • 如何理解操作系统的管理呢?
      • 1. 什么是操作系统中的"事件"?
      • 2. 事件管理的四个步
      • 步骤1:事件发生 - 学生举手
      • 步骤2:登记事件 - 老师记名字
      • 步骤3:排队处理 - 教务处整理申请
      • 步骤4:分配处理 - 老师找对应的负责人
      • 3. 真实例子:你按下键盘时发生了什么?
      • 4. 为什么要这样设计?
  • 三、系统调用与库函数概念:
  • 结语
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档