操作系统笔记

操作系统概述

操作系统的基本概念

操作系统的概念


操作系统是管理计算机硬件和软件资源的计算机程序。

计算机系统的构成: 用户  、应用程序、 操作系统 、 硬件。

计算机系统是一种 系统软件,功能有 

1.与硬件交互;

2.对资源共享进行调度管理;

3.解决并发操作处理中存在的协调问题;

4.数据结构复杂,外部接口多样化,便于用户反复使用。

操作系统做了什么?

1.管理与配置内存;

2.决定系统资源供需的优先次序;

3.控制输入和输出设备;

4.操作网络与管理文件系统等基本事务;

5.提供一个让用户与系统交互的操作界面。

操作系统的目标

有效性

(管理系统资源)

1. 提高系统资源利用率    2.提高系统吞吐量

方便性

(方便用户使用)

可扩充性

(作为扩充机器)

开放性

(作为扩充机器)

操作系统的功能

OS作为计算机系统资源的管理者

这里的计算机系统资源 就是指的硬件

1.处理机(CPU)管理

2.存储器管理

3.I/O设备管理

4.文件管理

OS作为用户与计算机【硬件系统】之间的接口

1.程序接口

给应用程序使用

应用程序访问操作系统的接口 叫做系统调用

2.命令接口

给用户使用(例如 黑窗口cmd)

3.图形用户(GUI)接口

给用户使用

OS实现了对计算机资源的抽象

1.将具体的计算机硬件资源抽象成软件资源,方便用户使用

2.开放简单的访问方式,隐藏实际细节

例如 百度搜索 ,只需要用户输入搜索内容就能找到相关的事件

其实需要很多的细节来组成这个过程。

操作系统的特征

ce18c84556164054be0c148a8b2007a9.png

并发

同一时间间隔内执行和调度多个程序的能力

宏观上,处理机同时执行多道程序。

