引论

什么是操作系统

  • 自上而下:提供基本抽象(提供用户接口)
  • 自下而上:资源管理者(分配调度软硬件资源)

操作系统原理01

操作系统功能

  1. 进程管理 *(核心两点)
  2. 内存管理 *(核心两点)
  3. 设备管理
  4. 文件管理

操作系统历史

操作系统原理01

分时操作系统

中断技术:CPU收到中断信号,停止当前工作去处理外部事件,处理结束后还可以回到原来的工作中断处(断点)继续原来的工作
通道技术:专门处理外设内存之间的数据传输

UNIX(BSD4、System V)第一个实用化的分时操作系统

  • 实现操作系统的可移植性
  • 实现了硬件无关性
  • 引进了“特殊文件”概念(把外设看做文件)

操作系统的进一步发展(分时操作系统的衍化)

  • 微机操作系统(个人计算机,BIOS把操作系统和硬件分隔):CP/M、MS DOS、Macintosh
  • 实时操作系统:要求某些任务要优先紧急处理
  • 嵌入式操作系统(可裁剪):Android
  • 网络操作系统(透明存储、存储控制):普通操作系统+网络通信+网络服务

Minix

硬件简介

  • RAM(Random Access Memory)
  • ROM(Read Only Memory)
  • SATA(Serial Advanced Technology Attachment)
  • PCIe(Peripheral Component Interconnect Express)

基本概念

操作系统的逻辑结构

  1. 整体式结构:以模块为基本单位构建
  2. 层次式结构
    操作系统原理01
  3. 微内核结构(C/S结构):微内核+核外服务器
    微内核:小,提供OS最基本的核心功能和服务
    核外服务器:完成OS的绝大部分的服务功能,等待应用程序提出请求

支持操作系统的最基本硬件结构

  • CPU
  • 内存
  • 中断
  • 时钟

CPU

CPU态:CPU的工作状态(对资源和指令使用权限的描述)
操作系统原理01

特权指令

  • 核态(Kernel mode)
  • 管态(Supervisor mode):介于核态和用户态之间
  • 用户态(目态)

硬件和OS对于CPU的观察:

  • 硬件按“态”来区分CPU的状态
  • OS按“进程”来区分CPU的状态

内存

操作系统原理01
操作系统原理01
操作系统原理01

中断

外部事件

中断的目的

  • 实现并发活动
  • 实现实时处理
  • 故障自动处理

中断的一些概念
中断源

断点:将要执行的下一条指令的地址CS:IP

现场:程序正确运行所依赖的信息集合:相关寄存器
两个处理过程:现场保护(进入中断服务前),栈,现场恢复(退出中断服务后)

中断类型:

  • 强迫性中断(没有预期)和自愿中断(例如执行访管指令)
  • 外中断(中断)和内中断(俘获)
  • 外中断:可屏蔽和不可屏蔽

操作系统的用户界面

操作系统的启动过程

  • 实模式
    8086寻址、1MB内存空间、20位物理地址=段地址:偏移地址、单任务运行
    操作系统原理01
  • 保护模式(内存保护模式)

IDE(Integrated-Drive-Electronics)是现在普遍使用的外部接口,主要接硬盘和光驱。采用16位数据并行传送方式,体积小,数据传输快。一个IDE接口只能接两个外部设备。IDE代表着硬盘的一种类型,但在实际的应用中,人们也习惯用IDE来称呼最早出现IDE类型硬盘ATA-1,这种类型的接口随着接口技术的发展已经被淘汰了,而其后发展分支出更多类型的硬盘接口,比如ATA、Ultra ATA、DMA、Ultra DMA等接口都属于IDE硬盘。目前硬件接口已经向SATA转移,IDE接口迟早会退出舞台。

BIOS

Basic I/O System(Firmware,固件)
不是硬件,不是软件

位置:F0000 - FFFFF

  • 系统启动配置
  • 基本的设备I/O服务
  • 系统加电自检(POST,Power On Self-Test)

操作系统原理01

MBR

主启动记录 放在外存的首扇区(512Bytes),以0xAA55结束
分区启动记录PBR
操作系统原理01

操作系统原理01

操作系统的启动

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

  1. 初始引导
    把OS核心接入内存,接管计算机系统
    操作系统原理01
    启动程序
    引导程序:ntldr、GRUB、bootmgr、LILO
    系统内核

  2. 核心初始化

  3. 系统初始化

操作系统原理01
操作系统原理01
操作系统原理01

操作系统原理01

系统调用

操作系统内核为应用程序提供的服务/函数

操作系统原理01

操作系统原理01

操作系统原理01

进程管理

进程的概念

操作系统原理01
操作系统原理01
操作系统原理01

进程的状态

操作系统原理01
操作系统原理01
操作系统原理01
操作系统原理01
操作系统原理01

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

是一个数据结构,用于OS感知、管理进程。
操作系统原理01

所以 抽象为
进程 = 程序 + PCB

操作系统原理01

操作系统原理01

