操作系统的学习(一)

一.操作系统的演进

1.无操作系统

  • 人工操作
  • 用户独占
  • cpu等待人工操作
  • 资源利用率很低

2.批处理系统

  • 无需人工等待
  • 批量输入任务
  • 资源利用率提升
  • 多道程序设计

3.分时系统

  • 人-机交互
  • 多用户共享
  • 及时调试
  • 资源利用率提升

4.多道程序的设计

  • 早期批处理系统只能一次处理一个任务
  • 多道程序设计使得批处理系统可以一次处理多个任务
  • 多道程序设计:
  • 多道程序设计是指在计算机内存中间同时存放多个程序
  • 多道程序在计算机的管理程序之下相互穿插进行

5.五大功能

  • 进程管理
  • 存储管理
  • 作业管理
  • 文件管理
  • 设备管理

二.操作系统概览

1.什么是操作系统呢?

  • 操作系统是管理计算机硬件和软件资源的计算机程序
  • 管理配置内存,决定资源供需顺序,控制输入输出设备等
  • 操作系统提供让用户和系统交互的操作界面
  • 管理硬件提供用户交互的软件系统

2.操作系统分类

  • Android:MIUI,ColorOS,Flyme
  • Linux:Centos,Ubuntu
  • 华为:鸿蒙

3.操作系统存在原因

  • 我们不能直接操作计算机硬件
  • 设备种类繁多复杂,需要统一界面
  • 操作系统的简易性

4.操作系统的基本功能

  • 处理器资源:cpu
  • 存储器资源:内存,磁盘
  • io资源
  • 文件资源

5.操作系统相关概念

  • 并发性
  • 共享性
  • 虚拟性
  • 异步性
什么是并发和并行?
  • 并行指两个或多个事件可以在同一个时刻发生
  • 并发是指两个或多个事件可以在同一个时间间隔发生
  • 并行:在8:00时刻张三在学习,李四在洗澡,这个属于同一时刻发生的事
  • 并发:在8:00时候李四看了会历史书,8:05时候看了数学书,那么这个属于在一个时间段发生的事
  • 在操作系统中实现:
    单处理器:多个程序交替执行,实现并发,单个处理器中只能实现并发
    多个处理器:多个处理器上的程序一起执行,但是对于一个处理器多核的话也可以实现并行,但是对于单核处理器来说还是以并发执行
什么是共享性?
  • 共享性表现为操作系统中的资源可供多个并发的程序共同使用
  • 这种共同使用的形式称之为资源共享
  • 多个程序可以同时使用主存资源
  • 资源共享根据属性可分为两种方式:互斥共享形式,同时访问形式在这里插入图片描述
什么是虚拟性?
  • 虚拟性表现为把一个物理实体转变为若干个逻辑实体
  • 物理实体是真实存在的,逻辑实体是虚拟的
  • 虚拟的技术要有时分复用技术和空分复用技术
  • 时分复用:资源在时间上进行复用,不同的程序并发使用,多道程序分时使用计算机的硬件资源,提高资源利用率
  • 空分复用:空分复用技术用来实现虚拟磁盘,虚拟内存等,提高资源利用率
什么是异步性?
  • 在多道程序环境下,允许多个进程并发执行
  • 进程在使用资源时可能需要等待或放弃
  • 进程的执行并不是一气呵成的,而是以走走停停的形式推进的
为什么需要进程?
  • 进程是系统进行资源分配和调度的基本单位
  • 进程作为程序独立运行的载体保证程序正常执行
  • 进程的存在使得操作系统资源的利用率大幅提升
进程的实体?
  • 进程控制块在这里插入图片描述
  • 线程和进程区别:
  • 在这里插入图片描述
进程管理之五状态模型?
  • 就绪状态:当进餐被分配到除cpu之外所有必要的资源后
  • 只要再获得cpu的使用权,就可以立即运行
  • 其他资源都准备好,只差cpu资源的状态就为就绪状态
  • 执行状态:进程获得cpu,其他程序正在执行状态
  • 在单处理机中,在某个时刻只能有一个进程是处于执行状态的
  • 阻塞状态:进程因某种原因如:其他设备未就绪而无法继续执行
  • 从而放弃cpu的状态称为阻塞状态
