操作系统知识点总结

操作系统知识点总结:

第一章:操作系统概述

1.1操作系统的概念:

​ 操作系统是一种系统软件,与其他系统软件和应用软件不同,它有自己的基本特征。它的四大基本特征也就是并发,共享,虚拟,异步

1.2操作系统的特征(四大基本特征):

  1. 并发: 这里我们要理解什么是并发,什么是并行。并发是指多个事件在同一时间间隔内发生。并行是指多个事件在同一时刻发生
  2. 共享: 共享分为两种共享方式:互斥共享方式:在一定时间内只允许一个进程去访问。同时共享方式:在一定时间内允许多个进程去访问。

其中 **并发和共享是操作系统最基本的特征。两者互为存在条件,**资源共享是以并发为条件的,没有并发就没有办法谈共享。若系统不能对资源并发进行有效的管理,那么必将影响到程序的并发执行。

3.虚拟

4.异步: 进程的执行不是一贯到底的,而是走走停停,不断向前推进。

虚拟性以并发性和共享性为前提,异步性是并发性和共享性的必然结果。

1.3操作系统的目标和功能:

1.操作系统是计算机系统资源的管理者:

(1).处理机管理

(2).存储器管理

(3).文件管理

(4).设备管理

2.操作系统作为用户和计算机硬件系统之间的接口

3.操作系统实现了对计算机资源的扩充

操作系统的目标:实现方便性,有效性,可扩充性,开放性。

1.4操作系统的发展历程:

1.人工操作阶段:

2.单道批处理阶段:

实现了对作业的连续处理,但由于只有一个通道,它解决了人机矛盾和CPU与IO设备速度不匹配的矛盾。提高了系统的资源利用率和吞吐量。

缺点:不能充分利用资源,原因是只有一个通道。

3.多道批处理阶段:

优点:提高了资源的利用率,系统的吞吐量大。

缺点:平均周转时间长,没有交互能力。

实现多道批处理的关键是: 如何分配处理器,多道程序的内存分配问题,I/O设备如何分配,如何保证其安全性和一致性。

4.分时操作系统

分时系统实现的关键是如何让用户与自己的作业进行交互。

5.实时操作系统

//TODO

1.5操作系统的运行环境:

两种指令(特权指令和非特权指令):

特权指令: 指的是不允许用户直接使用的指令。
非特权指令: 是指允许用户直接使用的指令,它不能访问系统的软硬资源。

随之而来的是两种运行模式(用户态和核心态):

当CPU处于核心态时就可以使用特权指令,同时切换到用户态的指令也是特权指令。当CPU处于用户态时也只能使用非特权指令。

★★★中断与异常

中断:

中断也被称为外中断,是指CPU执行指令外部的事件。

异常也被称为内中断,是指CPU执行指令内部的事件。

中断和异常的分类:

外中断可分为可屏蔽中断和不可屏蔽中断。

异常分为故障,自陷和终止。

中断和异常的处理过程:

当CPU在执行用户程序的第i条指令时检测到一个异常事件,或者发现了一个中断请求信号,这是CPU打断当前的用户程序,然后转到相应的中断或异常处理程序中去执行。若中断或者异常处理程序能够解决相应的问题,则在中断或者异常处理程序最后,通过执行中断和异常返回指令,回到被打断的用户程序的下一条指令(i+1)条指令继续执行,若发现是不可修复的错误就终止用户程序。

原语:

所谓原语就是由若干条指令组成的,用于完成某一特定功能的过程,它是有原子性的,也就是说原语在执行过程中不能被中断,只能一气呵成。原子操作在内核态下执行,并且常驻内存。

1.6系统调用:

所谓的系统调用是指用户在程序中调用操作系统所提供的一些子功能,系统调用可视为特殊的公共子程序。

系统调用按功能可分为:

由于系统调用对整个系统的影响非常的大,因此需要由内核程序负责完成,要运行在内核态,用户可以通过陷入指令(trap/访管指令)来发起系统调用,即是将CPU的使用权交给操作系统的内核程序(CPU的状态从用户态转变为内核态)。让内核程序对系统调用请求进行相应得处理,处理完成后将CPU得使用权还给用户程序(即由内核态转变为用户态)。目的就是让用户程序不能执行对系统影响大得操作。必须通过系统调用得方式请求操作系统代为执行。增加了安全性。

列举从用户态转变到内核态的例子:

(1).用户程序要求操作系统的服务,即系统调用。

(2).发生一次中断。

(3).用户程序产生了一个错误状态。

(4).用户程序企图执行一条特权指令。

