操作系统知识点整理cha.1绪论

1. 操作系统的目标

方便性、有效性、可扩充性、开放性

  ①方便性:易学易用
  ②有效性:提高系统资源利用率、提高系统吞吐量
  ③可扩充性:易于添加新的功能和模块,对原有的功能和模块进行修改
  ④开放性:制定软、硬件标准,遵循世界标准规范,彼此兼容实现互连

2. 操作系统的作用

  ①OS作为用户与计算机硬件系统之间的接口【用户通过OS来使用计算机、从下向上看】
  ②OS作为计算机系统资源的管理者
    - 资源:处理机、存储器、I/O设备、文件【数据和程序】
    - 处理机管理:分配和控制处理机
    - 存储器管理:内存的分配与回收
    - I/O设备管理:负责I/O设备的分配回收与操纵
    - 文件管理:实现对文件的存取、共享和保护
  ③OS实现了对计算机资源的抽象【从上向下看、最接近硬件】
  实现对硬件机器的扩展、对计算机硬件操作的第一个层次的抽象
  把裸机上覆盖了一层I/O设备管理软件的机器称为扩充机器,又称虚拟机

3. 操作系统推动的动力

  不断提高计算机资源利用率
  方便用户
  器件的不断更新换代
  计算机体系结构的不断发展
  不断提出新的应用需求

4. 操作系统发展阶段

  • 1手工操作:输入输出速度慢、处理速度快、效率低 用户独占全机,人机速度矛盾导致资源利用率极低
  • 2批处理阶段——单道批处理:脱机输入输出技术【磁带】,并监督程序负责控制作业的输入输出【监督程序是操作系统的雏形】【CPU和I/O设备串行工作】
    优点:缓解了一定的人机速度矛盾,资源利用率有所提升
    缺点:内存中仅有一道程序运行,该程序运行结束后才能进入下一程序,CPU有大量的时间实在空闲等待I/O完成,资源利用率低
    作业
      概念:用户定义的、由计算机完成的一个工作单位,作业由不同的顺序相连的作业步组成
      组成:作业 = 程序+数据+作业说明书
  • 3批处理阶段——多道批处理:每次往内存中存入多道程序,操作系统诞生并引入中断技术,由操作系统负责管理程序运行,各程序并发执行【相互穿插的运行】
    优点:多道程序并行执行,共享计算机资源,资源利用率大幅提升,CPU和其他资源保持忙碌状态,系统吞吐量增大
    缺点:用户响应时间低,没有人机交互功能(用户提交作业后只能等待计算机处理完成,中间不能控制作业执行)
    单道批处理特点:单道性、顺序性、自动性
    多道批处理特点:多道性、无序性、调度性
  • 4分时操作系统:计算机以时间片为单位轮流为各个用户/作业服务,各个用户可通过终端与计算机交互【一台主机上连接了多个终端,同时允许多个用户通过自己的终端,以交互的方式使用计算机,共享主机中的资源系统】
    时间片:每个终端用户的作业能连续使用CPU的最长时间
    优点:用户请求可以被及时响应,解决人机交互问题,允许多个用户同时使用一台计算机,并且用户对计算机的操作相互独立,感受不到其他用户的存在
    缺点:不能优先处理一些紧急任务,操作系统对各个用户/作业都是完全公平的,循环的为每个用户/作业服务一个时间片,不区分任务的紧急性
  • 5实时系统:系统能及时响应外部事件的请求,在规定的时间内完成对该事件的处理,并控制所有实时任务协调一致的进行
      应用需求:
        实时控制:生产过程控制、武器控制
        实时信息处理:订票系统、情报检索系统
        多媒体系统、嵌入式系统
      截止时间:开始截止时间、完成截止时间
      实时系统与分时系统的比较
        设计目标不同
        多路性和独立性:都有
        及时性:实时系统更高
        交互性:分时系统更强
        可靠性:实时系统要求高度可靠【任何差错都可能带来无法预料的灾难性后果(武器控制系统)
  • 6微机操作系统
      单用户单任务操作系统(MS-DOS)
      单用户多任务操作系统(OS/2、Windows)
      多用户多任务操作系统(Unix、Linux)
  • 7网络操作系统
      计算机网络定义:由线路将一些独立自治的计算机相互连接形成的一个集合体称为计算机网络
      计算机网络的特点:多个独立计算机、无公共内存、具备消息通信机制
      网络操作系统除了具备一般操作系统具有的功能模块外,还有网络通信模块,该模块由通信接口中断处理程序、通信控制程序以及各级网络协议软件组成
      局限性:不能支持透明的资源存取;不能对网络资源进行有效、统一的管理;不能支持合作计算
  • 8分布式系统
      包含多个分布的通用资源部件,并经过通信网络相互作用;有一个分布式操作系统对资源进行全局动态的管理控制;系统对用户是透明的任务可以分布处理
      特点:可扩展性、增加性能、高可靠性
  • 9嵌入式操作系统EOS
      将应用程序和OS与计算机硬件集成在一起的系统,负责嵌入式系统的全部软、硬件资源的分配、调度工作、控制协调并发活动等
      手机操作系统、VxWorks

