第一章 操作系统基本概念

2023-05-16

第一章

第一节 操作系统的概念、功能与目标

  • 操作系统作为用户接口,提供了如下功能:

    命令接口(允许用户直接使用)

    • 联机命令接口:交互(如命令行,用户说一句系统做一句)
    • 脱机命令接口:用户说一句系统做一堆

    程序接口(允许用户通过程序间接调用)

    • 由一组系统调用组成(程序接口 = 系统调用 = 广义指令)

    GUI

  • 自顶向下的层次结构

    用户

    应用程序

    操作系统

    裸机(硬件)

第二节 操作系统的特征(4个特征)

并发共享互为存在条件,并发虚拟异步的前提

并发:指两个事情同时发生(宏观上同时,微观上交替发生)

  • 操作系统的并发,指同时存在多个运行着的程序
  • 并行是指宏观、围观都是同时发生(如多线程)

共享:系统钟的资源可以被内存的多个并发进程共同使用

两种共享方式

  • 互斥共享:一个时间段内只允许一个进程使用
  • 同时共享:一个时间段内只允许多个进程使用

虚拟:将物理实体变成若干个逻辑上的对应(如虚拟存储)

两种虚拟技术(并发性是前提)

  • 空分复用技术(如虚拟存储器)

  • 时分复用技术(如虚拟处理器)

异步:多程序环境下,允许多个程序并发执行。因为多程序的原因,各程序的执行“走走停停”而不是一贯到底(并发性是前提)

第三节 操作系统的发展与分类

手工操作阶段(没有操作系统)

批处理阶段

单道批处理系统

  • 内存中只能运行一道程序,CPU大量空闲以等待I/O完成

多道批处理系统

  • 实现了并发共享
  • 没有人机交互

分时操作系统

  • 计算机以时间片为单位,轮流对各用户\作业提供服务

分时操作系统是完全“公平”的,任务不存在优先级

  • 用户可通过终端与计算机交互

实时操作系统(及时性和可靠性)

硬实时系统:绝对严格的时间内完成处理

软实时系统:偶尔违反时间约定

网络操作系统

分布式操作系统

个人计算机系统

第四节 OS的运行机制和体系结构

运行机制

两种指令

特权指令:只允许内核程序使用的指令

非特权指令:内核和应用程序均可使用(如加减乘除)

两种处理器状态

核心态和用户态,是CPU来“分辨”两种指令的方式

使用程序状态寄存器(PSW)中的二进制位区分两种状态

核心态(内核态、管态):此时正在执行内核程序,此时可以执行特权指令

内核态 -> 用户态:一条修改状态寄存器PSW的特权指令

用户态(目态):此时运行应用程序,只能执行非特权指令

用户态 -> 内核态:中断引起,由硬件自动完成

两种程序

内核程序:实现操作系统的程序,很多内核程序组成了操作系统内核Kernel,是最接近硬件的部分

应用程序:操作系统之上的程序

第五章 中断和异常

中断的作用:将CPU的使用权从应用程序交还到内核程序

中断的类型

内中断:异常

内中断的产生与当前执行的指令有关

指令检查时发生

  • 陷阱、陷入

程序请求操作系统内核的服务,使用“陷入指令”(陷入指令不是特权指令)

应用程序故意引发

  • 用户程序中含有错误条件

错误条件引起

由内核程序修复故障,再交回使用权

(比如缺页故障)

  • 用户程序中含有(“非法的”)特权指令

致命错误,内核也无法修复

不将使用权再交回应用程序,而是直接终止程序

(比如整数除以0,用户程序非法调用特权指令)

中断来自CPU内部

外中断:狭义的中断

与当前指令无关

  • 发生时钟中断:实现并发的条件

时钟并发:

应用程序1(用户态) -> 中断处理的内核程序(内核态) -> 应用程序2(用户态)

每个时钟周期的末尾都会执行

  • 外接设别(如I\O)中断

中断信号来自CPU外部

中断的基本原理:

不同的中断信号由不同的中断程序处理

根据中断信号类型查询“中断向量表”

中断处理程序是一种内核态程序

第六节 系统调用

什么是系统调用:系统调用使处理器从用户态进入核心态

系统调用是指可供应用程序调用的,提供操作系统服务的特殊函数,保证系统的稳定性和安全性防止非法操作

操作系统对于上层应用程序的接口分为命令接口程序接口(本章第一节)

系统调用按照功能分类

设备管理:设备的请求、释放、启动

文件管理:文件的读、写、创建、删除

进程控制:进程的创建、撤销、阻塞、唤醒

进程通信:进程间的消息和信号传递

内存管理:内存的分配和回收

系统调用的处理是核心态下完成,是一种特权指令

系统调用和库函数

库函数(部分)是部分系统调用的封装

系统调用的过程:传递系统调用参数 -> 执行陷入指令(用户态,引发内中断) -> 执行系统调用相应服务(核心态) -> 返回用户程序继续执行

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

