第一章操作系统概述

第一章操作系统概述

1.1 操作系统的基本概念

1.1.1 操作系统的概念、功能和目标(系统资源的管理者、提供接口、作为扩充机器、虚拟机)

1. 操作系统的层次结构

在这里插入图片描述

2. 操作系统概念
  • 控制和管理整个计算机的硬件软件资源
  • 合理的组织、调度计算机的工作与资源的分配
  • 为用户和其它软件提供方便的接口和环境
  • 是计算机系统最基本的系统软件
3. 操作系统的功能和目标

(1)作为计算机系统资源的管理者:

  • 处理机(CPU)管理
  • 文件管理
  • 存储器管理
  • 设备管理
    在这里插入图片描述

(2)作为用户与计算机硬件系统之间的接口:

  • 命令接口

    • 联机命令接口(也叫交互式命令接口):

      处理,用户输入一条指令,操作系统就执行一条指令。

    • 脱机命令接口:

      处理,用户输入一堆指令,操作系统就执行一堆指令。

  • 程序接口

  • GUI
    在这里插入图片描述


【注意点:命令接口和程序接口统称用户接口
在这里插入图片描述

(3)作为扩充机器(虚拟机)
在这里插入图片描述


1.1.2 操作系统的特征(并发、共享、虚拟、异步)

在这里插入图片描述

1. 并发
  • 并发:指两个或多个事件在同一时间间隔内发生。这些事件宏观上是同时发生的,但微观上是交替发生的。
  • 并行:指两个或多个事件在同一个时刻同时发生。
  • 单核CPU同一时刻只能执行一个程序,各个程序只能并发地执行
  • 多核CPU同一时刻可以同时执行多个程序,多个程序可以并行地执行
  • 操作系统就是伴随着“多道程序技术”而出现的。因此,操作系统和程序并发是一起诞生的
2. 共享
  • 共享即资源共享,是指系统中的资源可供内存中多个并发执行的进程共同使用

(1)互斥共享

  • 系统中的某些资源,虽然可以提供给多个进程使用,但一个时间段内只允许一个进程访问该资源
  • 例子:使用QQ和微信视频。同一时间段内摄像头只能分配给其中一个进程。

(2)同时共享

  • 系统中的某些资源,允许一个时间段内由多个进程“同时”对它们进行访问
  • 所谓的“同时”往往是宏观上的,而在微观上,这些进程可能是交替地对该资源进行访问的(即分时共享)
  • 例子:使用QQ发送文件A,同时使用微信发送文件B。宏观上看,两边都在同时读取并发送文件, 说明两个进程都在访问硬盘资源,从中读取数据。微观上看,两个进程是在交替访问硬盘。

(3)并发和共享的关系
在这里插入图片描述

3. 虚拟
  • 虚拟是指把一个物理上的实体变为若干个逻辑上的对应物。
  • 物理实体(前者)是实际存在的,而逻辑上对应物(后者)是用户感受到的。
  • 操作系统的虚拟技术归纳为:
    • 时分复用技术:如处理器的分时共享(“同时”处理多个程序,让用户觉得有多个CPU)
    • 空间复用技术:如虚拟存储器(同时共享CPU内存,让用户觉得CPU内存很大)
      在这里插入图片描述
4. 异步
  • 异步:在多道程序环境下,允许多个程序并发执行,但由于资源有限,如cpu只有一个,进程的执行不是一贯到底的, 而是走走停停,以不可预知的速度向前推进。
  • 例子:比如A进程正在占用CPU计算,B进程这时也想占用CPU计算,B进程只能等待A结束。

1.1.3 操作系统的发展和分类

【操作系统的出现:多道批处理系统(并发)】
在这里插入图片描述


1.2 操作系统的运行机制和体系结构

1.2.1 运行机制

1. 两种指令、两种处理器状态、两种程序
  • 指令的概念:
    在这里插入图片描述

  • 两种指令

    • 特权指令
    • 非特权指令
      在这里插入图片描述
  • 两种处理机状态

    • 核心态(管态) → 特权指令 or 非特权指令
    • 用户态(目态) → 非特权指令
      在这里插入图片描述
  • 两种程序

    • 内核程序 → 核心态
    • 应用程序 → 用户态
      在这里插入图片描述
  • 整体关系

    • 内核程序 → 核心态 → 特权指令 or 非特权指令
    • 应用程序 → 用户态 → 非特权指令
      在这里插入图片描述

1.2.2 体系结构

1. 操作系统内核在计算机系统中的层次结构

在这里插入图片描述

  • 原子性:这类程序执行要一气呵成,执行到底,不能中断
  • 在这里插入图片描述
