操作系统课堂笔记一-操作系统概述

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/g8433373/article/details/88088507

操作系统概述

简介

  • 本文主要针对操作系统里面一些原理进行剖析, 操作系统也可以说是程序员必经之路, 学的好坏会有本质的区别,尤其是大公司(BAT)的面试, 对操作系统有了解必然是极大的加分项, 个人极力推荐一位老师-陈向群老师(北京大学), 我的大部分理论也是从她那里学来的, 博主会把一些关键点记录好给大家方便查看, 后期有时间会优化下结构。

一个完整的程序执行

  • 下面展示一段c语言代码,大家想一下我们执行的时候到底经历了什么?
#include<stdio.h>
int main(int argc, char const *argv[])
{
    /* code */
    puts("hello world");
    return 0;
}
  • 了解即可
  • 下面了解下完整的执行过程:
	• 用户告知操作系统(方式很多)
	• 操作系统判断文件是否是可执行文件(pe, elf)
	• 操作系统创建一个进程,将可执行文件格式映射到进程结构,由该进程执行程序
	• 操作系统将控制权交给调度程序,为hello world程序设置上下文环境,跳到程序开始之处(调度程序如何选中? i/o多路复用?)
	• 执行第一条指令,发生缺页异常(为什么缺页异常?)
	• 因为代码执行需要将代码load到内存, 但是你一开始没有被分配, 于是操作系统(内存管理模块)就会分配一块空闲的内存来执行helloworld,有时候一页还不够,就有可能进行多次的缺页异常以及分配内存的操作   ps.代码是从 磁盘读入内存
	• 接着操作系统执行puts函数(系统调用),  作用是在标准的输出设备上显示字符串
	• 操作系统把需要写入屏幕的字符串送给一个进程
	• 控制设备的进程通知窗口显示字符串, 窗口系统确定是个合法操作,将字符串->像素->设备存储映像区
	• 视频硬件->显示器可以接受的控制数据信号
最后 在屏幕上看到了hello world

操作系统作用

作用一: 操作系统是资源的管理者

  • 管理哪些资源?
    • 硬件资源: CPU, 内存, 设备(I/O设备, 磁盘, 时钟, 网卡等)
    • 软件资源: 磁盘上的文件, 各类管理信息等
  • 怎么管理资源?
    • 通过数据结构和算法 跟踪记录资源的使用情况(数据结构决定可以有哪些功能, 基于这些功能可以策划有哪些算法支持资源如何分配,有哪些空闲资源可以分配等问题)
  • 相关策略
    • 静态分配策略: 程序运行前就将资源全部分配完成, 会造成资源浪费
    • 动态分配策略: 执行过程中, 需要资源再提出申请, 会根据数据结构决定是否分配
    • 分配和回收: 具体取决于数据结构(如 可以使用位图去实现, 已分配标注1 未分配0)
  • 资源管理角度-操作系统五大基本功能
    • 进程线程管理(CPU管理): 进程线程状态, 控制, 同步/互斥, 通信, 调度…
    • 存储管理: 分配/回收, 地址转换, 存储保护, 内存扩充…
    • 文件管理: 文件目录, 文件操作, 磁盘空间, 文件存储控制 …
    • 设备管理: 设备驱动, 分配回收, 缓冲技术…
    • 用户接口: 系统命令, 编程接口

作用二: 操作系统是系统服务的提供者

  • 举例
    • 进程的创建,执行
    • 文件和目录的操作
    • I/O 设备的使用

作用三: 操作系统对机器硬件的扩展

  • 举例
    • 操作系统是硬件基础上的第一层软件
    • 将硬件的复杂程度简化(例如: 软盘的I/O操作)

操作系统的特征

并发

  • 指的是操作系统具有同时处理多个任务的能力
  • 并发引起的问题
    • 任务切换,保护,互相依赖任务之间同步的问题
  • 同时执行多个程序的错觉: 单CPU场景下, 任务之间轮流执行
  • 并行: 不同任务同时在多个硬件部件上执行。 (注意并发和并行的区别)

共享

  • 指的就是多个用户程序共同使用操作系统的资源
  • 举例
    • 互斥共享(打印机)
    • 同时共享(重入代码, 磁盘文件)
  • 问题: 操作系统资源分配,保证不同进程间不被影响

虚拟

  • 将物理实体(CPU,内存) 映射为若干个逻辑实体-分时,分空间
  • 目的: 提升资源利用率
  • 举例:
    • CPU: 每个进程在虚拟CPU上在跑, 但是微观上只有一个进程在一个CPU上在跑
    • 进程独立地址空间,物理上是共用一块物理内存
    • 显示设备可以多开, 也是虚拟化的结果

随机

  • 操作系统必须随时对次序不可预测的任务进行响应
  • 举例
    • 进程运行速度不可预知,多个进程同时运行 (上下CPU)
    • 难以重现系统在某一个时刻的状态

操作系统架构

windows

  • 简化了一版基本架构,如图:
    在这里插入图片描述
  • 其中和硬件打交道的就是 内核和硬件抽象层
  • 用户和操作系统打交道的是 动态链接库

unix

  • 看下简单版的unix架构
    unix架构
  • 看下相对全面一些的
    在这里插入图片描述

linux

  • 感觉用的最多的, 按照自己的理解整了一套架构图, 不知道对不对,哈哈
    在这里插入图片描述

操作系统的分类

  • 操作系统的发展是随着计算机硬件技术的发展

批处理系统

  • 单道批处理系统
  • 多道批处理系统
  • 真脱机
  • 假脱机(Spooling技术) : 这个觉得很经典

分时操作系统

  • 轮流为每个用户服务
  • 时间片: 按照时间片轮转为每个用户服务
  • 追求目标: 响应时间

通用操作系统

  • 将分时和批处理结合
  • 场景前台: (分时优先,批处理后)
  • 场景后台: (批处理先,分时后)

实时操作系统

  • 能够及时响应外部请求, 能够在严格的时间内完成
  • 实时过程控制: 航空
  • 实时通信系统: 交换机, 银行
  • 追求目标
    1 严格时间内能有响应
    2 高可靠性

个人计算机操作系统

  • 计算机在某一时刻只为一个人服务
  • 追求目标: 界面友好,使用简单, 丰富应用软件

网络操作系统

  • 基于网络体系结构和网络协议标准开发的网络模块
  • 功能: 网络通信, 安全, 资源共享, 以及各种网络应用

分布式操作系统

  • 以网络为基础 或者 以多机为基础, 特征是将计算任务分布在不同计算机上
  • 技术点: 任务分配, 调度, 负载均衡
  • 优点: 处理能力强, 速度快, 可靠性强, 具有透明性

嵌入式操作系统

  • 对应不同设备的软硬件系统, 他是某一个设备中的系统, 不一定是计算机
  • 功能: 控制设备中的各个部件协调工作, 合理调度

智能卡操作系统

  • 智能卡: 一种带有CPU芯片的卡片
  • 特点: 由于非常小,对能耗和存储都有严格的限制
  • 举例: 电子支付

核心点

  • 操作系统的定义
  • 操作系统的三个作用, 四个特征
  • Spooling技术
  • windows, linux, unix架构特点

参考

[1] 陈向群老师操作系统课程-北京大学

猜你喜欢

转载自blog.csdn.net/g8433373/article/details/88088507