状态间切换?(还有创建和终止 )
  • 创建进程时拥有PCB但其他资源尚未就绪的状态称为创建状态。
  • 进程结束由系统清理或者归还PCB的状态称为终止状态。
    在这里插入图片描述
为什么需要进程间的同步?
  • 生产者-消费者模型
    在这里插入图片描述

  • 生产者往缓冲区+1

  • 消费者往缓冲区-1

  • 缓冲区在cache(在高速缓存中)

  • 操作缓冲需要三个步骤
    (1)把缓冲区中的数据拿出来到寄存器中
    (2)然后寄存器进行+1
    (3)然后再把寄存器中的值写回到缓冲区

  • 哲学家进餐问题

  • (1)正常情况:拿起左边筷子,发现右边筷子被拿了。等待右边筷子释放,拿起右边筷子,进餐

  • (2)假设五个哲学家同时拿起左边的筷子(造成死锁 )

这两个问题根源:
  • 彼此间没有通信
  • 需要进程间的同步
进程同步原则?

在这里插入图片描述

  • 空则让进:资源无占用,允许使用
  • 忙则等待:资源有占用,请求进程等待
  • 有限等待:保证有限等待时间能够使用资源
  • 让权等待:等待时,进程需要让出CPU
  • 进程间同步的方法:消息队列,共享存储,信号量
线程同步?
  • 线程同步方法:
  • (1)互斥量
  • (2)读写锁
  • (3)自旋锁
  • (4)条件变量
linux进程的相关概念?
  • 进程类型:
  • (1)前台进程:优先级高需要和用户交互
  • (2)后台进程:优先级低
  • (3)守护进程:守护进程是特殊的后台进程,很多守护进程在系统引导时候就启动,一直运行到系统关闭。(crond sshd httpd mysqld)
进程的标记?
  • 进程ID是进程的唯一标记,每个进程拥有不同的ID
  • 进程ID表现为一个非负整数,最大值由操作系统限定在这里插入图片描述

在这里插入图片描述

linux进程相关命令?
  • ps命令:ps命令常用于显示当前进程的状态,ps命令常配合aux参数或ef参数和grep命令检索特定进程
  • top命令;操作系统使用内存状态
  • kill命令: kill -9 进程id关闭信号,给特定的线程发送信号,kill -l可以查看操作系统支持的信号,使用9信号无条件终止
作业管理之进程的调度?
  • 进程调度概述:进程调度是指计算机通过决策决定哪个就绪进程可以获得cpu使用

  • (1)保留就进程的运行信息,请出旧进程

  • (2)选择新进程,准备运行环境并分配cpu

  • 调度机制:
    (1)就绪队列的排队机制:按照一定方式排成队列,以便调度程序可以最快找到就绪进程
    (2)选择运行进程的委派机制:调度程序以一定的策略选择就绪进程,将cpu资源分配给它
    (3)新老进程的上下文切换机制:保存当前进程上下文信息,装入被委派执行进程的运行上下文

  • 非抢占式调度:
    (1)处理器一旦分配给某个进程,就让该进程一直使用下去
    (2)调度程序不以任何原因抢占正在被使用的处理器
    (3)直到进程完成工作或因为IO阻塞才会让出处理器。

  • 抢占式调度
    (1)允许调度程序以一定的策略暂停当前运行的进程
    (2)保存好旧进程的上下文信息,分配处理器给新进程在这里插入图片描述

  • 进程调度算法
    (1)先来先服务调度算法:优先取出来的进程
    (2)短进程优先调度算法: 调度程序优先选择就绪队列中估计运行时间最短的进程,不利于长进程使用
    (3)高优先权优先调度算法:进程附带优先权,调度程序优先选择权重高的进程,高优先权优先调度算法使得紧迫的任务可以优先处理。
    (4)时间片轮转调度算法: 按先来先服务的原则排列就绪进程,每次从队列头部取出待执行进程,分配一个时间片执行,是相对公平的调度算法,但不能及时响应用户。

