操作系统学习笔记(学习中)

计算机系统概述

1.操作系统概念

管理系统软/硬件资源,为程序提供服务

2.发展与分类

在这里插入图片描述

3.操作系统的运行环境

运行机制

指令:(二进制机器指令),CPU能识别,执行的最基本命令

应用程序:程序员写的跑在操作系统之上的程序

内核程序:实现操作系统的程序,内核:操作系统最核心的部分

CPU的两种状态:

内核态:正在运行内核程序,可以执行特权指令

用户态:正在运行应用程序,只能执行非特权指令

在这里插入图片描述

内核态→用户态:执行特权指令,PSW标志位为用户态,操作系统主动让出cpu使用权

用户态→内核态:由中断引发,硬件自动完成变态

中断和异常

中断的作用:让操作系统内核夺回CPU使用权

中断类型:

  • 内中断(也称异常):与当前指令有关,中断信号源于cpu内部
  • 外中断:…无关…外部,如时钟中断,I/O请求中断
系统调用

用户在程序中调用操作系统中的一些子功能。凡是与资源共享有关的操作,都需要系统调用来向操作系统提出请求。

操作系统的体系结构

大内核:将操作系统最主要的功能模块作为系统内核,性能高

微内核:只把最基本的功能作为内核,频繁的切换核心态和用户态,性能低。

进程管理

1.进程与线程

进程的概念

进程是进程实体的运行过程,是系统资源分配和的调度的一个独立单位

进程的组成

进程控制块(PCB):一种数据结构,描述进程的基本情况和运行状态,存放操作系统对进程管理需要的信息,是进程存在的唯一标志

在这里插入图片描述

程序段:程序的代码

数据段:运行过程中产生的数据

进程的特征

动态性,并发性,独立性,异步性,结构性

进程的状态与转换,进程的组织

进程控制

进程控制功能:实现进程状态转换

用原语实现进程控制。原语:操作系统中一种特殊的程序,具有原子性。

关中断指令和开中断指令(特权指令)实现原子性:CPU执行了关中断指令后不再检查中断信号,直到执行到开中断指令才恢复对中断信号的检查。

  • 进程的创建原语

  • 进程的终止:撤销原语
    在这里插入图片描述

  • 进程的阻塞和唤醒原语(成对使用)

在这里插入图片描述

  • 进程的切换原语:

进程通信

进程通信(IPC):不同进程之间的数据交互

进程内存空间独立,不能直接访问另一个进程的地址空间

  • 共享存储:互斥的访问共享存储(如pv操作)
  • 消息传递:
    • 直接通信:消息直接挂在接收进程的消息队列中
    • 间接通信:消息发向中间件(信箱),
  • 管道通信:pipe文件,读写遵循先进先出原则,半双工通信(同一时间段单向)
线程的概念

线程:程序执行流的最小单位,系统调度的基本单位,一个进程可以有多个线程

线程的实现方式和多线程模型

在这里插入图片描述

线程的转换

2.调度

概念

根据某种规则来决定一堆任务执行的顺序

调度的三个层次

  1. 高级调度(作业调度)

    作业:一个具体的任务,(程序)

    高级调度:按原则将外存的作业后备队列中挑选一个进入内存。每个作业只被调入,调出一次。

  2. 低级调度(进程调度/处理机调度)

    操作系统中最基本的一种调度,频率很高。

  3. 中级调度(内存调度)

    挂起状态:暂时调到外存等待的进程状态

    中级调度:选择一个处于挂起状态的进程进入内存

进程调度

进程在操作系统内核程序临界区中不能进行进程调度,而在普通临界区中可以。

进程调度的两种方式:

  • 非抢占式:只会主动放弃
  • 抢占式:由操作系统剥夺cpu使用权

调度器和闲逛进程

调度器(调度程序):决定让谁运行,运行多长时间

闲逛进程:没有其他就绪进程时,运行闲逛进程

调度算法的评价指标

在这里插入图片描述

调度算法

  • 先来先服务(FCFS):按照作业/进程到达的先后顺序进行服务,是一种非抢占式的调度方式,优点:公平,缺点:对短作业不利,不会导致饥饿

  • 短作业优先(SJF):从就绪队列中选出一个估计时间最短的进程,将处理及分配给它,使它立即执行到执行结束,或者发生某事件阻塞放弃处理机时重新调度

  • 高响应比优先算法(HRRN):

    响应比Rp = (等待时间 + 服务时间)/ 服务时间 = 1 + (等待时间 / 服务时间)

    当等待时间相同时,服务时间更短的优先调度

3.进程同步与互斥

同步:直接制约关系,为完成某任务建立的两个或以上的进程

