曾梦想仗剑走天涯

1+P83

各种软件通过OS提供的资源抽象使用硬件资源
OS允许不同程序共享硬件资源

基本功能……
提供操作界面
控制程序运行
管理系统资源
配置系统参数
监控系统状态
工具软件集合

操作系统是一个大型的程序系统,它负责计算机系
统软、硬件资源的分配;控制和协调并发活动;提
供用户接口,使用户获得良好的工作环境。

  • 操作系统的特性
    并发性
    共享性
    不确定性

操作系统的功能一

进程管理

处理机分配
CPU管理
处理机管理
具体功能
进程控制:创建,暂停,唤醒,撤销
进程调度:调度策略,优先级
进程通信:进程间通信

操作系统的功能二

存储管理

为应用程序运行高效提供内存空间。
支持多道程序设计
作用
内存分配
内存共享
内存保护
虚拟内存

操作系统的功能三

设备管理

提供统一的设备资源使用接口,管理设备的分配和
使用。
设备无关性
设备的传输控制
设备的驱动

操作系统的功能四

文件管理:文件和目录的管理

提供简便统一的信息存取和管理方法,并解决信息共享、数
据的存取控制等问题。
 存储空间管理
 文件的操作
 目录的操作
 文件和目录的存取权限管理

  • 操作系统的评价指标
  1. 吞吐率
  2. 响应能力
  3. 资源利用率
  4. 可移植性
  5. 可靠性
  • 操作系统发展的四个典型阶段
    1.手工操作(无操作系统) 40年代到50年代早期
    2.单道批处理系统 50年代
    3.多道批处理系统 60年代初
    4.分时操作系统 60年代中

  • 多道程序设计技术
    在内存中存放多道程序,当某道程序因为某种原因
    (例如请求I/O时)不能继续运行时,监控程序便调
    度另一程序投入运行。这样可以使CPU尽量处于忙碌
    状态,提高系统效率。

  • 多道批处理系统
    采用多道程序设计技术实现的处理系统称为多道批
    处理系统。

  • 缺点

  1. 作业处理时间长
  2. 交互能力差
  3. 运行过程不确定
  • 60 年代硬件的两个重大进展
  1. 中断技术
  2. 通道技术
    专门处理外设与内存之间的数据传输的处理机。
  • 多终端计算机
    主机采用 分时技术轮流为每个终端服务,每个终端都感觉到
    是“独占”主机!

  • 分时系统的特点

  1. 多路调制性
  2. 独占性
  3. 交互性

第一个实用化的分时操作系统 UNIX
第一次把各种外部设备也看作文件

  • 多处理机系统
    特点
  1. 具有并行处理能力
  2. 紧耦合、存在瓶颈、可扩展性差
  3. 不支持大规模并行计算;不支持分布处理

Linux kernel版本

  • x.y.zz-www
  • x.y指主版本号,zz指次版本号,www指发行号
  • 主版本号:偶数是稳定版本,奇数号是测试版本

2+P50

  • 面对用户,裸机配置操作系统后称为 操作系统虚拟机
  1. 用户界面
  2. 屏蔽硬件细节
  3. 扩展硬件功能
  4. 系统更安全
  5. 系统更可靠
  6. 效率更高
  • 逻辑结构
    OS的设计和实现思路

  • 逻辑结构的种类
    1.单体式结构
    2.模块化结构
    3.可扩展内核结构(微内核结构)
    4.层次式结构

  • 单体式结构
    优点
    一个逻辑模块的函数可以直接访问另一个逻辑模块
    的数据结构,提高效率。
    缺点
    修改复杂

  • 模块化结构
    特点
    模块设计、编码和调试独立
    模块调用自由
    模块通信多以全局变量形式完成
    缺点
    信息传递随意,维护和更新困难。

  • 可扩展内核结构(微内核结构)
    客户 :应用程序
    服务器 :操作系统
    微内核
     足够小,提供OS 最基本的核心功能和服务
    ① 实现与硬件紧密相关的处理
    ② 实现一些较基本的功能;
    ③ 负责客户和服务器间的通信。
    核外服务器
     完成OS 的绝大部分功能,等待 客户 提出请求。
    由 若干服务器或进程共同构成
    例如:进程/线程服务器,虚存服务器,设备
    管理服务器等,以 进程 形式运行在用户态。

  • 层次式结构
    分层原则

  1. 硬件相关——最底层
  2. 外部特性——最外层
  3. 中间层——调用次序或消息传递顺序
  4. 共性服务——较低层
  5. 活跃功能——较低层

