目录
第一台数字计算机
简称:ENIAC(埃尼阿克)
时间:1946年
地点:美国宾夕法尼亚大学
计算机的发展历程
计算机发展经历了四个阶段
1.电子管时代(1946~1958)
2.晶体管 (1958~1964)
3.中、小规模集成电路(1964~1971)
4.大规模和超大规模集成电路(1971~至今)
计算机的体系结构
冯.诺依曼体系结构,存储程序控制思想
“存储程序”思想
计算机硬件五大组成:运算器、控制器、存储器、输入和输出设备(运算器和控制器组成cpu也就是中央处理器)
采用二进制形式表示指令和数据
将数据和程序实现存储在计算机的内部存储器中
计算机在工作时,能够自动、高速地从存储器中取出指令并加以执行
第一台存储程序的计算机
EDSAC(电子延迟自动存储计算机):1949年
EDVAC(离散变量自动电子计算机):1951年
计算机系统基本组成
两大部分:硬件系统和软件系统
计算机硬件:物理装置、物质基础
计算机软件:在硬件设备运行的程序和数据
只有硬件系统的计算机称为裸机
硬件系统只能识别机器语言(0和1组成的代码),也是决定计算机系统性能的基础
软件系统由程序、数据和相关文档组成,是运行在硬件上,用来运行、管理和维护计算机
程序是指指挥计算机执行各种动作完成指定任务的指令集
指令是最基本单元,由操作码和操作数组成
系统软件是控制和协调计算机以及外部设备,并且支持应用软件的开发和运行
包括操作系统、语言处理程序、数据库管理系统
应用软件是针对某一个具体的应用而开发的软件
包括:信息处理系统、辅助应用软件、用户程序
中央处理器(CPU)的概念
计算机系统的核心,由运算器和控制器两部分组成,采用总线连接。
在微型计算机中集成为一个芯片
控制器(CU)
计算机系统的控制中心和指挥中心,取指令、解译指令和执行指令
指令的执行过程:获取质量、分析指令、执行指令、存储结果
运算器(ALU)
又称为算术逻辑部件
主要任务是执行各种算术运算和逻辑运算,核心部件由加法器和寄存器组成
全部运算都是在运算器中进行
根据指令的功能从存储器或寄存器中取操作数
运算后将结果送回到指定的寄存器中
寄存器(R)
同样也是CPU的一部分
作用是高速存储区域,临时存储数据
分析指令时存储程序指令
运算器处理数据时存储数据或者运算结果
所有数据在处理之前都存储在寄存器中
数量和大小决定了CPU的性能和速度
分为指令存储器、地址~、存储~、累加~
总线
在CPU内部、CPU和其他部件之间传输信息的线路
性能,总线的宽度决定性能(八位,三十二位,六十四位)
CPU的主要性能参数
主频(CPU的工作频率)
单位时赫兹(Hz)每秒钟的工作频率
字长(一次能处理二进制的最大位数)
影响计算精度和运算速度
目前市场有32位、64位(和总线区分开)
计算机的基本工作原理
计算机的指令格式
有操作码(确定指令的功能)和操作数(也称为地址码,确定指令的操作对象)组成
能够被计算机识别并执行的二进制代码
规定了计算机能完成的基本操作
指令的数量由二进制位数决定(操作码是x位,那么指令数量就是2^x条指令)
例如二进制具有4位
则指令就包括:0000;1000;1001;1010;1100;0100;0101;0110;0111;0010;0011;0001;1011;1110;1101;1111;
操作数分为源操作数(确定操作对象)、目的操作数(确定运算结果的存放)
计算机指令的寻址方式
操作数有效地址(寻址方式+形式地址)
寻址方式:确定本条指令的数据地址;确定下一条要执行的指令的地址
寻址方式分为指令寻址和数据寻址
指令寻址方式分为顺序寻址和跳跃寻址
数据寻址方式分为立即寻址、直接寻址、隐含寻址、其他寻址方式(了解)
计算机指令系统
计算机中所有指令的集合
不同类型计算机指令系统有所差异
主要分为五类
数据传送指令
数据处理指令
程序控制指令
输入/输出指令
其他指令
计算机执行指令的基本过程
计算机运行的过程就是执行程序的过程,而程序就是解决世纪问题的计算机指令集合
程序计数器用来确定程序中各条指令的执行顺序
执行过程:取指令;分析指令;执行指令;修改程序计数器(决定下一条取指令的位置,从而形成一个闭环)
指令执行的时序
1.机器周期:CPU周期(周期就是指时间)
CPU访问内存花费的时间较长,从内存中读取一条指令的最短时间为一个周期
2.指令周期
每一条指令所占用的时间(不同的指令,执行的时间是不同的)
指令周期包含机器周期
因为指令周期在取指令的时候,必须访问存储器,占用一个机器周期;分析指令:一般需要不到一个机器周期;执行指令:可能需要多个机器周期
指令周期的组成包括:取指周期和一个到多个执行周期
存储器
作用:存储程序和数据;影响系统吞吐量的决定性因素
存储器的分类
按照存储介质:半导体、磁表面、磁芯、光盘
存储方式:随机存储器(RAM)、只读存储器(ROM),串行访问存储器(顺序存储器SAM)
作用:主存、辅存、缓存和闪存
随机存储器(RAM)
分为静态存储单元(SRAM)和动态存储单元(DRAM)
断电后信息丢失
应用于主存和内存
SRAM:保存信息比较稳定、无需刷新操作、集成度低
DRAM:靠电容存储电荷(只能保存2~3秒)、需要刷新、集成度高、功耗低
只读存储器(ROM)
断电后信息不消失,容量小,应用特殊(只能进行读不能写入)
用于存储计算机系统的重要参数
主板上有一个ROM芯片用来在出场之前写入基本输入输出程序(BIOS)、驱动程序、启动程序、引导记录等
CMOS(可以进行更改的重要参数)
闪速存储器(闪存)
兼有ROM和RAM的特点;读写速度块;方便携带,例如存储卡和U盘
高速缓冲存储器(cache)
CPU的速度远高于内存的读写速度,而cache的作用就是在CPU与内存之间起到一个缓冲数据的作用,用来提前把CPU需要运算的数据存储在其中,以提高CPU的利用率
特点:速度快,价格高,容量小
存储器速度比较(由低到高):磁带-磁盘(外存)-主存(内存)-高缓-寄存器
数据的内部表示
进位计数制
按照进位制的方法表示数
由基数(每一位计数制中所拥有的数字)和权(每位上数字的值)组成
比如十进制的基数一共10个即0~9;十进制数362中数字3的权是100(10^2)数字6的权是10(10^1)数字2的权是1(10^0)
在计算机的内部通过二进制(0和1)进行编程(机器语言)
1.十进制整数转换为其他进制整数
除基数取余,从下向上取值
100=1100100B=144Q=64H
100/2=50……0 100/8=12……4 100/16=6……4
50/2=25……0 12/8=1……4 4/16=0……4
25/2=12……1 1/8=0……1 64
12/2=6……0 144
6/2=3……0
3/2=1……1
1/2=0……1
1100100
十进制整数转换为其他进制整数
乘基数取余,从上向下取值(并不是所有的十进制小数都可以精确的转换为其他进制的小数)
0.3125=0.0101B=24Q=0.5H
0.3125*2=0.625取整为0 0.3125*8=2.5取整2 0.3125*16=5取整5
0.625*2=1.25取整为1 0.5*8=4取整4 5
0.25*2=0.5取整为0 0.24
0.5*2=1.0取整为1
0.0101
2.其他进制数转换为十进制
按照位权展开的多项式之和
1101011.11B=1*2^6+1*2^5+0*2^4+1*2^3+0*2^2+1*2^1+1*2^0+1*2^(-1)+1*2^(-2)=107.75D
125Q=1*8^2+2*8^1+5*8^0=85D
1AH=1*16^1+10*16^0=26D
3.其他进制的转换
二进制转换为八进制
从小数点开始,整数部分向左,小数部分向右,每三位二进制数为一组用一位八进制数表示,不足三位的用0补齐(421原则)
11110110101.10101B=011,110,110,101。101,010B=3665.52Q
011=0*4+1*2+1*1=3
110=1*4+1*2+0*1=6
110=1*4+1*2+0*1=6
. .
. .
. .
3665.52Q
二进制转换为十六进制
从小数点开始,整数部分向左,小数部分向右,每四位二进制数为一组用一位十六进制表示,不足四位的用0补齐(8421原则)
11110110101.10101B=0111,1011,0101.1010,1000B=7B5.A8H
0111=0*8+1*4+1*2+1*1=7
1011=1*8+0*4+1*2+1*1=11(B)
0101=0*8+1*4+0*2+1*1=5
1010=1*8+0*4+1*2+0*1=10(A)
1000=1*8……=8
7B5.A8H
八进制转换为二进制
每一位八进制数用三位二进制数代替,多余的0舍去(整数部分左边0,小数部分右边0)
十六进制转换为二进制
每一位十六进制数用四位二进制数代替,多余的0舍去(整数部分左边0,小数部分右边0)
八进制和十六进制的互相转换通常使用二进制作为中间的媒介
字符编码
西文字符编码
计算机中常用的西文字符编码是美国信息交换标准代码ASCII码。分为七位码和八位码。
七位码是国际通用码,一个字符占一个字节,是半角字符,有效数字七位,最高位为0(0表示正数,1表示负数),一共八位二进制位。编码范围从0 0000000~0 1111111(00H~7FH);表示128个不同的字符
ASCII | 空格 | 0 | 9 | A | Z | a | z |
二进制 | 00100000 | 00110000 | 00111001 | 01000001 | 01011010 | 01100001 | 01111010 |
十六进制 | 20H | 30H | 39H | 41H | 5AH | 61H | 7AH |
十进制 | 32 | 48 | 57 | 65 | 90 | 97 | 122 |
汉字代码
汉字输入码(外码)是用户由激素阿努基外部输入汉字而编制的汉字编码,又称为汉字外部码。汉字输入码位于人机界面上,面向用户。
包括顺序码、音码、形码、音形码
顺序码是将汉字按照一定顺序排好,逐个赋予一个号码作为该汉字的编码,方法简单但很难记忆
例如区位码、电报码
区位码就是把全部汉字和图形符号排列在一个94*94的矩阵中,构成一个二维表格
区:阵中的每一行,用区号表示(01~94)
位:阵中的每一列,用位号表示(01~94)
汉字交换码(国标码) 汉字信息处理系统之间或者通信系统之间传输信息时,对某一个汉字所规定的统一编码。
国标码收录的就是区位码中的所有字符,共7445个。其中有6763个汉字和682个非汉字图形符号。汉字中有一级常用汉字3755个(按照拼音排序),二级汉字3008个(按照部首排序)
国标码中的汉字就是区位码中的汉字,不过它们的编码方式不同,区位码作为一种汉字输入码,是面向用户的,用十进制表示,而国标码是计算机中使用的,用16位二进制表示,通常简化为4位16进制
国标码与区位码的关系:区位码的区号和位号分别转换成十六进制,再分别加20H就得到国标码中的高位字节和低位字节,合起来就是它们的国标码。
区位码的区号01~94,对应国标码的高位字节:21H~7EH
区位码的位号01~94,对应国标码的低位字节:21H~7EH
例如国标码:4D31H转变为区位码
4D-20=4 13-2 0=2DH
2DH=2*16^1+13*16^0=45
31-20=11H
11H=1*16^1+1*16^0=17
区位码:4517
区位码3729转变为国标码
37/16=2……5
2/16=0……2
25H+20=45H
29/16=1……13
1/16=0……1
1DH+20=3DH
国标码:453DH
汉字机内码(内码)。是汉字信息处理系统内部存储、处理汉字而使用的编码,简称内码
国标码和内码的转换规则为:国标码的两个字节分别加80H得到汉字的内码
汉字字形码(汉字字库、汉字输出码、点阵码)是表示汉字字形信息的编码。与汉字内码一一对应,每个汉字的字形码是预先存放在计算机内的,常称为汉字库
数的编码
机器数与真值
因为计算机内部的硬件只能表示两种物理状态(0和1)。因此在机器里就用一位二进制表示正负号。通常这个符号位放在二进制数的最高位,0代表正号;1代表负号。
例如二进制数-10110,他的机器数是110110,而机器数0011001的二进制数是011001(正号省略)。
根据小数点的位置是否固定,机器数又分为定点数和浮点数。通常使用定点数表示整数;浮点数表示实数
整数:没有小数部分,小数点固定在数的最右边。整数可以分为无符号整数和有符号整数。无符号整数的多有二进制位全部用来表示数值的大小;有符号整数用最高位表示数的正负号,而其他为表示数值的大小(0代表正号,1代表负号)
实数:通常用十进制科学计数法表示实数,比如123.45可以用科学计数法表示位1.2345*10^2或者12345*10^-2。浮点数利用指数达到了浮动小数点的效果,从而可以灵活表达更大范围的实数
机器数在计算机中的表示方法有三种,即原码、反码、补码,最常用的是原码和补码两种
原码(等于机器数)将数的真值中+用0表示,-用1表示,叫做数的原码形式,简称原码
数字0的原码问题
0的原码有两种表示方法
【+0】=0 0000000
【-0】=1 0000000
但都是代表0
当X为正数时,原码与二进制数相同
当X位负数时,原码需要将符号位改成1
反码是为了克服原码运算的缺点,采用机器数的反码和补码表示法
当X为正数时,反码与原码相同
当X为负数时,反码为其原码的数值部分各位变反,符号位不变
例如:1 1100110转为反码时1 0011001(1是符号位)
0的反码也有两种表示方式
【+0】=0 0000000
【-0】=1 1111111(原码的0取反)
补码
当X为正数时,补码与原码相同
当X为负数时,补码为其原码的数值部分各位变反后最后一位加1,符号位不变
浮点数的表示和运算
小数点位置可以浮动的数据
符号位:0表示正数,1表示负数
阶码:带符号的正数,最高位为符号位
尾数:小数,定点
例如37.69=0.3769*10^(+2)
其中符号位是0
阶码是+2
尾数是3769
单精度浮点数(32位)符号位1位,阶码8位,尾数23位
双精度浮点数(64位)符号位1位,阶码11位,尾数52位
总线和外设
总线
连接计算机中各个部件的信息传输线
传输方式主要是串行传输和并行传输(如图所示可以看出并行传输的传输速度较快)
按照功能和实现方式进行分类
片内总线:芯片内部的总线
系统总线又分为:
地址总线(AB)。用来传输地址信息,他是从CPU向外传输的单向总线
数据总线(DB)。传送系统中的数据或者指令。数据总线是双向总线
控制总线(CB)。传送控制信号(读写信号、中断响应信号、复位信号、总线请求信号)。控制总线是CPU向主存储器和I/O接口发出命令信号的接口,也是外界向CPU传送状态信息的通道
通信总线:对外通信
总线的结构分类
单总线结构:所有的系统组件都通过一条总线进行连接
多总线结构:所有的系统组件通过多条总线连接
性能指标
总线宽度:又称为总线位宽,它是指总线一次传输的数据位数
总线带宽:单位时间内通过总线的数据位数,即总线的数据传输率,以MB/s计量
时钟同步/异步
输入/输出系统(外设)
完成数据的输入、输出、存储及对信息的加工
注意:扫描仪是输入设备,绘图仪是输出设备,磁盘驱动器和触摸屏输入兼输出设备
辅助存储设备(外存)
输入/输出接口(i/o控制器)
连接总线和设备的设备
i/o方式(输入/输出方式)
类型分为(按照低级到高级排序):程序查询方式、程序中断方式、MDA方式、通道方式
程序查询方式(也叫程序I/O方式或者忙-等待方式)
处理机(CPU)对I/O设备直接进行控制
缺点
CPU的速度远远快于I/O设备造成CPU绝大部分时间在浪费,资源利用率低下
中断控制方式
CPU不在直接控制I/O设备,CPU发出启动指令后继续执行程序
当I/O设备完成后向CPU发出中断信号,通知CPU处理需要的数据
CPU和I/O设备并行工作
优点
大大提高整个系统的资源利用率和吞吐量
特别提高了CPU的利用率
DMA(直接内存存取)控制方式
允许不同速度的硬件装置进行沟通,大大减少了CPU的中断负荷
DMA能够将数据从一个地址空间复制到另一个地址空间
DMA传输前,CPU把总线控制权交给DMA控制器,传输之后,再将总线控制权还给CPU
通道控制方式
通道控制方式的引入:DMA每次只能执行一条I/O指令,不能满足复杂的I/O操作
I/O处理机:具有执行I/O指令能力的通道,接受CPU的委托,与CPU并行独立执行自己的通道程序,实现I/O设备与内存之间的信息交换
进一步减少CPU的干预
提高系统资源利用率和运行速度
操作系统
简称OS
操作系统是最重要的系统软件(软件是程序、数据和相关文档的集合)是管理计算机硬件和软件资源的程序,是计算机系统的内核和基石,是用户和用户程序与计算机之间接口
操作系统直接管理计算机的硬件系统,是直接与硬件打交道的软件,是对计算机硬件的首次扩充,对其他所有软件提供支持,管理这计算机中的所有资源
资源分类
硬件资源:处理器、存储器、I/O设备
软件资源:文件、任务
OS的主要作用是管理系统资源,为用户提供资源共享的条件和环境,调度资源;提供I/O的方便环境和界面,方便用户使用;规定了用户的接口
OS的五大管理包括处理机管理(CPU管理)、存储器管理(内存管理)、设备管理(所有设备)、文件管理(软件)、用户接口(用户界面)
OS的发展过程
1.人工管理
只有硬件和应用软件
计算机工作采用手工操作方式
特点:用户独占全机;CPU等待手工操作;人机矛盾;资源利用率底下
2.批处理操作
已经是一个系统软件,控制计算机自动的、成批的处理一个或多个用户的作业(作业就是指程序、数据以及作业控制命令)
特点:提高资源利用率,让计算机保持不间断的工作;提供系统吞吐量;作业流的自动化,减少了人工干预的程度
3.多道程序系统
允许多个程序同时进入内存并运行
实现了多个程序交替使用CPU,多个程序共享系统中的各种软件和硬件资源
特点:CPU和设备资源得到了充分的利用,提高了系统的吞吐量
4.分时系统
采用时间片分隔基数
实现了多个程序按照时间片轮流占用CPU,各个程序占用CPU的机会一样;一个时间片结束,如果程序没有运行结束必须放弃使用权
例如:UNIX操作系统
5.个人计算机操作系统
随着个人计算机(PC机)的发展而问世
操作系统的分类
1.多道批处理操作系统
多道:计算机内存中可以同时运行多个用户作业
批处理是指在外存中存入大量的后备作业,而作业的运行由系统进行控制的一种脱机的操作方式
脱机是指用户与其作业直接无法交互、不能控制
优点是系统资源利用率高、作业吞吐量大
缺点是无交互、不利于调试程序和排错
2.分时操作系统
允许多个联机用户同时使用一台计算机系统
多个用户根据时间片(一个时间单位)轮流使用CPU,对于用户响应时间快,感觉独占CPU
特点:
多路性:多用户使用
交互性:用户可以直接控制自己的程序
独立性:多用户之间独立、互不打扰
及时性:响应速度块
3.实时操作系统
外界时间或者用户出现时,能足够快的响应和处理
例如:过程控制系统(工业自动化)、信息查询系统(仓库管理系统)、事务处理系统(银行管理系统)
分为硬实时操作系统(在确定的时间内完成);软实时操作系统(多数能够完成)
4.网络操作系统
运行和管理网络上的计算机的操作系统
实现传送信息和共享资源
功能
网络通信:源于目标计算机之间无差错数据传输
资源管理
网络管理:安全控制、性能监控、故障管理
网络服务
通信透明性:支持多种协议
5.分布式操作系统
由多台分散的计算机经过网络互联而成的系统
实现了每台计算机高度自治又能相互协调,系统内资源共享(硬件资源、软件资源、数据资源)、任务分配、并行运行
优点:一个计算机出错不会影响其他计算机,可靠性高、扩充容易、方便维护、效率高
6.嵌入式操作系统
运行在嵌入式系统的操作系统
特点
微型化:功能比较单一
多样性:依赖不同的硬件平台
实时性:用于过程控制、通信、数据采集等
定制性:根据硬件资源对操作系统的要求定制
占用内存小
进程管理
并发程序设计的概念
逻辑上相互独立的程序在执行时间上相互重叠,一个程序段的执行尚未结束,另一个程序段就可以开始。其中多处理器能够做到物理上的真正并行;而单处理器在宏观上并行(一段时间内重叠),微观上串行(不可以同一时刻同时占用处理器,操作系统通过快速切换任务制造并行的假象)
并发程序执行特点1
并发程序没有封闭性
顺序程序是封闭的,执行结果与时间无关。执行任务都按照时间依次进行
并发程序设计中,程序执行结果的不确定性和复杂性主要源于多个任务或线程同时运行,并且可能会相互影响。
-
程序执行结果与执行的相对速度有关:
- 任务执行顺序:在并发程序中,任务的执行顺序可能会影响最终结果。例如,如果两个任务都需要修改同一个变量,那么哪个任务先执行可能会改变最终的变量值。
- 任务执行时间:任务的执行时间也会影响结果。如果一个任务执行得更快,它可能会在另一个任务完成前修改共享资源,从而影响最终输出。
-
某个程序中变量可能被另外的程序改变:
- 共享资源:在并发程序中,多个任务可能会访问和修改同一个资源(如变量、文件等)。如果这些任务没有适当的同步机制,一个任务的修改可能会被另一个任务覆盖,导致数据不一致。
- 竞态条件:当两个或多个任务几乎同时访问和修改同一个资源时,可能会发生竞态条件。这种情况下,任务的执行顺序会影响最终的结果,使得程序的行为变得不可预测。
-
程序中的变量在另外一个程序输出,不同时刻输出值可能不同:
- 时间依赖性:并发程序的输出可能会依赖于任务的执行时间。如果任务的执行时间发生变化,输出的结果也可能随之变化。
- 同步问题:如果没有适当的同步机制(如互斥锁、信号量等),任务可能会在不适当的时刻读取或写入共享变量,导致输出不一致。
- 死锁和饥饿:如果任务因为等待其他任务释放资源而发生死锁,或者某些任务因为长时间得不到资源而发生饥饿,这会影响任务的执行顺序和时间,进而影响输出结果。
假设有两个任务A和B,他们都访问和修改同一个变量X
任务A
X=X+1
print(X)
任务B
X=X-1
print(X)
综上可知如果任务A和B同时执行,它们的执行顺序可能会影响最终的输出结果。例如:
如果任务A先执行,输出可能是x+1和x+1-1。
如果任务B先执行,输出可能是x-1和x-1+1。
这种情况下,输出结果不仅依赖于任务的逻辑,还依赖于任务的执行顺序和时间。
解决方法
为了解决这些问题,通常需要采用一些并发控制机制:
- 互斥锁:确保同一时间只有一个任务可以访问共享资源。
- 信号量:控制对共享资源的访问,防止资源被过度使用。
- 条件变量:允许任务在某个条件不满足时挂起,并在条件满足时被唤醒。
- 原子操作:确保某些操作是不可分割的,从而避免竞态条件。
通过这些机制,可以更好地控制任务的执行顺序和资源的访问,从而减少并发程序中的不确定性和错误。
并发程序执行特点2
程序与其执行过程并不是意义对应的关系
顺序程序:程序与其执行过程完全相同
并发程序
-
程序与执行过程不能一一对应:
在并发程序中,一个程序可能由多个执行过程(如线程或进程)同时执行。这意味着程序的逻辑可能被多个执行过程并行地执行,而这些执行过程可能在不同的时间点、不同的系统资源上运行。 -
受到执行时的系统环境和条件影响:
并发程序的行为不仅由程序本身的逻辑决定,还受到执行时的系统环境和条件的影响。例如,处理器的数量、内存的可用性、操作系统的调度策略、网络延迟等都可能影响并发程序的执行结果。 -
当多个执行过程各项某个程序时,对应多个执行过程:
当多个执行过程(如线程)同时执行同一个程序时,每个执行过程都可能有自己的执行路径和状态。这些执行过程可能会访问共享资源,导致它们之间的交互和相互影响。
并发程序执行特点3
程序并发执行可以相互制约
顺序程序:程序之间完全独立
-
互为因果的直接制约关系:
- 这种关系通常发生在两个或多个进程之间,它们相互依赖对方的输出作为自己执行的输入。例如,如果进程A需要等待进程B的输出结果才能继续执行,而进程B又需要进程A的输出才能开始执行,这就形成了一个循环等待的情况,也就是死锁的一种形式。
- 直接制约关系也可能出现在同一进程的不同线程之间,其中一个线程的输出是另一个线程的输入。
-
各项某些资源而形成间接制约关系:
- 间接制约关系通常是指进程或线程之间通过共享资源而形成的制约关系。例如,多个进程可能需要访问同一个数据库或文件系统,如果一个进程正在写入数据,其他进程可能就需要等待,直到写入操作完成才能进行读取或写入。
- 这种关系是间接的,因为进程或线程并不是直接等待对方的输出,而是等待对共享资源的访问权限。这种等待可能导致资源的争用,进而影响系统的效率和性能。
进程的基本概念
程序在数据集上的一次执行过程
1.可以并发执行的程序的执行过程
2.基于多道系统
3.进程可以动态放映并发程序的活动过程
4.程序只能反映静态的过程
进程与程序的区别
进程是动态的,程序是静态的
进程是程序的一次执行过程(进程有生命周期;程序永久保存)
进程包括程序和数据,以及进程控制块
一个程序可以对应多个进程;一个进程可以包括多个程序(一个进程可能是由多个不同的程序协同工作完成任务)
进程的状态及其转化
生命周期:进程是一次执行过程,包含五种状态
1.创建:从无到有
一个作业调入内存,创建一个进程或者多个进程,每一个进程都有一个唯一的进程控制块PCB用于存储进程相关信息的数据结构
2.就绪:可以运行
拥有除CPU以外的所有资源
获取CPU占用权后就转入运行状态
就绪队列:就绪状态的进程可以有多个(在多处理器的情况下每个CPU都有自己的就绪队列)
3.运行:占用CPU
拥有CPU的使用权
单处理器:最多只能有一个进程为运行状态
多处理器:运行状态的进程数量不能多于CPU的数量
只有就绪状态下的进程才可以申请CPU的使用权
运行不下去的进程要放弃CPU,转为等待状态
4.等待:阻塞,等待资源的满足。又称为阻塞状态、封锁状态
一个运行中的进程需要等待某事件的发生(还有另外一种状况:时间片用完;更高权限的进程占用CPU,权限被剥夺。这两种情况不会进入阻塞状态,而是直接进入就绪状态)
而等待状态是因为进程的某些条件不会使用CPU例如输入输出、系统资源、其他进程的信息这几种情况下必须放弃CPU,转为等待状态(也可以有多个进程)
当等待的任务完成之后,则转为就绪状态
5.终止:从有到无
进程运行结束
进程状态转换
就绪转运行状态
程序被操作系统调入内存而进入就绪状态
就绪的进程被进程调度算法选中占用CPU执行
转换的原因是进程获取到CPU或者时间片的占用权,以及CPU空闲
运行转就绪状态
转换原因是时间片已经用完,但进程没有处理完成需要等待下一个时间片,或者有更高优先级的进程需要占用CPU
运行的进程如果在时间片内运行结束则该进程全部结束,终止状态、退出内存
进程的执行状态被操作系统的进程控制块(PCB)所记录。这样,当进程再次被调度运行时,操作系统可以恢复这些状态,使得进程能够从上次停止的地方继续执行,而不是从头开始。
运行转阻塞状态
转换原因是需要输入输出操作等事件
即使将CPU分配给它,也无法运行
阻塞转就绪状态
转换原因是需要输入输出操作等事件完成
阻塞状态的进程仍然在内存中
进程控制块及其组织
进程控制块(PCB)用来有效管理和控制进程,记录进程的属性和特征,以及变化过程
每一个进程都只有一个唯一的PCB,按照进程不同的状态对PCB进行排队
进程控制块通常包含以下信息:
- 进程标识符:每个进程的唯一标识符,通常是数字。
- 进程状态:进程当前的状态,如运行、等待、就绪或终止。
- 程序计数器:指示进程下一次要执行的指令的地址。
- 寄存器集合:保存CPU寄存器的状态,以便在进程切换时可以恢复进程的执行。
- CPU调度信息:如优先级、调度队列指针等,用于进程调度。
- 内存管理信息:包括内存分配情况、页表、段表等,用于管理进程的虚拟内存。
- I/O状态信息:记录进程的I/O请求状态,如打开的文件描述符等。
- 资源使用信息:进程使用的系统资源,如CPU时间、内存使用量等。
- 进程控制信息:如进程的创建时间、结束时间、父进程标识符等。
- 信号处理信息:进程对信号的处理方式,如信号屏蔽字、信号处理函数等。
- 记账信息:用于记账和计费的统计信息,如CPU使用时间、系统调用次数等。
- 其他控制信息:操作系统特定的控制信息,如进程组标识、会话标识等。
PCB是操作系统内核管理进程的关键数据结构,它使得操作系统能够有效地创建、调度和管理进程。
进程创建的步骤
命名进程申请一个空闲的PCB,确定进程的优先级,为进程分配内存空间等资源
进程结束
从进程结构中消除进程,清楚PCB为空闲并且将系统分配给进程的资源归还给系统
进程的组织
组织形式主要有两种线性表和链表
线性表中不同状态的进程可以放在一张表中,也可以分别放在不同的表中
链表中不同状态的进程一定放在不同的链表队列中
等待状态进程的链表可以有多个,根据等待事件的不同(例如等待输出事件和输入事件)放在不同的链表队列
进程调度
又称为处理器调度、低级调度
按照一定的策略(进程调度算法)把CPU分配给某个就绪进程
进程调度与作业调度(高级调度)
进程调度只对CPU分配,CPU属于可抢占资源
作业调度负责对CPU之外的资源进行调度,含不可抢占资源
调度方式分为抢占方式(出现优先级的进程,可以抢占CPU。进程调度)和不可抢占方式(作业调度)
进程调度算法
1.先来先服务调度算法(FCFS)
按照进入就绪队列的先后顺序进行调度
只需要一个先进先出的就绪队列(非抢占式调度算法)
2.时间片轮转调度算法
所谓时间片就是指固定的时间单位
按照时间片分配给就绪队列中的第一个进程,按照先后顺序进入就绪队列,每次第一个进程占用CPU,而每次占用1个时间片,时间片用完或者有更高优先级的进程到达时,放弃CPU(抢占式调度算法)
3.优先级调度算法
从就绪队列选择优先级最高的进程占用CPU
优先级的确定因素包含进程类型(系统进程>用户进程);运行时间(短优先);作业的优先级;动态优先级:随着占用CPU时间越长,优先级越低(非抢占式优先级调度算法,抢占式优先级调度算法两种)
存储管理
存储管理的功能
地址转换:把用户程序的相对地址转换为实际内存地址(物理地址)
内存分配
存储的共享与保护
存储器扩充技术是计算机系统为了提高内存使用效率而采用的一种技术。在多道程序设计中,允许多个程序同时进入内存,共享内存资源。这种设计可以提高CPU的利用率,因为当一个程序在等待I/O操作时,CPU可以切换到另一个程序继续执行。
基本概念:
- 多道程序设计:允许多个程序同时在内存中运行。
- 内存资源紧张:由于内存容量有限,不能同时容纳所有程序。
- 内存:计算机中用于存储正在运行的程序和数据的快速存储器。
- 外存:通常指的是硬盘、固态硬盘等,用于存储暂时不运行的程序和数据。
工作机制:
- 程序分段:程序被分成多个段,每个段可以独立加载到内存中。
- 优先级调度:操作系统根据一定的策略(如优先级、需求等)决定哪些程序或程序段应该首先被加载到内存。
- 调入内存:当程序需要执行时,其必要的部分被从外存调入内存。
- 页面置换:如果内存满了,操作系统会根据页面置换算法(如最近最少使用LRU、先进先出FIFO等)决定哪些页面应该被换出到外存。
优点:
- 提高CPU利用率:通过允许多个程序共享内存,CPU可以更频繁地切换任务,减少空闲时间。
- 系统吞吐量增加:能够同时处理更多的任务。
缺点:
- 内存管理复杂:操作系统需要更复杂的内存管理策略来调度内存资源。
- 可能增加响应时间:如果内存中没有足够的空间来加载程序的紧急部分,可能需要等待外存中的页面被置换,这会增加程序的响应时间。
地址重定位
相对地址(逻辑地址)用户程序中使用的地址
绝对地址(物理地址)运行时内存的地址
地址转换:
用户程序进入内存时,需要将相对地址转换为绝对地址确保程序可以运行
地址重定位:地址转换时必须修改程序中所有与地址有关的项
连续存储管理(界地址存储管理)
特点:内存划分为多个分区,一个作业占用一个分区,以分区为单位占用内存
分为固定分区分配方式
分区大小固定;一个分区分给一个作业;分区大小以能调入最大作业进入内存为准(例如5个作业,其中一个占据20kb,其余四个占据10kb,则要以20kb为准进行划分)
缺点是内部碎片多
可变分区分配方式
分区大小根据作业大小来确定
空间可以得到充分利用
缺点是外部碎片(内存中存在许多小的、不连续的空闲空间,这些空间太小,无法满足任何作业的需求。当系统运行一段时间后,随着作业的不断加载和卸载,内存中可能会产生许多这样的小空闲区域。),造成大作业无法运行
分页式存储管理
页:作业空间划分为页,逻辑页
块:内存物理空间划分为块,物理块
大小相等:页的大小与物理块大小相等
每一页可以分配到内存任意一个空白块中,一个多页的作业不要求所分配的物理块是连续的、机械划分
页表:记载作业的逻辑页与内存物理块的对应关系
全称是页面映像表,记载页号和物理块号
逻辑地址:页号+页内偏移量(页内地址);物理地址:物理块号+业内地址
地址重定位过程:通过页表,找到页号对应的物理块号
分段式存储管理
用户作业根据逻辑关系划分为多个逻辑分段,每个分段的大小不一定相等、逻辑意义完整、非机械划分
以段的大小为单位分配内存,每一段获取连续的空间
逻辑地址:段号+段内位移(段内地址)物理地址:该段的内存地址+段内位移
地址重定位:段表(记载每一段的段号和内存地址)根据段号找到该段的内存地址
段页式存储管理
分段和分页的结合使用
作业地址空间进行段式管理,每一段由段名标记;每一段的内部在进行分页,页的大小相等,内存空间换分大小相等的物理块
逻辑地址:段号+段内页号+业内位移(业内地址)
地址转换:首先查找段表(每个作业一张段表);在查找页表(每一段一张页表)在页表中找到页号,根据页号找到内存中的物理块号,物理块号加上业内位移就是物理地址
虚拟存储器管理
虚拟存储器是一种计算机系统资源管理技术,它通过使用硬盘空间作为辅助存储来扩展计算机的可用内存容量。
-
内存空间不足,无法满足作业需要: 当物理内存(RAM)不足以容纳当前正在运行的所有程序和数据时,虚拟存储器可以提供额外的存储空间。它允许操作系统将部分数据暂时存储在硬盘上,从而释放RAM以供其他程序使用。
-
不在内存中: 虚拟存储器允许程序的部分数据被存储在硬盘上,而不是全部在物理内存中。这意味着,并非所有程序的代码和数据都同时位于RAM中。
-
弥补内存不足的问题: 虚拟存储器通过将不常用的数据从RAM移动到硬盘上,来解决物理内存不足的问题。当这些数据再次需要时,操作系统会将它们重新加载到RAM中。
-
对主存的逻辑扩充: 虚拟存储器提供了对主存(即物理内存)的逻辑扩展。程序看到的是一个连续的、大容量的地址空间,而实际上这个空间可能跨越了物理内存和硬盘上的存储空间。
-
存储系统的大小相当于外存: 虚拟存储器的大小理论上可以等于甚至大于外存(如硬盘或固态硬盘)的大小,因为它可以利用所有可用的硬盘空间来存储数据。
-
访问速度相当于内存: 尽管虚拟存储器可以提供大量的存储空间,但其访问速度通常不如物理内存快。当数据存储在硬盘上时,访问这些数据需要时间来从硬盘读取,这比直接从RAM中访问要慢得多。操作系统使用各种技术,如预读取和页面置换算法,来尽量减少访问延迟。
请求页式存储管理
作业并不是一次性装入内存的,只装入目前运行需要的页,其余的页保存在外存中
如果需要页不在内存时,则请求系统调入,发出一个缺页中断,系统中断处理,将该页调入内存
如果调入新页时内存空间不足如何处理?
页面置换:将不需要的页面置换出去;需要页面调入进来
页面置换算法
最优算法:将以后不需要的页面从内存移出(无法保证以后是否需要)
先进先出算法:按照进入内存的时间顺序(最先进来的移出)
最近最久未使用算法
请求段式存储管理
以程序段为单位调入内存,缺少段会中断调入需要的段,置换出内存中不需要的段
文件管理
文件是以外存为载体存储在计算机中被命名的一组相关信息的信息集合
操作系统管理文件的方式:按名存取
文件名:主文件名+扩展名(确定文件的类型)
设备文件是被赋予了文件名的设备
文件的分类
按照用途分:系统文件、库文件、用户文件
按照性质分:普通文件、目录文件(对文件进行管理的文件)、特殊文件
按照保护级别分:只读、读写、可执行文件、不保护文件
按照文件数据形式:源文件(计算机语言)、目标文件(源文件经过编译会变成目标文件)和可执行文件(二进制文件)
文件系统是操作系统中负责管理和存储文件信息的软件机构,是文件管理系统的简称
文件系统由与文件管理有关的软件、被管理的文件、实施文件管理所需要的数据结构
文件系统负责对用户文件的建立、存取、修改和转储
文件系统的特点:简单便捷、信息安全可靠、可实现信息共享
文件的组织结构
逻辑结构(自己决定)
记录式文件:有结构的文件(Excel文件、数据库文件)
流式文件:无结构的文件(word)
物理结构(存储结构)
组织形式:顺序结构、链接结构、索引结构
文件目录
含义:记录文件名与文件在外存中物理地址的对应关系
目录文件就是将多个文件目录组织在一起以文件的形式保存,每个文件在文件目录中登记为一项(我们无法看到)
文件控制块(FCB)
存取控制信息、结构信息、使用信息和管理xin
文件目录结构
文件系统负责文件目录的编排、维护和检索
分为
单级目录(简单文件目录)
是一种线性表的形式,包含文件名、结构信息、存取控制信息等。缺点是文件名不能相同
使用环境较少
二级目录
由主目录和用户文件目录组成,每个用户都会建立自己的名字空间,主目录用来管理用户文件目录(一个主目录包含多个用户文件目录),同用户目录下文件不能同名
建立文件时首先在主目录中分配一个表项,然后分配二级目录空间,最后在二级目录中分配表项和物理存储空间
多级层次目录(多级层次结构)
由根目录和分目录(子目录)组成,而分目录则包含了文件和分目录
优点是使用更加方便,可以进行分类存放和管理,允许文件重名,有利于文件的包含
无环图结构目录(了解)
图状结构(了解)
文件的存取权限
实现方式有两种,分别是以文件为单位建立的访问控制表和以用户为单位建立的存取控制表
大型文件系统安全性保护措施:对文件和目录设置权限;对文件和目录进行加密
文件空闲区的组织
文件空闲区指的是存储设备上未被分配给任何文件或数据的空间。
文件系统在自动为用户文件分配存储空间之前,一定是空白的
空闲存储空间管理方案
-
空闲表法:使用一个表格来维护磁盘空闲块的信息。表格中的每个条目表示一个空闲块,包含块的起始地址和长度。当需要保存数据块时,可以在表格中找到合适的空闲块,并将其标记为已占用。
-
空闲链表法:使用链表来维护磁盘空闲块的信息。每个链表节点表示一个空闲块,包含块的起始地址和长度,以及指向下一个空闲块的指针。通过遍历链表,可以找到合适的空闲块,并将其标记为已占用。
-
位图法:使用一个位图来表示磁盘的空闲块信息。位图中的每个位表示一个块的状态,1表示已占用,0表示空闲。通过对位图进行操作,可以快速找到空闲块并标记为已占用。
-
成组链接法:这种方法结合了空闲表法和空闲链表法的优点,将空闲块分为多个组,每组有一个指向下一组空闲块的指针。当需要分配磁盘空间时,可以从当前组中分配块,如果当前组已满,则移动到下一组。
I/O设备管理
输入/输出软件的层次结构
输入/输出软件的目标:将软件组织称一种层次结构,底层软件屏蔽输入输出硬件的细节,高层软件为用户提供统一、规范和方便的接口
输入/输出软件的层次(从高层到低层):用户程序、设备无关的I/O程序、设备驱动程序/中断处理程序、硬件
用户程序从文件中读取数据块的过程
需要操作系统的系统调用来执行操作
设备无关的I/O软件在数据缓冲器查找数据,找到了,直接结束
如果没有找到,则调用设备驱动程序向硬件提出请求,用户进程被阻塞(运行状态转化为阻塞状态),硬盘操作结束后发出中断给CPU,操作系统响应中断,并执行中断处理程序,唤醒被阻塞的进程结束I/O请求
中断处理过程
完成I/O操作,设备控制器向CPU发出中断请求
中断处理过程:检查CPU是否满足响应中断的条件,不满足就要排队等待,满足则CPU响应中断,关中断(即不可再次被其他中断响应中断),保护现场(保护被中断进程的环境),分析并处理中断,回复现场(回复被中断进程的CPU现场,返回被中断的进程),开中断,CPU继续执行
设备驱动程序
也是一种程序集合
用于驱动物理设备和DMA控制器或I/O控制等直接进行I/O操作,负责启动对应设备进行I/O操作
功能:将接收到的抽象要求转化为具体要求;接受用户的I/O请求;取出请求队列中的队首请求,完成指定的I/O操作;处理来自设备的中断
与设备无关的I/O软件
在设备驱动程序之上,与具体设备无关,提供适用所有设备的常用I/O功能,为用户层软件提供统一的接口
主要功能
-
向用户层软件提供统一的接口:
这个功能意味着无论底层硬件设备的具体类型和特性如何,操作系统都为应用程序提供了一组标准化的API(应用程序编程接口)。这样,应用程序开发者无需关心具体的硬件细节,可以编写与设备无关的代码。 -
设备命名:
设备命名是为系统中的每个设备分配一个唯一的标识符(如设备文件名)。这样,应用程序可以通过这个名称来访问相应的设备,而不需要知道设备的物理位置或硬件地址。 -
设备保护:
设备保护确保只有授权的应用程序或用户才能访问特定的设备。这是通过权限检查、设备访问控制列表等机制实现的,以防止未授权的访问和潜在的设备损坏。 -
提供独立于设备的块:
这个功能指的是操作系统能够以一种与具体设备无关的方式处理数据块。操作系统将数据抽象为“块”,无论这些数据块是如何在物理设备上存储或传输的。这样,应用程序可以请求操作系统读取或写入一个数据块,而操作系统会负责将这个请求映射到具体的硬件操作。
用户层的I/O软件
I/O软件中的最高层,主要面向于程序员,负责用户和设备无关I/O软件通信
功能:接受用户的I/O指令,将具体的请求发送到“设备无关I/O软件”
设备的分配和回收
设备分配程序
分配过程:进程在使用资源之前向设备管理程序提出资源申请,如果资源满足则分配该进程,不满足则加入等待队列
进程的到所需要的资源后,完成相关的操作,通知系统回收资源