5. 操作系统的特征

  并发:两个或多个事件在同一时间间隔内发生
  并行:两个或多个事件在同一时刻发生
  并发宏观上同一时间段内同时运行,微观上交替执行【同时存在多个运行的程序,WeChat、QQ、音乐并行 多核CPU】
  进程:是指在系统中能独立运行并作为资源分配的基本单位,是由一组机器指令、数据和堆栈等组成的,是一个能独立运行的活动实体。
  共享:指系统中的资源可供内存中多个并发执行的进程共同使用
  互斥共享方式:【QQ微信视频摄像头不可同时使用】
    在一段时间内只允许一个进程访问资源;
    临界资源【独占资源】:在一段时间内只允许一个进程访问的资源
  同时访问方式:【QQ微信同时读取并发送文件】
    宏观上一段时间内允许多个进程“同时”访问某些资源
    微观上“轮流”(交替访问)
    处理机、内存、磁盘、可重入代码
  虚拟:是指通过某种技术把一个物理实体变为若干个逻辑上的对应物【物理实体是实际存在的,后者是用户感受到的
  异步(不确定性):进程是以人们不可预知的速度向前推进的
  导致的原因:竞争资源

6. 操作系统的功能

  处理机管理:对处理机进行分配——进程和线程的管理和调度
    进程:一个程序 线程:程序里的一个函数
  存储器管理:对内存进行分配、保护、扩充及地址映射
  设备管理:接收用户程序的I/O请求,分配设备,启动设备
  文件管理:文件的存取、信息的共享与保护、文件存储空间管理
  提供用户接口:命令接口、图形接口、程序接口

7. 操作系统的用户接口

  命令接口
    作业控制语言、键盘命令
    在终端中使用;Unix/Linux有多种Shell(sh/bash/ksh/csh)
    普通用户、系统管理员
  程序接口:应用程序以函数调用的方式来使用系统服务的接口,在Unix/Linux系统中也称为系统调用(system call)
    系统调用:系统功能调用是用户在程序一级请求操作系统服务的一种手段,它是带有一定功能号的“访管指令”。其功能由操作系统中的程序完成【软件方法】
  图形接口GUI
    更加友好的交互型用户接口
    直观
  指令:CPU能识别、执行的最基本命令