(5).从核心态转向用户态由一条指令实现,这条指令也是特权指令(因为是在内核态下执行的指令),一般是中断返回指令。

访管指令是将用户态转向核心态,因此它是在用户态下使用的指令,不是特权指令。

1.7操作系统的结构(新知识点):

大内核: 所有的系统功能都放在了内核里。这也保证了状态切换的次数减少,性能增加内核内部的各个程序可以互相调用。缺点:所有的程序都放在内核导致维护起来很难,并且当一个程序出现错误,可能就导致整个内核出现错误。
微内核: 只把最核心的功能放入内核,优点:内核易于维护,可靠性高,一个功能出错不会影响内核。缺点:性能低,需要频繁的进行状态切换。

1.8虚拟机:

虚拟机:使用虚拟化技术将一台物理机虚拟化为多台虚拟机器,每台虚拟机都可以独立运行1个操作系统。

二者对比:

image-20230713195031343

第二类的虚拟机就是我们常用的Vmware,我们将虚拟机安装在我们的宿主机上,所有的资源都依靠于宿主机,这也就意味着性能会差,但是可迁移性非常好,我们只需要将我们的镜像文件ISO拷贝到另一台电脑上即可。

第一章知识点补充:

1.操作系统管理计算机的硬件资源和软件资源。

2.系统调用是操作系统为应用程序使用内核功能所提供的接口。

3.操作系统为编程人员提供的接口是程序接口,即系统调用。

4.用户不能直接操作硬件资源,只能通过系统调用的方式来请求内核为其提供服务,间接的去访问资源。

5.操作系统不能直接用来编程,配置操作系统的机器与裸机相比,资源利用率提高了。

6.操作系统的接口分为 命令接口 和 程序接口(系统调用)

7.计算机开机后,操作系统被加载到RAM中。

8.实时操作系统必须在被控制对象的规定时间内来处理来自外部的请求。

9.计算机通过硬件中断机制完成了由用户态转变为核心态。

10.内核包含四个部分:时钟管理,中断机制,原语和广义指令。输入和输出涉及中断操作,也属于内核。

11.关中断属于特权指令。

12.微内核结构中,内核的功能越少越稳定。支持分布式系统。windows属于宏内核

第二章:进程与线程

2.1进程:

进程的概念:

进程是程序的一次执行过程,是一个程序及其数据在处理机上顺序执行时所发生的活动,是具有独立功能的程序在一个数据集合上运行的过程,他是系统进行资源分配和调度的一个独立单位。

重点:

(1).进程是动态的,具有过程性。

(2).PCB是进程存在的唯一标识。

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

进程的特征: (1)动态性,(2),并发性(3),异步性(4),独立性

2.2进程的状态与转换:

五种状态以及五种状态之间的转换:

运行态: 进程正在处理机上运行。

就绪态: 进程获得了除处理机之外的其他所有资源。一旦得到处理机就可以开始运行。

阻塞态: 进程正在等待某一事件而暂停运行。

image-20230713203104324

注意: 一个进程从运行态转变到阻塞态是主动的行为,从阻塞态转变为就绪态是被动的。

2.3进程的组成:

PCB(最核心的进程控制块,是进程存在的唯一标识) + 程序段 + 数据段

2.4进程控制:

进程的创建: 终端用户登录系统,作业调度,系统提供服务都会引起进程的创建。

进程的终止: (1).正常结束(2).异常结束,表示进程在运行时,发生了某种异常事件导致无法继续运行(3).外界干预

进程的阻塞和唤醒

2.5进程通信:

进程通信是指进程之间的信息交换,其中我们所知道的PV操作则是低级通信方式,而高级通信方式是 共享内存,消息传递,管道通信

2.6线程:

在引入线程后,进程作为除CPU外的系统资源的分配单元,而线程则作为处理机的分配单元 ,是程序执行流的最小单位。

引入进程的目的是更好的使多道程序并发执行,提高资源利用率和系统吞吐量。引入线程则是减少程序在并发执行时所付出的时空开销,提高操作系统的并发性能。

image-20230716161058543

2.7线程和进程的比较:

(1).调度:

拥有资源和独立调度的基本单位都是进程,进程之间的切换开销很大。而线程独立调度的基本单位,线程之间切换的开销远小于进程。同时线程之间的切换不会影响进程。进程之间的切换会影响线程。

(2).并发性:

进程之间可以并发,一个进程中的多个线程也可以并发,不同进程中的线程也可以并发。

(3).独立性:

每个进程都拥有独立的地址空间和资源。不允许其他进程访问,线程共享进程的地址空间和资源,并且某个进程中的线程对其他进程是不可见的。

