计算机操作系统笔记

  • 一、操作系统
  • 1.1、概念
  • 1.2、操作系统的功能和目标
  • 1.3、操作系统的四个特征
  • 1.4、 操作系统的发展与分类
  • 1.5、 操作系统的运行机制体系结构
  • 1.6、中断和异常
  • 1.7、系统调用
  • 二、进程
  • 2.1 进程的定义、组成、组织、特征
  • 2.1.1、定义
  • 2.1.2、组成
  • 2.1.3、组织
  • 2.1.4、特征
  • 2.2、 进程的状态与转换
  • 2.2.1、三种状态+两种特殊状态
  • 2.2.2、进程状态的转换
  • 2.3、 进程控制
  • 2.4、进程通信
  • 2.5、线程、多线程模型
  • 2.5.1、线程的属性
  • 2.5.2、线程的实现方式
  • 2.5.3、多线程模型
  • 计算机操作系统笔记(二)
  • 计算机操作系统笔记(三)
  • 计算机操作系统笔记(四)


一、操作系统

1.1、概念

操作系统(Operating System,OS)是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配,以提供给用户和其他软件方便的接口和环境,它是计算机系统中最基本的系统软件

1.2、操作系统的功能和目标

进程是一个程序的执行过程。执行前需要将该程序放到内存中,才能被CPU处理。

  1. 作为系统资源的管理者
    提供的功能:处理机管理、存储器管理、文件管理、设备管理
    目标:安全、高效
  2. 作为用户和计算机硬件之间的接口
    提供的功能: 命令接口(联机命令接口、脱机命令接口)【允许用户直接使用】、程序接口【允许用户通过程序间接使用】、GUI(图形用户界面)
    目标:方便用户使用
  3. 作为最接近硬件的层次
    需要提供的功能和目标:实现对硬件机器的拓展

1.3、操作系统的四个特征

  1. 并发
    并发:指两个或多个事件在同一时间间隔内发生。这些事件宏观上是同时发生的,但微观上是交替发生的。
    并行:指两个或多个事件在同一时刻同时发生。
    操作系统的并发性指计算机系统中同时存在着多个运行着的程序。
  2. 共享
    共享即资源共享,是指系统中的资源可供内存中多个并发执行的进程共同使用
    互斥共享方式:系统中的某些资源,虽然可以提供给多个进程使用,但一个时间段内只允许一个进程访问该资源同时共享方式:系统中的某些资源,允许一个时间段内由多个进程“同时”对它们进行访问
  3. 虚拟
    虚拟是指把一个物理上的实体变为若干个逻辑上的对应物。物理实体(前者)是实际存在的,而逻辑上对应物(后者)是用户感受到的。
    空分复用技术(如虚拟存储器技术)
    时分复用技术(如虚拟处理器)
  4. 异步
    异步是指,在多道程序环境下,允许多个程序并发执行,但由于资源有限,进程的执行不是一贯到底的,而是走走停停,以不可预知的速度向前推进,这就是进程的异步性。
    只有系统拥有并发性,才有可能导致异步性。

1.4、 操作系统的发展与分类

  1. 批处理阶段――单道批处理系统
    引入脱机输入/输出技术(用磁带完成),并监督程序负责控制作业的输入、输出
    主要优点:缓解了一定程度的人机速度矛盾,资源利用率有所提升。
    主要缺点:内存中仅能有一道程序运行,只有该程序运行结束之后才能调入下一道程序。CPU有大量的时间是在空闲等待I/O完成。资源利用率依然很低。
  2. 批处理阶段―—多道批处理系统
    主要优点:多道程序并发执行,共享计算机资源。资源利用率大幅提升,CPU和其他资源保持“忙碌”状态,系统吞吐量增大。
    主要缺点:用户响应时间长,没有人机交互功能(用户提交自己的作业之后就只能等待计算机处理完成,中间不能控制自己的作业执行)
  3. 分时操作系统
    分时操作系统:计算机以时间片为单位轮流为各个用户/作业服务,各个用户可通过终端与计算机进行交互。
    主要优点:用户请求可以被即时响应,解决了人机交互问题。允许多个用户同时使用一台计算机,并且用户对计算机的操作相互独立,感受不到别人的存在。
    主要缺点:不能优先处理一些紧急任务。操作系统对各个用户/作业都是完全公平的,循环地为每个用户/作业服务一个时间片,不区分任务的紧急性。
  4. 实时操作系统
    在实时操作系统的控制下,计算机系统接收到外部信号后及时进行处理,并且要在严格的时限内处理完事件。实时操作系统的主要特点是及时性和可靠性