作业管理之死锁?在这里插入图片描述
  • 死锁产生?

    • 竞争资源
      (1)共享资源数量不满足各个进程需求
      (2)各个进程之间发生资源争抢导致死锁
      在这里插入图片描述
  • 进程调度顺序不当在这里插入图片描述

  • 死锁产生的必要条件?
    (1)互斥条件:进程对资源的使用是排他性的使用,某资源只能由一个进程使用,其他进程需要使用只能等待
    (2)请求保持条件:进程至少保持一个资源,又提出新的资源请求。新资源被占用,请求被阻塞。被阻塞的进程不释放自己保持的资源。
    (3)不可剥夺条件:进程获得的资源在未完成使用前不能被剥夺。获得的资源只能由进程自身释放
    (4)环路等待条件:发生死锁时,必然存在进程-资源环形链。

  • 预防死锁的方法?
    (1)摒弃请求保持条件,系统规定进程运行之前,一次性申请所有需要的资源。
    进程在运行期间不会提出资源请求,从而摒弃请求保持条件。
    (2)摒弃不可剥夺的条件:当一个进程请求新的资源得不到满足时,必须释放占有的资源。
    进程运行时占有的资源可以被释放,意味着可以被剥夺。
    (3)摒弃环路等待条件,可用资源线性排序,申请必须按照需要递增申请。
    线性申请不再形成环路,从而摒弃环路等待条件。

  • 银行家算法?
    (1)是一个可操作的著名的避免死锁的算法
    (2)以银行借贷系统分配策略为基础的算法。在这里插入图片描述

(3)需要三个表已分配的表,所需表,可分配表

什么是原子性?
  • 原子性是指一系列操作不可被中断的特性

  • 这一系列操作要么全部执行完成,要么全部没有执行

  • 不存在部分执行部分执行的情况

    线程同步之互斥量?
  • 互斥量是最简单的线程同步方法

  • 互斥量(互斥锁),处于两态之一的变量:解锁和加锁

  • 两个状态可以保证资源访问的串行

  • 操作系统提供了API完成资源的加锁,解锁操作,c语言提供的是pthread_mutex_t

线程同步之自旋锁?
  • 在这里插入图片描述
线程同步之自旋锁的优点?
  • 自旋锁避免了进程和线程上下文开销
  • 操作系统内部很多地方使用的是自旋锁
  • 自旋锁不适合在单核cpu使用
线程同步之读写锁?(适用多读少写)
  • 读写锁是一种特殊的自旋锁
  • 允许多个读者同时访问资源以提高读性能
  • 对于写操作则是互斥的
线程同步锁?
  • mutex lock(互斥锁)
  • rwlock_rdlock(读写锁)
线程同步之条件变量?
  • wait-notify在这里插入图片描述
线程同步方法总结?在这里插入图片描述
使用fork创建进程?在这里插入图片描述

fork函数返回两次
在这里插入图片描述

进程同步的方法?
  • 进程中的线程是共享进程中的资源
  • 进程是共享计算机资源的
  • 共享内存在这里插入图片描述

在这里插入图片描述

使用共享内存的步骤?

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

进程同步之Unix域套接字?

在这里插入图片描述

服务端和客户端
在这里插入图片描述

存储管理之内存分配与回收
  • 单一连续分配
    (1)单一连续分配是最简单分配方式。
    (2)只能在单用户,单进程的操作系统中使用在这里插入图片描述

  • 固定分区分配
    (1)固定分区是支持多道程序的最简单存储分配方式。
    (2)内存空间被划分为若干固定大小的分区
    (3)每个分区提供给一个程序使用,互不干扰。在这里插入图片描述

  • 动态分区分配?
    (1)动态分区空闲表数据结构
    (2)动态分区空闲链数据结构(双向链表)动态分区是把临近节点和起来,节点需记录可存储的容量。
    在这里插入图片描述
    (3)动态分配算法:(考点)
    - 首次适应算法(FF)
    - 最佳适应算法(BF)
    - 快速适应算法(QF)

