操作系统常识

linux

Linux主要内核组件

  1. 信号(Signals)

    • 内核使用信号向进程提供信息

  2. 系统调用(System calls)

    • 为进程提供系统服务,大致分为6类:文件系统,进程,调度,进程间通信,套接字,其他

  3. 进程和调度器(Processes and Scheduler)

    • 创建,管理,调度进程

  4. 虚存(Virtual memory)

    • 为进程分配和管理虚存

  5. 文件系统(File System)

    • 为文件,目录和其他文件对象提供一个全局的分层命名空间,并提供文件系统函数

  6. 网络协议(Network protocols)

    • 为用户的TCP/IP协议套件提供套接字接口

  7. 字符设备驱动(Character device drivers)

    • 如打印机,调制解调器,终端

  8. 块设备驱动(Block device drivers)

    • 如各种外存

  9. 网络设备驱动(Network device drivers)

    • 管理网卡和通信端口,即管理连接到网桥或路由的网络设备

  10. 陷阱与错误(Traps and faults)

    • 处理CPU产生的陷阱和错误,如内存错误

  11. 物理内存(Physical memory)

    • 管理实际内存中的内存页池,并为虚存分配内存页

  12. 中断(Interrupts)

    • 处理来自外设的中断

进程

进程控制块(PCB)

  • 标识符

  • 状态

  • 优先级

  • 程序计数器

  • 内存指针

  • 上下文数据

  • I/O 状态信息

  • 记账信息

进程状态

  • 新建态

    • 空-->新建

  • 就绪

    • 新建-->就绪

    • 运行-->就绪

    • 阻塞-->就绪

  • 运行

    • 就绪-->运行

  • 阻塞

    • 运行-->阻塞

  • 退出态

    • 运行-->退出

    • 阻塞-->退出

    • 就绪-->退出

  • 挂起态

    • 这个主要是内存不足,就把进程先换到外存

进程映像

  • 进程控制块

    • 进程id

    • 处理器状态信息

    • 进程控制信息

  • 用户栈

  • 私有用户地址空间(程序,数据)

    • 静态数据区

    • 代码段

  • 共享地址空间

操作系统的控制结构

  • 内存-->内存表

  • 设备-->设备表

  • 文件-->文件表

  • 进程-->主进程表-->进程映像

并发

常用的并发机制

名称

描述

信号量

用于进程间传递信号的整数值,只有三个原子操作:初始化,递增,递减

二元信号量

只有0和1的信号量

互斥量/互斥锁

类似于二元信号量,关键区别在于为其加锁(设定值为0)的进程和解锁(设定值为0)的进程必须为同一个进程

条件变量

一种数据类型,用于阻塞进程或线程,直到特定的条件为真

管程

一种编程语言结构

自旋锁

一种互斥机制,进程在一个无条件循环中执行,等待锁变量的值可用

互斥的要求

  1. 一次只允许一个进程进入临界区

  2. 一个在非临界区停止的进程不能干涉其他进程

  3. 不允许出现需要访问临界区的进程被无限延迟的情况,即不会死锁和饥饿

  4. 没有进程在临界区时,需要进入的进程要能立刻进入

  5. 对相关进程的执行速度和处理器的数量没有任何要求

  6. 一个进程驻留在临界区的时间必须是有限的

可重入

代码段没有保存上下文信息,可以被中断

死锁条件

  • 互斥

    • 一次只有一个进程可以使用某个资源

  • 占有且等待

    • 当一个进程等待其他进程时,继续占有已经占有的资源

    • 解决办法:一次性占有所有资源

  • 不可抢占

    • 不能强行抢占其他进程已经占有的资源

    • 解决办法:若申请其他资源不成功,则释放已占有的资源

  • 循环等待

    • 存在一个闭合的进程链,每个进程至少占有此链下一个进程所需的一个资源

    • 这一条实际上是前三条的潜在结果

    • 解决办法:定义资源的线性顺序,若一个进程已经占用了R资源,接下来只能占有R之后的资源

处理死锁的办法

  • 预防

    • 消除某一个死锁条件

  • 避免

    • 基于资源分配的当前状态做动态选择

  • 检测

    • 检测死锁的存在并从死锁中恢复

原则

资源分配策略

不同的方案

预防

保守:预提交资源

一次性请求所有方案

--

--

抢占

--

--

资源排序

避免

介于检测和预防之间

操作以便发现至少一条安全路径

检测

非常自由:只要有可能,请求的资源都被允许

周期性的调用以便检测死锁

内存

内存管理术语

名称

描述

页框

内存中固定长度的块

固定长度的数据块,存储在二级存储器中(如磁盘)。数据页可以临时复制到内存的页框中

变长数据块,存储在二级存储器中。整个段可以临时复制到内存中的一个可用区域(分段),或可以将一个段分为许多页,然后将每页单独复制到内存中(分段和分页相结合)

内存管理的需求

  • 重定位

  • 保护

  • 共享

  • 逻辑组织

  • 物理组织

分页和分段

  • 分页是对分区的改进,减少了内存碎片

  • 每个进程维护一个页表

  • 使用分段技术,可以把程序和与其相关的数据划分到几个段中

  • 分页对程序员透明,分段通常是可见的

虚拟内存术语

名称

描述

虚拟内存

程序引用内存使用的地址与内存系统用于识别物理存储站点的地址是不同的,程序生成的地址会自动转换为机器地址。虚拟存储的大小受系统寻址机制和可用的备用内存量的限制,而不受主存储位置实际数量的限制

虚拟地址

在虚拟内存中分配给某一位置的地址,它使得该位置可被访问,就好像是主存内的一部分那样

虚拟地址空间

分配给进程的虚拟存储

地址空间

用于某进程的内存地址范围

实地址

内存中存储位置的地址

内存碎片

  • 内部碎片

    已经使用的内存,不能用到的地方

  • 外部碎片

    没有使用的内存,但是太小了不能再用的内存

抖动

  • 频繁中断进行内存页的换进换出,常见于先进先出算法

置换页的基本算法

  • 最佳

    • 置换下次访问距当前时间最长的页,需要预测

    • 不可能实现,仅作为衡量其他算法性能的一种标准

  • 最近最少使用

    • 时钟策略的变体

  • 先进先出

    • 实现简单,性能较差

  • 时钟

    • 有一个只能为1或0的使用位,初始为1,若要置换,找下一个,下一个若为0,就换出,若为1就变为0,继续找下一个,就是多给了一次机会,所有的页组成一个环

最后更新于