互斥:间接制约关系,访问临界资源时只允许一个进程访问,其他进程必须等待

在这里插入图片描述

进程互斥的软件实现方法

抓住“谦让”和“表达意愿“思想

单标志法:

双标志先检查法:

双标志后检查法:

peterson算法:“压岁钱算法” 谁最后说客气话谁失去行动权

硬件实现

在这里插入图片描述

信号量机制

信号量:表示系统中某种资源的数量,可以使用一对原语来对信号量进行操作

一对原语:wait(S),sign(S),被称为P,V操作,用于实现对系统资源的申请和释放

在这里插入图片描述

4.经典同步问题

生产者-消费者问题

只有缓冲区没满,生产者才能往缓冲区放东西

只有缓冲区没空,消费者才能从缓冲区取东西

缓冲区也是一种临界资源,只允许互斥地访问

mutex = 1; // 互斥信号量,对缓冲区的互斥访问
empty = n; // 同步信号量,空闲缓冲区的数量
full = 0; // 同步信号量,产品数量,即非空缓冲区数量

在这里插入图片描述

读-写者问题

1.允许多个读者对文件进行读操作

2.只允许一个写者进行写操作

3.写者操作完成前不允许读者和其他写者工作

4.写者操作前应该让其他读和写者退出

5.管程

管程的功能

互斥访问:确保多个线程对共享变量的互斥访问

条件等待和通知:线程可以通过条件变量等待某个条件满足后再继续执行,或者通过条件变量停止其他线程某个条件已经满足

简要来说:对PV操作的一种管理

6.死锁

死锁:多个进程因竞争资源而互相等待,双方都无法向前推进

死锁形成的必要条件

  1. 互斥条件:对互斥使用的资源进行争夺
  2. 不可剥夺条件:进程获取的资源在未使用完之前无法被剥夺,只能自己释放
  3. 请求和保持条件:进程至少保持了一种资源,但又提出对其他进程占用的资源的申请,自己的资源又不放
  4. 循环等待条件:进程的循环等待链,我等你,你等他,他等我

以上四条件同时满足才算死锁

避免死锁

安全序列:系统按照某种序列分配资源,每个进程都能顺利完成。

系统处于安全状态,则一定不会发生死锁

银行家算法

思想:在进程提出资源申请时,系统先预判此次分配是否会导致系统进入不安全状态,如果会,则暂时不答应请求,让进程先阻塞等待。

系统分配给进程资源,归还后得到的资源为:available + allocation

内存管理

操作系统对内存的划分和动态分配

1.内存管理概念

功能

1.内存分配与回收:由操作系统完成

2.内存保护:保证进程只在自己的内存空间进行访问,不越界

3.地址转换:操作系统将逻辑地址转换为物理地址

4.内存容量的扩充:将容量小的内存从逻辑上通过虚拟技术进行扩充

连续分配管理方式

为用户程序分配连续的内存空间

1.单一连续分配:只用于单任务,单用户的操作系统

2.固定分区分配:将用户区划分为若干个大小相等或不等的分区,每个分区只进行一个作业。

3.动态分区分配:系统不会预先分配内存,而是在进程进入内存时,根据进程的大小动态的分配内存,使得内存大小正好适合进程所需的空间。

动态分区分配算法

为什么要有?当有多个空闲分区满足需求,需要合适的算法来分配空间

1.首次适应算法:从低地址开始找,找到第一个可以满足大小的空闲分区

2.最佳适应算法:为了保证大进程到来时需要的大片连续空间,优先使用小空闲分区,空闲分区按容量递增连接。

3.最坏适应算法:为了解决最佳适应算法导致的内部碎片问题,优先使用大空闲分区,空闲分区按容量递减链接。

分页存储

为什么要分页?减少内存碎片的产生

页框/页帧:内存中大小相等的分区

页面(页):每一个进程的逻辑地址空间

页表:在内存找到进程的每个页面对应的物理块,系统为每个进程建立一张页表。

页表由页号和块号(页框号)组成,其中只有块号占内存空间,页号是隐含的存储。(类似于数组,下标是不需要存储空间的)

页号=逻辑地址/页面大小

页内偏移量=逻辑地址%页面大小

页表长度:一个页表有多少个页表项

页表项长度:每个页表项占多大的存储空间

页表大小:一个页表占多大存储空间

快表

一种并行查找的高速缓冲存储器,为了提高地址变换的速度。

段页式存储

先分段,段内再分页

2.虚拟内存管理

为什么?

解决传统存储的两个问题:

1.一次性:作业必须一次性全部装入内存才能运行,导致如果作业太大,无法运行

