[笔记]《操作系统精髓与设计原理》---(1)操作系统概述

本文深入探讨了操作系统的重要理论进展,包括进程、内存管理、信息保护和安全、调度和资源管理等核心概念。详细介绍了进程与线程的区别、内存管理的基本职责、虚拟内存的工作原理以及调度策略的设计考量。

前段时间好好重新看了一遍操作系统,还是有点收获,重新完整了下知识结构,笔记都记在onenote上,有空慢慢搬上来。

4个重要理论进展:
• 进程
• 内存管理
• 信息保护和安全
• 调度和资源管理


进程

  • 一个正在执行的程序。
  • 计算机中正在运行的程序实例。
  • 可以分配给处理器并由处理器执行的一个实体。

三部分组成:

  • 一段可执行的程序
  • 程序所需要的相关数据(变量、工作空间、缓冲区)
  • 程序的执行上下文。

执行上下文又称进程状态,包括:

  • 处理器寄存器的内容,如程序计数器和数据寄存器
  • 操作系统使用的信息,进程优先级、进程是否在等待特定I/O事件的完成。,

一个进程管理方法:

  1. 由操作系统建立和维护进程表,记录每个进程(程序、数据和上下文)分配的存储器区域。表项内容包括进程的存储块地址指针,部分或者全部执行上下文。
  2. 进程索引寄存器包含当前处理器进程在进程表的索引;程序计数器指向该进程中下一条指令;基址寄存器、界限寄存器定义进程占据存储器区域:基址保存开始地址,界限保存大小。程序计数器和所有数据引用相对于基址寄存器被解释,并不能超过界限寄存器的值。

这里写图片描述

线程、进程区别

  • 线程:可分配的工作单元。包括处理器上下文(包括程序计数器、栈指针)和栈中自己的数据区域。
  • 进程:1个或多个线程和相关系统资源(如数据和代码存储空间、打开的文件和设备)的设备。

内存管理

5个基本责任:

  • 进程隔离:操作系统保护独立的进程,防止互相干扰各自的存储空间,包括数据和指令
  • 自动分配和管理:程序根据需要在存储层次间动态分配,分配对程序员透明。无需关系与内存限制有关的问题
  • 支持模块化程序设计:程序员能定义程序模块,并动态创建、销毁模块,动态改变模块大小。
  • 保护和访问控制:必须允许一部分内存可以由各种用户以各种方式进行访问。
  • 长期存储:在计算机关机后长时间保存信息。

操作系统使用虚存和文件系统机制来满足这些要求

  • 文件系统:实现长期存储,在1个有名字的对象中保存信息,对象称为文件file。对操作系统来说,文件是访问控制和保护的一个有用单元。
  • 虚存机制:允许程序从逻辑角度访问存储器,而不用考虑物理内存上可用的空间数量。进程大小不同,处理器在很多进程间切换,很难紧密压入内存中,引入分页系统
    • 分页系统(动态映射硬件):进程由许多固定大小的块组成,称为页。程序通过虚地址访问字,虚地址由页号和页中偏移量组成。进程每一页都可以放置在内存中的任何地方,分页系统提供程序中使用的虚地址和内存中的实地址/物理地址之间的动态映射
    • 消除一个进程的所有页同时驻留在内存的要求。一个进程的所有页都保留在磁盘中,当进程执行时,一部分页在内存中。如果需要访问的某页不在内存中,存储管理硬件检测到,安排载入这个缺页。这个配置称虚拟内存。

程序设计语言的指令都可以访问虚存区域中的程序和数据。

  • 通过给每个进程一个唯一不重叠的虚存空间来实现进程隔离
  • 使用两个虚存空间一部分重叠来实现内存共享
  • 文件可用于长期存储,文件或其中一部分可以复制到许村中供程序操作。

