操作系统笔记

目录

第一章 操作系统概述

1-1操作系统初步认识

桌面常见四大操作系统

操作系统基本功能

第一周需要掌握的知识点

问题1:解释并发、并行、串行。

问题2:C语言编译过程详解

问题3:内存和硬盘的区别:

问题4:malloc的用法和意义

思考题:

1-2操作系统功能和定义

功能一:进程管理(CPU管理)

功能二:内存管理

功能三:设备管理

功能四:文件管理

操作系统的定义

操作系统的地位(承上启下)

1-3操作系统发展历史

操作系统发展的四个典型阶段

手工操作(无OS阶段)

单道批处理系统  

问题:

多道批处理系统          

1-4分时技术与分时操作系统

60年代硬件的两个重大进展

分时操作系统的背景

分时技术

分时系统的特点

Unix历史

1-5典型操作系统类型

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

第二章  操作系统逻辑结构

2.1 操作系统的逻辑结构

1.整体式结构

2.层次结构

3.微内核结构

Linux vs Minix (1992)

2-2 CPU的态

CPU态

态的分类

用户态和核态之间的转换

硬件和OS对CPU的观察

Intel CPU的态

存储器

2-3 中断机制

中断源与中断类型(与一些概念)

课外补充

第三章 操作系统用户界面

3.1 操作系统启动过程

3.1.1 BIOS 和主引导记录MBR

实模式和保护模式

加电自检和自举

主启动记录MBR

BIOS和MBR程序运行过程

3.1.2 操作系统启动过程

启动过程

初始引导

核心初始化

系统初始化

windows的启动过程

LINUX的启动过程

3.2 操作系统生成

Linux操作系统的生成

3.3 用户界面

3.3.1 用户界面概念

用户界面的定义

用户界面的分类

操作界面

DOS典型命令

LINUX典型命令

批处理

SheII

Bash的主要功能

Bash的命令行补全功能

命令历史与命令重复

管道

3.3.2 Shell脚本编程 

运行脚本程序的三个方法

3.4 系统调动

用户界面的定义

系统调用的定义

系统调用的特点

隐式系统调用

Linux系统调用的工作原理

本次重点答疑

第四章    进程管理 

4.1 进程概念

4.1.1 进程基本概念

程序运行在并发环境中的问题

 新概念:进程

进程定义

进程的特征

 进程与程序的区别 

进程的类型

4.1.2 进程状态

进程状态的变迁 

Linux进程的状态

4.1.3 进程控制块

4.2 进程控制

4.2.1 进程控制的概念 

进程创建

进程撤销

进程阻塞

进程唤醒

4.2.2 windows进程控制

4.2.3Linux进程控制

问题汇总

4.3 线程

4.3.1 线程概念

单线程和多线程程序

4.3.2 线程典型应用场景 

使用线程的麻烦

4.4 临界区和锁

4.4.1  临界资源与临界区 

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

4.4.2  锁机制

4.5 同步和P-V操作

4.5.1 同步和互斥概念

4.5.2 P-V操作概念

4.5.3 P-V操作解决互斥问题

4.5.4 P-V操作解决同步问题

4.5.5 经典同步问题

小结

第五章   死锁

5.1 死锁概念

5.2 死锁起因

5.3 死锁预防策略

第六章 进程调度

6.1  进程调度概念

6.2 典型调度算法 

第八章 设备管理

8.1 设备管理概念

8.2 Spooling系统​

第九章 文件系统

9.1 文件系统概念

9.2 文件物理结构

9.3 FAT文件系统

9.4 文件存储和目录 

               内存使用与分段

 


关于对笔记的思考:笔记不能只是仅仅记,单纯的复制粘贴,或者是往书上摘抄。效率都是最低。得浓缩,或者说对某个点赋予自己的想法。以及课内外知识的补充与课后的复习,将知识融会贯通,运用出来,最后才是真正的东西,才是自己的财富。

第一章 操作系统概述

 

 

 

 

1-1操作系统初步认识

桌面常见四大操作系统

1.windows

2.Linux

3.Mac

4.Unix

操作系统基本功能

1.提供操作界面

2.控制程序运行

3.管理系统资源

4.配置系统参数

5.监控系统状态

6.工具软件集合

第一周需要掌握的知识点

需要掌握:

1、os的功能
2、os的定义
3、单道批处理系统

 


问题1:解释并发、并行、串行。

https://laike9m.com/blog/huan-zai-yi-huo-bing-fa-he-bing-xing,61/

并行指物理上同时执行,并发指能够让多个任务在逻辑上交织执行的程序设计

“并发”指的是程序的结构,“并行”指的是程序运行时的状态


问题2:C语言编译过程详解

https://www.cnblogs.com/knife-king/p/11090029.html

编写hello world C程序:
// hello.c
#include <stdio.h>
int main()
{
    printf("hello world!\n");
}

编译过程只需:
$ gcc hello.c # 编译
$ ./a.out # 执行
hello world!

 

1.预处理(Preprocessing)

预处理用于将所有的#include头文件以及宏定义替换成其真正的内容,预处理之后得到的仍然是文本文件,但文件体积会大很多。gcc的预处理是预处理器cpp来完成的