2.驻留性:作业全部转入内存,直到作业结束,然而实际只需要一部分数据便可运行程序,导致浪费空间

是什么?

将暂时需要的信息调入内存,不需要先放在外存,便可执行程序。程序执行时,将不在内存又需要的信息调入内存。同时,若内存空间不够,操作系统将内存中不需要的信息换出到外存。

虚拟内存的特点

1.多次性:允许多次将作业调入内存

2.对换性:作业在程序运行时换进换出

3.虚拟性:在逻辑上扩充内存容量

怎么做(虚拟内存技术)

实现基础:根据多次性,肯定不能连续存储管理,而是离散分配的内存管理

用什么实现?

1.请求分页管理。2.请求分段管理。3.请求段页式管理

请求分页管理

是什么?两个功能:

1.调页功能:操作系统将缺失的页面调入内存

2.置换功能:操作系统将暂时没用的页面换入外存

页表项

在这里插入图片描述

状态位:表示页面是否被调入内存

访问字段:表示页面被访问次数,用于置换算法使用

修改位:表示页面是否被修改过

缺页中断机构

请求分页中两个重要的点:

1.是否在内存:不在则产生缺页中断,并阻塞缺页的进程,操作系统将页面调入内存

2.是否有空闲块:没有则淘汰某页(如果该页在内存中被修改过,则换回外存)

地址变换机构
在这里插入图片描述

页面置换算法

用来干嘛?决定换入换出哪些页面

1.最佳置换算法:将以后永不访问或最长时间不访问的页面淘汰。(无法预知,不可实现)

2.先进先出置换算法:每次将最早进入内存的页面淘汰。

3.最近最久未使用置换算法(LRU):每次淘汰最近最久未使用的页面。实现:在访问字段中记录该页上次使用时间t,每次替换t最大的即可。

4.时钟置换算法(CLOCK)

改进型CLOCK:先找(0,0),再找(0,1),没有的话,把所有访问位(第一个)置为0,再循环那样查找

文件管理

1.文件基本概念

文件是什么?

文件是通过硬盘为载体,存储在计算机上的数据集合

文件控制块

是什么?

英文名FCB,用来存放控制文件所需信息的数据结构,包含了==

一个FCB对应一个文件目录项,多个FCB组成文件目录

索引节点

是什么?

索引节点将除了文件名以外的属性都放入索引节点中

有什么用?

因为检索文件时只需要用到文件名,所有可以提高检索效率

文件逻辑结构

在文件内部,数据在逻辑上是如何组织起来的

无结构文件(流式文件):文件没有结构,访问只能通过穷举搜索的方式

有结构文件(记录式文件):

  • 顺序文件:串结构:按记录的存入时间排序。

    ​ 顺序结构:按关键字的顺序排列。

  • 索引文件:解决可变长记录文件检索慢的问题,本身就是一个定长记录的顺序文件

在这里插入图片描述

文件物理结构

磁盘空间分配方法:

1.连续分配:每个文件在磁盘上占有一组连续的块。类似于数组,所以它支持顺序访问和直接访问。

缺点:文件长度不宜动态增长。增加和删除需要移动相邻的记录。反复增删文件回产生外部碎片。

在这里插入图片描述

2.链接分配:离散分配的方式,通过指针链接每个磁盘块,分为隐式链接和显示链接。

隐式链接:除最后一个盘块,每个盘块都含有指向文件下一个盘块的指针。不支持随机访问
在这里插入图片描述

显示链接:为什么叫显示?它把用于连接文件各物理块的指针显示的存放在一张表中,称为文件分配表(FAT)。支持随机访问

在这里插入图片描述

索引链接

2.目录

目录结构

1.单级目录结构

实现了文件的按名存取

缺点:查找速度慢,不允许重名,不便于共享

2.两级目录结构:

解决了重名问题

缺点:不能对文件分类

3.树形目录结构:

解决了不能分类的问题

缺点:查找文件时每次按路径名逐级访问中间节点,增加了磁盘访问次数

4.无环图目录结构

解决了树形结构不便于文件共享的问题。

目录实现

查找某个文件有两种方法

1.线性列表:实现简单,但查找费时

2.哈希表:根据文件名得到一个名,并返回一个指向线性列表中元素的指针。查找速度快。

文件共享

1.硬链接:基于索引节点的共享方式。

多个指针指向一个索引结点,只要还有一个指针指向索引结点,索引结点就不能删除。

2.软链接:基于符号链实现共享。

把到达共享文件的路径记录下来,要访问文件时,根据路径寻找文件。

查找速度:硬>软

3.文件系统

输入输出管理

2.I/O控制方式

DMA:直接存储器存取

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值