【软件设计师笔记】深入探究操作系统
【软件设计师笔记】计算机系统基础知识考点(传送门) 💖
【软件设计师笔记】程序语言设计考点(传送门) 💖
🐓 操作系统的作用
1.通过资源管理提高计算机系统的效率
2.改善人机界面向用户提供友好的工作环境
🐓 操作系统的特征
并发性
操作系统能够同时处理多个任务或事件,即并发执行。这是通过分时系统或进程来实现的,使多个程序可以同时运行
共享性
操作系统中的资源,如内存、CPU和外部设备,可以被多个进程共享。资源共享分为互斥共享和同时访问两种方式,前者是多个进程不能同时访问同一资源,后者是多个进程可以同时访问同一资源。
虚拟性
操作系统使用虚拟技术来提供一个逻辑的实体而不是物理实体。例如,通过虚拟处理器技术,一个物理CPU可以被虚拟为多个逻辑CPU,使得每个用户都感觉有一个专用的CPU为其服务。同样,虚拟存储器和虚拟设备技术可以提供虚拟内存和虚拟外部设备。
异步性
在多道程序环境下,允许多个程序并发执行。由于资源的有限性,进程的执行走走停停,以不可预知的速度向前推进,这就是进程的异步性。异步性使得操作系统运行在一种随机的环境下,可能导致进程产生与时间有关的错误。
🐓 操作系统的功能
处理机管理
对处理机的执行时间进行管理,采用多道程序等技术将CPU的时间合理分配给每个任务,主要包括进程控制,进程同步,进程通信和进程调度
文件管理
包括文件存储空间管理,目录管理,文件的读/写管理和存取控制
存储管理
存储管理时对主存储器空间进行管理,包括存储分配与回收,存储保护,地址映射(变换)和主存扩充
设备管理
对硬件设备的管理,包括对输入输出设备的分配,启动,完成和回收
作业管理
包括任务,界面管理,人机交互,图形界面,语音控制和虚拟现实等
🐓 操作系统的类型
批处理操作系统(单道,多道)
分时操作系统(UNIX,多路性,独立性,交互性,及时性)
实时操作系统(快速的响应时间,有限的交互能力,高可靠性)
网络操作系统(集中模式,客户端/服务器模式,对等模式)
分布式操作系统(透明性,可靠性,高性能)
微机操作系统(Windows)
嵌入式操作系统(微型化,可定制,实时性,可靠性,易移植性)
🐓 程序并发执行的特点
1.失去了程序的封闭性
2.程序和机器的执行程序的活动不再一一对应
3.并发程序间的互相制约性
🐓 进程的组成
程序
描述了进程需要完成的功能
数据
程序执行时所需的数据及工作区
进程控制块(PCB)
🐓 进程的状态
新建、就绪、运行、阻塞、终止
🐓 原语
执行时不能被分割,要不做要么就不做
内核中所包含的原语主要又进程控制原语,进程通信原语,资源管理原语以及其他方面的原语
进程控制原语有进程创建原语,进程撤销原语,进程挂起原语,进程激活源于,进程阻塞原语,以及进程唤醒原语等
🐓 进程之间的同步
进程间完成一项任务时直接发生相互作用的关系
🐓 进程之间的互斥
系统中各个进程互斥使用临界资源(进程可以共享各类资源,但有些资源一次只能共一个进程使用)
🐓 信号量的意义
信号量时一个整型变量。根据控制对象的不同赋予不同的值
公用信号量:实现进程间的互斥,初值为1或资源的数目
私用信号量:实现进程间的同步,处置为0或某个正整数
若S>=0表示某资源的可用数,若S<0,则其绝对值表示阻塞队列中等待该资源的进程数
问题
编程难度大,效率低
🐓 高级通讯方式
共享存储模式
互相通信的进程共享某些数据结构实现进程之间的通信
消息传递模式
进程间的数据交换以消息为单位,直接利用系统提供的通信命令(原语)来实现通信。比如send(A),receive(A)
管道通信
使用管道连接一个读进程一个写进程,以实现他们之间通信的共享文件、相关到(共享文件)提供输入的发送进程,以字符流的形式将大量的数据送入管道,而接收进程可以从管道中接收大量的数据。
🐓 管程
由一些共享数据,一组能为并发进程所执行的作用在共享数据上的操作的集合,初始代码以及存取全组成的一种同步机制
管程的结构
🐓 进程调度
在某些操作系统中,一个座椅从提交到完成需要经历高,中,低三级调度
高级调度
高级调度又称作业调度,它决定处于输入池中哪一个后备作业可以调入主系统做好运行的准备,成为一个或一组就绪进程。
中级调度
中级调度它决定于交换区中的哪个就绪进程可以调入内存,以便直接参与CPU的京城,在内存资源紧张时。为了将进程调入内存,必须将内存中处于阻塞状态的进程调出至交换区,以便为调入进程腾出空间。
低级调度
低级调度又称进程调度,它决定处于内存中的哪个就绪进程可以占用CPU。
进程调度算法
先来先服务算法(FCFS)
按照作业提交或进程成为就绪状态的先后顺序分配CPU
特点:有利于长作业,而不利于多作业,可能会出现饿死的状况,有利于CPU繁忙的作业,而不利于I/O繁忙的作业,主要用于宏观调度
时间片轮转算法
时间片轮换主要用于微观调度,为了提高资源利用率,通过时间片转换提高进程并发性和响应时间特性,从而提高资源利用率
固定时间片
分配每个进程相等的时间片,使所有进程都能公平执行
可变时间片
根据进程不同的要求对时间片的大小实时进行修改,可以更好的提高效率
优先级调度算法
每一个进程都有一个优先数,数值大的表示优先级高,系统在调度时总选择优先数大的占用CPU
静态优先级
进程的优先级在创建时就确定,知道进程终止都不会改变
动态优先级
在创建进程时赋予一个优先级,在进程运行过程中可以改变,以便获得更好的调度性能
多级反馈调度算法
时间片轮转算法和优化级算法的综合与发展。
优点:照顾了段进程以提高系统吞吐量,缩短了平均周转时间,更好的I/O设备利用率和响应时间,不必估计进程的执行时间。
🐓 死锁
两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。
死锁产生的原因
1.互斥条件:一个资源每次只能被一个进程使用。
2.占有且等待:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
3.不可强行占有:进程已获得的资源,在末使用完之前,不能强行被其他进程剥夺。
4.循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。
死锁的预防
预先静态分配法:破坏了‘不可剥夺条件’,预先分配所需资源,保证不等待资源。
银行加算法:先计算,如果分配资源后系统进入不安全状态时就不予分配
检测:系统定时运行死锁检测程序
解除:资源剥夺法+撤销进程法
🐓 安全状态
系统能过按照某种顺序来为每个进程分配其所需资源,使每个进程都能顺序完成
🐓 存储器管理
存储器时计算机系统中的关键性资源,是存放各种信息的重要场所。
分配和回收主存空间,提高主存利用率,扩展主存,有效保护主存信息
🐓 存储器的层次结构
1.CPU寄存器:这是存储器层次结构中的最高层,访问速度最快,但容量最小。CPU寄存器用于暂存指令、数据和地址,是CPU的一部分。
2.高速缓存(Cache):高速缓存是位于CPU和主存储器之间的存储器,其访问速度较快,容量相对较小。高速缓存用于存放经常访问的指令和数据,以减少对主存储器的访问次数。
3.主存储器(Main Memory):主存储器是计算机系统中的主要存储区域,容量较大,但访问速度相对较慢。主存储器用于存放操作系统、应用程序和数据等。
4.辅助存储器(Secondary Storage):辅助存储器是计算机系统中的外部存储设备,如硬盘、固态硬盘等。其容量比主存储器大得多,但访问速度较慢。辅助存储器用于存放大量的数据和程序等。
🐓 地址重定位
讲逻辑地址转变成物理地址的过程,可分为静态重定位和动态重定位
静态重定位
程序装入主存时已经完成了逻辑地址到物理地址的变换,在程序执行期间不会再次发生变化
动态重定位
程序运行期间完成逻辑地址到物理地址的交换。其中实现机制需要依赖硬件地址变换机构
🐓 虚拟存储页面置换算法
1.最近最少使用(Least Recently Used,LRU)算法:该算法选择最长时间未被使用的页面进行替换。当一个新的页面需要被加载到内存中时,LRU算法会检查内存中是否存在可用的空闲页面,如果有,则选择最长时间未被使用的页面进行替换;否则,将选择一个暂时不会被使用或者最不常用的页面进行替换。
2.先进先出(First In First Out,FIFO)算法:该算法选择最早加载到内存的页面进行替换。当一个新的页面需要被加载到内存中时,FIFO算法会检查内存中是否存在可用的空闲页面,如果有,则选择最早加载的页面进行替换;否则,将选择一个暂时不会被使用或者最不常用的页面进行替换。
3.最不经常使用(Least Frequently Used,LFU)算法:该算法选择最不经常使用的页面进行替换。当一个新的页面需要被加载到内存中时,LFU算法会检查内存中是否存在可用的空闲页面,如果有,则选择最不经常使用的页面进行替换;否则,将选择一个暂时不会被使用或者最不常用的页面进行替换。
🐓 设备管理的目标
1.保障设备正常运行:通过科学的管理和维护,确保设备能够正常运行,满足生产或服务的需求。
2.提高设备利用率:通过合理的调度和使用,提高设备的利用率,降低闲置和浪费,从而节约成本。
3.预防性维护和维修:通过预防性的维护和维修措施,降低设备的故障率,提高设备的使用寿命。
4.优化设备配置:根据生产或服务的需要,合理配置设备资源,提高设备的使用效率。
5.降低能耗和环保:在设备的使用过程中,注重节能减排和环保,降低能耗和减少污染。
6.安全管理:确保设备的安全使用,防止设备事故的发生,保障人员和企业的安全。
🐓 磁盘调度算法
1.先来先服务算法(FCFS):这种算法按照请求到达的顺序进行服务,优先级最高的是最先请求。
2.最短寻道时间优先算法(SSTF):这种算法选择距离当前磁头位置最近的请求进行服务,以最小化寻道时间。
3.扫描算法(SCAN):这种算法从一端向另一端移动磁头,并按照遇到的请求顺序进行服务。当磁头移动到一端时,它会改变移动方向,并继续服务请求。
4.循环扫描算法(C-SCAN):这种算法类似于SCAN算法,但是当磁头到达一端时不会改变移动方向,而是继续在一个方向上移动,直到处理完所有的请
🐓 文件
具有符号名的,在逻辑上具有完整意义的一组相关信息项的集合
文件系统
操作系统中实现文件统一管理的一组软件和相关数据的集合,专门负责管理和存取文件信息的软件机构
文件存储管理方案
文件系统的安全
一类涉及到技术,管理。法律,道德,政治等问题,
另一类涉及操作系统的安全机制
文件系统的可靠性
1.备份和恢复:备份是保障数据安全的重要手段,可以通过定期备份和增量备份来减少数据丢失的风险。同时,恢复也是必要的操作,可以通过备份数据快速恢复文件系统。
2.错误检测和纠正:文件系统应该具备错误检测和纠正的能力,例如通过校验和等方式来检测数据的完整性,以及通过冗余等方式来纠正错误数据。
3.持久化和稳定存储:文件系统应该能够持久化存储数据,并且在系统故障或者掉电等情况下保证数据的稳定性。
4.访问控制和加密:文件系统应该提供访问控制和加密等安全措施,以保护数据的机密性和完整性。
5.一致性检查:文件系统应该定期进行一致性检查,以确保数据的正确性和一致性。
🐓 作业
系统为完成一个用户的计算任务所作的工资总和
作业状态
1.后备状态:作业全部输入到计算机系统中,由操作系统将其存放在输入井中,等待作业调度程序调度。
2.提交状态:当作业提交给计算机中心,通过输入设备送入计算机系统的过程状态称为提交状态。
3.执行状态:一旦作业被作业调度程序选中,为其分配了必要的资源,并为其建立相应的进程后,该作业便进入了执行状态。
4.完成状态:当作业正常结束或异常终止时,作业进入完成状态。
作业调度算法
1.先来先服务(FCFS):按照作业提交或进程变为就绪状态的先后次序,分派CPU。当前作业或进程占用CPU,直到执行完或阻塞,才出让CPU(非抢占方式)。在作业或进程唤醒后(如I/O完成),并不立即恢复执行,通常等到当前作业或进程出让CPU。有利于CPU繁忙的作业,而不利于I/O繁忙的作业。
2.轮转法(Round Robin):让每个进程在就绪队列中的等待时间与享受服务的时间成正比例。将系统中所有的就绪进程按照FCFS原则,排成一个队列。每次调度时将CPU分派给队首进程,让其执行一个时间片。在一个时间片结束时,发生时钟中断。调度程序据此暂停当前进程的执行,将其送到就绪队列的末尾,并通过上下文切换执行当前的队首进程。
3.优先级调度算法(HPF):每一个作业规定一个表示该作业优先级别的整数,当需要将新的作业由输入井调入内存处理时,优先选择优先数最高的作业。
4.多级反馈队列调度算法:将时间片轮转与优先级调度相结合,把进程按优先级分成不同的队列,先按优先级调度,优先级相同的,按时间片轮转。优点是兼顾长短作业,有较好的响应时间,可行性强,适用于各种作业环境。
5.高响应比优先调度算法:根据“响应比=(进程执行时间+进程等待时间)/ 进程执行时间”这个公式得到的响应比来进行调度。高响应比优先算法在等待时间相同的情况下,作业执行的时间越短,响应比越高,满足段任务优先,同时响应比会随着等待时间增加而变大,优先级会提高,能够避免饥饿现象。优点是兼顾长短作业,缺点是计算响应比开销大,适用于批处理系统。
相关文章:

【软件设计师笔记】深入探究操作系统
【软件设计师笔记】计算机系统基础知识考点(传送门) 💖 【软件设计师笔记】程序语言设计考点(传送门) 💖 🐓 操作系统的作用 1.通过资源管理提高计算机系统的效率 2.改善人机界面向用户提供友好的工作环境 🐓 操作系统的特征 …...

python常用pandas函数nlargest / nsmallest及其手动实现
目录 pandas库 Series和DataFrame nlargest和nsmallest 用法示例 代替方法 手动实现 模拟代码 pandas库 是Python中一个非常强大的数据处理库,提供了高效的数据分析方法和数据结构。它特别适用于处理具有关系型数据或带标签数据的情况,同时在时间序列分析方面也有着出…...

web前端-------弹性盒子(2)
上一讲我们谈的是盒子的容器实行,今天我们来聊一聊弹性盒子的项目属性; *******************(1)顺序属性 order属性,用于定义容器中项目的出现顺序。 顺序属性值,为整数,可以为负数ÿ…...
图论练习4
内容:染色划分,带权并查集,扩展并查集 Arpa’s overnight party and Mehrdad’s silent entering 题目链接 题目大意 个点围成一圈,分为对,对内两点不同染色同时,相邻3个点之间必须有两个点不同染色问构…...