1.5、 操作系统的运行机制体系结构

  1. 两种指令
    特权指令︰如内存清零指令
    非特权指令︰如普通的运算指令
  2. 两种处理器状态
    用户态(目态)
    核心态(管态)
  3. 两种程序
    内核程序:操作系统的内核程序是系统的管理者,既可以执行特权指令,也可以执行非特
    权指令,运行在核心态。
    应用程序:为了保证系统能安全运行,普通应用程序只能执行非特权指令,运行在用户态

原语是一种特殊的程序心是最接近硬件的部分,这种程序的运行具有原子性。
时钟管理实现计时功能
内核是计算机上配置的底层软件,是操作系统最基本、最核心的部分。实现操作系统内核功能的那些程序就是内核程序。

最常考知识点:
1.特权指令只能在核心态下执行
2.内核程序只能在核心态下执行
3.核心态、用户态之间的切换

1.6、中断和异常

中断本质:发生中断就意味着需要操作系统介入,开展管理工作

1.当中断发生时,CPU立即进入核心态 2.当中断发生后,当前运行的进程暂停运行,并由操作系统内核对中断进行处理
3.对于不同的中断信号,会进行不同的处理

本地计算机上的automation license manager service 服务启动后停止 某些服务在未_操作系统

发生了中断,就意味着需要操作系统介入,开展管理工作。由于操作系统的管理工作(比如进程切换、分配/O设备等)需要使用特权指令,因此CPU要从用户态转为核心态。中断可以使CPU从用户态切换为核心态,使操作系统获得计算机的控制权。有了中断,才能实现多道程序并发执行。

用户态→核心态是通过中断实现的。并且中断是唯一途径
核心态→用户态的切换是通过执行一个特权指令,将程序状态字(PSW)的标志位设置为用户态

中断的分类
内中断(也称异常、例外、陷入) 信号的来源:CPU内部与当前执行的指令有关 eg:缺页|整数除0
外中断 (中断) 信号的来源:CPU外部与当前执行的指令无关 eg:如:I/O操作完成发出的中断信号

外中断的处理过程
Step 1:执行完每个指令之后,CPU都要检查当前是否有外部中断信号
Step 2:如果检测到外部中断信号,则需要保护被中断进程的CPU环境(如程序状态字PSw、程序计数器PC、各种通用寄存器)
Step 3:根据中断信号类型转入相应的中断处理程序
Step 4:恢复原进程的CPU环境并退出中断,返回原进程继续往下执行

1.7、系统调用

应用程序通过系统调用请求操作系统的服务。系统中的各种共享资源都由操作系统统一掌管,因此在用户程序中,凡是与资源有关的操作(如存储分配、I/O操作、文件管理等),都必须通过系统调用的方式向操作系统提出服务请求,由操作系统代为完成。这样可以保证系统的稳定性和安全性,防止用户进行非法操作。

传递系统调用参数→执行陷入指令(用户态)→执行系统调用相应服务程序(核心态)→返回用户程序
注意:
1.陷入指令是在用户态执行的,执行陷入指令之后立即引发一个内中断,从而CPU进入核心态 2.发出系统调用请求是在用户态,而对系统调用的相应处理核心态下进行
3.陷入指令是唯一一个只能在用户态执行,而不可在核心态执行的指令

二、进程