虚存寻址关系:

  • 存储器由内存和低俗的辅助存储器组成,内存可直接访问到,外村则可以通过把块载入内存间接访问到。
  • 地址转换硬件(映射器)处理器和内存间。
  • 程序使用虚地址访问,虚地址将映射成真是地址。如果访问的虚地址不存在内存中,实际内存中的一部分内容将换到外存,然后载入需要的模块。
  • 产生这个地址访问的进程必须挂起。

这里写图片描述


信息保护和安全

在使用时分系统时提出的。

  • 可用性:保护系统不被打断
  • 保密性:保证用户不能读到未授权访问的数据
  • 数据完整性:保护数据不被未授权修改
  • 认证:用户身份的正确认证和消息或数据的合法性。

调度和资源管理

操作系统关键任务:管理各种可用资源(内存空间、I/O设备、处理器),并调度各种活动进程使用这些资源。

资源分配和调度策略考虑三个因素:

  • 公平性:给竞争使用某1特定资源所有进程几乎相等公平的访问机会。
  • 有差别的响应性:可能需要区分有不同服务要求的不同作业类。
  • 有效性:希望获得最大吞吐量和最小响应时间,并在分时系统下,能容纳尽可能多的用户。

多道程序设计环境中进程调度和资源分配的操作系统主要组件:

  • 短程队列,由内存中(一部分在内存中)并等待处理器可用的随时准备运行的进程组成。任何一个进程都能下下一步使用处理器,选择取决于短期调度器(分派器)。常用策略时间片轮转或者分配优先级。
  • 长程队列,等待处理器的新作业列表。操作系统通过把长程队列的作业转到短程队列中,实现添加作业,这是内存的一部分必须分配给新到来的作业。
  • 每个I/O设备都有一个I/O队列,可能多个进程请求同一个I/O设备。等待使用一个设备的进程在设备的队列中排队,同时操作系统决定分配给哪个进程。
  • 如果发生中断,操作系统在中断处理程序入口获得处理器控制权。进程可以通过服务调用明确地请求某些操作系统服务,如I/O设备处理服务,服务调用处理程序是操作系统的入口。只要处理中断或者服务调用,就会请求短期调度器选择一个进程执行。

这里写图片描述


UNIX操作系统

一般体系结构
这里写图片描述

这里写图片描述


linux操作系统

模块结构

单体内核是指在一大块代码中包含了所有的操作系统功能,并作为一个单一的进程运行,具有位移的地址空间。内核中的左右功能部件可以访问所有的内部数据结构。如果对典型的单体式操作系统的任何部分进行了改变,那么在改变生效前,所有模块、例程都必须重新链接、安装,系统必须重新启动。

linux为采用微内核的方法,但由于特殊的模块结构,因此也具有很多微内核方法的优点。
linux的结构是一个模块的集合,可以通过命令自动地加载和卸载,称为可加载模块。
linux被认为是单体内核,但模块结构克服了在开发和发展内核过程中遇到的困难。

可加载两个特征:

  • 动态链接:内核已在内存中并运行,内核模块可以被加载和链接到内核。也可以在任何时刻被断开链接,从内存移除。
  • 可堆栈模块:模块按层次排列,当被高层的客户模块访问时,作为库;当被底层模块访问时,作为客户。

使用insmod和rmmod加载卸载内核模块。

内核组件

这里写图片描述

  • 信号:内核通过信号通知进程。如某些错误,比如被0除错误。
  • 系统调用:进程通过系统调用来请求系统服务。可以分为6类:文件系统、进程、调度、进程间通信、套接字(网络)和其他。
  • 进程和调度器:创建、管理、调度进程。
  • 虚拟内存:为进程分配和管理虚拟内存。
  • 文件系统:为文件、目录和其他相关对象提供一个全局、分层次的命名空间,提供文件系统函数。
  • 网络协议:为用户提供TCP/IP协议套件提供套接字接口。
  • 字符设备驱动:管理向内核一次发送或接收一个字节数据的设备,比如终端、调制解调器、打印机。
  • 块设备驱动:管理以块为单位向内核发送和接收数据的设备,如各种外存。
  • 网络设备驱动:对网络接口卡和通信端口提供管理,他们负责连接到网桥和路由之类的中断设备。
  • 陷阱和错误:处理CPU产生的陷阱和错误,例如内存错误。
  • 物理内存:管理实际内存中的内存页池和为虚拟内存分配内存页。
  • 中断:处理外设中断.

