操作系统学习

xsl-blogs / 2024-01-22 / 原文

操作系统是什么

是一种软件,提供给用户和其他上层软件方便的接口和环境!!!

系统资源的管理者

  • 提供处理机(CPU)、存储器、文件、设备管理

打开QQ -- 相关数据放入内存 -- 进程被CPU处理 -- 视频通话(摄像头设备)

向上层提供方便易用的服务

  • GUI(图形 用户 接口) 比如window下拖拽到回收站删除文件
  • 联机/脱机命令接口 比如cmd, 联机就是cd ls等,脱机就是.bat 也叫批处理
  • 程序接口 比如printf底层就是调用了操作系统的显示接口

最接近硬件的一层软件

  • 硬件只能听懂010101,操作系统把这些硬件功能封装成简单易用的服务
  • 没有任何软件支持就叫裸机,裸机安装操作系统就更方便使用了!

操作系统特征

并发 共享(二者相辅相成) 虚拟 (有并发才有意义虚拟) 异步(没有并发就不会异步)

并发

  • 指两个事件在同一个tick内发生,但实际上是交替(交替很快)发生的 如果实际上也是同时发生,那叫并行!!!!
  • 单核CPU只能并发,多核CPU可以并行!!

共享

  • 资源共享:指的是多个程序并发时同时使用某资源
  • 分为互斥共享(不可同时用摄像头)、同时共享(同时访问硬盘文件 实际上一般也是交替)

虚拟(空分复用 时分复用)

  • 把物理实体变为若干个逻辑上的对应物,比如一个程序需要放入内存并分配CPU才可执行,实际上电脑单核,但是用户感受 可以开多个应用,这就叫虚拟!!

异步

  • 系统资源是有限的,这个资源被占用了,另一个进程就会被阻塞!!
  • 只有并发才会可能导致异步!!!

操作系统的发展

  1. 程序员用纸带机输入输出(有孔为1 无孔为0)
    image
  2. 单道批处理系统
    image
  3. 多道批处理系统
    image
  4. 分时操作系统
    image
  5. 实时操作系统
    image

程序

内核程序(Kernel) 应用程序(app)

  • 理论上只需内核就可以使用一个操作系统

  • CPU可以分辨出哪些是特权指令 哪些是非特权指令

  • CPU两状态(通过一个状态寄存器) 内核态(可执行特权指令)和用户态(不可以)

也就是说,内核态到用户态,需要写入这个寄存器

  • 刚开机CPU是内核态 若用户态时收到特权指令会中断并拒绝执行该程序后续命令,然后进入内核态执行中断程序,执行完后恢复用户态

  • 并不是库函数都涉及系统调用,文件操作肯定涉及系统调用 取绝对值不涉及

中断

没有中断,就不会从用户态切回内核态,就不可能实现并发!!!

  • 内中断 :与当前执行的指令有关(非法指令),中断信号来自CPU内部
    例如:用户态特权指令、除数为0、应用程序请求内核服务(陷入/trap/访管指令)
  • 外中断 :与当前执行的指令无关,中断信号来自CPU外部
    例如:时钟中断、I/O中断

操作系统体系结构

内核咋设计?

image

  • 原语 哪怕遇到中断也会执行完再中断!!!
  • 微内核只包括时钟管理、中断处理、原语。 大内核还包括进程、存储器、设备管理。 微内核比如windows 大内核比如linux unix
  • 外核负责分配未经抽象的系统资源(一整块连续的磁盘空间、物理内存)
    image

分层结构 模块化

  • 模块化可以并行开发,只需要提前定义好函数名、参数、返回值
  • 模块化一般可以动态扩充,因为彼此间独立
  • 模块化调试困难
  • 分层结构调试简单 但是更消耗资源,而且有互相依赖的不好分层

引导

开机后如何让操作系统运行起来

  • 在磁盘上安装一个操作系统,如下图
    image
  1. C盘一般是活动分区(也就是安装了操作系统的分区)分为引导记录PBR(负责找到启动管理器) 根目录 其他
  2. ROM存储BIOS(basci input output system) 主要包含ROM引导程序,作用是指示CPU把MBR读入RAM,MBR的磁盘引导程序又把PBR读入RAM,执行启动管理器

总结:CPU从特定地址取指令执行ROM引导(先硬件自检) --> 引导MBR写入RAM(作用是扫描分区表) --> 从活动分区读PBR到RAM --> 找到启动管理器

位于 C:/Windows/BOOT

虚拟机

将一台物理机器虚拟化为多台虚拟机器,实现一个电脑上跑好几个操作系统