flutter go_router 官方路由(一)基本使用
1 项目中添加最新的依赖 go_router: ^13.1.0如下图所示,我当前使用的flutter版本为3.16.0 然后修改应用的入口函数如下: import package:flutter/material.dart; import package:go_router/go_router.dart;void main() {runApp(const MyApp()); }cla…...

QT中,对于大小端UDP网络发送的demo,帧头帧尾
简单demo: 发送端: #include <QUdpSocket> #include <QtEndian>#pragma pack(1) struct Test {unsigned char t1:1;unsigned char t2:2;unsigned char t3:3;unsigned char t4:2;quint8 a 1;quint16 b 2;quint16 c 3;//double b …...
ip网络的三类地址及其相互关系
随着互联网的普及和发展,IP网络已成为全球范围内最重要的信息交换平台。在IP网络中,IP地址是每个设备在网络中的唯一标识,是实现网络通信的关键。虎观代理小二二将详细介绍IP网络中的三类地址,即A类、B类和C类地址,以及…...
开源计算机视觉库OpenCV详细介绍
开源计算机视觉库OpenCV详细介绍 1. OpenCV简介 OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库。它最初由Intel开发,现在由一个庞大的社区维护和更新。OpenCV旨在提供一个通用、跨平台的计算机…...

go消息队列RabbitMQ - 订阅模式-direct
1.发布订阅 在Fanout模式中,一条消息,会被所有订阅的队列都消费。但是,在某些场景下,我们希望不同的消息被不同的队列消费。这时就要用到Direct类型的Exchange。 在Direct模型下: 队列与交换机的绑定,不能…...