2. 操作系统的两种体系结构
  • 大内核

  • 微内核

  • 区别:包不包含系统资源管理的功能(下图)
    在这里插入图片描述

  • 各自的优缺点
    在这里插入图片描述


1.3 中断和异常

1.3.1 中断的基本概念

  • 中断:为了实现多道程序并发执行引入的机制。
  • 发生中断:意味着需要操作系统介入,开展管理工作,cpu会立即进入核心态
  • 【“中断”是cpu从用户态进入核心态唯一途径!!!!】

cpu状态转移方式:

  • 用户态 → 核心态:由“中断”引发,硬件自动完成变态过程,触发中断信号意味着操作系统将强行夺回CPU的使用权。
  • 核心态 → 用户态:执行一条特权指令——修改PSW(程序状态字寄存器)的标志位为“用户态”,这个动作意味着操作系统将主动让出CPU使用权 。

1.3.2 中断的分类

  • 内中断:信号的来源是CPU内部,与当前执行的指令有关
  • 外中断:信号的来源是CPU外部,与当前执行的指令无关
1. 第一种分类方式

在这里插入图片描述

2. 内中断的第二种分类方式

在这里插入图片描述

1.3.3 外中断的处理过程

  • 外中断:是来自CPU外部的中断
  • 大致过程:检查 → 保护 → 处理 → 返回
    在这里插入图片描述

1.3.4 整体结构

在这里插入图片描述


1.4 系统调用

1.4.1 什么是系统调用

在这里插入图片描述

1. 概念和作用
  • “系统调用”:是操作系统提供给应用程序(程序员/编程人员)使用的接口

    【可以理解为一种可供程序使用的特殊函数】

  • 作用:应用程序可以通过发出系统调用请求操作系统的服务。

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

2. 分类
  • 系统调用的分类
    在这里插入图片描述

  • 注意:
    在这里插入图片描述

1.4.2 系统调用和库函数的区别

  • 操作系统向上提供系统调用,使得上层程序能请求内核的服务【隐藏硬件操作的一些细节】

  • 涉及系统调用的库函数是对系统调用的进一步封装【隐藏系统调用的一些细节】、

    【有的库函数涉及系统调用,有的不涉及】

  • 应用程序可以直接进行系统调用,也可通过使用库函数间接调用。

1.4.3 系统调用背后的过程

  • 大致过程
    • 传递系统调用参数 → 执行陷入指令(用户态) → 执行系统调用相应服务程序(核心态) → 返回用户程序
  • 重点
    • 陷入指令是在用户态执行的,执行陷入指令之后立即引发一个内中断,使CPU进入核心态
    • 发出系统调用请求是在用户态,而对系统调用的相应处理在核心态下进行
    • 陷入指令是唯一一个只能在用户态执行,不能在核心态执行的指令

1.4.4 整体结构

在这里插入图片描述
参考:

  • https://www.bilibili.com/video/av70156862
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
现代操作系统第四版是一本经典的操作系统教材,第三章主要讲解了进程的概念、进程控制块、进程状态以及进程调度等内容。以下是第三章的主要内容概述: 1.进程的概念:进程是程序在执行过程中分配和管理资源的基本单位,每个进程都有自己的地址空间、数据栈、指令计数器、寄存器和文件描述符等。 2.进程控制块:进程控制块是操作系统内核中用于管理进程的数据结构,包含了进程的状态、进程ID、优先级、程序计数器、寄存器、内存分配情况、打开文件列表等信息。 3.进程状态:进程状态包括运行态、就绪态、阻塞态和创建态等,进程在不同状态之间转换,操作系统根据进程状态来进行进程调度。 4.进程调度:进程调度是操作系统内核中的一个重要模块,负责决定哪个进程可以获得CPU的使用权,进程调度算法包括先来先服务、短作业优先、时间片轮转等。 5.进程同步:进程同步是指多个进程之间的协作,包括互斥、信号量、管程等机制,用于保证多个进程之间的正确性和一致性。 6.进程通信:进程通信是指多个进程之间的信息交换,包括共享内存、消息队列、管道等机制,用于实现进程之间的数据传输和共享。 以下是现代操作系统第四版第三章的相关代码示例: ```c #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/types.h> #include <sys/wait.h> int main() { pid_t pid; int status; pid = fork(); if (pid < 0) { printf("Fork error\n"); exit(1); } else if (pid == 0) { printf("Child process\n"); exit(0); } else { printf("Parent process\n"); wait(&status); printf("Child exit status: %d\n", WEXITSTATUS(status)); } return 0; } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值