层次结构的优点
结构清晰,避免循环调用。
整体问题局部化,系统的正确性容易保证。
有利于操作系统的维护、扩充、移植。

  • 支持操作系统的最基本硬件结构
  1. CPU
  2. 内存
  3. 中断
  4. 时钟
  • 态的分类
  1. 核态(Kernel mode)
  2. 用户态 (User mode,目态)
  3. 管态(Supervisor mode)
    介于核态和用户态之间
    Ring 0:特权指令,OS内核或驱动程序
    Ring 1:管态
    Ring 3:应用程序

合法的访问:RPL <= DPL
请求特权级:RPL,Requested Privilege Level
描述符特权级:DPL,Descriptor Privilege Level

  • 用户态向核态转换
  1. 用户请求OS提供服务
  2. 发生中断
  3. 用户进程产生错误(内部中断)
  4. 用户态企图执行特权指令
  • 核态向用户态转换的情形
    一般是中断返回:IRET

  • 引入中断的目的

  1. 实现并发活动
  2. 实现实时处理
  3. 故障自动处理
  • 中断类型
  1. 强迫中断和自愿中断
    强迫中断:程序没有预期:例:I/O、外部中断
    自愿中断:程序有预期。例:执行访管指令
  2. 外中断(中断)和内中断(俘获)
    外中断:由CPU外部事件引起。例:I/O,外部事情。
    内中断:由CPU内部事件引起。例:访管中断、程序中断
  3. 外中断:不可屏蔽中断和可屏蔽中断
    不可屏蔽中断:中断的原因很紧要,CPU必须响应
    可屏蔽中断:中断原因不很紧要,CPU可以不响应
  • 中断响应的实质
  1. 交换指令执行地址
  2. 交换CPU的态

3+P110

到处闲逛警谭乔,
路遇违章把话聊。
警光询问那里去?
成华大道二仙桥!
《听许巍到西12的日子》

  • 操作系统的生成
    满足特定硬件环境和用户需要,组装和构建操作系
    统过程。

  • 操作系统生成的主要步骤

  1. 根据硬件环境/用户要求配置功能模块和构造参数
  2.  构建(build )OS
  • 实模式(实地址模式,REAL MODE )
  1. 程序按照8086寻址方法访问0~FFFFFh(1MB)空间
  2. 寻址方式:物理地址(20位)=段地址:偏移地址。
  3. CPU单任务运行

实模式 存取的1M 空间
前面640K 【00000 -- 9FFFF】 :基本内存
中间128K 【A0000 -- BFFFF】 :显卡显存
末尾256K 【C0000 -- FFFFF】 : BIOS
Fireware,固件
C0000 -- C7FFF:显示卡BIOS
C8000 -- CBFFF:IDE控制器BIOS
F0000 -- FFFFF:系统BIOS 功能:

  1. CMOS设置
  2. 基本I/O设备中断服务
  3. POST(上电自检)
  4. 系统自举
    AH=02功能:读扇区
    ES:BX=缓冲区的地址
  • 保护模式(内存保护模式,PROTECT MODE )
  1. 寻址方式:段( 16位)和偏移量( 16位),寻址4GB
    段页式虚拟内存管理机制(段,页)
    段的属性:起始地址,存取属性,权限级别,…
    新增32位寄存器:GDR,LDR,CR0,CR1,CR2,…
  2. 虚拟地址,进程,封闭空间
  3. 应用程序和操作系统的运行环境都被保护
  4. CPU支持多任务
  • 按下PowerOn 或者Reset 键
    开始执行( FFFF0 )单元的指令
    JUMP POST ; POST:加电自检
    POST之后……
     查找显卡BIOS ,调用显卡 BIOS ;
    依次查找其它设备执行相应设备的BIOS ;
    根据用户指定顺序从硬盘或光驱等媒介启动OS 。
     OS 启动后,由OS 接管计算机

