计算机操作系统学习笔记

1、http://c.biancheng.net/skill/os/list_113_1.html
2、https

文章目录

    • 1.1 课程概述
      • 1.1.1 理论学习
      • 1.1.2 实验学习
    • 1.2 什么是操作系统
      • 1.2.1 操作系统的定义
      • 1.2.2 操作系统的架构层次
      • 1.2.3 操作系统组成
      • 1.2.4 OS Kernel的特征
      • 并发和并行的区别:
    • 1.3 为什么学习操作系统
      • 1.3.1 设计操作系统需要满足的要求
    • 1.4 如何学习操作系统
    • 1.5 操作系统实例
    • 1.6 操作系统的历史
    • 1.7 操作系统结构
    • 1.8 小结
    • 2.1 操作系统的启动
    • 2.2 操作系统的中断、异常和系统调用
    • 3.1 计算机体系结构/内存分层体系
      • 3.1.1 计算机体系结构
    • 3.2 地址空间与地址生成
    • 3.3 连续内存分配
    • 3.4 连续内存分配:压缩式与交换式碎片整理
    • 4.1 非连续内存分配:分段
    • 4.2 非连续内存分配:分页
    • 4.3 非连续内存分配:页表--概述、TLB
    • 4.4 非连续内存分配:页表--二级、多级页表
    • 4.5 非连续内存分配:页表--反向页表
    • 5.1 虚拟内存的起因
    • 5.2 覆盖技术
    • 5.3 交换技术
    • 5.4 虚拟内存技术(上)
    • 5.5 虚拟内存技术(下)
    • 6.1 局部页面置换算法--最优页面置换算法
    • 6.2 局部页面置换算法--先进先出算法
    • 6.3 局部页面置换算法--最近最久未使用算法(Least Recently Used ,LRU)
    • 6.4 局部页面置换算法--时钟页面置换算法
    • 6.5 局部页面置换算法--二次机会法
    • 6.6 局部页面置换算法--最不常用算法(Least Frequently Used , LFU)
    • 6.7 局部Belady现象、LRU、FIFO、Clock的比较
    • 6.8 局部页面替换算法的问题、工作集模型
    • 6.9 两个全局页面置换算法
    • 6.10 抖动问题
    • 7.1 进程的定义
    • 7.2 进程的组成
    • 7.3 进程的特点
    • 7.4 进程控制结构
    • 7.5 进程的生命周期原理
    • 7.6 进程状态变化模型
    • 7.7 进程挂起
    • 7.8 为什么使用线程
    • 7.9 什么是线程
    • 7.10 线程的实现
    • 7.11 上下文切换
    • 7.12 进程控制--创建进程
    • 7.13 进程控制--加载和执行进程
    • 7.14 进程控制--等待和终止进程
    • 8.1 CPU调度
    • 8.2
    • 9.1 进程/线程 同步互斥问题
    • 9.2 基本概念(上)
    • 9.3 基本概念(中)
    • 9.4 基本概念(下)
    • 9.5 临界区

1.1 课程概述

1.1.1 理论学习

基本概念及原理
操作系统介绍
中断及系统调用
内存管理
进程及线程
调度
同步
文件系统
I/O子系统

1.1.2 实验学习

(使用uCore这个迷你操作系统作为实验平台)

系统启动与中断
物理内存管理
虚拟内存管理
内核线程管理
用户进程管理
CPU调度
同步与互斥
文件系统

1.2 什么是操作系统

1.2.1 操作系统的定义

1)从用户角度上来说,操作系统是一个控制软件。用于管理应用程序、为应用程序提供服务、杀死应用程序;
2)从操作系统内部工作角度上来说,操作系统用于资源管理。用于管理外设、分配资源。

1.2.2 操作系统的架构层次

1)在硬件之上,应用程序之下;
2)OS在应用软件之下,为其提供服务支撑。

1.2.3 操作系统组成

OS主要分为shell(外壳)和kernel(内核),GUI属于shell。

1.2.4 OS Kernel的特征

1)并发(多个程序在同一段时间段内一起运行,快速反复的交替运行),计算机系统中同时存在多个运行的程序,需要OS管理和调度;
2)共享,即可以“同时”访问、互斥共享;
3)虚拟,即一台物理计算机虚拟出多台虚拟机(利用多道程序设计技术,让每个用户都觉得有一个计算机专门为他服务);
4)异步,程序的执行不是一贯到底,而是走走停停,向前推进的速度不可预知,但只要运行环境相同,OS需要保证程序运行的结构也要相同。

并发和并行的区别:

并行(parallel): 指在同一时刻,有多条指令在多个处理器上(多核CPU)同时执行。所以无论从微观还是从宏观来看,二者都是一起执行的。
计算机操作系统学习笔记_第1张图片
并发(concurrency): 指在同一时刻只能有一条指令执行,但多个进程指令被快速的轮换执行,使得在宏观上具有多个进程同时执行的效果,但在微观上并不是同时执行的,只是把时间分成若干段,使多个进程快速交替的执行。
计算机操作系统学习笔记_第2张图片

1.3 为什么学习操作系统

OS结合了许多不同的课程和知识:程序设计语言、数据结构、算法、计算机体系结构、材料、操作系统概念和原理,源代码、技能、操作系统的设计和实现。
OS还在不停的发展,在工控等各种领域有强烈的需求,OS很酷,很有用,有挑战,它由硬件的发展和应用的需求所驱动。

1.3.1 设计操作系统需要满足的要求

1.4 如何学习操作系统

我听到的我会忘记;
我看到的我能记住;
只有我做过的我才能理解。

1.5 操作系统实例

UNIX家族
Linux家族
Windows家族

1.6 操作系统的历史

1.7 操作系统结构

1.8 小结

2.1 操作系统的启动

中断:外部设备发出
异常:应用程序意想不到的行为发出的
系统调用:应用程序请求操作提供服务

2.2 操作系统的中断、异常和系统调用

开销

3.1 计算机体系结构/内存分层体系

3.1.1 计算机体系结构

CPU
内存
设备(I/O)
计算机操作系统学习笔记_第3张图片
在OS中管理内存的不同方法
1)程序重定位
2)

3.2 地址空间与地址生成

地址空间的定义:包含物理地址空间和逻辑地址空间。
计算机操作系统学习笔记_第4张图片
地址生成:
地址安全检查:
计算机操作系统学习笔记_第5张图片

3.3 连续内存分配

内存碎片:空间内存不能被利用
外部碎片:在分配单元之间间的未使用内存
内部碎片:已分配给应用程序,但未使用的内存
计算机操作系统学习笔记_第6张图片

3.4 连续内存分配:压缩式与交换式碎片整理

以上三种内存分配的方式,都会产生内存碎片,为了提高内存使用率,减少碎片,有2种办法:
1)压缩式碎片整理:重置程序以合并孔洞(将程序从内存中一个地方移到另一个地方)。这要求所有程序是动态可重置的,但要考虑何时重置,以及它的开销。
2)交换式碎片整理:将当前未运行的程序放入硬盘(虚拟内存)中,需要执行时再调出。
计算机操作系统学习笔记_第7张图片

4.1 非连续内存分配:分段

连续内存分配的缺点:
1)分配给一个程序的物理内存是连续的
2)内存利用率较低
3)有外碎片、内碎片的问题
非连续分配的优点:
1)一个程序的物理地址空间是非连续的
2)更好的内存利用和管理
3)允许共享代码与数据(共享库等…)
4)支持动态加载和动态链接
非连续分配的缺点:
如何建立虚拟地址和物理地址之间的转换:硬件方案和软件方案的设计
两种硬件方案:分段、分页
分段要考虑:程序的分段地址空间和分段寻址方案
计算机操作系统学习笔记_第8张图片

4.2 非连续内存分配:分页

绝大部分CPU主要采用分页的方式实现非连续内存分配。
计算机操作系统学习笔记_第9张图片

4.3 非连续内存分配:页表–概述、TLB

4.4 非连续内存分配:页表–二级、多级页表

4.5 非连续内存分配:页表–反向页表

5.1 虚拟内存的起因

5.2 覆盖技术

计算机操作系统学习笔记_第10张图片
计算机操作系统学习笔记_第11张图片

5.3 交换技术

计算机操作系统学习笔记_第12张图片
计算机操作系统学习笔记_第13张图片

5.4 虚拟内存技术(上)

计算机操作系统学习笔记_第14张图片
计算机操作系统学习笔记_第15张图片
计算机操作系统学习笔记_第16张图片
计算机操作系统学习笔记_第17张图片
计算机操作系统学习笔记_第18张图片

5.5 虚拟内存技术(下)

计算机操作系统学习笔记_第19张图片

6.1 局部页面置换算法–最优页面置换算法

计算机操作系统学习笔记_第20张图片
计算机操作系统学习笔记_第21张图片

6.2 局部页面置换算法–先进先出算法

计算机操作系统学习笔记_第22张图片

6.3 局部页面置换算法–最近最久未使用算法(Least Recently Used ,LRU)

计算机操作系统学习笔记_第23张图片
计算机操作系统学习笔记_第24张图片