2.编译(Compilation)

这里的编译不是指程序从源文件到二进制程序的全部过程,而是指将经过预处理之后的程序转换成特定汇编代码(assembly code)的过程。

3.汇编(Assemble)

汇编过程将上一步的汇编代码转换成机器码(machine code),这一步产生的文件叫做目标文件,是二进制格式。gcc汇编过程通过as命令完成

4.链接(Linking)

链接过程将多个目标文以及所需的库文件(.so等)链接成最终的可执行文件(executable file)。

 

问题3:内存和硬盘的区别:

  内存:内存又称主存,计算机中的程序的运行都是在内存中进行的,只有计算机在运行,计算机CPU就会把需要的计算数据调到内存中进行运算。通常内存分为随机存储器(RAM)、只读存储器(ROM)、高速缓存(CACHE)。

        硬盘:从计算机的结构体系来讲,硬盘应该算是计算机的“外存”。

        二、内存和硬盘的区别

        内存和硬盘的主要区别,主要为以下三点:

        1、内存是计算机运行的场所,硬盘用来存放暂时不用的信息;

        2、内存是半导体材料制成的,硬盘是磁性材料制成的;

        3、内存中的信息会随掉电消失,硬盘中的信息可以长久保存。

        三、内存和硬盘的联系

        内存和硬盘的联系还是十分紧密的,如下:

        硬盘上的信息是永远是暂时不用的,若要使用硬盘上的信息,则需要插入内存。CPU与硬盘不发生直接的数据交换,CPU只是通过控制信号来指挥硬盘工作,硬盘上的信息只有被装入内存后才能被处理。


问题4:malloc的用法和意义

https://blog.csdn.net/chf_1/article/details/78688557

一般指malloc函数

malloc函数是一种分配长度为num_bytes字节的内存块的函数,可以向系统申请分配指定size个字节的内存空间。malloc的全称是memory allocation,中文叫动态内存分配,当无法知道内存具体位置的时候,想要绑定真正的内存空间,就需要用到动态的分配内存。

返回类型是 void* 类型。void* 表示未确定类型的指针。C,C++规定,void* 类型可以通过类型转换强制转换为任何其它类型的指针。


思考题:

1.Hello.exe文件如何存放?

https://blog.csdn.net/weixin_42513339/article/details/87892276

  1. 预处理:预处理相当于根据预处理命令组装成新的 C 程序,不过常以 i 为扩展名。
  2. 编 译:将得到的 i 文件翻译成汇编代码 .s 文件。
  3. 汇 编:将汇编文件翻译成机器指令,并打包成可重定位目标程序的 o 文件。该文件是二进制文件,字节编码是机器指令。
  4. 链 接:将引用的其他 o 文件并入到我们程序所在的 o 文件中,处理得到最终的可执行文件

2.Hello.exe程序如何启动?

通过编译和链接这两个步骤会产生一个.exe可执行文件。这个可执行文件是由编译器(VC++、VS、Dev C++ 等)这个软件生成的。当单击“执行”或按 Ctrl+F5 时,执行的就是这个 .exe 文件。但这个文件并不是编译器执行的,而是由 CPU 执行的。
当单击“执行”或按 Ctrl+F5 时,编译器就会向操作系统发出请求,让操作系统执行这个 .exe 文件。而当操作系统收到编译器的请求时,它就会调用 CPU,让 CPU 来执行。执行的结果就是在显示器输出"HelloWorld!"。这就是这个程序的执行过程。
如果没有操作系统,所有的软件都是不能运行的。所以不要以为编译器可以解决任何问题。它的所有操作也都要靠底层操作系统的支持,并最终靠 CPU 来执行。因为只有操作系统才能控制硬件,所有的软件都不能直接访问硬件

3.如何为Hello.exe内存分配?

https://blog.csdn.net/cymy001/article/details/78682741

https://blog.csdn.net/runinprogram/article/details/78688989

利用堆栈分配,函数等等分配。

4.printf如何输出字符串?

直接输出?

5.while死循环会不会独占CPU?

会,而且当切换到别的进程时,别的进程告诉系统自己没什么事情要做,不需要那么多的时间,这个时候系统就会切换到下一个进程,直到回到这个死循环的进程上,而这个进程无论什么时候都再循环,所以一直会报告有事情要做,系统就会把尽可能多的时间分给他。
实际上是这个死循环任务用光了别的进程节省下来的时间。while循环会使得CPU占用率很高。

https://blog.csdn.net/S1amDuncan/article/details/78840031?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

6.程序结束如何退出系统?

直接退出?没懂题目意思

1-2操作系统功能和定义

功能一:进程管理(CPU管理)

进程控制:创建,暂停,唤醒,撤销;

进程调度:调度策略,优先级;

进程通信:进程间通信。

功能二:内存管理

内存分配

内存共享

内存保护

虚拟内存

功能三:设备管理

设备的分配和调度

设备无关性作

设备传输控制

设备驱动

功能四:文件管理

存储空间管理

文件的操作

目录的操作

文件和目录的存取权限管理

操作系统的定义

操作系统是一个大型系统程序

1.提供用户借口,方便用户控制计算机