一些linux信号
这里写图片描述

<think>好的,我现在要帮用户寻找关于操作系统原理实现的学习笔记或资料。用户已经提供了两个引用,我需要先仔细看看这些引用内容,看看是否有相关的资料可以推荐。 首先看引用[1],这是一系列学习笔记,覆盖了操作系统概述、基础操作、内存管理、非连续内存分配、虚拟内存等内容,参考了《操作系统概念》和《现代操作系统》这些经典教材。看来这个笔记比较系统,适合逐步学习,可能对用户有帮助。另外,用户提到如果涉及版权问题可以联系删除,但这里只是推荐,应该没问题。 接下来是引用[2],来自《操作系统精髓设计原理》的学习笔记,讨论了同步、异步RPC、集群技术等。这部分内容涉及操作系统的实际应用和设计,比如集群的优点,可能对理解系统级的设计有帮助。用户如果对分布式系统或集群感兴趣的话,这部分笔记也很有参考价值。 用户的需求是寻找学习笔记或资料,所以需要综合这两个引用,看看是否能推荐相关的资源。此外,可能还需要补充一些其他经典书籍或在线资源,比如MIT的公开课或者相关MOOC课程,但用户提供的引用中没有提到,所以可能需要根据现有引用进行回答。 现在要确保回答结构清晰,分点说明,并且符合用户要求的格式,比如使用中文,正确使用LaTeX,生成相关问题等。需要检查是否有遗漏的信息,比如用户是否希望有更多外部资源推荐,但根据问题描述,用户可能更倾向于已有的学习笔记,所以重点放在已有的引用内容上。 另外,用户可能希望了解如何系统学习操作系统,包括理论(如内存管理、进程调度)和实际应用(如集群、同步机制)。因此,在回答中需要将引用中的内容分类,说明每个资源覆盖的知识点,帮助用户选择适合的学习材料。 最后,生成相关问题时要围绕操作系统原理的学习资源、具体章节内容、经典书籍推荐、实践项目等,确保问题有针对性,能够帮助用户进一步深入查询或学习。</think>### 操作系统原理实现学习资源推荐 #### 一、推荐学习笔记资料 1. **清华大学《操作系统原理》系列笔记** - 覆盖章节操作系统基础操作、内存管理、虚拟内存等核心概念 - 特点:结合《操作系统概念》《现代操作系统》两本经典教材,适合构建系统性知识框架[^1] - 章节示例: - 基础操作:进程调度、同步机制 - 内存管理:连续/非连续分配、分页分段技术 - 虚拟内存:页面置换算法(如$FIFO$、$LRU$) 2. **《操作系统精髓设计原理》学习笔记** - 关键内容:同步/异步通信(如$RPC$)、集群技术、可扩展性容错设计 - 实践项目:包含附录中的经典问题(如“理发店问题”),适合动手能力提升[^2] #### 二、经典教材扩展 1. **《操作系统概念》(恐龙书)** - 重点:进程管理、死锁、文件系统 - 数学示例:进程调度算法的时间复杂度(如$O(n^2)$的优先级调度) 2. **《现代操作系统》** - 亮点:多核处理器调度、分布式系统设计 - 公式示例:磁盘寻道时间计算 $$T_{seek} = k \times \sqrt{n}$$ #### 三、实践建议 1. **代码实践** - 实现进程调度算法(如$Round-Robin$) ```python def round_robin(processes, quantum): queue = deque(processes) while queue: p = queue.popleft() execute(p, min(quantum, p.time_remaining)) if p.time_remaining > 0: queue.append(p) ``` 2. **实验项目** - 内存分配模拟器(实现$Buddy System$算法) - 文件系统设计(FAT32索引结构实现)
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值