0
点赞
收藏
分享

微信扫一扫

操作系统(Operating System)

sin信仰 2022-03-24 阅读 98
windows

一、计算机系统概述

在这里插入图片描述

操作系统的目标和功能

在这里插入图片描述

  1. 操作系统是计算机资源的管理者
    a. 处理机管理(进程控制、进程同步、进程通信、死锁处理、处理机调度)
    b. 存储器管理(提高内存利用率,内存的分配与回收、地址映射、内存保护与共享、内存扩充)
    c. 文件管理(计算机中的信息都是以文件的形式存在的)
    d. 设备管理(完成用户的I/O请求,方便用户使用设备、并提高设备的利用率)
  2. 操作系统为用户提供使用计算机硬件系统的接口
    a. 命令接口(用户通过控制台或终端输入操作命令,向系统提供各种服务要求)
    b. 程序接口(由系统调用组成,用户在程序中使用这些系统调用来请求操作系统为其提供服务)
    c. 图形接口最常见的图形用户界面GUI(最终还是通过调用程序接口实现的)
  3. 操作系统用作扩充机器
    没有任何软件支持的计算机称为裸机,实际呈现在用户面前的计算机系统是经过若干层软件改造的计算机。操作系统将裸机改造成功能更强、使用更方便的机器。我们将覆盖了软件的机器称为扩充机器或虚拟机。

内核态和用户态的区别 ※

CSDN链接

  1. 用户态可以执行cpu调用的非特权指令
  2. 内核态可以执行特权指令和非特权指令
  3. 用户态到内核态的切换是通过中断实现的
  4. 内核态到用户态的切换是通过特权指令实现的

内核态 → 用户态:执行一条特权指令——修改PSW的标志位为“用户态”,这个动作意味着操作系统将主动让出CPU使用权
用户态 → 内核态:由“中断”引发,硬件自动完成变态过程,触发中断信号意味着操作系统将强行夺回CPU的使用权

操作系统的运行机制

在这里插入图片描述

中断 ※

  1. 中断的引入——为了支持CPU和设备之间的并行操作
    中断也称外中断,指来自CPU执行指令以外的事件的发生,如设备发出的I/O结束中断、时钟中断等。这一类中断通常是与当前执行的指令无关的事件。
  2. 当发生中断时,CPU立即进入内核态
  3. 当发生中断后,当前进程暂停运行,并由操作系统内核对中断进行处理
  4. 对于不同的中断信号,会进行不同的处理
  5. 中断分为内中断和外中断。

异常

异常的引入——表示CPU执行指令本身时出现的问题
异常也称内中断、例外或陷入,指源自CPU执行指令内部的事件,如程序的非法操作码、地址越界、算术溢出、缺页异常等。对异常的处理一般要依赖与当前程序的运行现场,不能被屏蔽。

中断和异常的联系与区别

在这里插入图片描述

二、进程管理

进程和线程的区别 ※※

  1. 进程(Process)是系统进行资源分配和调度的基本单位,线程(Thread)是CPU调度和分配的基本单位;
  2. 线程依赖于进程而存在,一个进程至少有一个线程
  3. 进程有自己的独立地址空间,线程共享所属进程的地址空间
  4. 进程是拥有系统资源的一个独立单位,而线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),和其他线程共享本进程的相关资源如内存、I/O、cpu等;
  5. 在进程切换时,涉及到整个当前进程CPU环境的保存环境的设置以及新被调度运行的CPU环境的设置,而线程切换只需保存和设置少量的寄存器的内容,并不涉及存储器管理方面的操作,可见,进程切换的开销远大于线程切换的开销
  6. 线程之间的通信更方便,同一进程下的线程共享全局变量等数据,而进程之间的通信需要以进程间通信(IPC)的方式进行
  7. 多线程程序只要有一个线程崩溃,整个程序就崩溃了,但多进程程序中一个进程崩溃并不会对其它进程造成影响,因为进程有自己的独立地址空间,因此多进程更加健壮

进程和程序的区别 ※

(1) 程序是永存的;进程是暂时的,是程序在数据集上的一次执行,有创建有撤销,存在是暂时的;
(2)程序是静态的观念,进程是动态的观念
(3)进程具有并发性,而程序没有;
(4)进程是竞争计算机资源的基本单位,程序不是。
(5)进程和程序不是一一对应的: 一个程序可对应多个进程即多个进程可执行同一程序; 一个进程可以执行一个或几个程序

进程的通信方式 ※

  1. 共享内存
    顾名思义,共享内存就是两个进程同时共享一块内存,然后在这块内存上的数据可以共同修改和读取,达到通信的目的。
  2. 无名管道
    无名管道是半双工的通信方式;并且只能在具有亲缘关系的进程之间使用(亲缘关系是指进程间的父子关系,兄弟关系等),具有亲缘关系的进程在创建时同时拥有一个无名管道的句柄,可以进行读写;无名管道不存在磁盘节点,只存在与内存中用完即销毁。
  3. 命名管道
    命名管道也是半双工的通信方式;可以在不具有亲缘关系的进程间通信;有名管道存在磁盘节点,有对应的FIFO文件,凡是可以访问该路径的文件的进程均可以进行通信。
  4. 消息队列
    消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。
  5. 套接字
    套接字是网络编程的api,通过套接字可以让不同的机器间的进程进行通信,常用于客户端进程和服务器进程的通信。
  6. 信号
    信号是Unix系统中使用的最古老的进程间通信的方法之一。操作系统通过信号来通知进程系统中发生了某种预先规定好的事件(一组事件中的一个),它也是用户进程之间通信和同步的一种原始机制。一个键盘中断或者一个错误条件(比如进程试图访问它的虚拟内存中不存在的位置等)都有可能产生一个信号。Shell也使用信号向它的子进程发送作业控制信号。

进程的五种状态及转换过程 ※

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

进程的调度算法有哪些? ※※

  1. 先来先服务 first-come first-serverd(FCFS)
    按照请求的顺序进行调度。非抢占式,开销小,无饥饿问题,响应时间不确定(可能很慢);
    对短进程不利,对IO密集型进程不利。
  2. 短作业优先 shortest job first(SJF)
    按估计运行时间最短的顺序进行调度。非抢占式,吞吐量高,开销可能较大,可能导致饥饿问题;
    对短进程提供好的响应时间,对长进程不利,如果一直有短作业过来,那么长作业就会永远得不到调度。
  3. 最高响应比优先
    响应比 = 1+ 等待时间/处理时间。同时考虑了等待时间的长短和估计需要的执行时间长短,很好的平衡了长短进程。非抢占,吞吐量高,开销可能较大,提供好的响应时间,无饥饿问题。
  4. 优先级调度算法
    为每个进程分配一个优先级,按优先级进行调度。为了防止低优先级的进程永远等不到调度,可以随着时间的推移增加等待进程的优先级。
  5. 时间片轮转
    将所有就绪进程按 FCFS 的原则排成一个队列,用完时间片的进程排到队列最后。抢占式(时间片用完时),开销小,无饥饿问题,为短进程提供好的响应时间;
    若时间片小,进程切换频繁,吞吐量低;若时间片太长,实时性得不到保证。
  6. 多级反馈队列调度算法
    设置多个就绪队列1、2、3…,优先级递减,时间片递增。只有等到优先级更高的队列为空时才会调度当前队列中的进程。如果进程用完了当前队列的时间片还未执行完,则会被移到下一队列。
    抢占式(时间片用完时),开销可能较大,对IO型进程有利,可能会出现饥饿问题。

三、内存管理

举报

相关推荐

0 条评论