操作系统总结笔记

操作系统总结笔记

用户态内核态

  1. 用户态(user mode) : 用户态运行的进程或可以直接读取用户程序的数据。
  2. 内核态(kernel mode):可以简单的理解系统态运行的进程或程序几乎可以访问计算机的任何资源,不受限制。

系统调用

凡是与系统态级别的资源有关的操作(如文件管理、进程控制、内存管理等),都必须通过系统调用方式向操作系统提出服务请求,并由操作系统代为完成。

这些系统调用按功能大致可分为如下几类:

  • 设备管理。完成设备的请求或释放,以及设备启动等功能。
  • 文件管理。完成文件的读、写、创建及删除等功能。
  • 进程控制。完成进程的创建、撤销、阻塞及唤醒等功能。
  • 进程通信。完成进程之间的消息传递或信号传递等功能。
  • 内存管理。完成内存的分配、回收以及获取作业占用内存区大小及地址等功能

进程通信的方式

进程有三大部分:PCB是给操作系统用的,是进程存在的唯一标志。程序段数据段是给进程自己用的

  • 管道(Pipes) :用于具有亲缘关系的父子进程间或者兄弟进程之间的通信。
  • 信号(Signal) :信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生;
  • 消息队列(Message Queuing) :消息队列克服了信号承载信息量少,管道只能承载无格式字 节流以及缓冲区大小受限等缺。
  • 信号量(Semaphores) :信号量是一个计数器,用于多进程对共享数据的访问,信号量的意图在于进程间同步。这种通信方式主要用于解决与同步相关的问题并避免竞争条件。
  • 共享内存(Shared memory) :使得多个进程可以访问同一块内存空间,不同进程可以及时看到对方进程中对共享内存中数据的更新。这种方式需要依靠某种同步操作,如互斥锁和信号量等。可以说这是最有用的进程间通信方式。
  • 套接字(Sockets) : 此方法主要用于在客户端和服务器之间通过网络进行通信。套接字是支持TCP/IP的网络通信的基本操作单元,可以看做是不同主机之间的进程进行双向通信的端点,简单的说就是通信的两方的一种约定,用套接字中的相关函数来完成通信过程。

线程同步方式

  1. 互斥量(Mutex):采用互斥对象机制,只有拥有互斥对象的线程才有访问公共资源的权限。因为互斥对象只有一个,所以可以保证公共资源不会被多个线程同时访问。比如 Java 中的 synchronized 关键词和各种 Lock 都是这种机制。
  2. 信号量(Semphares) :它允许同一时刻多个线程访问同一资源,但是需要控制同一时刻访问此资源的最大线程数量
  3. 事件(Event) :Wait/Notify:通过通知操作的方式来保持多线程同步,还可以方便的实现多线程优先级的比较操

进程与线程的区别

  • 调度线程是独立调度的基本单位,进程是资源分配的基本单位。在同一进程中,线程的切换不会引起进程切换。在不同进程中进行线程切换,将会引起进程切换。
  • 拥有资源:进程是拥有资源的基本单位,而线程不拥有系统资源(除了少量资源,比如栈,程序计数 器,寄存器),不过线程可以访问其隶属进程的系统资源。
  • 并发性:在引入线程的操作系统中,不仅进程之间可以并发执行,而且同一个进程内的多个线程之间 也可以并发执行,能提高系统的吞吐量,系统的并发性也更好。
  • 系统开销:在创建进程和撤销进程时,系统都要为之分配或回收资源,所以操作系统为进程付出的系统开销远大于创建线程或撤销线程的开销。
  • 同步和通信:多线程之间的同步和通信容易实现。

进程调度算法

  • 先到先服务(FCFS)调度算法 : 从就绪队列中选择一个最先进入该队列的进程为之分配资源,使它立即执行并一直执行到完成或发生某事件而被阻塞放弃占用CPU时再重新调度。
  • 短作业优先(SJF)的调度算法 : 从就绪队列中选出一个估计运行时间最短的进程为之分配资源,使它立即执行并一直执行到完成或发生某事件而被阻塞放弃占用CPU时再重新调度。
  • 时间片轮转调度算法 : 时间片轮转调度是一种最古老,最简单,最公平且使用最广的算法,又称RR(Round robin)调度。每个进程被分配一个时间段,称作它的时间片,即该进程允许运行的时间。
  • 多级反馈队列调度算法 :前面介绍的几种进程调度的算法都有一定的局限性。如短进程优先的调度算法,仅照顾了短进程而忽略了长进程 。多级反馈队列调度算法既能使高优先级的作业得到响应又能使短作业(进程)迅速完成。,因而它是目前被公认的一种较好的进程调度算法,UNIX操作系统采取的便是这种调度算法。
  • 优先级调度 : 为每个流程分配优先级,首先执行具有最高优先级的进程,依此类推。具有相同优先级的进程以FCFS方式执行。可以根据内存要求,时间要求或任何其他资源要求来确定优先级。

磁盘寻道算法

(1)先来先服务(FCFS):

这是一种简单的磁盘调度算法。它根据进程请求访问磁盘的先后次序进行调度。此算法的优点是公平、简单,且每个进程的请求都能依次得到处理,不会出现某一进程的请求长期得不到满足的情况。但此算法由于未对寻道进行优化,致使平均寻道时间可能较长

(2)最短寻道时间优先(SSTF):

该算法选择这样的进程,其要求访问的磁道与当前磁头所在的磁道距离最近,以使每次的寻道时间最短,但这种调度算法却不能保证平均寻道时间最短。
(3)扫描算法(SCAN):

SCAN算法不仅考虑到欲访问的磁道与当前磁道的距离,更优先考虑的是磁头的当前移动方向。例如,当磁头正在自里向外移动时,SCAN算法所选择的下一个访问对象应是其欲访问的磁道既在当前磁道之外,又是距离最近的。这样自里向外地访问,直到再无更外的磁道需要访问才将磁臂换向,自外向里移动。这时,同样也是每次选择这样的进程来调度,即其要访问的磁道,在当前磁道之内,从而避免了饥饿现象的出现。由于这种算法中磁头移动的规律颇似电梯的运行,故又称为电梯调度算法

(4)循环扫描算法(CSCAN)

CSCAN算法是对扫描算法的改进。如果对磁道的访问请求是均匀分布的,当磁头到达磁盘的一端,并反向运动时落在磁头之后的访问请求相对较少。这是由于这些磁道刚被处理,而磁盘另一端的请求密度相当高,且这些访问请求等待的时间较长,为了解决这种情况,循环扫描算法规定磁头单向移动。例如,只自里向外移动,当磁头移到最外的被访问磁道时,磁头立即返回到最里的欲访磁道,即将最小磁道号紧接着最大磁道号构成循环,进行扫描

零拷贝

文件管理

1. 逻辑结构的概念

所谓的“逻辑结构”,就是指在用户看来, 文件内部的数据应该是如何组织起来的。

而 “物理结构”指的是在操作系统看来,文件的数据是如何存放在外存中的。

文件的逻辑结构分为:

  • 无结构文件

  • 有结构文件

    • 顺序文件
    • 索引文件
    • 索引顺序文件
2. 无结构文件

无结构文件:文件内部的数据就是一系列二进制流或字符流组成。又称“流式文件”。

如: Windows操作系统中的.txt 文件。

文件内部的数据其实就是一系列字符流,没有明显的结构特性。因此也不用探讨无结构文件的逻辑结构问题。

3. 有结构文件
a. 定义

有结构文件:由一组相似的记录组成,又称“记录式文件”。每条记录又若干个数据项组成。

如: 数据库表文件。一般来说,每条记录有一个数据项可作为关键字(作为识别不同记录的ID),记录可以是定长的或可变长的

b. 逻辑结构

根据有结构文件中的各 条记录在逻辑上如何组 织,可以分为三类

  • 顺序文件
  • 索引文件
  • 索引顺序文件
顺序文件

文件中的记录一个接一个地顺序排列(逻辑上),记录可以是定长的或可变长的。各个记录在物理上可以顺序存储或链式存储。

索引文件

对于可变长记录文件,要找到第i个记录,必须先顺序第查找前i-1个记录, 但是很多应用场景中又必须使用可变长记录。如何解决这个问题?

建立一张索引表以加快 文件检索速度。每条记录对应一个索引项。

索引顺序文件

思考索引文件的缺点**:每个记录对应一个索引表项,因此索引表可能会很大**。

比如:文件的每个记录平均只占8B,而每个索引表项占32个字节,那么索引表都要比文件内容本身大4倍,这样对存储空间的利用率就太低了。

索引顺序文件是索引文件和顺序文件思想的 结合。

索引顺序文件中,同样会为文件建立 一张索引表,但不同的是:并不是每个记录 对应一个索引表项,而是一组记录对应一个索引表项。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IyRnM1EQ-1616847910368)(https://i.loli.net/2021/03/27/YNlEO7tXn9gZ5Qp.png)]

为了进一步提高检索效率,可以为顺序文件建立多级索引表

内存管理机制

  1. 块式管理 : 远古时代的计算机操系统的内存管理方式。将内存分为几个固定大小的块,每个块中只包含一个进程。如果程序运行需要内存的话,操作系统就分配给它一块,如果程序运行只需要很小的空间的话,分配的这块内存很大一部分几乎被浪费了。这些在每个块中未被利用的空间,我们称之为碎片。
  2. 页式管理 :把主存分为大小相等且固定的一页一页的形式,页较小,相对相比于块式管理的划分力度更大,提高了内存利用率,减少了碎片。页式管理通过页表对应逻辑地址和物理地址。
  3. 段式管理 : 页式管理虽然提高了内存利用率,但是页式管理其中的页实际并无任何实际意义。 段式管理把主存分为一段段的,每一段的空间又要比一页的空间小很多 。但是,最重要的是段是有实际意义的,每个段定义了一组逻辑信息,例如,有主程序段 MAIN、子程序段 X、数据段 D 及栈段 S 等。 段式管理通过段表对应逻辑地址和物理地址。

页式置换算法

  • 最佳置换算法OPT
  • 先进先出算法FIFO
  • 近期最久未用过算法LRU
  • CLOCK置换算法NRU
  • 页面缓冲算法PBA
  • 近期最少使用算法LFU

虚拟内存

虚拟内存是一种内存分配方案,是一项可以用来辅助内存分配的机制。

死锁的原因

  • 互斥:即只有对必须互斥使用的资源的争抢才会导致死锁。

  • 请求和保持:进程已经拥有资源,但又提出了新的资源请求,而该资源又被其他进程所占有,于是该进程进入阻塞态,但还是对自己拥有的资源保持不放,贪得无厌。

  • 不可抢占/不剥夺:进程所获得的资源在未使用完之前,不能由其他进程强行夺走,只能主动释放。

  • 循环等待:存在一种进程资源的循环等待环路,该环路中的每个进程都在等待下一个进程所占有的资源。

什么是僵尸进程

僵尸进程是已完成且处于终止状态,但在进程表中却仍然存在的进程。僵尸进程通常发生在父子关系的进程中,由于父进程仍需要读取其子进程的退出状态所造成的。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值