操作系统原理01
操作系统原理01
操作系统原理01
Linux 0.1 task_struct 结构
操作系统原理01
Linux 相关的成员变量
操作系统原理01

进程的切换 就是 上下文的切换

操作系统原理01

进程控制

操作系统原理01

进程的创建

操作系统原理01

操作系统原理01
操作系统原理01

进程撤销

操作系统原理01

操作系统原理01

进程阻塞

操作系统原理01
操作系统原理01

进程唤醒

操作系统原理01

进程控制原语

操作系统原理01

Windows进程控制

操作系统原理01

Linux进程控制

操作系统原理01
操作系统原理01
操作系统原理01
操作系统原理01

线程的概念(Thread)

  1. 线程是可以直接由CPU运行的实体
  2. 一个进程可以创建多个线程
  3. 多个线程共享CPU可以实现并发运行

进程和线程的区别

进程拥有两个基本的属性:资源的拥有者和独立调度单位。

进程是资源分配和独立运行的基本单位,每一个进程都完成一个特定的任务。

线程的引入进一步提高了程序并发执行的程度,从而进一步提高了资源的利用率和系统的吞吐量。引入线程目的是减少并发执行时的时空开销。因为进程的创建、撤销、切换较费时空,它既是调度单位,又是资源拥有者。线程是系统独立调度和分派的基本单位,基本上不拥有系统资源,只需要少量的资源(指令指针IP,寄存器,栈),但可以共享其所属进程所拥有的全部资源。

一个进程可以创建一个或多个线程;一个线程可以创建一个或多个线程;一个进程可以创建一个或多个进程;但是线程不可以创建进程。

进程与线程的比较:

(1)引入线程后,线程是处理机调度的基本单位,进程是资源分配的基本单位,而不再是一个可执行的实体。在同一进程中线程的切换不会引起进程的切换,但从一个进程中的线程切换到另一个进程中的线程时。将会引起进程的切换。

(2)引入线程后,不仅进程之间可以并发执行,而且在一个进程中的多个线程之间也可以并发执行。多个线程会争夺处理机,在不同的状态之间进行转换。线程也是一个动态的概念,也有一个从创建到消亡的生命过程,具有动态性。

(3)进程是资源分配的单位,一般线程自己不拥有系统资源,但可以访问其隶属进程的资源。同一进程中的所有线程都具有相同的地址空间(进程的地址空间)。

(4)同进程的不同线程间的独立性要比不同进程间的独立性低得多。多个线程共享进程的内存地址空间和资源。

(5)创建、撤销一个新线程系统开销小。两个线程间的切换系统开销小。

(6)同进程的不同线程可以分配到多个处理机上执行,加快了进程的完成。

线程共享的资源包括:

(1) 进程代码段

(2) 进程的公有数据(利用这些数据,线程很容易实现相互之间的通讯)

(3) 进程的所拥有资源。

线程独立的资源包括:

(1)线程ID:每个线程都有自己唯一的ID,用于区分不同的线程。

(2)寄存器组的值:当线程切换时,必须将原有的线程的寄存器集合的状态保存,以便重新切换时得以恢复。

(3)线程的堆栈:堆栈是保证线程独立运行所必须的。

(4)错误返回码:由于同一个进程中有很多个线程同时运行,可能某个线程进行系统调用后设置了error值,而在该线程还没有处理这个错误,另外一个线程就在此时被调度器投入运行,这样错误值就有可能被修改。所以,不同的线程应该拥有自己的错误返回码变量。

(5)线程优先级:线程调度的次序(并不是优先级大的一定会先执行,优先级大只是最先执行的机会大)。

临界区和锁机制

临界区和临界资源

操作系统原理01

临界区访问机制

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

锁机制

实现临界区互斥

上锁原语
开锁原语

同步和互斥

操作系统原理01
互斥关系属于特殊的同步关系

信号灯P-V操作

操作系统原理01
信号与信号量的区别:

1.信号:(signal)是一种处理异步事件的方式。信号是比较复杂的通信方式,用于通知接受进程有某种事件发生,除了用于进程外,还可以发送信号给进程本身。

2.信号量:(Semaphore)进程间通信处理同步互斥的机制。是在多线程环境下使用的一种设施, 它负责协调各个线程, 以保证它们能够正确、合理的使用公共资源。

操作系统原理01
操作系统原理01
操作系统原理01

实现互斥
将S设为1,可以得到和锁机制一样的效果,实现进程之间互斥

实现同步
关键操作:需要条件、或者是别的操作的条件
在前置条件后面使用V操作,在后置关键操作前使用P操作

操作系统原理01

经典同步问题

生产者消费者问题
操作系统原理01
操作系统原理01

Windows同步机制

操作系统原理01

进程间的通信(IPC,Interprocess communication)

管道通信

管道,通常指无名管道
匿名管道
操作系统原理01
操作系统原理01
匿名管道智能用于父子兄弟进程之间
操作系统原理01
操作系统原理01

信号

操作系统原理01

相关文章: