计算机基础-操作系统篇

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

一,操作系统概览

  • 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进程(很快),然后三个进程(认为已经打印完成了)不阻塞继续工作,打印机持续输出。

下一篇,提升部分
提升篇

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342