首次适应算法:
- 分配内存时从开始顺序查找适合内存区
- 若没有合适的空闲去,则该次分配失败
- 每次从头部开始,使得头部地址空间被划分。(缺点)
- 改善:使用循环适应算法,可以从当前节点继续检索
最佳适应算法:将空闲区先排序,避免大才小用
- 最佳适应算法要求空闲区链表按照容量大小排序。
- 遍历空闲区链表找到最佳合适空闲区。
在这里插入图片描述
快速适应算法?快速找到适合进程的分区
- 快速适应算法要求有多个空闲区链表
- 每个空闲区链表存储一种容量的空闲区在这里插入图片描述

  • 内存回收过程
    (1)回收区在空闲区下面
    - 不需要新建空闲链表节点
    - 只需要把空闲区1的容量增大为空闲区在这里插入图片描述

(2)回收区在空闲区上面
- 将回收区与空闲区合并
- 新的空闲区使用回收区的地址
在这里插入图片描述
(3)回收区位于两个空闲区之间
- 将空闲区1,空闲区2和回收区合并
- 新的空闲区使用空闲区1的地址
在这里插入图片描述
(4)回收区 自己
- 为回收区创建一个节点
- 插入到相应的空闲区链表中去
在这里插入图片描述

存储管理之段页式存储管理?

1.页式存储管理
2.段式存储管理
3.段页式存储管理

- 页式存储管理?
在这里插入图片描述

(1)将进程逻辑空间等分成若干大小的页面
(2)相应的把物理内存空间分成与页面大小的物理块
(3)以页面为单位把进程空间装进物理内存中分散的物理块。

注意:(1)页面大小应该适中,过大难以分配,过小内存碎片过多。(在空闲链表中)
(2)页面大小通常是512b-8k

页表:记录进程逻辑空间与物理空间的映射。(每个页面对应一个物理块,对应一个物理块号)(多级页表)

地址:页号+页面偏移
缺点:有一段连续的逻辑分布在多个页面中,将大大降低执行效率。
- 段式存储管理

(1)将进程逻辑空间划分成若干段(非等分)
(2)段的长度由连续逻辑的长度决定
(3)主函数main,子程序x,子函数y等。

段表:记录进程逻辑和物理空间的映射。根据段号去锁定
段地址:段号+段内偏移地址。

段适和页式的区别?

相同点:段式存储和页式存储都离散地管理了进程的逻辑空间。
不同点:
(1)页是物理单位,段是逻辑单位。
(2)分页是为了合理利用空间,分段是满足用户要求。
(3)页大小由硬件固定,段长度可动态变化
(4)页表信息是一维的,段表信息是二维的。

- 段页式存储管理?

(1)页式优点:分页可以有效提高内存利用率。
(2)分段可以更好满足用户需求。

(1)先将逻辑空间安段式存储分成若干段
(2)再把段内空间按页式管理等分成若干页

段页地址:段号+段内页号+页内地址在这里插入图片描述

存储管理之虚拟内存?
  • 虚拟内存?(把程序使用内存划分,将部分暂时不使用的内存放置在辅存,将进程的逻辑空间加载到物理空间,将不用的空间暂时放到磁盘)

(1)有些进程实际需要很大内存,超过物理内存的容量
(2)多道程序设计,使得每个进程可用物理内存更加稀缺
(3)不可无限增加物理内存,物理内存总有不够的时候。

程序的局部性原理?
(1)程序运行时,无需全部装入内存,装载部分即可。
(2)如果访问页不在内存,则发出缺页中断,发起页面置换
(3)从用户层面看,程序有很大的空间,即是虚拟内存。
虚拟内存:实际是对物理内存的补充,速度接近于内存,成本接近于辅存。

虚拟内存的页面置换算法?
[1]替换策略发生在Cache-主存层次,主存-辅存层次
[2]Cache-主存层次的替换策略主要是为了解决速度问题
[3]主存-辅存层次主要是为了解决容量问题

(1)先进先出算法(fifo)
(2)最不经常使用算法(lfu)
(3)最少使用算法(lru)

高速缓存的替换时机?