(4).系统开销:

创建和撤销进程的开销要远大于创建和撤销线程的开销。

(5).支持多处理机:

进程只能运行在一个处理机上,对于多线程进程可以在多个处理机上运行。

2.8线程的实现:

用户级线程:

image-20230716162032996

内核级线程:

image-20230716163211281

由图可以看除内核级线程是放在操作系统中的,因此是由操作系统进行管理的。线程的调度,切换等工作都是由内核负责的,因此内核级线程的切换必须在内核态下完成。每个线程都有自己的线程控制块(TCB),同时内核级线程是操作系统能够看到的线程。

优点: 当一个线程被阻塞时,别的线程还能正常运行,并发能力强,多线程可以在多核处理机上并行执行。

缺点: 一个用户级线程会占用多个内核级线程,线程的切换需要切换到内核态,需要状态转换,开销大。

2.9一对一模型:

image-20230716163854641

2.10多对一模型:

image-20230716164000232

2.11多对多模型:

image-20230716164209998

image-20230716164302743

注意: 内核级线程要小于用户级线程的。

2.12线程的状态转换:

线程的状态转换图和进程类似,我们只需要关注三状态转换(就绪,运行,阻塞)

2.13进程调度:

image-20230716165700203

进程调度的时机:

  • 当前运行的进程主动放弃处理机:

    进程正常的运行完终止。

    进程运行过程中发生异常终止。

    进程主动请求进入阻塞。

  • 当前运行的进程被动放弃处理机:

    在运行过程中来了一个优先级更高的进程。

    分配给进程的时间片用完。

    有更紧急的事情要处理(I/O)。

进程调度的方式:

抢占式和非抢占式

重点知识:

进程在操作系统内核程序临界区是不能进行调度和切换的。

进程处于临界区时是可以进行处理机调度的,为了防止某个进程一直等待临界资源,占用CPU。

2.14调度算法:

重要的几个公式:
image-20230716201858057

(1).先来先服务(FCFS)(非抢占式):

按照作业到达的先后顺序进行调度:

用于作业调度进程调度

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/75368.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Centos7 上安装 redis-dump 和redis-load 命令

一、安装rvm 1、安装GPG keys gpg2 --keyserver keyserver.ubuntu.com --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDBcurl -sSL http://rvm.io/mpapis.asc | gpg2 --import - curl -sSL http://rvm.io/pkuczynski.asc | g…

No primary or single unique constructor found for interface java.util.List

报错截图: 报错内容: 2023-08-04 15:46:32.884 ERROR 14260 --- [io-8080-exec-10] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing fa…

企业级开发中协同开发与持续集成持续部署

文章目录 1 创建代码仓库2 使用git协同开发2.1 独立团队开发2.2 多团队开发git工作流 2 持续集成和持续部署2.1 创建docker镜像2.2 使用coding构建 1 创建代码仓库 每个项目有唯一的代码仓库,所以不是每个开发者都需要创建一个代码仓库,一般都是项目负责…

【C#学习笔记】内存管理

文章目录 分配内存释放内存GC标记清除算法分代算法 .NET的GC机制有这样两个问题: 官方文档 自动内存管理 自动内存管理是CLR在托管执行过程中提供的服务之一。 公共语言运行时的垃圾回收器为应用程序管理内存的分配和释放。 对开发人员而言,这就意味着…

《Web安全基础》03. SQL 注入

web 1:简要 SQL 注入2:MySQL 注入2.1:信息获取2.2:跨库攻击2.3:文件读写2.4:常见防护 3:注入方法3.1:类型方法明确3.2:盲注3.3:编码3.4:二次注入3…

W5100S-EVB-PICO做DNS Client进行域名解析(四)

前言 在上一章节中我们用W5100S-EVB-PICO通过dhcp获取ip地址(网关,子网掩码,dns服务器)等信息,给我们的开发板配置网络信息,成功的接入网络中,那么本章将教大家如何让我们的开发板进行DNS域名解…

【分布式能源选址与定容】光伏、储能双层优化配置接入配电网研究(Matlab代码实现)

目录 💥1 概述 📚2 运行结果 🎉3 参考文献 🌈4 Matlab代码、数据、讲解 💥1 概述 由于能源的日益匮乏,电力需求的不断增长等,配电网中分布式能源渗透率不断提高,且逐渐向主动配电网方…

自监督去噪:Noise2Self原理分析及实现 (Pytorch)