2.负责为应用程序分配和调度软硬件资源,并控制与协调应用程序并发活动,帮助用户存取和保护信息。

操作系统的地位(承上启下)

1-3操作系统发展历史

用户需求提升硬件技术进步是操作系统发展的两大动力!

操作系统发展的四个典型阶段

手工操作(无OS阶段)  50年代早期

单道批处理系统              50年代

多道批处理系统               60年代初

分时系统                            60年代中

手工操作(无OS阶段)

电子管时代  (1946-1955)

 

单道批处理系统  

背景

晶体管时代(1955-1965),1955年,IBM推出第一台晶体管计算机。


问题:

单道批处理系统工作特点要掌握 

你是如何理解 对CPU的管理 就是对进程的管理 ?

因为进程管理实质上是对处理机执行“时间”的管理,即如何将CPU真正合理地分配给每个任务。

由于作业在外存中要形成"后备队列",进而内存有优先顺序,因而作业可能很长时间不能运行,所以周期较长

重点: 单道批处理系统CPU的利用情况  (此图是重点,要求理解掌握)

多道批处理系统          

多道程序相互穿插的运行过程

1-4分时技术与分时操作系统

多道批处理系统的特点              (现代操作系统的里程碑)

60年代硬件的两个重大进展

分时操作系统的背景

分时技术

分时系统的特点

Unix历史

 

 

1-5典型操作系统类型

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

1.微机操作系统

2.多处理机操作系统

3.网络操作系统

4.实时操作系统

5.嵌入式操作系统

微机操作系统

实时操作系统

嵌入式操作系统

网络操作系统

适合学习的小型开源操作系统

Minix os

推荐学习的大型开源操作系统