在这里插入图片描述

主存页面的替换时机?
主存缺页时
在这里插入图片描述

Linux的存储管理?
  • Buddy内存管理算法?
    (1)Buddy算法是经典的内存管理算法
    (2)算法基于计算机处理二进制的优势具有极高的效率
    (3)算法主要是为了解决内存外碎片的问题

页内碎片:内部碎片是已经被分配出去(能明确指出属于哪个进程)的内存空间大于请求所需的内存空间,不能被利用的内存空间就是内部碎片。
页外碎片:外部碎片指还没有分配出去(不属于任何进程),但是由于大小而无法分配给申请内存空间的新进程的内存空闲块。

内存分配原则:向上取整为2的幂大小
伙伴系统:
(1)“伙伴”指的是内存的伙伴
(2)一片连续内存的“伙伴”是相邻的另一片大小一样的连续内存。

算法流程:创建一系列空闲块链表,每一种都是2的幂。1kb,2kb,4kb。。

存储空间1mb
分配100k

100k向上取整2的幂=128k
分配1m,然后拆分512,然后拆分256,然后128合格。

回收刚才分配的内存?
在这里插入图片描述

  • Linux交换空间?(速度慢)

(1)交换空间(Swap)是磁盘的一个分区
(2)LInux物理内存满时,会把一些内存交换至Swap空间
(3)Swap空间是初始化系统时配置的

作用:
(1)冷启动内存依赖
(2)系统睡眠的依赖
(3)大进程空间依赖

交换空间和虚拟内存比较?

交换空间时存于磁盘,虚拟内存存在于磁盘
交换空间与主存发生置换,虚拟内存与主存发生置换。
交换空间是操作系统概念,虚拟内存是进程概念
交换空间解决系统物理内存不足问题,虚拟内存解决进程物理内存不足问题

操作系统的文件管理?

(1)逻辑结构的文件类型:有结构文件,无结构文件
(2)顺序文件:顺序文件是指按顺序存放在存储介质中的文件,磁带的存储特性使得磁带文件只能存储顺序文件,顺序文件是所有逻辑文件中存储效率最高的。(增删效率低)
(3)索引文件:可变长文件不适合使用顺序文件格式存储。索引文件是为了解决可变长文件存储而发明的一种文件格式,索引文件需要配合索引表完成存储的操作

  • 辅存的分配方式?
    (1)连续分配:顺序读取文件内容非常容易,速度很快。
    对存储要求高,要求满足容量的连续存储空间。
    (2)链接分配:可以将文件储存在离散的盘块中,需要额外的存储空间储存文件的盘块链接顺序。
    (3)索引分配:把文件的所有盘块集中存储(索引),读取某个文件时,将文件索引读取进内存即可。
Linux文件基本操作?
  • Linux目录

bin:执行的命令
etc:配置文件
home:主目录
usr/local:管理员的目录
在这里插入图片描述

相对路径:全路径
绝对路径:…/

linux的常见操作:
创建文件:touch file
编辑文件:vim file
查看文件内容:cat file
删除文件:rm file
创建文件夹:mkdir dir4
删除文件夹:rm -r dir4 递归删除
df-T 磁盘挂在信息

  • 文件类型
    (1)套接字(s)
    (2)普通文件(-)
    (3)目录文件(d)
    (4)符号链接(l)
    (5)设备文件(b,c)
    (6)FIFO(p)
Linux文件系统?
  • 文件系统的概览

(1)FAT:(File Allocation Table)FAT16,FAT32等,微软DOS/Windows使用的文件系统,使用一张表保存盘块的信息。
(2)NTFS:windowsnt环境的文件系统,NTFS对FAT进行了改进。
(3)EXT:扩展文件系统,linux文件系统,EXT2/3/4数字代表几代。

操作系统设备管理?
  • 广义的IO设备:对CPU进行数据输入的都是输入设备,对CPU进行数据输入的都是输出设备。

  • IO设备的缓冲区:减少CPU处理IO请求的频率,提高CPU与IO设备之间的并行性。
    在这里插入图片描述

  • SPOOLing技术
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值