8. 操作系统的内核

  内核是计算机配置的底层软件,是操作系统最基本、最核心的部分
    1时钟管理:实现计时功能
    2中断处理:负责实现终端机制
    3原语:
  是一种特殊的程序
  处于操作系统最底层,是最接近硬件的部分
  这种程序运行具有原子性——其运行只能一气呵成,不可中断
  运行时间较短、调用频繁
  4对系统资源进行管理功能【有的操作系统不归为内核功能】
    进程管理、存储器管理、设备管理
  操作系统体系结构【因为操作系统内核功能的划分不同不同的体系结构:大内核、微内核
    大内核:将操作系统的主要功能模块都作为系统内核,运行在核心态
      优点:高性能
      缺点:内核代码庞大,结构混乱,难以维护
    微内核:只把最基本的功能保留在内核
      优点:内核功能少,结构清晰,方便维护
      缺点:需要频繁地在核心态和用户态之间切换,性能低
  判断CPU当前是否可以执行特权指令
  🌟操作系统的处理器状态:
    管态【用户态】:此时CPU只能执行非特权指令
    目态【核心态】:特权指令、非特权指令都可执行
    特权指令-内核程序-核心态 应用程序-用户态
    1特权指令只能在核心态下执行
    2内核程序还能在核心态下执行
    3核心态、用户态之间的切换
  陷入指令是唯一一个只能在用户态执行而不可在核心态执行的指令
  系统调用发生在用户态,对系统调用的处理发生在核心态执行陷入指令会产生内中断,使处理器从用户态进入核心态

9. 操作系统的内核结构

  • 整体结构:操作系统是一组过程的集合,每个过程有接口定义,包括入口参数和返回值,过程间可任意调用
      设计重点:功能的实现和高效率
      缺点:缺乏清晰的程序结构、错误多、难易维护
      实例:AT&T SystemV、BSD UNIX

  • 模块化结构:操作系统按功能划分模块和设计,模块需要封装,相关模块间具有良好定义的接口,模块间可以任意调用
      优点:有利于系统设计和扩展
      缺点:模块间存在复杂的依赖关系,OS结构不清
      实例:Choices系统【该结构处于实验性质】

  • 层次结构:把OS的功能模块划分为若干层,每层之间的模块只能单向调用
      优点:易保证系统的正确性、易扩充和易维护性
      缺点:系统效率低
      实例:Dijkstra的THE系统

  • 微内核结构
      系统内核
        1基础核心
          进程管理(线程)
          低级存储器管理
          中断和陷入处理
          基础通信:消息传递
        2其他核心:文件管理、设备驱动、内存管理、网络管理等
      特点:采用面向对象技术、基于客户/服务器模式
      运行在核心态的微内核;运行在用户态的并以客户/服务器方式活动的进程层

10. 系统的中断和异常

  中断机制的引入:早期计算机程序只能串行执行,系统资源利用率低,引入中断机制,实现了多道程序并发执行【本质:发生中断意味着需要操作系统介入,开展管理工作,需要使用特权指令,因此CPU要从用户态转为核心态,中断可以使CPU从用户态切换为核心态,使操作系统获得计算机的控制权】
  中断是CPU从用户进入核心态的唯一途径
    1当中断发生时,CPU立即进入核心态
    2当中断发生后,当前运行程序暂停,并由操作系统内核对中断进行处理
    3对不同的中断信号,会进行不同的处理
  中断的分类
    内中断【异常、例外、陷入】:信号来源CPU内部,与当前执行的指令有关
      自愿中断——指令中断
      强迫中断——硬件故障【缺页】、软件中断【抛出异常,整数除0】
    外中断【狭义的中断】:信号来源CPU外部,与当前执行的指令无关
      外设请求【I/O操作完成发出中断信号】
      人工干预【用户强行终止一个进程】
  外中断的处理过程
    1【用户程序,用户态】执行完每个指令后,CPU都要检查当前是否有外部中断信号
    2检测到外部中断信号,需要保护被中断进程的CPU环境【程序状态字PSW、程序计数器PC、通用寄存器】
    3根据中断信号类型转入相应的中断处理程序
    4恢复原进程的CPU环境并退出中断,返回原进程继续往下执行

