计算机基础-操作系统篇

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

一,操作系统概览

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

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


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

    计算机基础-操作系统篇_第2张图片
    捕获.PNG

二,进程

1.进程:

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

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

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


计算机基础-操作系统篇_第3张图片
捕获.PNG

3.五状态

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

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

4.进程同步

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

5,Linux进程

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


  • 状态标记


  • 常用命令
    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算法):多个链表,分表储存一样大小的空闲区
  • 回收过程


    计算机基础-操作系统篇_第8张图片
    QQ截图20190817181651.png

2.段页式存储管理

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

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


    计算机基础-操作系统篇_第9张图片
    微信截图_20190817184100.png
  • 页表
    记录进程逻辑空间与物理空间映射的表
    页表的缺点如下,故需要多级页表


    计算机基础-操作系统篇_第10张图片
    微信截图_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,下次启动快);大应用依赖;
    对比虚拟内存:
    计算机基础-操作系统篇_第11张图片
    捕获.PNG

四,文件管理

1.文件的逻辑结构

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

2.辅存的空间分配

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

3.Linux文件操作

  • Linux目录


    计算机基础-操作系统篇_第12张图片
    微信截图_20190818160419.png

    计算机基础-操作系统篇_第13张图片
    微信截图_20190818160450.png
  • Linux文件常用操作
    相关命令自查
  • Linux文件类型
    ls -al 查看文件列表,每个文件信息的第一个字符代表文件类型


    微信截图_20190818161137.png
计算机基础-操作系统篇_第14张图片
微信截图_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)


    计算机基础-操作系统篇_第15张图片
    微信截图_20190818170424.png

五,操作系统设备管理

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

下一篇,提升部分
提升篇

你可能感兴趣的:(计算机基础-操作系统篇)