OS启动过程
从加电到用户工作环境准备好的过程

  1. 初始引导
  2. 核心初始化
  3. 系统初始化

常见引导程序:
(1)ntldr (WinXP以下)
(2)bootmgr(Vista以上含Win7)
(3)GRUB
(4)LILO

核心初始化
目的:OS内核初始化系统的核心数据
系统初始化
为用户使用系统作准备,使系统处于待命状态

最近抄别人代码好像有点过火了

DOS 操作系统的构成
io.sys: 提供DOS与BIOS的调用接口
msdos.sys: 进程管理、存储管理、文件管理、解释系统调用
command.com:Shell命令和键盘命令解释及执行

MBR:Main Boot Record

  1. 和OS 启动相关的数据和代码
  2. 存放在主启动扇区(Main Boot Sector )
  3. 512 BYTES
  4. 结束:AA55h

写启动相关的数据和代码(Boot Code)

  1. MBR扇区 (Master Boot Record Sector)
  2. PBR扇区( Partition Boot Record )
  3. 512字节
  • 用户界面的定义
    OS提供给用户控制计算机的机制,又称用户接口

用户界面的类型

  1. 操作界面
  2. 系统调用 (System Call,系统功能调用,程序界面)

Bash的主要功能

  1.  命令行编辑功能
  2.  命令和文件名补全功能
  3.  命令历史功能
  4.  命令别名功能
  5.  提供作业控制功能
  6.  具有将命令序列定义为功能键的功能
  7.  管道与重定向
  8.  Shell Script 脚本编程

单曲:《野火一季》

增加指令:自陷指令或系统调用指令

系统调用的特点

  1. 一般涉及核心资源或硬件的操作
  2. 运行于核态。
  3. 每个系统调用具有唯一的编号:ID
  4. 调用过程会产生中断:自愿中断

LINUX 系统调用的实质

  1. 系统调用是Linux内核的出口。 ?????
  2. 系统调用通过软中断(INT 80H)向内核发出服务请求
  3. 系统调用采用API方式向用户提供,遵循 POSIX标准

4+P191

女生一般不会主动
除非她特别特别特别特别特别特别特别特别特别
特别特别特别特别特别特别特别特别特别特别特别
特别特别特别特别非常非常非常非常非常非常非常
非常非常非常非常非常非常非常非常非常非常非常
喜欢你

描述和管理程序的“运行过程”——进程

进程定义
进程是程序在某个数据集合上的 一次运行 活动。
 数据集合:软/硬件环境,多个进程共存/共享的环境
进程的特征

  1. 动态性
     进程是程序的一次执行过程,动态产生/消亡
  2. 并发性
     进程可以同其他进程一起向前推进;
  3. 异步性
     进程按各自速度向前推进
  4. 独立性
     进程是系统分配资源和调度CPU的单位;

进程与程序的区别
动态与静态
 进程是动态的:程序的一次执行过程
 程序是静态的:一组指令的有序集合
暂存与长存
 进程是暂存的:在内存驻留
 程序是长存的:在介质上长期保存。
程序和进程的对应
 一个程序可能有多个进程。

Linux 进程分类 (按运行特点分)
1)交互进程
2)批处理进程
3)守护进程( daemon进程)

进程的状态
1.运行状态(Running)
 进程已经占有CPU,在CPU上运行。
2.就绪状态(Ready)
 具备运行条件但由于无CPU,暂时不能运行
3.阻塞状态(Block)【等待(Wait)】
 因为等待某项服务完成或信号来到而不能运行的状态
 例如等待:系统调用,I/O操作,合作进程的服务或信号…

就绪 运行:进程调度
运行 就绪:时间片到;被抢占
运行 阻塞:服务请求;等待信号
阻塞 就绪:服务完成;信号来到

挂起(suspend) 和 解挂(resume ,激活activate)

  1.  挂起:用户或OS将进程有意暂停; 解挂:将挂起的进程继续。
  2. 阻塞:活动阻塞(正常阻塞)和静止阻塞(阻塞时挂起) ;
  3. 就绪:活动就绪(正常就绪)和静止就绪(就绪时挂起) 。

进程挂起
typedef DWORD (WINAPI
*NtSuspendProcess)(HANDLE ProcessHandle );
 进程继续
