1. 我们先说一下操作系统的发展史,这样更有利于我们对这个技术脉络的把
    ├——手工打孔 插卡
    ├——单道批处理├—- 联机处理(可以批量处理作业但是一次只能处理一个作业)
    ├ ├──– 脱机处理(缓和人机矛盾,使cpu和输入输入设备并行处理)
    ├——多道批处理
    ├——分时系统
    ├——实时系统

    结构发展经历下面四个阶段:
    ├—— 无结构os结构(只是实现了功能)
    ├—— 模块化os结构(不利于数据共享,通讯)
    ├—— 分层式os结构(扩展度性不好)
    ├—— 微内核os结构(采用了面向对象的设计方法,现在用的系统基本都是微内核的)
    顺便说一下,我们经常提到的内核层开发,和用户层开发,所谓的内核层开发,就是
    使用操作系统内核开放的接口,编程。用户层开发就是使用普通的接口编程,比如windows
    的Win32 API 就是应用层开发,专门开发我们使用的软件。

    在我们学习文章的时候,经典的衔接段落经常起着承上启下的作用,os就是这样的
    控制着下面的硬件,并且为上层的应用软件提供接口,图形化等服务。

2. 我们先说呈上的部分也就是大家经常使用的,操作系统让我们看到的

文件系统,提供的上层操作就是我们经常使用的目录 文件
设备管理,平常使用的usb设备,键盘 鼠标 显示器 打印机等

当然这俩个部分,我们看到的内容,应该算是逻辑层面的东西,是操作系统为了更好的服务客户
而设计出来的,毕竟最初的dos系统,就是我们开机看到的黑屏界面只是会显示一些字符仅此而已
操作系统会把逻辑的操作转成具体的对硬件的处理,当然了这些细节都已经隐藏掉了。

3. 呈下部分,就是对硬件的处理了

├—— cpu  就是处理器了,由寄存器 控制器 运算器和元器件通过总线连接起来的中央处理器
├—— 内存 这个大家应该很熟悉的,手机也有就是的RAM
├—— 设备 键盘 鼠标 显示器 打印机 等
├—— 文件:磁盘 软盘 u盘等

以上基本就是OS所做的主要管理工作,通过对这些硬件的管理,我觉的其实就是对这些硬件的i/o操作
而已,下面我们就看看操作系统是如何对他们进行读写,然后让整个系统为我们服务。

3.1 cpu 我们都知道,就是用来处理指令的,指令来自我们写的程序,那我们写的程序是怎么进入到内存,

再进入到cpu呢,然后处理的呢,程序大体处理流程如下:

编写       编译           链接                  装入内存            创建pcb初始化,保存程序在内存中的地址

—–> 源程序——> 目标文件—-> 二进制可执行文件———> 创建进程————————————-
分配资源,修改pcb相应的值,并且把pcb加入到就绪队列 通过进程调度算法得到cpu
—————————————————>等待cpu的执行————————>程序开始执行

以上就是我理解的程序处理流程,如果有问题,请大家及时指出谢谢。从这里可以处理cpu就是用来处理进程的一系列操作,
进程的创建,销毁 状态的转换 进程之间的通讯 同步 异步 并发 以及进程的调度。详细一点的如下图所示:

3.2 内存

    内存的主要作用就是给cpu提供数据,既然是内存那就避免不免的流程: 分配 回收
我们所有的操作也都时围绕这俩点进行的,说道内存的分配那就肯定分为俩中情况: 连续  非连续 类似于数据结构
的线性和非线性。
连续分配内存就是很简单了,就是分配连续的内存,但是分配多少呢,这就是一个问题了,所以就分为固定内存的分配
和动态内存的分配(根据程序,数据 大小),并且采用相关的分配算法。缺点:内存碎片化严重,所以我们聪明的程序
员,又想出了非连续内存分配的方法,来弥补缺点,毕竟内存条很贵,并且容量有限。

离散分配(非连续): 就像书一样先把内存按照一定的大小分页,系统存在一张总的分页表,就跟我们平常见到的书目录是一样
的,我们可以在程序装入内存的时候,把空合适的页面集合找出来然后,把程序存储进去。但是因为页比较小承载的数据有限
但是我们的程序大小是不确定的,这样我们编写汇编代码对地址的处理就会比较麻烦,这个时候就需要分段了,就跟我们学习
文章一样,文章分为不同的段落,有不同的作用,我们就把内存分段,按照需求分成不同的段。但是因为我们有的程序特别的大
内存不够,这个时候产生了虚拟内存的概念,其实就是用了替换的思想,把当前需要处理的指令先存入内存,当把内存中的指令
处理完毕之后,可以把剩下的指令再次调入内存,这样我们就可以用小于程序的内存来运行大于内存的程序,因为我们是内存是以
段或者页位基础的,所以相应的置换算法就叫做,页面置换算法 ,段置换算法。当然了也可以把段和页结合起来,使用段页式
内存管理,这样就可以结合俩者的优点。这里写的都是很粗略的东西,具体还是要看书。
知识结构图如下:

3.3 设备

    设备的管理,发展到现在主要处理分为四步: --- 应用程序的调用
                                               --- 设备独立性软件
                                                 --- 设备驱动程序
                                                   --- i/o 中断 
因为我们在编程的时候,读写文件就是通过一些库函数提供的方法,read write 等方法直接使用的,不管我换个操作系统,还是换个
硬件对于我们编程事没有影响的,这个牛逼的功能就是设备独立性软件提供的,让我们对设备的操作独立于设备硬件,在这一层会把逻辑
设备转为物理设备,并且调用设备驱动程序来处理相应的i/o 操作。

只是结构图如下: 

3.4 文件

    文件的逻辑结构,物理机构

只是结构图如下: 

–>

->