### 回答1: 这个错误提示表示在编译时无法找到名为openssl/chacha.h的文件或目录。这可能是由于以下几个原因引起的: 1. OpenSSL库没有正确安装:确保您的系统上已经正确安装了OpenSSL库。你可以通过运行命令`openssl version`来检查OpenSSL库的存在与否。如果没有安装,你可以通过包管理器来安装它,例如对于Ubuntu,可以运行`sudo apt-get install libssl-dev`。 2. OpenSSL头文件没有正确设置:编译器无法找到名为chacha.h的头文件,这可能是由于头文件路径没有正确设置导致的。你可以在编译时使用`-I`选项来指定头文件的路径,例如`-I/usr/include/openssl`。 3. 版本不兼容:检查你使用的OpenSSL版本与代码中使用的版本是否相容。有些功能或头文件可能在不同版本之间发生了变化或取消。如果不相容,你需要更新你的代码以适应当前版本的OpenSSL库。 总结:以上是关于错误"error: openssl/chacha.h: no such file or directory"的可能解决方案,包括安装或更新OpenSSL库,设置正确的头文件路径,以及检查OpenSSL库版本兼容性。 ### 回答2: 出现这个错误的原因是因为编译程序在寻找 `openssl/chacha.h` 头文件时没有找到。 首先,我们需要确保已经正确安装了 OpenSSL 库。如果没有安装,可以通过以下命令在 Linux 系统上安装 OpenSSL: ``` sudo apt-get install libssl-dev ``` 如果是在 Windows 系统上使用 MSYS2 或者 MinGW 环境,可以使用以下命令安装 OpenSSL: ``` pacman -S mingw-w64-x86_64-openssl ``` 如果已经安装了 OpenSSL,可能是由于头文件路径没有正确配置,我们需要添加正确的头文件路径。 可以尝试在编译程序的命令中添加 `-I` 选项,指定 OpenSSL 头文件的路径。例如,在 Linux 系统中可以使用以下命令编译程序: ``` gcc -o output_file source.c -I/usr/include/openssl ``` 在 Windows 系统中可以使用以下命令编译程序: ``` gcc -o output_file source.c -I/path/to/openssl/include ``` 请注意,`/path/to/openssl/include` 需要替换为实际的 OpenSSL 头文件路径。 如果以上方法仍然无法解决问题,可能需要进一步检查 OpenSSL 的安装和配置情况,确保 OpenSSL 库和头文件都正确安装并且路径设置正确。 ### 回答3: "error: openssl/chacha.h: 没有该文件或目录" 这个错误是由于缺少 OpenSSL 中的 chacha.h 文件导致的。 OpenSSL 是一个开放源代码的密码库,用于提供安全通信的加密和解密功能。ChaCha20 是一种具有高安全性和高速度的对称加密算法。在使用 OpenSSL 库进行开发时,需要使用到 chacha.h 头文件来引入 ChaCha20 算法的相关函数和定义。 要解决这个错误,可以按照以下步骤操作: 1. 确保已经正确安装了 OpenSSL 库。可以通过命令行输入 `openssl version` 来检查 OpenSSL 的版本信息。如果提示未找到命令,则可能 OpenSSL 没有正确安装或正在使用的是其他加密库。 2. 检查开发环境中是否已经包含了 OpenSSL 的安装路径。可以通过设置环境变量 `OPENSSL_INCLUDE_DIR` 来指定 OpenSSL 的包含文件目录,例如:`export OPENSSL_INCLUDE_DIR=/usr/local/ssl/include`。如果已经设置了该环境变量,可以跳过这一步。 3. 确认是否存在 chacha.h 文件。在 OpenSSL 的安装目录下,应该可以找到 chacha.h 文件。例如,在默认的安装目录 `/usr/local/ssl/include/openssl` 下应该存在 chacha.h 文件。 4. 如果确实不存在 chacha.h 文件,可能是因为 OpenSSL 的版本较旧,不包含此文件。可以尝试更新 OpenSSL 版本,或者使用其他适配的加密算法。 总之,解决 "error: openssl/chacha.h: 没有该文件或目录" 错误,需要确保正确安装了 OpenSSL 库,并配置了正确的环境变量和路径,以及使用了支持 ChaCha20 算法的 OpenSSL 版本。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值