目录

Operating System Chapter1 操作系统概述


Operating System

$Nanjing\ University\rightarrow Yanyan\ Jiang\newline$

操作系统概述

$Overvier\newline$

  • 为什么要学操作系统? $(why)\newline$
  • 到底什么是操作系统? $(what)\newline$
  • 怎么学操作系统? $(how)\newline$

为什么学操作系统?$(why)\newline$

  • 每天都在用的东西你没搞明白 $\rightarrow$ 窗口是怎么创建的? 为什么$Ctrl-C$有时不能退出程序?

  • 组里的服务器有128个处理器,而你的程序却只能用一个 😂

  • 你每天都在用的东西,却实现不出来🤡 $\rightarrow$ 浏览器,编译器,$IDE$,游戏/外挂,任务管理器,杀毒软件,病毒…

学完:

悟性好 $\rightarrow$ 系统方向“毕业”,具有编写一切“能写出来”程序的能力(具备阅读论文的能力)

悟性差 $\rightarrow$ 内力大增, 可能在工作中的某一天想起上课的内容

什么是操作系统?$(what)\newline$

Operating System: A body of software, in fact, that is responsible for making it easy to run programs (even allowing you to seemingly run many at the same time), allowing programs to share memory, enabling programs to interact with devices, and other fun stuff like that. (OSTEP)

/img/Operating System/chapter1-1.png
From PPT(什么是操作系统?)

Question:操作系统如何从一开始变成现在这样的?

$\rightarrow$ 三个重要的线索

计算机(硬件)

程序(软件)

操作系统(管理软件的软件)

操作系统历史

1940s
/img/Operating System/chapter1-2.png
From PPT(1940s 1)
/img/Operating System/chapter1-3.jpg
From PPT(1940s 2)
/img/Operating System/chapter1-4.jpg
From PPT(1940s 3)
/img/Operating System/chapter1-5.png
From PPT(1940s 4)
1950s
/img/Operating System/chapter1-6.png
From PPT(1950s 1)
/img/Operating System/chapter1-7.png
From PPT(1950s 2)

Example code on ppt

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
C---- THIS PROGRAM READS INPUT FROM THE CARD READER,
C---- 3 INTEGERS IN EACH CARD, CALCULATE AND OUTPUT
C---- THE SUM OF THEM.
  100 READ(5,10) I1, I2, I3
   10 FORMAT(3I5)
      IF (I1.EQ.0 .AND. I2.EQ.0 .AND. I3.EQ.0) GOTO 200
      ISUM = I1 + I2 + I3
      WRITE(6,20) I1, I2, I3, ISUM
   20 FORMAT(7HSUM OF , I5, 2H, , I5, 5H AND , I5,
     *   4H IS , I6)
      GOTO 100
  200 STOP
      END
/img/Operating System/chapter1-8.png
From PPT(1950s 3)
/img/Operating System/chapter1-9.png
From PPT(1950s 4)
1960s
/img/Operating System/chapter1-10.png
From PPT(1960s 1)
/img/Operating System/chapter1-11.png
From PPT(1960s 2)
/img/Operating System/chapter1-12.png
From PPT(1960s 3)
/img/Operating System/chapter1-13.png
From PPT(1960s 4)
1970s+
/img/Operating System/chapter1-14.png
From PPT(1970s+ 1)
/img/Operating System/chapter1-15.png
From PPT(1970s+ 2)
/img/Operating System/chapter1-16.png
From PPT(1970s+ 3)
today
/img/Operating System/chapter1-17.png
From PPT(today)

理解操作系统:三个根本问题

操作系统服务谁?

  • 程序 = 状态机
  • 课程涉及:多线程 $Linux$ 应用程序

(设计/应用视角) 操作系统为程序提供什么服务?

  • 操作系统 = 对象 + $API\newline$
  • 课程涉及:$POSIX$ + 部分$ Linux$ 特性

(实现/硬件视角) 如何实现操作系统提供的服务?

  • 操作系统 = C 程序
    • 完成初始化后就成为 $interrupt/trap/fault handler\newline$
  • 课程涉及:$xv6$, 自制迷你操作系统

怎么学操作系统?$(how)\newline$

  1. 是一个合格的操作系统用户
    • 会 $STFW/RTFM$ 自己动手解决问题
    • 不怕使用任何命令行工具
      • $vim, tmux, grep, gcc, binutils, …\newline$
  2. 不惧怕写代码
    • 能管理一定规模 (数千行) 的代码
    • 能在出 bug 时默念 “机器永远是对的、我肯定能调出来的”
      • 然后开始用正确的工具/方法调试

写代码 = 创造有趣的东西

  • 命令行 + 浏览器就是世界

教科书:

Remzi’s Operating Systems: Three Easy Pieces

顺序:并发 → 虚拟化 → 持久化

个人补充(考试用)

Update in 2023-03-02 又是🤡+💩🐴的一天

PPT上面讲了个🐔8️⃣,真是给✌️整无语了,又没看懂,看点书吧

2023-03-03 0:10 🤡半夜看书,确实是有🅱️IG🧊了

  • 计算机系统自上而下可大致分成四个部分:硬件,操作系统,应用程序和用户(和计组的分层不一样)

操作系统的特征

并发(Concurrence)

并发是指两个或多个事件在同一时间间隔内发生。操作系统的并发性是指计算机系统中同时存在多个运行的程序,因此它具有处理和调度多个程序同时执行的能力。引入进程的目的是使程序能并发执行

  • 注意区分同一时间间隔(并发)和同一时刻(并行)的区别。

    • 在多道程序环境下,一段时间内,宏观上有多道程序在同时执行,而每个时刻,单处理机环境下实际仅能有一道程序执行,因此微观上这些程序仍是分时交替执行的操作系统的并发性是通过分时得以实现的

    • 并行性是指系统具有同时进行运算或操作的特性,在同一时刻能完成两种或两种以上的工作并行性需要有相关硬件的支持,如多流水线或多处理机硬件环境

    • 例子:

      • 并发执行:吃十分钟面包(就吃面包) $\Longrightarrow$ 写十分钟字(就写字) $\Longrightarrow$ 吃十分钟面包(就吃面包)$\Longrightarrow$ $\dots$ (宏观上一起做微观上分着做)
      • 并行执行:左手拿着面包吃,右手写字(宏观和微观都是同时做)

共享(Sharing)

指系统中的资源可供内存中多个并发执行的进程共同使用。可分为两种方式

  • 互斥共享方式

    • 系统中的某些资源,如打印机,磁带机,虽然可供多个进程使用,但为使得所打印或记录的结果不致造成混淆,应规定在一个时间段内只允许一个进程访问此资源
      • 为此,当进程A访问某个资源时,必须先提出请求,若此时资源空闲,则系统便将之分配给进程A使用,此后又其他进程对该资源进行访问(只要A未用完)就必须等待仅当进程A访问完并释放该资源后,才允许另一个进程对该资源进行访问。这种资源访问方式就叫互斥式共享,把在一段时间内只允许一个进程访问的资源称为临界资源
      • 计算机系统中的大多数物理设备及某些软件中所用的栈,变量和表格,都属于临界资源,它们都要求被互斥地共享
      • 互斥共享的方式要求一种资源在一段时间内(哪怕是一段很小的时间)只能满足一个请求,否则就会出现严重的问题,(比如打印机第一行打的是A file的内容,第二行打的是B file的内容)。
  • 同时访问方式

    • 系统中还有另一类资源,这类资源允许在一段时间内由多个进程”同时“访问。这里所说的”同时“通常是宏观上的,而在”微观“上,这些进程可能是交替地对该资源进行访问即”分时共享“的可供多个进程”同时“访问的典型资源就是磁盘设备,一些用重入码编写的文件也可被”同时“共享,即允许若干个用户同时访问该文件
    • 同时访问共享通常要求一个请求分几个时间片段间隔地完成,其效果与连续完成地效果相同
  • 并发共享之间的关系

    • 并发和共享是操作系统两个最基本的特征
    • 资源共享是以程序的并发为条件的,若系统不允许程序并发执行,则自然不存在资源共享问题
    • 若系统不能对资源共享实施有效的管理,则必将影响到程序的并发执行,甚至根本无法并发执行

