操作系统基础知识

注:本文内容源于GitHub开源项目https://github.com/CyC2018/CS-Notes.

操作系统概述


基本特征


并发
  • 并发是一段时间内可以运行多个程序
  • 并行是同一时刻可以运行多个程序(并行需要硬件支持,如流水线或多处理器)
  • 操作系统通过引入 进程和线程,使得程序能够并发的执行
共享
  • 系统中的资源可以被多个并发进程使用
  • 有两种共享方式:互斥共享和同时共享
  • 互斥共享的资源称为 临界资源,例如打印机等.同一时间只允许一个进程访问,需要 同步机制 来实现对临界资源的访问
虚拟
  • 把一个物理实体转换为多个逻辑实体
  • 主要有两种:时分复用技术和空分复用技术
  • 多进程在同一个处理器上并发执行使用时分复用技术,让每个进程轮流占有处理器,每个进程都有一个时间片.
  • 虚拟内存使用空分复用技术,将 物理内存 抽象为地址空间,每个进程都有各自的地址空间.地址空间和物理内存使用页进行交换,地址空间的页并不需要全部在物理内存中,当使用到一个没有在物理内存的页时,执行 页面置换 算法,将该页置换到内存中
异步

进程不是一次执行完毕,而是走走停停,以不可知的速度向前推进.

基本功能


  1. 进程管理

    1
    进程控制 进程同步  进程通信  死锁处理  处理机调度等
  2. 内存管理

    1
    内存分配 地址映射 内存保护和共享 虚拟内存
  3. 文件管理

    1
    文件存储空间管理 目录管理 文件读写管理  权限管理
  4. 设备管理

    1
    2
    处理用户的I/O请求,方便用户使用各种设备,并提高设备的利用率
    主要包括缓冲管理 设备分配 设备处理 虚拟设备等

系统调用(Linux系统运行时分为内核态[受保护的]和用户态)


如果一个进程在用户态需要使用内核态的功能,就进行系统调用而陷入内核,由操作系统完成.

  • Linux下的系统调用主要有:
    1
    2
    3
    4
    5
    6
    进程控制:  fork();exit();wait();
    进程通信: pipe();shmget();mmap();
    文件操作: open();read();write();
    设备操作: ioctl();read();write();
    信息维护: getpid();alarm();sleep();
    安全: chmod();umask();chown();

中断分类


  1. 外中断
    1
    由CPU执行指令以外的事件引起,如I/O完成中断,表示设备输入/输出处理已经完成.处理器能够发送下一个输入/输出请求.此外还有时钟中断.控制台中断等.
  2. 异常
    1
    由CPU执行指令的内部事件引起,如非法操作码,地址越界,算术溢出等.
  3. 陷入

    1
    在用户程序中使用系统调用.

进程管理


进程与线程


进程
  • 操作系统 资源分配基本单位
  • PCB(Process Control Block),描述进程的基本信息和运行状态,所谓的创建进程和撤销进程,都是指对 PCB 操作.
    线程
  • 操作系统独立调度的基本单位
  • 一个进程中可以可以有多个线程,线程之间共享进程资源
    进程与线程区别
  • 资源分配:进程是资源分配的基本单位,线程不拥有资源,但可以访问所属进程的资源
  • 调度:线程是独立调度的基本单位,在同一 进程 中,线程的切换不会引起进程的切换.从一个进程中的线程切换到另一个进程中的线程时,会引起进程切换.
  • 系统开销: 进程是资源分配的基本单位,所花的开销较大,线程切换则较小
  • 通信:线程间可以通过直接读写同一进程中的数据进程通信,进程通信需要借助IPC(Interprocess communication).
    1
    2
    3
    4
    5
    6
    7
    8
    IPC是一组编程接口,让程序员能够协调不同的进程,使之能在一个操作系统里同时运行,并相互传递,交换消息.
    Linux下进程间通信:
    1.管道
    2.信号
    3.消息队列
    4.共享内存
    5.信号量(Semaphore)
    6.套接字(Socket):一般的进程间的通信,可用于不同机器之间的进程通信.(分布式也用的是Socket通信).

进程状态的切换


  • 就绪状态:等待被调度
  • 运行状态:
  • 阻塞状态:等待资源

进程调度算法


批处理系统

批处理系统没有太多的用户操作,在该系统中,调度算法目标是保证吞吐量和周转时间(从提交到终止的时间).

  • 先来先服务

    1
    2
    按照请求的顺序进行调度
    有利于长作业,不利于短作业
  • 短作业优先

    1
    按作业运行时间长短顺序排列
  • 最短剩余时间优先

    1
    按估计剩余时间最短进行排序
交互式系统

交互式系统有大量的用户交互操作,在该系统中调度算法的目标是快速地进行响应

  • 时间片轮转

  • 优先级队列

  • 多级反馈队列
实时系统

实时系统要求一个请求在一个确定时间内得到响应
分为硬实时和软实时:前者必须满足绝对的截止时间,后者可容忍一定的超时

……….待完善

NoCoding

操作系统