typedef DWORD ( WINAPI
*NtResumeProcess )( HANDLE hProcess ) ;

Linux进程的状态

  1.  可运行态
    就绪运行:
  2.  阻塞(等待)态
    浅度阻塞:TASK_INTERRUPTIBLE(可中断)
    深度阻塞:TASK_UNINTERRUPTIBLE(不可中断)
  3.  僵死态:TASK_ZOMBIE
  4.  挂起态:TASK_STOPPED

进程控制块 (Process Control Block , PCB)

  1. 描述进程的状态、资源、和相关进程的关系的一种数据结构。
  2.  PCB是进程的标志
  3.  创建进程时创建PCB;进程撤销后PCB同时撤销

进程控制的概念
在进程生存全期间,对其全部行为的控制
四个典型的控制行为

  1. 创建进程
  2. 撤消进程
  3. 阻塞进程
  4. 唤醒进程

原语
由若干指令构成的具有特定功能的函数
具有原子性,其操作不可分割
 进程控制原语

  1. 创建原语
  2. 撤消原语
  3. 阻塞原语
  4. 唤醒原语

子进程由fork( )创建后,通常处于就绪状态

exec函数族( 包括若干函数)
功能
装入一个指定的可执行程序运行
使子进程具有和父进程完全不同的新功能。
步骤

  1. 根据文件名找到相应的可执行文件。
  2. 可执行文件的内容填入子进程的地址空间
  3. exec调用成功就会进入新进程执行且不再返回。
  4. exec调用失败返回-1,继续在克隆来的地址空间中从调用点向下执行

线程的概念( Thread )

  1. 线程比进程更小,是进程的一个执行路径。
  2. 创建一个线程比创建一个进程开销要小得多。
  3. 一个进程可以创建多个线程;
  4. 线程间通信十分方便
  5. 多个线程共享CPU可以实现并发运行
    线程的应用:如果把程序中某些函数创建为 线程 ,
    那么这些函数将可以 并发 运行!

AfxBeginThread(线程函数,参数)
CreateRemoteThread(进程,线程函数,参数)
pthread_create(线程函数,参数)

进程的 互斥 关系
多个进程由于共享具有独占性的资源,必须协调各进程对资
源的存取顺序:确保没有任何两个或以上的进程同时进行资
源的存取操作

临界区[ [Critical Section]
进程中访问临界资源的程序段

硬件方法

  1. 中断屏蔽
  2. 测试并设置
  3. 交换指令
    软件方法
  4. 锁
  5. 信号量

进程的同步关系
 若干 合作进程 为了共同完成一个任务,需要相互协调
运行步伐: 一个进程A A 开始 某个操作 之前必须要求 另一
个进程B B 已经完成 某个操作 ,否则 进程A A 只能 等待

进程的 同步 关系—— 另一种解释
合作进程中某些操作之间需要满足某种先后关系或
某个操作能否进行需要某个前提条件满足,否则只
能等待。

互斥关系属于特殊的同步关系。

设计临界区访问机制的四个原则

  1. 忙则等待
  2. 空闲让进
  3. 有限等待
  4. 让权等待

进程在运行过程 受 信号灯 控制 ,并能 改变 信号灯 。

  1.  进程受控制:进程因信号灯的状态被阻塞或被唤醒。
  2.  改变信号灯:信号灯的状态可以被进程改变。

P ,V 是荷兰语:P asseren 通过 ,V rijgeven 释放

信号量 ( Semaphore )

  1.  允许指定数目的多个线程/进程访问临界区。
  2.  一种资源计数器,用于限制并发线程的数量。
  3.  初值设为N,则表示允许N个进程/线程并发访问资源。

事件( Event )
用于通知一个或多个线程某事件出现或标识某操作已经完成。
事件对象的分类
1.自动重置的事件:使用WaitForSingleObject等待到事件对象
变为有信号状态后该事件对象自动变为无信号状态。
2.人工重置的事件:使用WaitForSingleObject等待到事件对象
变为有信号状态后该事件对象的状态不变,除非人工重置事
件。

MOOC课程
4.7.1 匿名管道通信
4.7.2 Linux信号通信

5+P22

原文地址:https://www.cnblogs.com/CSE-kun/p/14146523.html