PyTorch 2.2 中文官方教程(十八)
开始使用完全分片数据并行(FSDP) 原文:pytorch.org/tutorials/intermediate/FSDP_tutorial.html 译者:飞龙 协议:CC BY-NC-SA 4.0 作者:Hamid Shojanazeri,Yanli Zhao,Shen Li 注意…...

jenkins部署vue项目
首次加载比较慢、需要等待很长时间 到这个页面算是初始化完成了 输入密码路径为 之前设置的路径 可以在文件中找或者 docker logs jenkins 直接安装推荐插件 正在安装中!! 安装成功后创建管理员账号(一定要记住这个也是登录账号密码) 这里实例配置直接…...
十一、C++核心编程(2)引用
一、引用的基本使用 作用: 给变量起别名语法: 数据类型 &别名 原名 #include<iostream> #include<string.h> using namespace std;int main() {//引用基本语法//数据类型 &别名 原名int a 10;//创建引用int &b a;cout << "a "…...
numpy学习总结二
单词发音: squeeze 发音:死贵子 concatenation [kɒnˌktəˈneɪʃən] 拼接;串联 threshold [θreʃhəʊld] 死re后的 quantile 拷n太哦 分位数 因果不能改 智慧不能赐 正法不可说 无缘不能度 天雨虽宽不润无根之草;佛法虽广不度无缘之人 …...