微观上,处理机在多道程序间高速切换(分时交替执行

例如:先执行 程序1 20ms,再执行程序2 10ms ,再执行程序3 10ms.

再依次执行程序 1 、2、 3。

关注单个处理机同一时间段内处理任务数量的能力

相似概念:并行

并发:同一时间间隔(时间段)发生的事件数量

并行:同一时刻(时间点)发生的事件数量

ee936c6d8c48416984ff34b97d4d5c67.png

 例如:

餐厅打饭时,

并发指 目前餐厅内共有12人就餐(排队打饭的和打完饭的人)

并行指 同一时间点最多3人一起打饭

联系到前面的 

OS的目标: 有效性 (提高系统资源的利用率  提高系统的吞吐量)

并发量可以提高 OS的有效性

并发的定义:关注 单个处理机 同一时间段内 处理任务数量 的能力

共享

系统中的资源供多个【并发执行】的应用程序共同使用

同时共享方式:同一时间段允许多个应用程序同时访问资源(例如 演唱会歌迷可以一起听歌)

互斥共享方式:允许多个应用程序在同一共享资源上进行独立而互不干扰的工作(例如 去公共电话亭打电话 只有等前一个人打完后一个人才能打电话)

并发和共享互为前提

共享要求OS同时运行多道程序,若只有单道程序运行那么不存在共享的可能。

并发难以避免的导致多道程序同时访问同一个资源,若多道程序无法共享部分资源则无法开发。

多道程序同时访问同一个资源: 例如 笔记本电脑上很多的应用程序在同时访问着唯一的CPU

虚拟

使用某种技术把一个物理实体变成多个逻辑上的实物

 1.时分复用技术 ;2.空分复用技术

异步

程序执行的不可预知性

例如:程序什么时候开始执行、 程序因为什么而停止、程序执行所需的时间。

操作系统的发展与分类

手工操作阶段

批处理阶段

单道批处理

内存中只有一道程序

CPU需要等待I/O设备完成

多道批处理 

提高CPU的利用率

提高内存和I/O设备利用率

增加系统吞吐量

平均周转时间长

无人机交互(从输入作业到作业输出不能进行其他操作)

14cf1d254e1b4038a4df4e49811fbe10.png

单道批:作业输入、CPU执行、作业输出,前一个作业完成才能进行下一个

单道批串行运行

多道批:前一个作业输入完成进行CPU执行,这时就可进行下一个作业的输入。

多道批并行运行

分时操作系统

一台主机连接多个带有显示器和键盘的终端,同时允许多个用户通过自己的终端,以交互方式使用计算机,共享主机中的资源。

78dbfedffe9341fd88ec6e5fd3c5e311.png

为什么需要分时系统?

1.人机交互

2.共享主机

3.便于用户上机

关键问题

及时接收 

及时处理(作业提前进入内存,并且能和用户交互)

分时操作系统的特征

多路性:时间片轮转机制

独立性:用户彼此独立

及时性:用户能在短时间内获得响应

交互性:用户可以请求多种服务

分时操作系统的缺点

作业/用户的优先级相同,不能优先处理紧急任务。

实时操作系统

系统能即时响应外部事件的请求,在规定的时间内完成该事件的处理,并控制所有实时任务协调一致地运行。

应用需求

实时控制

实时信息处理

实时任务

周期/非周期性实时任务(根据周期性)

硬/软实时任务(根据截止时间)

硬实时任务指一定要在截止时间前完成 有硬性标准

软实时任务则反之

实时操作系统特征

多路性

独立性

及时性:以用户能接受的等待时间为准

交互性

可靠性:多级容错,保障系统和数据的安全

(多级容错指有多种出错后的解决办法 从而保障系统和数据的安全)

分时操作系统和实时操作系统的 及时性不同

分时操作系统的及时性:用户能在短时间内获得响应

实时操作系统的及时性:以用户能接受的等待时间为准

后者时间要求上更加严格 精确到毫秒及以下

微机操作系统

单用户单任务

多用户多任务

其他操作系统

网络操作系统

资源共享

远程通信

分布式操作系统

把任务分给多个计算机去完成,各计算机的优先级相同

分布性

并行性

操作系统的运行环境

用户空间 和 内核空间

e645b3cef67e424bb85c6f7bbd6e1cf0.png

 分为 用户空间 和 内核空间

用户空间:

应用程序 、用户态 、非特权指令

内核空间:

内核程序、核心态、特权指令

应用程序和内核程序:

应用程序是操作系统非必要的程序,内核程序是必要的程序。

用户态和核心态:

CPU在执行用户空间的程序时是用户态,在执行内核空间的程序时是核心态。

CPU中有个程序状态字在运行前者时是1,代表是用户态;后者是0,代表是核心态。

非特权指令和特权指令:

在执行用户空间的程序时是非特权指令,执行内核空间时是特权指令。

操作系统的运行机制

时钟管理

计时:提供系统时间(例如 并发中需要计时来进行不同的作业)

时钟中断:比如 进程切换

中断机制

提高多道程序环境下CPU的利用率(例如 在等一个程序进行I/O时可以 进程切换到下一个程序)

外中断

中断信号来源于外部设备(被迫中断)

内中断

中断信号来源于当前指令(主动中断)

陷阱/陷入:由应用程序主动引发

50c604da1f2e4218b1d92f408ba64a45.png

 例如

在执行一个应用程序时,执行到指令3 时需要进行一个其他操作,那么CPU就产生一个陷入指令,

从而来进行其他的操作。

陷入指令又叫房管指令、内陷指令。

陷阱/陷入 是良性的。

故障:由错误条件引发

a16a6cd6465044ceac51c90d6b2529ea.png

 CPU执行某个程序时,发现没有数据文件,那么此时出现内存缺页故障,CPU产生一个故障中断,当解决这个故障后程序还是会继续 执行接下来的指令。

终止:由致命错误引发

产生 地址越界、非法访问 的错误,会进行终止。

只要是中断,都会有对应的中断处理程序。

中断处理过程

76a3f7e1baf846ee975c1ce8ef3b35b7.png66a559c269494428a341a246292efc02.png

 1.关中断:CPU不响应高级中断请求

 2.保存断点:相当于程序计数器PC  记录当前的中断处的指令位置

3.引出中断服务程序

引出指 获取该程序的内存地址

4.保存现场和屏蔽字

保存一下

5.开中断

6.执行中断服务程序

7.关中断

8.恢复现场和屏蔽字

9.开中断

原语

原语运行在内核空间

1.由若干条指令组成(说明原语是一个程序段)

2.用来完成某个特定功能

3.执行过程不被中断(说明原语具有原子性)

原语的底层实现利用的是 关中断 和 开中断 

所以其 执行过程不被中断

原语(Primitive)和函数的区别

  1. 原语:原语是编程语言中最基本的操作,通常由编译器或解释器直接支持。它们是语言的核心功能,不能再分解为更小的操作。例如,赋值操作、算术运算符、逻辑运算符等都可以被视为原语。

  2. 函数:函数是由一系列语句组成的可重复使用的代码块。函数可以接受输入参数并返回一个结果。与原语不同,函数是由程序员定义的,可以根据需要进行扩展和修改。函数提供了一种模块化的方式来组织代码,并且可以通过调用函数来实现代码的重用。

总结来说,原语是编程语言中最基本的操作,而函数是由程序员定义的可重复使用的代码块。原语是语言的核心功能,而函数是对这些功能的封装和扩展。

系统数据结构

进程管理:作业控制块、进程控制块

存储器管理:存储器分配与回收

设备管理:缓冲区、设备控制块

系统调用:应用程序访问操作系统的接口

通过系统调用 CPU的状态从用户态切换到了核心态

1.由操作系统实现,给应用程序调用

2.是一套接口的集合

3.应用程序访问内核服务的方式

操作系统的结构

传统的操作系统结构

第一代:无结构OS

第二代:模块化结构OS:模块-接口法OS

(模块独立标准:高内聚、低耦合)

第三代:分层式结构OS

第四代:微内核OS结构

69a3808a58aa44be9888f27959048543.png

大内核就是个操作系统

微内核和直接跟硬件相关的操作放到一起 

足够小的内核,只实现OS核心功能。 

学到这里我发现这个屌操作系统真特酿的枯燥啊

进程管理

进程的概念

进程,是一个具有一定独立功能的程序关于某个数据集合的一次运行活动,是系统进行 资源分配和调度 的一个独立单位。

要点

1.进程是程序的一次执行

进程和躺在硬盘里的应用程序不同,进程是程序的执行。

2.进程是一个程序及其数据在处理机上顺序执行时所发生的活动

进程想要运行的话一定得加载到内存中才行。

3.进程是程序在一个数据集合上运行的过程

4.进程是系统进行 资源分配和调度 的一个独立单位(或者说 基本单位)

也就是说 OS以进程为基本单位来进行 资源得分配和调度

注:一个程序可以有多个进程

进程的结构

3d1f999478f84ef98a03482f5618022b.png

1.控制块(PCB)

进程的唯一标识

2.数据段

数据段存放原始数据和中间数据。  

原始数据:应用程序本身带有的基本数据

中间数据:应用程序运行过程中可能产生的数据或者运行的数据

例如 

计算器中 有加号 减号 称号 除号等 基本数据

在计算过程中 执行加减乘除的操作 那么就产生了中间数据

3.程序段

存放在文本区域可被多个进程共享

同一个应用程序的多个进程是共享程序段的

进程的特征

动态性:由创建而生,由撤销而亡

并发性:多个进程同时运行

独立性:独立资源分配

异步性:相互独立、互不干扰

线程的概念

什么是线程

1.进程的轻型实体,是一系列活动按事先设定好的顺序依次执行的过程,是一系列指令的集合。

2.是一条执行路径,不能单独存在,必须包含在进程中。(一个进程包含一个或者多个线程)

3.线程是OS中运算调度的最小单位。(进程是资源分配和调度的基本单位)

为什么引入线程?

提高OS的并发性

例如:

 一个杀毒软件中,有木马扫描、垃圾清除、电脑体检等等功能。

打开这个软件的活动就是一个进程,而以上的功能便是线程。

如果一个进程里只负责木马扫描这一个功能,那么效率是很低的。

所以  线程可以提高OS的并发性。

线程的属性

1.轻型实体

2.独立调度和分派的基本单位

3.可并发执行

例如:一个进程里包含多个线程,这些线程都可以工作。

4.共享进程资源

同一个进程中的 多个线程 可共享该进程的资源。

进程和线程的区别

1.调度

(线程是调度的最小单元)

2.拥有资源

进程拥有资源的所有权,线程没有。

3.并发性

4.系统开销

5.地址空间和其他资源

6.通信

重点:

线程相对于进程,大大降低了创建、撤销和切换可执行实体的成本和难度。

在传统的操作系统中,拥有资源和独立调度的基本单位都是进程。

在引入线程的操作系统中,线程是独立调度的基本单位,进程是资源拥有的基本单位

在同一进程中,线程的切换不会引起进程切换。在不同进程中进行线程切换,如从一个进程内的线程切换到另一个进程中的线程时,会引起进程切换

线程的实现方式

用户级线程

内核级线程

线程控制块在用户空间即为用户级线程,在内核空间则为内核级线程。

用户级方式(多对一)

88cfe5a1263a4788bc9b452465a570d0.jpeg

用户级方式中,TCB、数据段、程序段都在用户空间,线程库在用户空间。

用户级线程仅存在于用户空间中,此类线程的创建、撤销、线程之间的同步与通信功能,都无须利用系统调用来实现。(内核意识不到线程的存在,只知道用户空间中存在进程)

用户级方式优点

1.可以在不支持线程的操作系统中实现。(因为用户级方式中,内核默认只有进程没有线程)

2.创建和销毁线程、线程切换代价等线程管理的代价比内核线程少得多, 因为保存线程状态的过程和调用程序都只是本地过程。(线程管理的操作都在用户空间中执行,无需系统调用)

3.允许每个进程定制自己的调度算法,线程管理比较灵活。这就是必须自己写管理程序,与内核线程的区别

4.线程能够利用的表空间和堆栈空间比内核级线程多

5.不需要陷入/陷阱指令,不需要内核直接参与

内核级方式(一对一)

da0fda3d256c421c8ffb79cc4dd8ff39.jpeg

内核级方式中,TCB在内核空间,数据段和程序段在用户空间。

线程管理的所有工作由内核完成,应用程序没有进行线程管理的代码,只有一个到内核级线程的编程接口。

内核中的线程是并行的。

操作系统调度器管理、调度并分派这些线程。运行时库为每个用户级线程请求一个内核级线程。操作系统的内存管理和调度子系统必须要考虑到数量巨大的用户级线程。您必须了解每个进程允许的线程的最大数目是多少。操作系统为每个线程创建上下文。进程的每个线程在资源可用时都可以被指派到处理器内核。

内核线程驻留在内核空间,它们是内核对象。

有了内核线程,每个用户线程被映射或绑定到一个内核线程。

用户线程在其生命期内都会绑定到该内核线程。一旦用户线程终止,两个线程都将离开系统,这被称作”一对一”线程映射。

当某个线程希望创建一个新线程或撤销一个已有线程时,它进行一个系统调用

(某个线程想要进行线程管理的时候,先进行系统调用,请求指令,CPU状态由用户态切换到内核态,因为TCB在内核空间。然后再由用户空间的线程去执行)

内核级方式的优点

1.多处理器系统中,内核能够并行执行同一进程内的多个线程

2.如果进程中的一个线程被阻塞,能够切换同一进程内的其他线程继续执行(用户级线程的一个缺点)

3.所有能够阻塞线程的调用都以系统调用的形式实现,代价可观。

组合方式(多对多)

410c9e01787547a18a8ee8077524d4de.jpeg

用户级方式和内核级方式的组合。

进程的状态

350886fee611468bbcf3d02316de6acf.png

就绪

可以运行而未运行的状态

现在除CPU外,进程已经全部分配好了。

执行

阻塞

由就绪到执行,进程调度就是获得CPU的执行权的过程。

由执行到阻塞,需要执行一个I/O请求,那么该进程就进入了一个阻塞状态。有很多原因进入阻塞状态,因此也有很多阻塞队列来存放阻塞的进程。

由执行到就绪,如果没有别的请求那么执行完该进程后就进入了就绪状态,从就绪队列末尾插入该进程。 

由阻塞到就绪,I/O请求完成或者是其他请求完成后,进入就绪状态。

创建

加载进程的结构:PCB、数据段、程序段

终止

a7919984573344f58eff762352092a84.png

进程控制

即OS对进程实现有效的管理,包括创建新进程、撤销已有进程、挂起、阻塞和唤醒、进程切换等多种操作。OS通过原语操作实现进程控制。

原语的概念

由若干条指令组成,完成特定的功能,是一种原子操作。

原语的本质是能完成特定功能的程序

原子操作就是不可再分的操作

原语的特点

原子操作,要么全做,要么不做,执行过程不会中断。

 在内核态下执行,常驻内存。

是内核三大支撑功能之一。

操作系统的运行机制:时钟管理、中断处理、原语操作

2d18dbd79f9e4b009eb28af140704e13.png

创建原语:create;阻塞原语:block;唤醒原语:wake up;撤销原语:destroy

挂起与激活

为了系统和用户进行观察和分析进程。

挂起和激活 不是状态,他们是一个操作。

 

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值