7.操作系统的体系结构
1.大内核(宏内核/单内核)和微内核
1.什么是内核
内核是操作系统最基本,最核心的部分.实现操作系统内核功能的那些程序就是内核程序
2.什么叫大内核,什么叫微内核
大内核:将一些主要功能模块都作为系统内核
微内核:只有与硬件紧密相连的功能
3.大内核和微内核的对比
结论:
大内核: 主要模块的功能都在系统内核 微内核: 只把基本的功能保留在内核
高性能 内核功能少,结构清晰,方便维护
内核代码太多,结构混乱不宜易维护 须在核心态和用户态频繁的切换,性能低
2 .分层结构,模块化,外核
8.操作系统的引导
1.什么是操作系统的引导
开机的时候,让操作系统运行起来
2.磁盘里面有哪些相关数据
1.刚买的磁盘里面是空的
2.在磁盘里安装操作系统之后(磁盘会有的内容)
里面的分区表:在这个磁盘中每个盘每个分区分别占用多大的空间,每个分区的地址范围
c盘中还有引导记录PBR(因为里面安装了操作系统)
3.操作系统的引导过程
1.首先我们知道如果操作系统要启动,则操作系统的数据一定放在主存中
2.计算机的主存由ROM(我们平时sho)和RAM(运存)两个部分构成
ROM 存储器是一种用于存储固定数据和程序代码的非易失性存储器,其中的数据和程序代码无法被修改,因此经常用于存储计算机的 BIOS、引导程序、固件、操作系统等。ROM 存储器通常比 RAM 存储器读取速度更快,但写入操作却不可行。
RAM 存储器是一种易失性存储器,用于存储运行程序和数据,其中的数据和程序代码可以被读取、写入和修改。RAM 存储器中的数据和程序代码只有在电源处于开启状态时才能够存在,如果关闭电源,RAM 存储器中的数据和程序代码就会被清除。RAM 存储器通常比 ROM 存储器读取速度更慢,但写入操作可行,因此在计算机中被广泛应用。
3.CPU从一个特定的主存地址开始,取指令,执行ROM中的引导程序(先进行硬件自检,再开机)
4.将磁盘的第一块--主引导记录读入内存,执行磁盘引导程序,扫描分区表
5.从活动分区(又称主分区,即安装了操作系统的分区)读入分区引导记录,执行其中的程序
6.从根目录下找完完成的操作系统初始化程序(即启动管理器)并执行,完成"开始"的一系列动作
9.虚拟机
使用虚拟化技术,将一台物理机器虚拟化为多台虚VM),每个虚拟机器都可以独立运行一个操作系统
同义术语:虚拟机管理程序/虚拟机监控程序/VMM/Hyperviosr
1. 两类虚拟机
第一类VMM:直接运行在硬件上
第二类VMM:运行在宿主操作系统上
2. 两类虚拟机管理程序的对比
10.进程的概念,组成,特征
1.进程的概念
程序:是静态的,就是个存放在磁盘里的可执行文件,就是一系列的指令集合
进程:是动态的,是程序的一次执行过程(每一次程序的执行都会对应一个不同的进程)
操作系统是如何区分同一个程序产生的不同进程呢?
答:当进程被创建的时候,操作系统会为该进程分配一个唯一的,不重复的"身份证号"--PID.
2.进程的组成--PCB,程序段,数据段
PCB(进程块):是一个很重要的数据结构.当一个进程被创建时还会为其分配一些资源(内存,正在使用的I/O设备,正在使用的文件) 还要记录进程的运行情况(CPU使用时间,磁盘使用情况,网络流量使用情况等)这些信息都会被放在PCB中
程序段:程序的代码(指令序列)
数据段:运行过程中产生各种数据(如:程序中定义的变量)
PCB是给操作系统用的.程序段,数据段是给自己用的
进程是如何创建的
(程序如何运行的)
进程实体(进程映像)是进程某一时刻的状态
进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位
(注意:PCB是进程存在的唯一标志!)
3.进程的特征
总结:
11.进程的状态:
1.进程的几种状态
就绪态指进程已经准备好执行,但需要等待CPU分配资源。在就绪态下,进程已经完成了所需的资源准备工作,就等待着操作系统将CPU时间片分配给它,进程处于可执行状态。
运行态指进程正在执行操作系统分配给它的任务,此时进程使用CPU进行计算或IO操作。
阻塞态指某个进程由于等待某种事件(如IO操作的完成)而暂停执行。此时CPU不再为该进程服务,进程暂停执行,直到所等待的事件发生才能继续执行。在阻塞状态下,进程被挂起,不再消耗CPU时间。
2.进程的转化
注意:一个进程不能由阻塞态直接转换为运行态,也不能由就绪态直接转换为阻塞态(因为进入阻塞态是进程主动请求的,必然需要进程运行时才能发出这种请求)
3.进程的组织
1.链接方式(大多)
2.索引方式
总结:
12.进程控制
1.进程控制的基本概念
1.概念:进程控制主要功能是对系统中所有进程实施有效的管理,它具有创建新进程,撤销已有的进程,实现进程状态的转换功能
2.如何实现进程控制?
答:用"原语"实现,原语是一种特殊的程序,它的执行具有原子性.也就是说,这段程序的运行必须一气呵成,不可中断
3.为什么要一气呵成?
答:如果不能一气呵成,就有可能导致操作系统中某些关键数据结构的信息不统一的情况,这会影响操作系统进行别的管理工作
下面例子:
4.如何实现原语的"原子性"
可以用"关中断指令"和"开中断"指令这两个特权指令实现原子性
你还记不记得我们上面曾说过,在核心态我们每执行一条程序,就会检查一下有没有中断处理程序.所以如何在规定的时间上不接收中断处理信号呢?
2.进程控制相关的原语
1.创建原语
2.撤销原语
3.阻塞原语和唤醒原语 (成对使用的)
4.切换原语
总结:
13.进程通信
什么是进程通信?
答:进程通信(IPC)是指两个进程之间产生数据交互.
为什么进程通信需要操作系统支持?
答:进程是分配系统资源的单位(包括内存地址空间),因此各进程拥有的内存地址空间相互独立
为了保证安全,一个进程不能直接访问另一个进程的地址.所以需要操作系统来帮助他们完成通信.
1.共享存储
2.消息传递
进程间数据交换以格式化的消息(Message)为单位.进程通过操作系统提供的"发送消息/接收消息"两个原语进行数据交换.
两种通信方式:
1.直接通信方式:
2.间接通信方式:
3.管道通信
1. "管道"是一个特殊的共享文件,又名pipe文件.其实就是在内存中开辟一个大小固定的内存缓冲区
(这里可能有人会问,前面的共享储存不也是分配一块空间然后把数据放里,别人来读实现通信的吗?注意:这里是管道是由规则的必须先进先出(循环队列),而共享储存是没有顺序的)
2.管道只能采用半双工通信,某一时间段内只能实现单向的传输.如果实现双向同时通信,则需要设置两个管道
3.各进程要互斥地访问管道(由操作系统实现)
4.当管道写满时,写进程将阻塞,直到读进程将管道中的数据取走,即可唤醒写进程
5.当管道读空时,读进程将阻塞,直到写进程往管道中写入数据,即可唤醒读进程
6.管道中的数据一旦被读出,就彻底消失.因此当多个进程读同一个管道时,可能会出现错乱.对此通常有两种解决方案:1.一个管道允许多个写进程,一个读进程 2.允许多个写进程,多个读进程,但系统会让各个读进程轮流从管道中读数据
4.总结:
14. 线程,多线程模型
1.什么是线程,为什么要引入线程?
线程是一个基本的CPU执行单元,也是程序执行流的最小单位,
每个进程可以有多个线程,每个线程可以有多个不同的代码.
引入线程之后,不仅进程之间可以并发,进程内的个线程之间也可以并发,从而进一步提升了系统的并发度,使得一个进程内也可以并发处理各种任务(如QQ视频,文字聊天,传文件)
引入线程之后,进程只作为除CPU之外的系统资源的分配单元(如打印机,内存地址空间等都是分配给进程的)
2. 引入线程机制后,有什么变化?
3.线程的属性
4.线程的实现方式,多线程模型
1.用户级线程
1.1线程的管理工作由谁来完成
答:用户级线程由应用程序通过线程库实现,所有的县城管理工作都由应用程序负责(包括线程切换)
1.2线程切换是否需要CPU变态?
答:用户级线程中,线程切换可以在用户态下即可完成,无需操作系统干预
1.3操作系统能否意识到用户线程的存在
答:在用户看来,是由多个线程.但是在操作系统内核看来,并意识不到线程的存在
1.4这种线程的实现方式有什么优缺点
优点:用户级线程的切换在用户空间即可完成,不需要切换到核心态,线程的管理系统开销小,效率高
缺点:当一个用户级线程被阻塞后,整个进程都会被阻塞,并发度不高.多个线程不可在多核处理机上并行运行
2.内核级线程
1. 内核级线程的管理工作由操作系统内核完成
2.线程调度,切换等工作都由内核负责,因此内核级线程的切换必然需要在核心态下才能完成
3.操作系统会为每个内核级线程建立相应的TCB(线程控制块),通过TCB对线程进行管理."内核级线程"就是"从操作系统内核视角看能看到的线程"
4.优缺点:
优点:当一个线程被阻塞后,别的线程开可以继续执行,并发能力强.多线程可在多核处理机上并行执行
缺点:一个用户进程会占用多个内核级线程,线程切换由操作系统内核完成,需要切换到核心态,因此线程管理成本高,开销大.
1.一对一模型:
一个用户级线程映射到一个内核级线程.每个用户线程有与用户级线程同数量的内核级线程
优点:当一个线程被阻塞后,别的线程开可以继续执行,并发能力强.多线程可在多核处理机上并行执行
缺点:一个用户进程会占用多个内核级线程,线程切换由操作系统内核完成,需要切换到核心态,因此线程管理成本高,开销大.
2.多对一模型:
多个用户级线程映射到一个内核级线程.且一个进程只被分配一个内核级线程
优点:用户级线程的切换在用户空间即可完成,不需要切换到核心态,线程的管理系统开销小,效率高
缺点:当一个用户级线程被阻塞后,整个进程都会被阻塞,并发度不高.多个线程不可在多核处理机上并行运行
(重点重点:操作系统只"看得见"内核级线程,因此只有内核级线程才是处理级分配的单位)
3.多对多模型
总结:
感谢大家的观看!!!!!持续更新中 操作系统学习_03(零基础学习)点个关注不迷路