当前位置: 首页 > article >正文

os开发基础知识(1)

操作系统(Operating System, OS)

核心定义

  • 操作系统是管理计算机硬件与软件资源的系统软件,充当用户、应用程序与硬件之间的桥梁,负责协调资源分配并提供标准化服务。

 关键功能

资源管理  

  •    内存管理:分配和回收内存空间,防止程序间冲突(如内存泄漏)。  
  •    硬件管理:通过驱动程序控制CPU、磁盘、键盘等硬件设备。  
  •    文件管理:组织存储设备上的数据(如创建、删除、读写文件)。  

进程与线程调度  

  •    决定哪些程序优先使用CPU(如时间片轮转调度)。  
  •    支持多任务执行(如同时运行浏览器和音乐播放器)。  

安全与访问控制

  •    验证用户权限(如管理员与普通用户的不同操作权限)。  
  •    防止恶意程序破坏系统(如内存隔离技术)。  

抽象化接口

  •    用户界面:提供图形界面(GUI)或命令行界面(CLI)(如Windows桌面或Linux终端)。  
  •    系统调用(API):让程序无需直接操作硬件即可使用资源(如`printf()`函数底层依赖操作系统输出内容)。  

常见误区

  • 操作系统 ≠ 硬件:它是软件,但需依赖硬件运行(如电脑主板是硬件,Windows是操作系统)。  
  • 操作系统 ≠ 应用程序:它不直接提供具体功能,而是支撑应用程序运行(如Photoshop是应用程序,需依赖macOS或Windows运行)。  
  • 操作系统 ≠ 工具集:尽管常捆绑工具(如Linux的GNU工具),但这些工具是附加组件而非OS核心。  
  • 操作系统 ≠ 图形界面:GUI是操作系统的一部分,但非必需(如服务器版Linux可通过命令行操作)。  

操作系统的多样性

  • 单任务系统:如MS-DOS,一次只能运行一个程序。  
  • 多任务系统:如Windows、macOS,支持同时运行多个程序。  
  • 嵌入式系统:如eCOS,专为特定设备定制(如智能手表),可能无图形界面。  
  • 发行版差异:如Linux有Ubuntu、Debian等不同发行版,核心相同但工具和界面不同。  

内核(Kernel)

核心定义

  • 内核是操作系统的核心组件,直接与硬件交互,负责最底层的资源管理和任务调度。用户通常无法直接感知内核的存在,但它支撑了所有程序的运行。

核心职责

1. 硬件事件处理

  •   响应中断(如键盘输入、网络数据到达),将事件传递给对应程序。  
  •   示例:按下键盘时,内核将按键转化为字符并存入缓冲区,供程序读取。  

2. 系统调用处理 

  •   执行程序请求的底层操作(如打开文件、创建进程)。  
  •   示例:C语言的fopen()函数会触发内核的“打开文件”系统调用。  

3. 抽象资源管理  

  •  定义进程、文件、网络连接等抽象概念,简化程序开发。  
  •  示例:程序读写文件时,无需关心磁盘物理位置,内核负责映射逻辑文件到存储位置。 

内核与用户程序的关系

  •  用户程序→ 标准库→ 内核  
  •  程序通过标准库(如C的glibc)调用系统功能,避免直接与内核交互。  
  •  示例:Java程序调用`System.out.println()`时,最终由内核控制屏幕输出。  

类比理解

  • 操作系统像一家公司的管理层:制定规则、分配资源、协调各部门。  
  • 内核像公司的核心决策层:直接处理最关键的任务(如财务、人事),其他部门(应用程序)通过它获得支持。  
  • 系统调用像提交申请:程序需通过固定流程(系统调用)向内核申请资源,而非直接操作硬件。  

http://www.kler.cn/a/528853.html

相关文章:

  • JavaScript作用域详解
  • ReentrantReadWriteLock源码分析
  • qt-Quick3D笔记之官方例程Runtimeloader Example运行笔记
  • 我的创作纪念日——成为创作者的 第365天(1年)
  • 【Redis】hash 类型的介绍和常用命令
  • 从0到1:C++ 开启游戏开发奇幻之旅(二)
  • 计算机视觉:解锁智能时代的钥匙与实战案例
  • .Net WebAPI -[HttpPut(“{fileServiceId:int}“)]
  • 【数据结构】_时间复杂度相关OJ(力扣版)
  • 使用Visual Studio打包Python项目
  • 北京门头沟区房屋轮廓shp的arcgis数据建筑物轮廓无偏移坐标测评
  • 【机器学习】自定义数据集 使用scikit-learn中svm的包实现svm分类
  • RK3568使用QT操作LED灯
  • 2025年1月22日(网络编程 udp)
  • 动手学强化学习(四)——蒙特卡洛方法
  • vue之pinia组件的使用
  • AtCoder Beginner Contest 391(ABCDE)
  • Alibaba开发规范_编程规约之命名风格
  • 22.Word:小张-经费联审核结算单❗【16】
  • C_C++输入输出(下)
  • gesp(C++六级)(9)洛谷:P10721:[GESP202406 六级] 计算得分
  • UE学习日志#18 C++笔记#4 基础复习4 指派初始化器和指针
  • 手写防抖函数、手写节流函数
  • 【Rust自学】18.1. 能用到模式(匹配)的地方
  • Python在线编辑器
  • Python 环境隔离和实现方法