虚拟(Virtual)

虚拟是指把一个物理上的实体变为若干逻辑上的对应物。物理实体(前者)是实际存在的;而后者是虚的,是用户感觉上的事物。用于实现虚拟的技术,称为虚拟技术

操作系统中利用了多种虚拟技术来实现虚拟处理器,虚拟内存和虚拟外部设备等

  • 虚拟处理器技术
    • 虚拟处理器技术是通过多道程序设计技术,采用让多道程序并发执行的方法,来分时使用一个处理器的。此时,虽然只有一个处理器,但它能同时为多个用户服务,使每个终端用户都感觉有一个中央处理器(CPU)在专门为它服务利用多道程序设计技术把一个物理上的CPU虚拟为多个逻辑上的CPU,称为虚拟处理器
  • 虚拟存储器技术
    • 采用虚拟存储器技术将一台机器的物理存储器变为虚拟存储器,以便从逻辑上扩充存储器的容量。当然,这时用户所感觉到的内存容量是虚的。我们把用户感觉到(但实际不存在)的存储器称为虚拟存储器
  • 虚拟设备技术
    • 采用虚拟设备技术将一台物理$I/O$设备虚拟为多台逻辑上的$I/O$设备,并允许每个用户占用一台逻辑上的$I/O$设备使原来仅允许在一段时间内由一个用户访问的设备(即临界资源)变为在一段时间内允许多个用户同时访问的共享设备
  • 操作系统虚拟技术归纳
    • 时分复用技术 $\Longrightarrow$ 处理器的分时共享
    • 空分复用技术 $\Longrightarrow$ 虚拟存储器

异步(Asynchronism)
  • 多道程序环境允许多个程序并发执行,但是由于资源有限。进程的执行并不是一贯到底的,而是走走停停的,它以不可预知的速度向前推进,这就是程序的异步性
  • 异步性使得操作系统运行在一种随机的环境下可能导致进程的产生与时间有关的错误(就像对全局变量的访问顺序不当会导致程序出错一样)。然而,只要运行环境相同,操作系统就须保证多次运行程序后都能获得相同的结果

操作系统的目标和功能

Update in 2023-03-03 22:00

翘课爽玩的一天,✌️在百京就是百京朝阳✌️,逛了万达,不过万达也和老家的商网结构差不多,感觉全🇨🇳的五六层都是一个🅱️🐑,一楼🍎专卖店看了看MacBook Air,🐮魔是真得薄啊,加上类Unix的系统和续航,✌️将来有💸必须狠狠奖励自己一台

比喻

有了工人,机器就能发挥更大的作用,因此工人就成了”扩充机器“

操作系统作为计算机系统资源的管理者
处理机管理
  • 在多道程序环境下,处理机的分配和运行都以进程(或线程)为基本单位,因此对处理机的管理可归结为对进程的管理。并发是指在计算机内同时运行多个进程,因此进程何时创建,何时撤销,如何管理,如何避免冲突,合理共享就是进程管理的最主要的任务。进程管理的主要功能包括进程控制,进程同步,进程通信,死锁处理,处理机调度
存储器管理
  • 存储器管理是为了给多道程序的运行提供良好的环境,方便用户使用及提高内存的利用率,主要包括内存分配与回收,地址映射,内存保护与共享和内存扩充等功能
文件管理
  • 计算机中的信息都是以文件的形式存在的,操作系统中负责文件管理的部分称为文件系统文件管理包括文件存储空间的管理,目录管理及文件读写管理和保护等
设备管理
  • 设备管理的主要任务是完成用户的$I/O$请求,方便用户使用各种设备,并提高设备的利用率,主要包括缓冲管理,设备分配,设备处理和虚拟设备等功能

以上工作都由OS负责,用户无需关注

操作系统作为用户与计算机硬件系统之间的接口
  • 操作系统提供的接口主要分为两类:命令接口,程序接口
命令接口
  • 使用命令接口进行作业控制的主要方式有两种:联机控制方式和脱机控制方式
  • 按照作业控制方式的不同,可将命令接口分为联机命令接口脱机命令接口

  • 联机命令接口

    • 又称交互式命令接口,适用于分时或实时系统的接口。它由一组键盘操作命令组成。用户通过控制台或终端输入操作命令,向系统提出各种服务要求用户每输入一条命令,控制权就转给操作系统的命令解释程序,然后由命令解释程序解释并执行输入的命令,完成指定的功能。之后,控制权转回控制台或终端,此时用户又可输入下一条命令。联机命令接口可以这样理解:”雇主“说一句话,”工人“做一件事,并作出反馈,这就强调了交互性。(典型Linux的终端群魔乱舞 $\Longrightarrow$ shell是命令解析器)
  • 脱机命令接口

    • 又称批处理命令接口,适用于批处理系统,它由一组作业控制命令组成。脱机用户不能直接干预作业的运行,而应事先用相应的作业控制命令写成一份作业操作说明说明书,连同作业一起提交给系统。系统调度到该作业时,由系统中的命令解释程序逐条解释执行作业说明书上的命令,从而间接地控制作业地运行。
程序接口
  • 程序接口由一组系统调用(也称广义指令)组成,用户通过在程序中使用这些系统调用来请求操作系统为其提供服务
  • 当前最为流行的是用户图形界面($GUI$),即图形接口。
  • 严格来说,图形接口不是操作系统的一部分,但是图形接口所调用的系统调用命令是操作系统的一部分
操作系统实现了对计算机资源的扩充
  • 没有任何软件支持的计算机称为裸机
  • 操作系统所提供的资源管理功能和方便用户的各种服务功能,将裸机的功能变得更强大,使用变得更方便
  • 覆盖软件的机器称为扩充机器虚拟机
  • ”工人“操作机器,机器就有更大的作用,于是”工人“便成了”扩充机器“

  • 总结:操作系统是对计算机资源进行管理的软件

  • 补充:计算机开机后,操作系统最终被加载到RAM

操作系统历史

Update in 2023-03-04

昨天太™️累了,朝阳和西土城来回折腾加上录一下午节目给✌️整的浑身都是酸痛的,不给✌️录志愿百京✌️就鲨了你们所有人的🏇

今天直接😴🅱️🅱️了,一觉淦到1️⃣2️⃣点,到食堂狠狠地炫了🍜,下午把第一章给看完

手工操作阶段(此时没有操作系统)

一切都得人工干预

  • 两个突出的缺点
    • 用户独占全机,虽然不会出现因为资源已被其他用户占用而等待的现象,但资源利用率低
    • CPU等待手工操作,CPU的利用不充分
批处理阶段(操作系统开始出现)
单道批处理操作系统
  • 系统对作业的处理是成批进行的,但内存中始终保持一道作业
  • 目的:解决人机矛盾以及CPU和I/O设备速率不匹配

  • 特征

    • 自动性:磁带上的作业能自动地逐个运行,无须人工干预
    • 顺序性:磁带上的各道作业顺序地进入内存,各道作业完成顺序与它们进入内存的顺序在正常情况下应完全相同
    • 单道性:内存中仅有一道程序运行,当该程序完成发生异常情况时,才换入其后续程序进入内存运行
  • 问题:单道程序运行期间发出输入/输出请求后,高速的CPU需要处于等待低速的I/O完成的状态

多道批处理程序
  • 多道程序设计技术允许多个程序同时进入内存并允许它们在CPU中交替地运行这些程序共享系统中的各种硬/软件资源

  • 当一道程序因I/O请求而暂停运行时,CPU便立即转去运行另一道程序 $\Longrightarrow$ 实现系统各部件之间的并行工作,让系统各个组成部分的都尽量去“忙”,提高效率

  • 特点

    • 多道:计算机内存中同时存放多道相互独立的程序
    • 宏观上并行:同时进入系统的多道程序都处于运行过程中,即它们先后开始各自的运行,但都未运行完毕
    • 微观上串行内存中的多道程序轮流占有CPU,交替执行
  • 面临的问题

    • 如何分配处理器
    • 多道程序内存的分配问题
    • I/O设备如何分配
    • 如何组织和存放大量的程序和数据,以方便用户使用并保证其安全性与一致性
  • 优点:资源利用率高,系统吞吐量大

  • 缺点:用户响应时间较长;不提供人机交互能力用户即不能了解自己的程序的运行情况,又不能控制计算机

分时操作系统
  • 将处理器的运行时间切成很短的时间片,按照时间片把处理器分配给各联机作业使用
  • 若某个作业在分配给它的时间片内不能完成计算,则暂时停止该作业的运行,将处理器分配给其他作业使用,等待下一轮运行
  • 由于计算机运行很快,作业轮转地也很快,所以每个用户都感觉自己在独占一台计算机
  • 多个用户通过终端与主机进行交互而互不干扰,实现分时的关键就是如何使用户能与自己的作业进行交互
  • 分时操作系统支持多道程序设计,但是与多道批处理相比不同的是分时操作系统支持人机交互
  • 特征
    • 同时性(多路性):允许多个终端用户同时使用一台计算机
    • 交互性:用户可以通过终端与计算机交互
    • 独立性:系统中多个用户可以彼此独立的操作,互不干扰
    • 及时性:用户请求能在很短时间内获得响应
实时操作系统

有时间限制

  • 硬实时系统:某个动作必须绝对地在规定的时刻(或规定的时间范围内)发生,如飞行器的飞行自动控制系统
  • 软实时系统:能够接受偶尔违反时间规定且不会引起任何永久性损害,入订票系统,银行管理系统
网络操作系统

通过计算机网络将各台计算机有机地联合起来,特点是网络中各种资源的共享及各台计算机之间的通信

分布式计算机系统
  • 系统中任意两台计算机通过通信方式交换信息,系统中每台计算机都具有同等地位(没有主机和从机)
  • 每台计算机上的资源都能为所有用户共享,系统中的任意台计算机都可以构成一个子系统,而且还能重构
  • 任何工作都可以分布在几台计算机上,由它们并行工作,协同完成
  • 用于管理分布式计算机系统的操作系统称为分布式计算机系统
    • 特点:分布性和并行性
    • 与网络操作系统本质不同:分布式操作系统中的若干计算机相互协同完成同一任务
个人计算机系统

主要为办公和游戏而生,主流:windows,macOS,linux

总结
/img/Operating System/chapter1-18.png
OS发展历史

操作系统运行环境

Update

睡过头了,下午接着写。马上收尾,晚上写💩🎠的英语作业

处理器的运行模式
  • 指令分类

    • 特权指令:指不允许用户直接使用的指令,如I/O指令,置中断指令等
    • 非特权指令:指允许用户直接使用的指令,它不能直接访问系统中的软硬件资源,仅限于访问用户的地址空间,这也是为了防止用户程序对系统造成破坏
  • CPU的运行模式

    • 用户态(目态):只能执行非特权指令,用户自编程序运行在用户态
    • 核心态(管态,内核态):能够执行特权指令,切换到用户态的指令也是特权指令操作系统内核程序运行在核心态
