美文网首页
计算机基础-操作系统篇

计算机基础-操作系统篇

作者: Chaos_YM | 来源:发表于2019-08-12 17:57 被阅读0次

    本篇为操作系统部分
    为增加可读性三部分分为三篇文章,另外两片链接如下:
    计算机基础网络篇
    计算机原理篇

    一,操作系统概览

    • what & why
      操作系统是管理计算机硬件、软件的程序
      方式:管理配置内存、决定资源供需顺序、控制输入输出设备等,并提供操作界面

    • 操作系统的基本功能
      管理计算机资源
      实现了对计算机资源的抽象
      提供了对用户的接口(图形,命令,系统调用)


      WX20190812-183159@2x.png
    • 相关概念
      并发、共享、虚拟、异步
      1.并行与并发:
      并行:多个事件同一时刻发生
      并发:多个事件同一时间间隔发生

      捕获.PNG

    二,进程

    1.进程:

    是系统进行资源分配和调度的基本单位;
    进程是程序独立运行的载体;
    进程大幅提升系统资源利用率;

    2.主存中的进程形态 --->> 进程控制块 PCB

    包括:标识符、状态、程序计数器、内存指针、上下文数据、IO状态信息、记账信息、优先级等
    一个进程process可以有多个线程thread;
    线程是操作系统运行调度的最小单位


    捕获.PNG

    3.五状态

    就绪、阻塞、执行、、创建、终止

    • 创建
      动作 >>> 分配PCB,插入就绪队列
      状态 >>> 拥有PCB,其他资源未就绪
      操作系统提供了fork函数接口创建进程
    • 终止:系统清理 >>> 归还PCB
    • 就绪:分配到除CPU外所有必要的资源之后
      并发的就绪进程,排列成了就绪队列
    • 执行状态:获取CPU后正在运行的
      单处理器中只有一个是执行的
    • 阻塞:因某种原因,放弃CPU后,进入的状态(也存在阻塞队列)
      例,执行的时候调用打印机过久,进入阻塞状态,打印机就绪后,又进入就绪状态,分配到CPU后,重新进入执行状态
      WX20190813-105330@2x.png

    4.进程同步

    • 因为处理临界资源,多个异步进程抢夺资源会产生bug,顾需要进程同步,协调多进程的资源使用次序
      根源:进程间彼此无通信
    • 同步原则
      临界资源,是一种共享资源,但同时只能被单一进程使用。其他进程必须依据操作系统的同步机制等待占用进程释放该资源,才可以重新竞争使用该共享资源
      WX20190813-113110@2x.png
    • 线程同步
      同理,进程内的多线程也需要同步
      方法:互斥量、读写锁、条件变量、自旋锁

    5,Linux进程

    • Linux进程类型
      前台进程:有终端,可以和用户交互(终端里手动运行一些文件)
      Ctrl+C停止
      后台进程:没有占用终端(优先级稍低于前台进程)(终端里手动运行一些文件、命令,尾部加&,即是后台进程,不占用终端)
      Ctrl+C无法停止,使用kill命令
      守护进程:一种后台进程,通常以d结尾的进程,随系统启动、关闭而启动关闭,保护如http,ssh等操作
    • 父子进程
      A调用fork创建进程B,B创建C
      pstree命令查看父子关系


      WX20190813-120407@2x.png
    • 状态标记


      WX20190813-120519@2x.png
    • 常用命令
      ps:
      查看当前进程
      ps -aux 打印进程的详细信息
      ps -u root 查看指定用户root的进程
      ps -aux | grep 'python3' 查看指定程序的进程
      ps -ef --forest 查看进程树
      排序sort
      top:
      top 查看系统进程的所有状态
      kill:
      给操作系统发送信号
      kill -l 查看信号列表
      kill -9 PID 无条件终止后台进程

    6,作业管理

    1.进程调度
    决策哪个就绪进程获得cpu使用权

    • 调度的三个步骤与机制:
      就绪队列排列机制、选择运行进程的委派机制、新老进程切换机制
    • 根据老进程是否执行完成,分为:非抢占式调度、抢占式调度
    • 相关算法
      先来先服务、短进程优先、高权优先、时间片轮转调度算法

    2.死锁
    竞争资源、调度顺序、进程通信等原因造成多进程永久等待状态。

    • 必要条件:互斥、请求保持、不可剥夺、环路等待。死锁一定满足这四个条件。
    • 死锁处理
      预防:破坏必要条件一个或多个
      银行家算法:以银行借贷系统分配策略为基础的算法。用到所需资源表、已分配资源表、还需分配表。

    三,存储管理

    1.内存分配与回收

    • 分配过程
      固定分区分配(最简单):若干分区,每个分区分配一个程序
      动态分区分配(常用):根据进程需要,动态分配空间(涉及数据结构与算法)
      相关数据结构:动态分区空闲表(表格),动态分区空闲链(双向链表保存空闲区域)
      动态分区分配算法:
      ①,首次适应算法(FF算法):分配内存是时,从头遍历链表,合适即用,若无则匹配失败。
      改进:循环适应算法,每次开始不从头部,而从上一次检索的位置开始。
      ②,最佳适应算法(BF算法):将链表按照大小排序,遍历链表,选择最合适的
      ③,快速适应算法(QF算法):多个链表,分表储存一样大小的空闲区
    • 回收过程


      QQ截图20190817181651.png

    2.段页式存储管理

    将进程逻辑空间等分为若干大小的页面,相应的物理内存空间分成同页面大小的物理块,然后以页面为单位,把进程空间分散的装进物理内存

    • 内存碎片
      所以页面的大小一般是512B ~ 8K


      微信截图_20190817184100.png
    • 页表
      记录进程逻辑空间与物理空间映射的表
      页表的缺点如下,故需要多级页表


      微信截图_20190817184513.png
    • 多级页表
      一级页表保存二级页表的地址,按需加载二级页表
    • 段式存储管理
      当一段逻辑存在于多个页表,执行效率降低,为此引入段式
      同页式,段式页式将逻辑空间分段,但是是根据连续逻辑的长度,分为若干不等的片段。
      使用段表记录
    • 终极方案:段页式存储
      先按段式分成若干逻辑段,再按页式将每个段按页的大小分页

    3.虚拟内存

    • 概念:进程的逻辑空间很大,程序需要使用的内存,存至物理内存,暂时不用的放入磁盘中
    • 程序的局部性原理
      CPU访问存储器时,无论是存取指令,还是存取数据,所访问的存储单元都趋于聚集在一个较小的连续区域中,(因此才可以实现虚拟内存)
      当访问页不在内存时,发出缺页中断,发起页面置换
      以上,就实现了程序拥有很大的内存空间,即虚拟内存
    • 虚拟内存的置换算法
      与高速缓存和主存之间的替换算法一样,是之前学过的FIFO,LFU,LRU
      前者解决了速度的问题,后者解决了容量的问题

    4.Linux储存管理

    • buddy内存管理算法
      主要解决内存外碎片问题。将外碎片转换为内碎片。
      原则是分配内存向上取整2的幂次方,申请77k,分配128K。
      算法:创建一系列空闲块链表,比如每个块大小相同,1K ~ 1M等一系列的链表,分配与回收~~
      分配:1M的内存,申请77K,开始只有1M的链表,删除节点,512K链表添加两个节点,判断512K过大,拿出一个512K节点分为两个256K节点。。。最后,拥有一个空的1M链表,拥有一个节点的512K链表,256K链表,128K链表,分配出去一个128K的内存。
      回收:归还128K内存,判断buddy节点,有一个空的128K节点,两者结合,128K链表为空,向256K链表添加一个节点,再次判断buddy节点,有buddy节点,继续合并。。。结果,1K ~ 512K链表都为空,1M的链表有一个节点。
      页内碎片:已经分配出去的内存空间,大于请求使用的空间,空闲部分是页内碎片(同段页式的内存碎片)
      页外碎片:没有分配出去的,但由于太小,无法分给新进程的内存碎片
    • Linux交换空间 swap
      swap实际是磁盘分区,系统物理内存满的时候,会把一些内存交换至swap,系统初始化的时候配置;
      由于实际是磁盘内存,故尽量少用,否则会降低系统速度;
      top命令可以查看swap空间;
      作用:冷启动的依赖(大型应用启动的时候需要大量内存);系统睡眠依赖(系统睡眠时内存存至swap,下次启动快);大应用依赖;
      对比虚拟内存:
      捕获.PNG

    四,文件管理

    1.文件的逻辑结构

    • 有结构文件:文本,图片视频,文档等
      文件内容由定长记录可变长记录组成
      定长记录储存文件格式,文件描述等结构数据
      可变长记录,存储具体内容
    • 无结构文件:二进制文件和链接库,exe文件,dll文件,so文件等
      内容长度以字节为单位

    2.辅存的空间分配

    • 辅存的分配方式
      连续分配,链接分配(隐式和显式),索引分配
    • 存储空间管理
      空闲表,空闲链表,位示图
    • 目录管理
      目录树

    3.Linux文件操作

    • Linux目录


      微信截图_20190818160419.png
      微信截图_20190818160450.png
    • Linux文件常用操作
      相关命令自查
    • Linux文件类型
      ls -al 查看文件列表,每个文件信息的第一个字符代表文件类型


      微信截图_20190818161137.png
    微信截图_20190818161013.png

    4.Linux文件系统

    • Linux文件系统
      常见的文件系统:FAT,NTFS,EXT2/3/4
      FAT:file allocation table,是微软dos/windows使用的,有FAT16/FAT32,使用一张表保存盘块信息
      NTFS:new technology file system Windows系统现在用的,从FAT发展而来
      EXT: extend file system Linux,macos使用,window不识别(Linux可使用和识别fat,ntfs)
    • ext文件系统
      由boot sector和很多block group组成
      前者是启动扇区,安装开机管理程序;后者是存储数据的块
      block group的组成:
      命令:stat + 文件名可以查看文件信息(一个文件有好多block group)


      微信截图_20190818170424.png

    五,操作系统设备管理

    1.IO设备的缓冲区
    为减少IO请求频率,提高CPu与IO并行行(类似减少DOM操作)
    程序的多次对IO设备的交互,改为程序先写入缓冲区,再统一发送给IO设备,变成一次交互。
    某一特定的进程可以拥有专用缓冲区,但是专用过多会占用大量内存,所以也存在公共缓冲区,即缓冲池
    2.spooling技术(同步变异步)(虚拟技术)
    (类似于减少DOM操作,也不太一样)
    原来三个进程要使用打印机,会排队等待,进程会出现阻塞
    spooling单独创建一个控制打印机的进程,三个进程把要打印的内容都写入spooling进程(很快),然后三个进程(认为已经打印完成了)不阻塞继续工作,打印机持续输出。

    下一篇,提升部分
    提升篇

    相关文章

      网友评论

          本文标题:计算机基础-操作系统篇

          本文链接:https://www.haomeiwen.com/subject/jjqpjctx.html