6.4 局部页面置换算法–时钟页面置换算法

计算机操作系统学习笔记_第25张图片
计算机操作系统学习笔记_第26张图片

6.5 局部页面置换算法–二次机会法

计算机操作系统学习笔记_第27张图片

6.6 局部页面置换算法–最不常用算法(Least Frequently Used , LFU)

计算机操作系统学习笔记_第28张图片

6.7 局部Belady现象、LRU、FIFO、Clock的比较

计算机操作系统学习笔记_第29张图片计算机操作系统学习笔记_第30张图片

6.8 局部页面替换算法的问题、工作集模型

6.9 两个全局页面置换算法

计算机操作系统学习笔记_第31张图片
计算机操作系统学习笔记_第32张图片

6.10 抖动问题

计算机操作系统学习笔记_第33张图片

7.1 进程的定义

计算机操作系统学习笔记_第34张图片

7.2 进程的组成

计算机操作系统学习笔记_第35张图片
计算机操作系统学习笔记_第36张图片
一个程序每次执行时,处理的数据不同,得出的结果不同,导致形成不同的进程。
计算机操作系统学习笔记_第37张图片
计算机操作系统学习笔记_第38张图片

7.3 进程的特点

计算机操作系统学习笔记_第39张图片
计算机操作系统学习笔记_第40张图片

7.4 进程控制结构

计算机操作系统学习笔记_第41张图片
计算机操作系统学习笔记_第42张图片
A计算机操作系统学习笔记_第43张图片
计算机操作系统学习笔记_第44张图片

7.5 进程的生命周期原理

创建、运行、等待、唤醒、结束
计算机操作系统学习笔记_第45张图片
计算机操作系统学习笔记_第46张图片
计算机操作系统学习笔记_第47张图片
计算机操作系统学习笔记_第48张图片
计算机操作系统学习笔记_第49张图片

7.6 进程状态变化模型

7.7 进程挂起

计算机操作系统学习笔记_第50张图片
计算机操作系统学习笔记_第51张图片

计算机操作系统学习笔记_第52张图片
计算机操作系统学习笔记_第53张图片
计算机操作系统学习笔记_第54张图片
计算机操作系统学习笔记_第55张图片

7.8 为什么使用线程

计算机操作系统学习笔记_第56张图片
计算机操作系统学习笔记_第57张图片
计算机操作系统学习笔记_第58张图片
计算机操作系统学习笔记_第59张图片
计算机操作系统学习笔记_第60张图片

7.9 什么是线程

计算机操作系统学习笔记_第61张图片
计算机操作系统学习笔记_第62张图片
什么时候用进程,什么时候用线程?
高性能计算中用线程;浏览器打开多个网页用进程,因为某个网页如果崩溃,若使用的线程,会导致浏览器打开的所有网页全部崩溃。
计算机操作系统学习笔记_第63张图片

7.10 线程的实现

计算机操作系统学习笔记_第64张图片
用户线程与内核线程之间的对应关系:一对一、多对一、多对多
计算机操作系统学习笔记_第65张图片
计算机操作系统学习笔记_第66张图片
计算机操作系统学习笔记_第67张图片
计算机操作系统学习笔记_第68张图片
计算机操作系统学习笔记_第69张图片
计算机操作系统学习笔记_第70张图片

7.11 上下文切换

上下文切换的定义:
计算机操作系统学习笔记_第71张图片
进程切换的过程:
计算机操作系统学习笔记_第72张图片
计算机操作系统学习笔记_第73张图片

7.12 进程控制–创建进程

讲解与7.11重复 to do

7.13 进程控制–加载和执行进程

计算机操作系统学习笔记_第74张图片
计算机操作系统学习笔记_第75张图片

7.14 进程控制–等待和终止进程

计算机操作系统学习笔记_第76张图片
进程控制块PCB是代表进程存在的唯一标识
计算机操作系统学习笔记_第77张图片
计算机操作系统学习笔记_第78张图片

8.1 CPU调度

8.2

9.1 进程/线程 同步互斥问题

计算机操作系统学习笔记_第79张图片
计算机操作系统学习笔记_第80张图片

9.2 基本概念(上)

同步/互斥是为了解决进程PID不确定性的问题
计算机操作系统学习笔记_第81张图片
计算机操作系统学习笔记_第82张图片

9.3 基本概念(中)


解锁
死锁

9.4 基本概念(下)

临界区
互斥

9.5 临界区

临界区的属性:
计算机操作系统学习笔记_第83张图片

你可能感兴趣的:(计算机操作系统学习笔记)