第一章 操作系统基本概念 的相关文章

  • php匹配关键字并跳转页面

    php匹配关键字跳转页面 strstr函数搜索要从目标字符串中搜索的字符串 xff1b strstr函数仅用于检查字符串是否存在 xff1b strstr函数的用法如下 lt php b 61 39 or 39 name 61 GET 39
  • docker常见命令小结

    docker常见命令小结 常见命令 docker ps 查看正在运行的容器 docker exec it 264bb068855e bin bash 进入容器 xff0c 并作出修改 docker commit 3bd0eef03413 l
  • 前端html文件下载,同源与异源下载

    属性说明download下载的资源的名称target打开该连接的方式 self blank href资源的地址 本地 远程地址 a标签跳转 lt DOCTYPE html gt lt html gt lt head gt lt meta c
  • Python图像(字母数字)识别

    本文只针对数字或字母验证码识别 准备工具 tesseract ocr w64 setup v4 1 0 20190314 exepip install pytesseractpip install pillow中文包 tesseract o
  • Python习题

    1 题目 xff1a 编写一个程序 xff0c 使用for循环输出0 10之间的整数 xff1b 代码 xff1a span class token keyword for span i span class token keyword i
  • 面向对象模块和包

    文章目录 1 1 模块1 2 模块的使用2 包 1 1 模块 参考链接 xff1a Python 面向对象 模块和包 来源 xff1a CSDN Python面向对象 模块和包 来源 xff1a CSDN 概念 xff1a 每一个以py为拓
  • SUNDIALS库的编译和使用

    SUNDIALS库的编译和使用 1 简介 SUNDIALS SUite of Nonlinear and DIfferential ALgebraic equation Solvers 是由美国劳伦斯利福摩尔国立实验室 xff08 Lawr
  • 【ing】在Linux虚拟机上安装Sundials库(图文)

    1 Sundials库下载 Sundials下载地址 2 具体步骤 2 1 下载sundials 2 2 0 本次尝试选择sundials 2 2 0进行安装 Sundials文件内容如下 xff1a 2 2 创建安装目录 安装目录名称为
  • 基于docker部署Prometheus

    文章目录 基于Docker搭建Prometheusgitee 介绍Prometheus一 安装运行Prometheus docker版 部署Prometheus1 安装docker联网状态下阿里云离线安装包下载2 下载镜像包3 启动node
  • 程序设计思维与实践 Week11 作业 E 选做题11-1 东东与 ATM

    题目描述 xff1a 一家银行计划安装一台用于提取现金的机器 机器能够按要求的现金量发送适当的账单 机器使用正好N种不同的面额钞票 xff0c 例如D k xff0c k 61 1 2 N xff0c 并且对于每种面额D k xff0c 机
  • kubectl edit

    文章目录 kubectl edit官方文档语法示例 kubectl edit 官方文档 使用默认编辑器 编辑服务器上定义的资源 使用命令行工具获取的任何资源都可以使用edit命令编辑 edit命令会打开使用KUBE EDITOR xff0c
  • kubectl exec

    文章目录 kubectl exec通过bash获得pod中某个容器的TTY xff0c 相当于登录容器 命令行 创建一个test文件 xff1a kubectl exec exec命令同样类似于docker的exec命令 xff0c 为在一
  • kubectl describe

    文章目录 describe语法选项 示例描述一个node详细信息描述一个pod描述calico yaml中的资源类型和名称指定的pod描述所有的pod描述所有包含label k8s app 61 calico kube controller
  • k8s自动化安装脚本(kubeadm-1.21.1)

    文章目录 介绍软件架构安装教程更新内容2023 02 102022 10 202022 08 06准备部署包 操作步骤环境准备结构备注 解压部署包修改host文件初始化环境验证ansible配置 安装k8s集群登录master的节点添加no
  • Shell——docker启动yapi

    文章目录 脚本简介脚本注解执行方式脚本内容 脚本简介 基于运维统一脚本中 17 平台管理下的Yapi管理平台部署系统版本Centos7docker环境 脚本注解 该脚本快速部署yapi平台 xff0c 已通过docker commit把对应
  • Shell——查看基础信息脚本

    文章目录 脚本简介脚本注解安装方式执行方式执行结果 脚本内容新版本旧版本 脚本简介 基于运维统一脚本中 xff0c 19 脚本安装下的检查服务器脚本安装使用yum安装 yum仓库 xff0c 系统版本Centos7 脚本注解 该脚本为了快速
  • k8s自动化安装脚本(kubeadm-1.23.7)

    文章目录 介绍软件架构版本介绍更新内容2023 02 192023 02 152023 02 142023 02 102022 10 202022 08 06准备部署包 操作步骤环境准备结构备注 解压部署包修改host文件脚本使用方式初始化
  • 在VS code中打开网页预览

    在VS code中打开网页预览 在平时进行前端设计的时候 xff0c 你是否会因为无法实时观察到网页的变化而苦恼 xff0c 每一次都要重新打开html文件的过程过于繁琐 xff0c 现在就有一种新的方式能够让你在coding的时候实时观察
  • 最小生成树+思维 扩散(洛谷 P1661)

    扩散 题目描述 一个点每过一个单位时间就会向四个方向扩散一个距离 xff0c 如图 图略 两个点a b连通 xff0c 记作e a b 当且仅当a b的扩散区域有公共部分 连通块的定义是块内的任意两个点u v都必定存在路径e u a0 e
  • C语言解决百钱买百鸡问题

    百钱买百鸡问题 穷举法举例 求解 百钱买百鸡 问题 xff1a 公鸡每只5钱 xff0c 母鸡每只3钱 xff0c 小鸡3只1钱 求解思路 xff1a 设公鸡数为x xff0c 母鸡数为y xff0c 小鸡数为z xff0c 则可以得到下面

随机推荐