操作系统内核
  • 内核是计算机配置的底层软件,它管理着各种资源,$应用程序 \xleftrightarrow{内核} 硬件$,主要包括4方面内容
    • 时钟管理:操作系统需要通过时钟管理来向用户提供标准的系统时间。另外,通过时钟的中断管理,可以实现进程的切换
    • 中断机制:键盘或鼠标的信息输入,进程的管理和调度,系统功能的调用,设备驱动,文件访问等,无不依赖于中断机制。可以说,现在操作系统是靠中断驱动的软件
      • 中断机制中,只有一小部分功能属于内核,它们负责保护和恢复中断现场的信息,转移控制权到相关的处理程序。这样可以减少中断的处理时间,提高系统的并行处理能力
    • 原语(Atomic Operation):按照层次结构设计的操作系统,底层必然是一些可被调用的公共小程序,它们各自完成一个规定的操作。它们的特点如下
      • 处于操作系统的最底层,是最接近硬件的一部分
      • 这些程序的运行具有原子性,其操作只能一气呵成(出于系统安全性和便于管理考虑)$\Longrightarrow$ 类比Java里面的lock()synchronized
      • 运行时间较短,而且调用频繁
      • 定义原语:关闭中断,让所有动作不可分割地完成后再打开中断。
      • 例子:系统中的设备驱动,CPU切换,进程通信等功能中的部分操作都可定义为原语
    • 系统控制的数据结构及处理:系统中用来登记状态信息的数据结构有很多,如作业控制块,进程控制块等。为了实现有效的管理,系统需要一些基本的操作,常见的操作有一下3种:
      • 进程管理:进程状态管理,进程调度和分派,创建和撤销进程控制块等
      • 存储器管理:存储器的空间分配和回收,内存信息保护程序,代码对换程序等
      • 设备管理:缓冲区管理,设备分配和回收等

中断和异常

  • 定义

    • 中断(Interruption):也称外中断是指来自CPU执行指令外部的事件,通常用于信息输入/出,如设备发出的I/O结束中断,表示设备输入/出处理已经完成。时钟中断,表示一个固定的时间片已到,让处理机处理计时,启动定时运行的任务等
    • 异常(Exception):也称内中断,是指来自CPU执行指令内部的事件如程序的非法操作码,地址越界,运算溢出,虚拟系统的缺页及专门的陷入指令等引起的事件异常不能被屏蔽,一旦出现,就应立即处理。
  • 联系与区别

  • 处理过程:复习计组

系统调用

  • 大致分类
    • 设备管理
    • 文件管理
    • 进程控制
    • 进程通信
    • 内存管理
/img/Operating System/chapter1-19.png
两种状态的切换

由用户态进入核心态,不仅状态需要切换,而且所用的堆栈也可能需要从用户堆栈切换为系统堆栈但这个系统堆栈也是属于该进程的

宏内核

也称单内核或大内核,是指将系统的主要功能模块都作为一个紧密联系的整体运行在核心态,从而为用户程序提供高性能的系统服务。因为各管理模块之间共享信息,能有效利用相互之间的有效特性,所以具有无可比拟的性能优势

微内核

由于宏内核过于庞大,所以有了微内核构架,讲内核中最基本的功能保留在内核,而将那些不需要在核心态执行的功能移到用户态执行,从而降低内核设计复杂性。

  • 基本功能
    • 进程(线程)管理
    • 低级存储器管理
    • 中断和陷入处理

操作系统引导

  1. 激活CPU
  2. 硬件自检
  3. 加载带有操作系统的硬盘
  4. 加载主引导记录MBR
  5. 扫描硬盘分区表
  6. 加载分区引导记录PBR

虚拟机

/img/Operating System/chapter1-20.png
虚拟机两种模式

声明:本文章引用资料与图像均已做标注,如有侵权本人会马上删除