3 编辑器(Vim)
1.完成 vimtutor。备注:它在一个 80x24(80 列,24 行) 终端窗口看起来效果最好。 2.下载我们提供的 vimrc,然后把它保存到 ~/.vimrc。 通读这个注释详细的文件 (用 Vim!), 然后观察 …...

C/C++ (stdio.h)标准库详解
cstdio,在C语言中称为stdio.h。该库使用所谓的流与物理设备(如键盘、打印机、终端)或系统支持的任何其他类型的文件一起操作。 在本文将会通过介绍函数参数,举出实际的简单例子来帮助大家快速上手使用函数。 目录 一、流 二、库函数 1、F…...

深度学习介绍
对于具备完善业务逻辑的任务,大多数情况下,正常的人都可以给出一个符合业务逻辑的应用程序。但是对于一些包含超过人类所能考虑到的逻辑的任务,例如面对如下任务: 编写一个应用程序,接受地理信息、卫星图像和一些历史…...

ywtool dhcp命令
一.dhcp功能介绍 就是通过脚本实现dhcp地址池的增、删、改、查这几个功能日志文件路径: /var/log/ywtools/ywtool-dhcp.log/usr/local/ywtools/config/config.ini中account参数(ywtool dhcp这个命令用的,但是这个命令只能配置1个地址池,所以这里面的参数没什么意义) 二.配置…...
ChatGPT高效提问—基础知识(LM、PLM以及LLM)
ChatGPT高效提问—基础知识(LM、PLM以及LLM) 了解语言模型(language model, LM)、预训练语言模型(pre-trained language model, PLM)和大型语言模型(large language model, LLM)…...

MongoDB复制集实战及原理分析
文章目录 MongoDB复制集复制集架构三节点复制集模式PSS模式(官方推荐模式)PSA模式 典型三节点复制集环境搭建复制集注意事项环境准备配置复制集复制集状态查询使用mtools创建复制集安全认证复制集连接方式 复制集成员角色属性一:Priority 0属…...

Java并发之synchronized详解
☆* o(≧▽≦)o *☆嗨~我是小奥🍹 📄📄📄个人博客:小奥的博客 📄📄📄CSDN:个人CSDN 📙📙📙Github:传送门 📅&a…...
ES6从入门到精通:前言
ES6简介 ES6(ECMAScript 2015)是JavaScript语言的重大更新,引入了许多新特性,包括语法糖、新数据类型、模块化支持等,显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》
引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...
MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例
一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...

MongoDB学习和应用(高效的非关系型数据库)
一丶 MongoDB简介 对于社交类软件的功能,我们需要对它的功能特点进行分析: 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具: mysql:关系型数据库&am…...
【AI学习】三、AI算法中的向量
在人工智能(AI)算法中,向量(Vector)是一种将现实世界中的数据(如图像、文本、音频等)转化为计算机可处理的数值型特征表示的工具。它是连接人类认知(如语义、视觉特征)与…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)
宇树机器人多姿态起立控制强化学习框架论文解析 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一) 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战
“🤖手搓TuyaAI语音指令 😍秒变表情包大师,让萌系Otto机器人🔥玩出智能新花样!开整!” 🤖 Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制(TuyaAI…...

如何理解 IP 数据报中的 TTL?
目录 前言理解 前言 面试灵魂一问:说说对 IP 数据报中 TTL 的理解?我们都知道,IP 数据报由首部和数据两部分组成,首部又分为两部分:固定部分和可变部分,共占 20 字节,而即将讨论的 TTL 就位于首…...

什么是Ansible Jinja2
理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...

LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf
FTP 客服管理系统 实现kefu123登录,不允许匿名访问,kefu只能访问/data/kefu目录,不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...