文章地址:https://arxiv.org/abs/1901.11365 代码地址: https://github.com/czbiohub-sf/noise2self 要点   Noise2Self方法不需要信号先验信息、噪声估计信息和干净的训练数据。唯一的假设就是噪声在测量的不同维度上表现出的统计独立性,而真实信号表现出一定的…

MATLAB /Simulink 快速开发STM32(使用st官方工具 STM32-MAT/TARGET),以及开发过程

配置好环境以后就是开发: stm32cube配置芯片,打开matlab添加ioc文件,写处理逻辑,生成代码,下载到板子中去。 配置需要注意事项: STM32CUBEMAX6.5.0 MABLAB2022BkeilV5.2 Matlab生成的代码CTRLB 其中关键的…

ClickHouse的安装启动

安装步骤 1.关闭防火墙 2.修改资源限制配置文件 2.1 路径:/etc/security/limits.conf 在末尾添加: * soft nofile 65536 #任何用户可以打开的最大的文件描述符数量,默认1024 这里的设置会限制tcp连接数 * hard nofile 65536 * soft nproc…

逃离城市热浪,寻觅25℃的夏天

“入伏”后,夏日里的热浪撩动着我们那颗躁动自由的心,趁着暑假走出巨大的城市“蒸笼”吧,甩掉高温和闷热,寻找避暑纳凉的最佳旅行地,感受不一样的夏日清凉感~ 在酷暑中,隐藏着很多不为人知的清凉打卡胜地&…

信必优行业服务能力-中国头部综合性证券公司

近期召开的国家高层会议提出 “要活跃资本市场,提振投资者信心”,明确了下一阶段资本市场发展新任务、新要求,资本市场有望呈现新气象、新风貌。各证券公司积极响应,全力推进资本市场回暖;同时各公司也借此东风修炼内功…

(7.28-8.3)【大数据新闻速递】《数字孪生工业软件白皮书》、《中国绿色算力发展研究报告》发布;华为ChatGPT要来了

【数字孪生工业软件白皮书(2023)】 近日,第七届数字孪生与智能制造服务学术会议成功举行,2023《数字孪生工业软件白皮书》在会上正式发布。《白皮书》在《Digital Twin》国际期刊专家顾问委员会指导下,由国家重点研发计…

<C语言> 预处理和宏

1.预定义符号 __FILE__ //进行编译的源文件 __LINE__ //文件当前的行号 __DATE__ //文件被编译的日期 __TIME__ //文件被编译的时间 __STDC__ //如果编译器遵循ANSI C,其值为1,否则未定义这些预定义符号都是C语言内置的。 举个例子&…

selenium 截屏

当前环境: Windows 10 Python 3.7 selenium 3.141.0 Google Chrome 115.0.5790.110 (64 位) from selenium import webdriver import base64if __name__ __main__:#driver webdriver.Chrome()driver.get(https://www.baidu.com/)# 1.…

M5ATOMS3基础04给ROS2发一个问候(micro-ROS)

参考以往部分历程: 1. esp32与ros2的欢乐启程 2021 2. micro-ROS之esp32与ros2资料(freertos) 2021 3. esp32发布机器人电池电压到ros2(micro-rosCoCube) 2022 4. CoCube和Micro-ROS简单案例演示 2022 不需要僵化的…

JavaScript数据结构与算法-初始栈结构

文章目录 一、初始栈结构1.1 特性1.2 注意事项 二、栈结构的封装2.1 封装简单栈结构2.2 利用栈将十进制转二进制 一、初始栈结构 1.1 特性 类似于汉诺塔,后进先出,每次只能操作栈顶的元素。关键词:压栈、退栈 简单示意图: 1.…

windows下tomcat无故宕机,检测http或https服务,并自动重启Tomcat服务

一、问题描述及解决原理 把项目发布到windows服务器中,如tomcat工程不稳定,会有无故宕机的问题。如果通过程序无法解决,并且重启tomcat服务能够生效的话,可以做一个自动检测并重启的脚本。 脚本通过检测tomcat对应的工程链接&…

Flask学习笔记_异步论坛(四)

Flask学习笔记_异步论坛(四) 1.配置和数据库链接1.exts.py里面实例化sqlalchemy数据库2.config.py配置app和数据库信息3.app.py导入exts和config并初始化到app上 2.创建用户模型并映射到数据库1.models/auth.py创建用户模型2.app.py导入模型并用flask-mi…

RabbitMQ 教程 | 第4章 RabbitMQ 进阶

👨🏻‍💻 热爱摄影的程序员 👨🏻‍🎨 喜欢编码的设计师 🧕🏻 擅长设计的剪辑师 🧑🏻‍🏫 一位高冷无情的编码爱好者 大家好,我是 DevO…