Linux(redhat-红帽子

 

第二章  操作系统逻辑结构

这节课掌握CPU的态
深刻理解中断过程
记得看一下相关寄存器

问题:什么是CPU的态?

2.1 操作系统的逻辑结构

逻辑结构

OS的设计和实现思路

逻辑结构的种类

  1. 整体式结构
  2. 层次式结构
  3. 微内核结构(客户/服务器结构,ClIENT/SERVER)

1.整体式结构

模块为基本单位构建

2.层次结构

分层原则:所以功能模块按照调用次序排成若干层,相邻层间只有单向依赖或单向调用。

层次结构的软件例子:TCP/IP协议栈(TCP/IP 协议栈是一系列网络协议的总和,是构成网络通信的核心骨架,它定义了电子设备如何连入因特网,以及数据如何在它们之间进行传输。)

当你输入一个网址并按下回车键的时候,首先,应用层协议对该请求包做了格式定义;紧接着传输层协议加上了双方的端口号,确认了双方通信的应用程序;然后网络协议加上了双方的IP地址,确认了双方的网络位置;最后链路层协议加上了双方的MAC地址,确认了双方的物理位置,同时将数据进行分组,形成数据帧,采用广播方式,通过传输介质发送给对方主机。而对于不同网段,该数据包首先会转发给网关路由器,经过多次转发后,最终被发送到目标主机。目标机接收到数据包后,采用对应的协议,对帧数据进行组装,然后再通过一层一层的协议进行解析,最终被应用层的协议解析并交给服务器处理。

深入浅出 TCP/IP 协议栈

分层原则

层次结构的优点

3.微内核结构

操作系统=微内核+核外服务器             minix os(微内核结构)

Linux vs Minix (1992)

2-2 CPU的态

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

  • CPU
  • 内存
  • 中断
  • 时钟

CPU态

  • CPU的工作状态
  • 对资源和指令使用权限的描述

态的分类

核态

  • 能够访问所有资源和执行所有指令
  • 管理程序/OS内核

用户态

  • 仅能访问部分资源,其他资源受限
  • 用户程序

管态

  • 介于核态和用户态之间

用户态和核态之间的转换

 

硬件和OS对CPU的观察

 

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

Intel CPU的态

存储器

作用:存储程序和数据部件

存储体系

https://www.cnblogs.com/mylearning-log/p/10932053.html (浅谈CPU)

寄存器是CPU内部用来存放数据的一些小型存储区域,用来暂时存放参与运算的数据和运算结果。其实寄存器就是一种常用的时序逻辑电路,但这种时序逻辑电路只包含存储电路。寄存器的存储电路是由锁存器或触发器构成的,因为一个锁存器或触发器能存储1位二进制数,所以由N个锁存器或触发器可以构成N位寄存器。寄存器是中央处理器内的组成部分。寄存器是有限存储容量的高速存储部件,它们可用来暂存指令、数据和位址。 [2] 

在计算机领域,寄存器是CPU内部的元件,包括通用寄存器、专用寄存器和控制寄存器。寄存器拥有非常高的读写速度,所以在寄存器之间的数据传送非常快。

累加寄存器:存储执行运算的数据和运算后的数据。

标志寄存器:存储运算处理后的CPU的状态。

程序计数器:存储下一条指令所在内存的地址。

基址寄存器:存储数据内存的起始地址。

变址寄存器:存储基址寄存器的相对地址。

通用寄存器:存储任意数据。

指令寄存器:存储指令。CPU内部使用,程序员无法通过程序对该寄存器进行读写操作。

栈寄存器:存储栈区域的起始地址。

Cache存储器,电脑中为高速缓冲存储器,是位于CPU主存储器DRAM(Dynamic Random Access Memory)之间,规模较小,但速度很高的存储器,通常由SRAM(Static Random Access Memory 静态存储器)组成。它是位于CPU与内存间的一种容量较小但速度很高的存储器。CPU的速度远高于内存,当CPU直接从内存中存取数据时要等待一定时间周期,而Cache则可以保存CPU刚用过或循环使用的一部分数据,如果CPU需要再次使用该部分数据时可从Cache中直接调用,这样就避免了重复存取数据,减少了CPU的等待时间,因而提高了系统的效率。

存储器(Main memory),简称主存。是计算机硬件的一个重要部件,其作用是存放指令和数据,并能由中央处理器(CPU)直接随机存取。现代计算机是为了提高性能,又能兼顾合理的造价,往往采用多级存储体系。即由存储容量小,存取速度高的高速缓冲存储器,存储容量和存取速度适中的主存储器是必不可少的。主存储器是按地址存放信息的,存取速度一般与地址无关。32位(比特)的地址最大能表达4GB的存储器地址。 

辅存狭义上是我们平时讲的硬盘。科学地说是外部存储器(需要通过I/O系统与之交换数据,又称为辅助存储器)。 

分级存储系统的工作原理

2-3 中断机制

中断的定义

  • CPU对突发的外部事件的反应过程或机制
  • CPU收到外部信号(中断)后,停止当前工作,转去处理该外部事件,处理完毕后回到会员工作的中断处(断点)继续原来的工作。

引入中断的目的

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

 

中断源与中断类型(与一些概念)

中断响应 考试不考 但是要理解 

课外补充

第三章 操作系统用户界面

3.1 操作系统启动过程

3.1.1 BIOS 和主引导记录MBR

实模式和保护模式

实模式(实地址模式,REAL MODE)

  • 程序按照8086寻址方式访问0h-FFFFFh(1MB)空间
  • 寻址方式:物理地址=段地址:偏移地址
  • CPU单任务运行

保护模式(内存保护模式,PROTECT MODE)

  • 寻址方式:段(32位)和偏移量(32位),寻址4GB空间
  • 段的属性:起始地址,存取属性,权限级别,...
  • 段页式寻址机制(段,页)
  • 虚拟地址,进程,封闭空间
  • 应用程序和操作系统的运行环境都被保护
  • CPU支持多任务

加电自检和自举

主启动记录MBR

BIOS和MBR程序运行过程

3.1.2 操作系统启动过程

启动过程

  • 从加电到用户工作环境准备好的过程
  • 1.初始引导
  • 2.核心初始化
  • 3.系统初始化

初始引导

核心初始化

系统初始化

windows的启动过程

LINUX的启动过程

3.2 操作系统生成

操作系统的生成

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

操作系统生成的主要步骤

  • 根据硬件环境/用户要求配置功能模块和构造参数
  • 构建(build)OS的映像

操作系统的生成前提

  • 操作系统由可拆装模块构成
  • 有交互式配置工具
  • 有映像构建工具

Linux操作系统的生成

  • 1.获取OS内核的源代码
  • 2.选择和启动内核配置程序
  • 3.根据需要配置内核模块和参数
  • 4.重新编译新的内核
  • 5.编译和安装模块
  • 6.启动新内核

3.3 用户界面

3.3.1 用户界面概念

用户界面的定义

  • OS提供给用户控制计算机的机制,又称用户接口。

用户界面的分类

  • 操作界面
  • 系统调用(system call,系统功能调用,程序界面)

操作界面

图形用户接口(GUI)

窗口,图标,菜单,按钮,鼠标(消息,事件)

键盘命令(COMMAND)

  • 在控制台环境下接受键盘输入的命令
  • 类型

DOS典型命令

LINUX典型命令

批处理

  • 普通命令的集合,批执行,由command解释执行
  • 支持变量替换、条件、转移、循环、注释等简单语法
  • *.BAT
  • 例子:累计1..100,输出和5050.

 

SheII

  • 它是OS与用户交互的界面
  • 它表现为通过控制台执行用户命令的方式
  • 它本身不执行命令,仅仅是组织和管理命令

Bash的主要功能

  • 命令行编辑功能
  • 命令和文件名补全功能
  • 命令历史功能
  • 命令别名功能
  • 提供作业控制功能
  • 管道与重定向
  • 具有将命令序列定义为功能键的功能
  • shell脚本编程

Bash的命令行补全功能

命令历史与命令重复

管道

3.3.2 Shell脚本编程 

脚本通过类似程序的方式执行具有一定逻辑顺序的命令序列完成较复杂的功能和人机交互。

  • 脚本程序保存在文本文件中;
  • 脚本程序是Shell命令语句的集合
  • 所有命令逐行执行(按逻辑)
  • 凡是能够在shell直接执行的命令,都可以在脚本中使用。
  • 脚本还可以使用一些不能在shell下自己执行的语句。

 

运行脚本程序的三个方法

  • 方法1:直接运行(用缺省版本的shell运行脚本程序)
  • 方法2:使用某个特定版本的shell执行脚本
  • 方法3:在脚本文件首行制定shell

3.4 系统调动

用户界面的定义

  • OS提供给用户控制计算机的机制,又称用户接口。

  • 用户界面的分类

  • 操作界面

  • 系统调用(system call,系统功能调用,程序界面)

系统调用的定义

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

  • 21h(09),printf(),exit()

系统调用的特点

  • 一般涉及核心资源或硬件的操作

  • 运行于核态

  • 每个系统调用具有唯一的编号:ID

  • 调用过程会产生中断、自愿中断

隐式系统调用

  • 特点:类似API函数

  • 在高级语言中使用

  • 包含有“INT 80h”中断指令,执行相应的系统调用。

Linux系统调用的工作原理

本次重点答疑

本次上课重点:1、os用户界面2、系统调用

重点掌握:用户界面的概念,分类   重点理解进程的概念

操作界面:图形用户接口 键盘命令

那么shell属于什么? shell就是在操作系统和应用程序之间的一个命令翻译工具。

https://blog.csdn.net/mydistance/article/details/85345004

属于操作界面的哪一种   答:文本界面,或者叫做命令行界面。是相对于图形界面说的。

什么是系统调用?

Linux内核中设置了一组用于实现各种系统功能的子程序,称为系统调用。用户可以通过系统调用命令在自己的应用程序中调用它们。从某种角度来看,系统调用和普通的函数调用非常相似。区别仅仅在于,系统调用由操作系统核心提供,运行于核心态;而普通的函数调用由函数库或用户自己提供,运行于用户态。

第四章    进程管理 

4.1 进程概念

4.1.1 进程基本概念

回顾:操作系统的功能——并发/分时环境

特点:OS会在任何时候暂停或继续一个程序的运行

程序运行在并发环境中的问题

  • 运行过程不确定
  • 结果不可再现(程序运行被干扰)
  • 解决方案:对运行过程施加相互制约

 新概念:进程

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

 

进程定义

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

进程的特征

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

 进程与程序的区别 

动态与静态

  • 进程是动态的:程序的一次执行过程
  • 程序是静态的:一组指令的有序集合

暂存与长存

  • 进程是暂存的:在内存驻留
  • 程序是长存的:在介质上长期保存

 程序和经常的对应

  • 一个程序可能有多个进程

进程的类型

按使用资源的权限 

  • 系统经常:指系统内核相关的进程
  • 用户进程:运行与用户态的进程

按对CPU的依赖性

  • 偏CPU进程:计算型进程
  • 偏I/O进程:侧重于I/O的进程

4.1.2 进程状态

运行状态

  • 进程已经占有CPU,在CPU上运行

就绪状态

  • 具备运行条件但由于无CPU,暂时不能运行。

阻塞状态(等待状态)

  • 因等待某服务完成或信号无法运行的状态
  • 如等待:系统调用,I/O操作,合作进程信号

进程状态的变迁 

(重点必考)

回答上面的问题   

Linux进程的状态

4.1.3 进程控制块

进程的描述

进程控制块

  • 描述进程状态、资源、和鱼相关进程关系的数据结构
  • PCB是进程的标志
  • 创建进程时创建PCB;进程撤销后PCB同时撤销

 进程=程序+PCB

PCB的数据结构

进程的切换

4.2 进程控制

4.2.1 进程控制的概念 

进程控制的概念

在进程生存全期间,对其全部行为的控制

四个典型的控制行为

进程创建

功能:创建一个具有指定标识的进程

参数

进程标识、优先级、进程起始地址、CPU初始状态、资源清单等。

创建进程的过程

进程撤销

进程阻塞

 

进程唤醒

 

4.2.2 windows进程控制

4.2.3Linux进程控制

 

问题汇总

问 进程的概念 

进程和程序的区别

进程的三种状态以及三态转换

就绪状态和阻塞状态的区别

进程运行需要什么条件

进程控制块里会存储什么?

CPU态和进程状态的区别 

CPU态与进程的态

进程三个态 考试必考

单CPU上只有一个运行态

PCB是什么?

为了描述控制进程的运行,系统中存放进程的管理和控制信息的数据结构称为进程控制块(PCB Process Control Block),它是进程实体的一部分,是操作系统中最重要的记录性数据结构。它是进程管理和控制的最重要的数据结构,每一个进程均有一个PCB,在创建进程时,建立PCB,伴随进程运行的全过程,直到进程撤消而撤消。

并发????? 其实想申明的是 要把知识点 串联起来 而不是仅仅的文字 

exit()有啥用  

进程四个操作 进程的言语  进程的概念 进程的转换 等等 

4.3 线程

4.3.1 线程概念

线程概念

1.是可由CPU直接运行的实体

2.一个进程可以创建多个线程

3.多个线程共享CPU可实现并发运行

单线程和多线程程序

4.3.2 线程典型应用场景 

线程技术典型使用场景

1.多个功能需要并发的地方 

2.需要改善窗口交互性的地方 

3.需要改善程序结构的地方 

4.多核CPU上的应用,充分发挥多核性能

使用线程的麻烦

4.4 临界区和锁

4.4.1  临界资源与临界区 

什么是临界区,临界资源

临界资源

一次只允许一个进程独占访问资源

例:例子中的共享变量i

临界区

进程中访问临界资源的程序段

临界区和临界资源的访问特点

  • 具有排他性
  • 并发进程不能同时进入临界区

 

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

忙则等待

  • 当临界区忙时,其他进程必须在临界区外等待

空闲让进

  • 当无进程处于临界区时,任何有权进程可进入临界区

有限等待

  • 进程进入临界区的请求应在有限时间内得到满足

让权等待

  • 等待进程放弃CPU(让其他有机会得到)

4.4.2  锁机制

基本原理

  • 设置一个“标志”S;
  • 表明临界资源“可用”还是“不可用”?1:0

上锁操作:进入临界区之前。检查标志是否“可用”?

  • 若为“不可用”状态:进程在临界区之外等待 
  • 若为“可用”状态:
  • 访问临界资源
  • 且将标志修改为“不可用”

开锁操作:退开临界区时将标志修改为“可用”状态

 

 

4.5 同步和P-V操作

4.5.1 同步和互斥概念

进程的互斥关系

多个进程由于共享了独占性资源,必须协调各进程对资源的存取顺序:确保没有任何两个

或以上的进程同时进行存取操作

互斥和资源共享相关

资源:临界资源

存取操作区域:临界区

进程的同步关系

进程的同步关系-另一种解释

合作进程中某些操作之间需要满足某种先后关系或某个操作能否进行需要满足某个前提条件,否则只能等待

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

4.5.2 P-V操作概念

信号灯的概念

信号灯用于进程同步的基本思想

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

进程受控制:信号灯的状态可以阻塞唤醒进程

改变信号灯:信号灯的状态可以被进程改变

信号灯机制

信号灯操作

P操作(函数或操作,P(S,q))

V操作(函数或操作,V(S,q))

4.5.3 P-V操作解决互斥问题

实质是实现对临界区的互斥访问

允许最多1个进程处于临界区

应用过程

进入临界区之前先执行P操作;(可能阻塞当前进程

离开临界区之后在执行V操作;(可能唤醒某个进程

S的初值设置要合理

4.5.4 P-V操作解决同步问题

利用信号灯P-V操作实现同步

同步机制实质

运行条件不满足时,能让进程暂停

运行条件满足时,能让进程立即继续

P-V操作应用于进程同步的基本思路

暂停当前进程:在关键操作之前执行P操作

  • 必要时可暂挺

继续进程;在关键操作之后执行V操作

  • 必要时唤醒合作进程

定义有意义的信号量S,并设置合适的初值

  • 信号量S能明确地表示“运行条件”

4.5.5 经典同步问题

 

 

 

小结

信号灯机制P-V操作解决同步问题

关键操作之前P操作

关键操作之后V操作

区分关键操作或运行条件或影响

生产者-消费者问题

同步和互斥混合

读者-写者问题

互斥问题

第五章   死锁

5.1 死锁概念

哲学家进餐问题

死锁定义

两个或多个进程无限期地等待永远不会发生的条件的一种系统状态。

【结果:每个进程都永远阻塞】

5.2 死锁起因

系统资源有限

资源数目不足,进程对资源的竞争而产生死锁。

并发进程的推进顺序不当

进程请求资源和释放资源的顺序不当,导致死锁

关于死锁的一些结论

参与死锁的进程至少是2个

两个或以上进程才会出现死锁

参与死锁的进程至少有两个已经占有资源

参与死锁的所有进程都在等待资源

参与死锁的进程是当前系统中所有进程的子集

死锁会浪费大量资源,甚至导致系统崩溃。

5.3 死锁预防策略

死锁的必要条件

互斥条件

进程互斥使用资源,资源具有独占性。

不剥夺条件

进程在访问完资源前不能被其他进程强行剥夺

部分分配条件

进程边运行边申请资源,临时需要临时分配

区别于:全部分配

 

解决死锁的策略

预防死锁

通过设置某些限制条件,破坏死讯四个必要条件中的一个或多个,来防止死锁。

缺点:由于限制太严格,通导致资源利用率和吞吐量降低。

避免死锁

不事先采取限制去破坏产生死锁的条件,而是在资源分配过程中,用某种方法评估是否进入死锁,若是,则

拒绝此次分配资源,从而避免死锁。

银行家算法

只需要较弱的限制条件,可获得较高资源和吞吐量。

缺点:实现较难。

检测和恢复死锁


允许死锁发生,但可通过检测机制及时检测出死锁状态,并精
确确定与死锁有关的进程和资源,然后采取适当措施,将系统
中已发生的死锁清除,将进程从死锁状态解脱出来。


缺点1:检测方法复杂,实现难度大


缺点2:恢复方法靠人工、撤消一些进程,回收资源再分配。


预先静态分配法


目的
■破坏部分分配条件
策略
■进程运行前将所需资源一次性全部分配给它。因此进程在运行过程中不再提出资源请求,从而避免出现阻塞或者死锁。
 

特点
■执行可能被延迟:所需资源不能全部满足时。

■应用开销增大:运行前估算资源需求
■资源利用率低:资源被占而不用

改进
■资源分配的单位由进程改为程序步

有序资源分配法
目的:破坏环路条件,使得环路无法构成。
策略
系统中的每个资源分配有一个唯序号;
进程每次申请资源时只能申请序号大的资源!


如果进程已占有资源的序号最大为M则下次只能申请序
号大于M的资源不能再申请序号小于或等于M的资源
[如何证明?]按有序资源分配法分配资源并发进程不会死锁
 

第六章 进程调度

 

6.1  进程调度概念

进程调度:在合适的时候以一定策略选择一个就绪进程运行。

进程调度的目标


响应速度尽可能快
2进程处理的时间尽可能短
3系统吞吐量尽可能大
4资源利用率尽可能高
5对所有进程要公平
6避免饥饿
7避免死锁
上述部分原则之间存在自相矛盾!

周转时间

进程提交给计算机到最终完成所花费的时间

t=tc-ts
◆ts---------进程的提交时间(Start)
◆tc---------进程的完成时间(Complete
◆意义:
◆说明进程在系统中停留时间的长短

典型调度算法
1.先来先服务调度( First Come First Serve)

2.短作业优先调度算法( Shortob First)

3.响应比高者优先调度算法
4.优先数调度算法
5.循环轮转调度法( ROUND-ROBIN)
6.可变时间片轮转调度法
7.多重时间片循环调度法
 

6.2 典型调度算法 

1.先来先服务调度( First Come First Serve)

算法
■按照作业进入系统的时间先后来挑选作业先进入系统的作业优先被运行
口特点
容易实现,效率不高
只考虑作业的等候时间而没考虑运行时间的长短因此一个晚来但是很短的作业可能需要等待很长时间才能被运行,因而本算法不利于短作业


2.短作业优先调度算法( Short Job First)

算法
参考运行时间选取运行时间最短的作业投入运行。

特点
易于实现率不高
忽视了作业等待时间,个早来但是很长的作业将会在很长时间得不到调度,易出现资源饥饿”的现象

3.响应比高者优先调度算法


特点
■响应比=1+等待时间/行时间
■如果作业等待时间相同,则运行时间越短的作业,其响应比越高,因此越容易被调度。因而有利于短作业
■如果作业运行时间相同,则等待时间越长的作业,其响应比越高因此越容易被调度。因而有利于等候长的作业
■对于运行时间长的作业,其优先级可以随等待时间的增加而提高当其等待足够久的时侯,也有可能获得CPU

4.优先数调度算法
口算法
根据进程优先数,把CPU分配给最高的进程进程优先数静态优先数+动态优先数
静态优先数
■进程创建时确定,在整个进程运行期间不再改变动态优先数
动态优先数在进程运行期间可改变
 

5.循环轮转调度法( ROUND-ROBIN-)

优点
公平性:每个就绪进程有平等机会获得CPU
交互性:每个进程等待(N-1)q的时间就可以重新获得CPU时间片q的大小
■如果q太大
◆交互性差
甚至退化为FCFS调度算法
■如果q太小
◆进程切换频繁,系统开销增加

第八章 设备管理

 

8.1 设备管理概念

设备管理的主要功能

1)设备分配
2)设备映射

3)设备驱动


8.2 Spooling系统

虚拟分配


虚拟技术
在一类物理设备上模拟另一类物理设备的技术
◆借助辅存部分区域模拟独占设备,将独古设备转化为共享设备。

虚拟设备
用来模拟独占设备的部分辅存称为虚拟设备,虚拟独设备输入井:模拟输入设备的辅存区域
■输出井:模拟输出设备的辅存区域

SPOOLing的结构


输入井和输出井
■磁盘上开辟的两个存储区域
◆输入井模拟机输入时的磁盘
◆输出井模机输出时的磁盘


输入缓冲区和输出缓冲区
■内存中开启的作者
◆输入缓冲有车入数据,以后再传送到输入井。

◆输出缓冲区车出以后再传送到输出设备。
 

第九章 文件系统

9.1 文件系统概念

1.文件和文件系统概念

定义

分类

属性

文件系统

文件分类
分类标准1:文件的用途
■系统文件
口 包括操作系统的可执行程序和数据文件,这种文件不对用户开放,仅供系统使用
■库文件
口 系统为用户提供的各种标准函数库和实用程序等用户只能使用这些文件,而无权对其进行修改。
■用户文件
口 用户创建的文件,如用户可执行程序,源程序,数据文件等,这种文件的使用和修改权均属于用户

分类标准2:文件的操作权限

■只读文件
口只允许进行读操作。

■读写文件
口允许进行读写操作。

■不保护文件
口不作任何操作限制。

分类标准3:文件的性质
■普通文件
口指一般的用户文件和/或系统文件。

■目录文件
口记录目录里面文件列表信息口文件名,文件存放地址,文件属性

■设备文件
口把设备作为文件管理和使用。

 

文件系统
口定义
■负责管理文件的机构称为文件系统。
功能
■负责文件的创立、撤消、读写、修改、复制和存取控制等,并管理存放文件的存储设备
文件系统的目标是让用户以文件名来存取文件
 

文件的结构
逻辑结构
■(用户的观点
为用户提供逻辑结构清晰使用方便的文件■强调文件信息项的构成方式和用户的存取方式物理结构
■(系统的观点)
■文件在存储设备(例:硬盘)上的存储结构■强调合理利用储存空间,缩短/存取时间
 

随机存取
概念
■直接存取
存取操作时指定存取的位置
特点
对流式文件或记录为定长的记录式文件容易确定存取位置。对记录不定长的记录式文件比较定位较麻烦
口从第1条记录开始查询,直到找到要存取的记录为止口建立素引
索引可作为文件部分也可单建索引文件
 

9.2 文件物理结构

文件物理结构
□概念
文件物理结构是指文件在存储设备上(例硬盘)的存储方式强调合理利用储存空间并缩短存取时间
□类型
连续文件
索引结构
串联文件

 

连续文件

优点
简单
支持顺序存和随ji
存速度快取所磁盘寻道次数和寻道时间最少

索引文件
概念
■文件存放在不连续的存储块中。
■建立索引表记录文件逻辑块和物理存储块的对应关系。

■索引表单独放在存储块中。
索引文件特点
■文件=索引区+数据区
■先访问索引,再访问数据
■支持顺序存取和随机存取
■支持文件动态增长、插入、删除

 

 

 

9.3 FAT文件系统

FAT文件系统
口扇区
■磁盘上最小寻址存储单元(51字节)簇(cluster)存储块
■设备的最小存取单元,固定数量的扇区。

簇的例子
■360KB磁盘:簇=2个扇区(1,024字节)

■10MB硬盘:簇=8个扇区(4,096字节)

■2GB硬盘:簇=64个扇区簇(32KB)
 

9.4 文件存储和目录 

存储空间管理
功能
■记录磁盘使用情况,管理和分配、回收存储空间。记录磁盘空闲块的方法
■空闲文件目录
■空闲块链
■位示图

空闲文件目录
■空闲文件
把连续空闲区成个特殊文件申多个续闲块组成。
■空件用
所有空储设备全闲空间
为空区件建的门用文件且录
每个表项对应个文件包括第一个空闲块号空闲块个数筹信息。

 

内存使用与分段

 

创建进程的第一件事,便是将程序和数据装入内存。

程序的装入
将程序(模块)装入内存时,(地址映射)可以有三种方式:
1.绝对装入方式
编译的时候,即进入内存前,就进行地址映射。

2.可重定位装入方式(静态重定位方式)
进入内存的时,进行地址映射
3.动态运行时装入方式
·从就绪到运行的时候,才进行地址映射。
 

 

 

多级页表提高了空间效率,但是在时间上?
■多级页表增加了访存的次数,尤其是64位系统
提高效率的基本想法:件支持
■要很快:这个硬件访在哪里?寄存器
表小→寄存器可行,但如果页表很大呢?
 TLB(Translation Look-aside Buffer)
是一组相联快速存储,是寄存器

局部性原理很重要!

考分页

给逻辑地址算 物理地址 

内存管理

绝对装入方式:进入内存前就映射物理地址

计算机系统很小,且运行单道程序时可用,在编译时就产生绝对地址,通过程序的相对地址继续执行。装在实现指定地址

可重定位装入:进入内存时进行地址映射

编译时重定位只能在内存固定位置,载入时重定位程序一旦载入就不能动,通过逻 辑地址和起始地址相加

动态运行时装入:从就绪到运行时地址映射

可在对换系统使用,不直接将逻辑地址变为物理地址,等要用到时在改变,为了防 止影响速度,回加一个重定位寄存器

段式存储管理

按段分配,有段表

固定分区,可变分区(动态分区)

动态分区方法

首先适配法(快):从空闲分区表从起始开始找到大小可包含进程的分区

最佳适配(回产生许多小的空闲区):找最小但可包容进程的分区

最差适配(多次后会减少大空闲区使大进程无法分配空闲区):找最大分区

通过内存紧凑分配出大空闲区(但是时间长)

分页存储管理

像分面包,一片一片给,吃完后不够再要,最多浪费一片面包

页框为物理地址,存储逻辑地址页号,高位一般为页号低位是大小,通过页号对应 的页框写出物理地址

多级页表:将页号划分为页目录号和页号(多次访问存储空间)

请求调页(虚拟内存的基本操作)

物理内存一般小于虚拟内存,虚拟内存查找页表,找到后区物理内存找,如果找不 到,再到磁盘的缓冲区找,找到并将其放入物理内存空闲的页框,并执行。若无空

闲物理的内存页框,则淘汰一页。算法如下

FIFO:先来先出

OPT(理论算法):寻找未来最远的在物理页框内的进程,将其替换出去

LRU:最近最少使用淘汰;根据程序时间的局部性

Lru算法的模拟方法

添加时间戳:找最小时间戳的移除,进入时添加时间戳,但时间久后时间回变 大,不建议使用

页码栈:新进入的在栈顶,进入已有进程时,将进程移到栈顶,其他依次下移, 来一个页框中没有的进程时,将最底的进程移除,但置换次数过多

系统在运行多个进程时,因为要不断的请求调页,缺页率急剧增大被称为颠簸,所以要 分配足够的页框(物理内存分页)

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值