0
点赞
收藏
分享

微信扫一扫

操作系统自学笔记(一) 操作系统概述

仅为自学时的笔记, 如有问题请多指教

目录

​​操作系统的启动​​

​​操作系统的"定位"​​

​​操作系统的特征​​

​​运行机制​​

​​体系结构 ​​

​​中断​​

​​中断的分类​​

​​外中断处理过程​​

​​系统调用​​

​​系统调用与库函数的区别​​

​​ 过程​​

​​感悟​​

操作系统的启动

DISK: 存放OS

BIOS: 基本I/O处理系统

POST(加电自检)寻找显卡, 执行BIOS

BIOS从某个特定的地址开始执行

Bootloader一般是在放在硬盘的第一个主引导扇区

BIOS将Bootloader从DIST放到内存中,Bootloader将OS加载到内存中


操作系统自学笔记(一) 操作系统概述_#define

以X86为例

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

操作系统的"定位"

操作系统自学笔记(一) 操作系统概述_系统调用_02

命令接口 (直接使用)

  • 联机命令接口(交互式命令接口)比如cmd中逐行执行的命令
  • 脱机命令接口(批处理命令接口)比如.bat脚本

程序接口 如程序调用的.dll文件,用户通过程序间接调用, 由一组系统调用(广义指令)组成(程序接口=系统调用)

有关系统调用可以参照下面

操作系统的特征

操作系统自学笔记(一) 操作系统概述_#define_03

  • 并发:计算机系统中存在多个同时运行的程序, 需要OS管理和调度
  • 共享:"同时"访问 / 互斥共享
  • 虚拟:将硬件层面抽象,CPU→进程  磁盘→文件  内存→地址空间 , 用户对于计算机产生一种独自占有的感觉
  • 异步:程序的执行走走停停,速度不可预知; 但运行环境相同, OS需保证运行结果也相同

 并发与共享相互共存

并发:指两个或多个事件在同一时间间隔内发生。宏观上同时发生, 微观上是交替发生的。
并行:指两个或多个事件在同一时刻同时发生。

操作系统自学笔记(一) 操作系统概述_用户态_04

运行机制

操作系统自学笔记(一) 操作系统概述_系统调用_05

 

操作系统自学笔记(一) 操作系统概述_用户态_06

操作系统自学笔记(一) 操作系统概述_系统调用_07

体系结构 

 操作系统自学笔记(一) 操作系统概述_操作系统_08

 操作系统自学笔记(一) 操作系统概述_系统调用_09

内核功能划分的不同方式, 对应着不同的体系结构: 大内核与微内核

操作系统自学笔记(一) 操作系统概述_系统调用_10操作系统自学笔记(一) 操作系统概述_用户态_11

操作系统的体系结构与企业管理相似
内核就是企业的管理层,负责一些重要的工作。只有管理层才能执行特权指令,普通员工只能执行非特权指令。用户态、核心态之间的切换相当于普通员工和管理层之间的工作交接

  • 大内核:企业初创时体量不大,管理层的人会负责大部分的事情。优点是效率高;缺点是组织结构混乱,难以维护。
  • 微内核:随着企业体量越来越大,管理层只负责最核心的一些工作。优点是组织结构清晰,方便维护;缺点是效率低。

中断

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

发生了中断,就意味着需要操作系统介入,开展管理工作。由于操作系统的管理工作(比如进程切换、分配I/O设备等)需要使用特权指令,因此CPU要从用户态转为核心态。

中断可以使CPU从用户态→核心态 ,使操作系统获得计算机的控制权。有了中断,才能实现多道程序并发执行

核心态→用户态”的切换是通过执行一个特权指令,将程序状态字(PSW)的标志位设置为“用户态”

中断的分类

操作系统自学笔记(一) 操作系统概述_系统调用_12

 另一种分类方式操作系统自学笔记(一) 操作系统概述_#define_13

 

外中断处理过程

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

系统调用

系统调用” 是操作系统提供给应用程序(程序员/编程人员〉使用的接口,可以理解为一种可供应用程序调用的特殊函数,应用程序可以发出系统调用请求来获得操作系统的服务。

例如:设备管理, 文件管理, 进程控制, 进程通信, 内存管理

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

系统调用与库函数的区别
操作系统自学笔记(一) 操作系统概述_操作系统_14

 过程

操作系统自学笔记(一) 操作系统概述_系统调用_15

注意:

  • 陷入指令是在用户态执行的,执行陷入指令之后立即引发一个内中断,从而CPU进入核心态
  • 发出系统调用请求是在用户态,而对系统调用的相应处理在核心态下进行
  • 陷入指令是唯一一个只能在用户态执行,而不可在核心态执行的指令(前面我们知道核心态既可以执行特权指令也可以执行非特权指令,但这里的陷入指令无法执行)

以Linux为例,下面这类的即为系统调用号,可以告诉操作系统执行相应的处理程序

#define __NR_read 0
#define __NR_write 1
#define __NR_open 2
#define __NR_close 3
#define __NR_stat 4
#define __NR_fstat 5
#define __NR_lstat 6
#define __NR_poll 7

感悟

凡是涉及共享资源或者直接影响其他进程的操作, 牵连到系统安全性的, 必须通过系统调用的方式,请求操作系统介入


举报

相关推荐

0 条评论