2.1 进程的定义、组成、组织、特征

2.1.1、定义

程序:就是一个指令序列

程序段、数据段、PCB三部分组成了进程实体(进程映像)。一般情况下,我们把进程实体就简称为进程,例如,所谓创建进程,实质上是创建进程实体中的PCB;而撤销进程,实质上是撤销进程实体中的PCB。
注意:PCB是进程存在的唯一标志!

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

2.1.2、组成

进程(进程实体)由程序段、数据段、PCB三部分组成。

PCB:操作系统通过PCB来管理进程,因此PCB中应该包含操作系统对其进行管理所需的各种信息。

数据段:程序运行时使用、产生的运算数据。如全局变量、局部变量、宏定义的常量就存放在数据段内

程序段:程序代码即存放在此

本地计算机上的automation license manager service 服务启动后停止 某些服务在未_操作系统_02


进程标识符PID:当进程被创建时,操作系统会为该进程分配一个唯一的、不重复的ID,用于区分不

同的进程

各种寄存器值:当进程切换时需要把进程当前的运行情况记录下来保存在PCB中,如程序计数器的值表示了当前程序执行到哪一句

2.1.3、组织

  1. 链接方式:(队列)
    按照进程状态将PCB分为多个队列
    操作系统持有指向各个队列的指针
  2. 索引方式:(索引表)
    根据进程状态的不同,建立几张索引表
    操作系统持有指向各个索引表的指针

2.1.4、特征

动态性:进程是程序的一次执行过程,是动态地产生、变化和消亡的【动态性是进程最基本的特征 】并发性:内存中有多个进程实体,各进程可并发执行
独立性:进程是能独立运行、独立获得资源、独立接受调度的基本单位
异步性:各进程按各自独立的、不可预知的速度向前推进,操作系统要提供"进程同步机制"来解决异步问题
结构性:每个进程都会配置一个PCB。结构上看,进程由程序段、数据段、PCB组成

2.2、 进程的状态与转换

2.2.1、三种状态+两种特殊状态

运行态(Running):占有CPU,并在CPU上运行【注意:单核处理机环境下,每一时刻最多只有一个进程处于运行态。(双核环境下可以同时有两个进程处于运行态)】
就绪态(Ready):已经具备运行条件,但由于没有空闲CPU,而暂时不能运行
阻塞态(Waiting/Blocked,又称:等待态):因等待某一事件而暂时不能运行
创建态(New,又称:新建态):进程正在被创建,操作系统为进程分配资源、初始化PCB
终止态(Teriminated,又称:结束态):进程正在从系统中撤销,操作系统会回收进程拥有的资源、撤销PCB

2.2.2、进程状态的转换

本地计算机上的automation license manager service 服务启动后停止 某些服务在未_原语_03

运行态→阻塞态是一种进程自身做出的主动行为
阻塞态→就绪态是不是进程自身能控制的,是一种被动行为
注意:不能由阻塞态直接转换为运行态也不能由就绪态直接转换为阻塞态

2.3、 进程控制

原语实现进程控制。原语的特点是执行期间不允许中断,只能一气呵成。
这种不可被中断的操作即原子操作
原语采用“关中断指令”“开中断指令”实现

  1. 创建原语
    申请空白PCB
    为新进程分配所需资源
    初始化PCB
    将PCB插入就绪队列
  2. 撤销原语
    从PCB集合中找到终止进程的PCB
    若进程正在运行,立即剥夺CPU,将CPU分配给其他进程
    终止其所有子进程
    将该进程拥有的所有资源归还给父进程或操作系统
    删除PCB
  3. 阻塞原语
    找到要阻塞的进程对应的PCB
    保护进程运行现场,将PCB状态信息设置为“阻塞态",暂时停止进程运行
    将PCB插入相应事件的等待队列
  4. 唤醒原语
    在事件等待队列中找到PCB
    将PCB从等待队列移除,设置进程为就绪态
    将PCB插入就绪队列,等待被调度
  5. 切换原语
    将运行环境信息存入PCB
    PCB移入相应队列
    选择另一个进程执行,并更新其PCB
    根据PCB恢复新进程所需的运行环境
    **阻塞和唤醒要成对出现**

2.4、进程通信

各进程拥有的内存地址空间相互独立 为了保证安全,一个进程不能直接访问另一个进程的地址空间。

  1. 共享存储
    两个进程对共享空间的访问必须是互斥
    基于数据结构的共享:比如共享空间里只能放一个长度为10的数组。这种共享方式速度慢、限制多,是一种低级通信方式
    基于存储区的共享:在内存中画出一块共享存储区,数据的形式、存放位置都由进程控制,而不是操作系统。相比之下,这种共享方式速度更快,是一种高级通信方式。
  2. 消息传递
    进程间的数据交换以格式化的消息(Message)为单位。进程通过操作系统提供的“发送消息/接收消息”两个原语进行数据交换。
    直接通信方式:消息直接挂到接收进程的消息缓冲队列上
    间接通信方式:消息要先发送到中间实体(信箱)中,因此也称“信箱通信方式”。Eg:计网中的电子邮件系统
  3. 管道通信
    1.管道只能采用半双工通信,某一时间段内只能实现单向的传输。如果要实现双向同时通信,则需要设置两个管道
    2.各进程要互斥地访问管道。
    3.数据以字符流的形式写入管道,当管道写满时,写进程的write()系统调用将被阻塞,等待读进程将数据取走。当读进程将数据全部取走后,管道变空,此时读进程的read()系统调用将被阻塞
    4.如果没写满,就不允许读。如果没读空,就不允许写
    5.数据一旦被读出,就从管道中被抛弃,这就意味着读进程最多只能有一个,否则可能会有读错数据的情况。

2.5、线程、多线程模型

线程是一个基本的CPU执行单元,也是程序执行流的最小单位

引入线程之后,不仅是进程之间可以并发,进程内的各线程之间也可以并发,从而进一步提升了系统的并发度,使得一个进程内也可以并发处理各种任务

引入线程后,进程只作为除CPU之外的系统资源的分配单元(如打印机)。

2.5.1、线程的属性

  1. 线程是处理机调度的单位
  2. 多CPU计算机中,各个线程可占用不同的CPU 入
  3. 每个线程都有一个线程ID、线程控制块(TCB)
  4. 线程也有就绪、阻塞、运行三种基本状态
  5. 线程几乎不拥有系统资源
  6. 同一进程的不同线程间共享进程的资源
  7. 由于共享内存地址空间,同一进程中的线程间通信甚至无需系统=
  8. 同一进程中的线程切换,不会引起进程切换
  9. 不同进程中的线程切换,会引起进程切换
  10. 切换同进程内的线程,系统开销很小
  11. 切换进程,系统开销较大

2.5.2、线程的实现方式

  1. 用户级线程
    由应用程序通过线程库实现。
    所有的线程管理工作都由应用程序负责(包括线程切换)
    用户级线程中,线程切换可以在用户态下即可完成,无需操作系统干预。
  2. 内核级线程
    内核级线程的管理工作操作系统内核完成。线程调度、切换等工作都由内核负责,因此内核级线程的切换必然需要在核心态下才能完成。
    操作系统只“看得见”内核级线程,因此只有内核级线程才是处理机分配的单位

2.5.3、多线程模型

多对一模型:多个用户及线程映射到一个内核级线程。每个用户进程只对应一个内核级线程。
一对一模型:一个用户及线程映射到一个内核级线程。每个用户进程有与用户级线程同数量的内核级线程。多对多模型:n用户及线程映射到m个内核级线程(n >= m)。每个用户进程对应m个内核级线程。

计算机操作系统笔记(二)

二、进程点此跳转

计算机操作系统笔记(三)

二、进程 三、内存点此跳转

计算机操作系统笔记(四)

四、文件 五、I/O

点此跳转