CS-Notes/docs/notes/计算机操作系统 - 概述.md

130 lines
4.5 KiB
Java
Raw Normal View History

2019-11-02 14:39:13 +08:00
<!-- GFM-TOC -->
* [基本特征](#基本特征)
* [1. 并发](#1-并发)
* [2. 共享](#2-共享)
* [3. 虚拟](#3-虚拟)
* [4. 异步](#4-异步)
* [基本功能](#基本功能)
* [1. 进程管理](#1-进程管理)
* [2. 内存管理](#2-内存管理)
* [3. 文件管理](#3-文件管理)
* [4. 设备管理](#4-设备管理)
* [系统调用](#系统调用)
* [大内核和微内核](#大内核和微内核)
* [1. 大内核](#1-大内核)
* [2. 微内核](#2-微内核)
* [中断分类](#中断分类)
* [1. 外中断](#1-外中断)
* [2. 异常](#2-异常)
* [3. 陷入](#3-陷入)
<!-- GFM-TOC -->
2019-03-27 20:57:37 +08:00
# 基本特征
## 1. 并发
2019-03-09 08:31:29 +08:00
并发是指宏观上在一段时间内能同时运行多个程序而并行则指同一时刻能运行多个指令
并行需要硬件支持如多流水线多核处理器或者分布式计算系统
操作系统通过引入进程和线程使得程序能够并发运行
2019-03-27 20:57:37 +08:00
## 2. 共享
2019-03-09 08:31:29 +08:00
共享是指系统中的资源可以被多个并发进程共同使用
有两种共享方式互斥共享和同时共享
2019-06-09 17:04:10 +08:00
互斥共享的资源称为临界资源例如打印机等在同一时刻只允许一个进程访问需要用同步机制来实现互斥访问
2019-03-09 08:31:29 +08:00
2019-03-27 20:57:37 +08:00
## 3. 虚拟
2019-03-09 08:31:29 +08:00
虚拟技术把一个物理实体转换为多个逻辑实体
2019-06-09 17:04:10 +08:00
主要有两种虚拟技术时间分复用技术和空空间分复用技术
2019-03-09 08:31:29 +08:00
2019-06-09 17:04:10 +08:00
多个进程能在同一个处理器上并发执行使用了时分复用技术让每个进程轮流占用处理器每次只执行一小个时间片并快速切换
2019-03-09 08:31:29 +08:00
虚拟内存使用了空分复用技术它将物理内存抽象为地址空间每个进程都有各自的地址空间地址空间的页被映射到物理内存地址空间的页并不需要全部在物理内存中当使用到一个没有在物理内存的页时执行页面置换算法将该页置换到内存中
2019-03-27 20:57:37 +08:00
## 4. 异步
2019-03-09 08:31:29 +08:00
异步指进程不是一次性执行完毕而是走走停停以不可知的速度向前推进
2019-03-27 20:57:37 +08:00
# 基本功能
2019-03-09 08:31:29 +08:00
2019-03-27 20:57:37 +08:00
## 1. 进程管理
2019-03-09 08:31:29 +08:00
进程控制进程同步进程通信死锁处理处理机调度等
2019-03-27 20:57:37 +08:00
## 2. 内存管理
2019-03-09 08:31:29 +08:00
内存分配地址映射内存保护与共享虚拟内存等
2019-03-27 20:57:37 +08:00
## 3. 文件管理
2019-03-09 08:31:29 +08:00
文件存储空间的管理目录管理文件读写管理和保护等
2019-03-27 20:57:37 +08:00
## 4. 设备管理
2019-03-09 08:31:29 +08:00
2019-03-27 20:57:37 +08:00
完成用户的 I/O 请求方便用户使用各种设备并提高设备的利用率
2019-03-09 08:31:29 +08:00
主要包括缓冲管理设备分配设备处理虛拟设备等
2019-03-27 20:57:37 +08:00
# 系统调用
2019-03-09 08:31:29 +08:00
如果一个进程在用户态需要使用内核态的功能就进行系统调用从而陷入内核由操作系统代为完成
2019-12-05 01:47:57 +08:00
<div align="center"> <img src="https://cs-notes-1256109796.cos.ap-guangzhou.myqcloud.com/tGPV0.png" width="600"/> </div><br>
2019-03-09 08:31:29 +08:00
2019-03-27 20:57:37 +08:00
Linux 的系统调用主要有以下这些
2019-03-09 08:31:29 +08:00
2019-03-27 20:57:37 +08:00
| Task | Commands |
| :---: | --- |
| 进程控制 | fork(); exit(); wait(); |
| 进程通信 | pipe(); shmget(); mmap(); |
| 文件操作 | open(); read(); write(); |
| 设备操作 | ioctl(); read(); write(); |
| 信息维护 | getpid(); alarm(); sleep(); |
| 安全 | chmod(); umask(); chown(); |
2019-03-09 08:31:29 +08:00
2019-03-27 20:57:37 +08:00
# 大内核和微内核
2019-03-09 08:31:29 +08:00
2019-03-27 20:57:37 +08:00
## 1. 大内核
2019-03-09 08:31:29 +08:00
2019-03-15 21:40:56 +08:00
大内核是将操作系统功能作为一个紧密结合的整体放到内核
2019-03-09 08:31:29 +08:00
由于各模块共享信息因此有很高的性能
2019-03-27 20:57:37 +08:00
## 2. 微内核
2019-03-09 08:31:29 +08:00
由于操作系统不断复杂因此将一部分操作系统功能移出内核从而降低内核的复杂性移出的部分根据分层的原则划分成若干服务相互独立
在微内核结构下操作系统被划分成小的定义良好的模块只有微内核这一个模块运行在内核态其余模块运行在用户态
因为需要频繁地在用户态和核心态之间进行切换所以会有一定的性能损失
2019-12-05 01:47:57 +08:00
<div align="center"> <img src="https://cs-notes-1256109796.cos.ap-guangzhou.myqcloud.com/2_14_microkernelArchitecture.jpg"/> </div><br>
2019-03-09 08:31:29 +08:00
2019-03-27 20:57:37 +08:00
# 中断分类
2019-03-09 08:31:29 +08:00
2019-03-27 20:57:37 +08:00
## 1. 外中断
2019-03-09 08:31:29 +08:00
2019-03-27 20:57:37 +08:00
CPU 执行指令以外的事件引起 I/O 完成中断表示设备输入/输出处理已经完成处理器能够发送下一个输入/输出请求此外还有时钟中断控制台中断等
2019-03-09 08:31:29 +08:00
2019-03-27 20:57:37 +08:00
## 2. 异常
2019-03-09 08:31:29 +08:00
2019-03-27 20:57:37 +08:00
CPU 执行指令的内部事件引起如非法操作码地址越界算术溢出等
2019-03-09 08:31:29 +08:00
2019-03-27 20:57:37 +08:00
## 3. 陷入
2019-03-09 08:31:29 +08:00
在用户程序中使用系统调用
2019-11-02 14:39:13 +08:00
2019-11-02 17:33:10 +08:00
<div align="center"><img width="320px" src="https://cs-notes-1256109796.cos.ap-guangzhou.myqcloud.com/githubio/公众号二维码-2.png"></img></div>