操作系统[系统学习二]

系统调用

操作系统[系统学习二]

什么是系统调用

  • 操作系统作为应用程序/用户 和 底层硬件之间的接口, 需要为上层提供一些服务.
  • 这些接口分为命令接口(面向用户) 和 程序接口(面向应用程序)
  • 程序接口 就是由 一组系统调用构成.
  • 应用程序可通过系统调用 来执行一些特权指令

操作系统[系统学习二]

为什么提供系统调用

  • 防止各个应用程序随意使用这些共享的系统资源, 造成混乱. 要想使用必须通过系统调用想操作系统发出请求, 然后由操作系统出面协调管理他们的使用.
    操作系统[系统学习二]
  • 操作系统是各种计算机资源的管理者, 当应用程序中涉及到与资源相关的操作时, 必须通过系统调用的方式想操作系统提出服务请求, 让操作系统代为完成.
  • 保证系统的稳定性和安全性, 防止用户进行非法操作
  • 系统调用涉及到对系统资源的管理, 对进程的控制, 这些功能都需要执行一些特权指令, 因此系统调用需要在和心态下进行
    操作系统[系统学习二]

系统调用和库函数的区别

操作系统[系统学习二]

  • 操作系统会对上层提供系统调用的接口(隐藏了对硬件操作的细节), 应用程序理论上可以直接通过汇编语言调用这些接口
  • 而现代的高级语言编程中, 高级语言中的一些库函数会对操作系统提供的系统调用进一步封装, 应用程序可以直接使用库函数, 更加方便

系统调用背后的过程

  • 操作系统通过int陷入指令对应的参数来选择相应的系统调用 (int : interrupt的缩写)
  • 陷入指令运行在用户态, 执行完后立即引发一个内中断, CPU进入和心态.
  • 陷入指令(trap指令, 访管指令)唯一一个只能在用户态执行, 不能再核心态执行
    操作系统[系统学习二]

操作系统[系统学习二]

总结

操作系统[系统学习二]

进程

操作系统[系统学习二]

定义

  • 程序 : 一个指令序列
  • 早期的计算机是单道批的, 内存中一次只能有一个程序, 系统的各种资源(CPU, IO设备)都是这个程序的
    操作系统[系统学习二]
  • 多道批处理系统, 多个进程并发执行, 共享系统资源. 内存中会存放多个程序的程序段 和 数据段.
  • 操作系统为了管理这些程序,完成并发执行, 需要知道内存中对应的程序段和数据段放在哪里, 需要知道哪些设备被哪些程序使用. 因此引入了进程, 进程实体的概念
    • 系统为每个运行的程序配置一个数据结构,称为进程控制块(PCB), 用来描述进程的各种信息 (如程序代码存放的位置)
    • PCB, 程序代码段, 数据段三部分构成了进程实体
    • 一般情况, 进程实体 简称为 进程, 创建进程, 就是创建进程实体中的PCB, 撤销进程就是撤销进程实体中的PCB.
    • PCB是进程存在的唯一标识
  • 进程 是进程实体的运行过程, 是系统资源分配和调度的一个独立单位 (强调动态性)
    • 进程实体是静态的, 进程是动态的. 不过除非专门区分, 否则当作是一样的.

组成

  • 进程(进程实体) 由 程序段, 数据段, PCB三部分组成
    • PCB : 操作系统通过PCB管理进程, PCB中包含管理进程所需的各种信息
    • 程序段 : 程序代码
    • 数据段 : 程序运行时使用, 产生的数据.

操作系统[系统学习二]
操作系统[系统学习二]

组织方式

  • 在一个系统中, 通常有非常多的PCB, 为了对他们加以有效的管理, 应该哟哦那个适当的方式将这些PCB组织起来
    • 进程的组成 : 指的是进程内部有哪些部分构成
    • 进程的组织 : 多个进程之间的组织方式问题
    • 两种组织方式 : 链接方式, 索引方式

操作系统[系统学习二]

链接方式

  • 使用不同的指针指向不同状态的进程队列

操作系统[系统学习二]

索引方式

  • 使用不同的指针指向不同状态的索引表, 表项指向处于该状态的PCB

操作系统[系统学习二]

进程的特性

操作系统[系统学习二]

总结

操作系统[系统学习二]

进程的状态与转换

操作系统[系统学习二]

三种基本状态

  • 进程就是程序的一次执行, 在这个执行过程中, 有时进程被CPU处理, 有时有需要等待CPU处理, 所以进程的状态是有各种变化的. 为了方便操作系统对各个进程的管理, 操作系统需要将进程合理地划分为几种状态

  • 三种基本状态

    • 运行态 (Running) : 占用CPU运行 (单核CPU每一时刻只能有一个进程处于运行状态)
    • 就绪态(Ready) : 已经具备运行条件, 但由于没有空闲的CPU, 而暂时不能运行(拥有了除了CPU以外的所有需要的资源, 万事具备只欠东风)
    • 阻塞态 (Waiting/Blocked 等待态) : 因等待某一事件而暂时不能运行 (如等待系统分配打印机, 等待磁盘IO. CPU是计算机中最昂贵的不见, 为了提高CPU的利用率, 需要先将其他需要的资源分配到尾, 才能得到CPU的服务)
  • 另外两种状态

    • 创建态(New) : 进程正在被创建, 操作系统为进程分配资源, 初始化PCB
    • 终止态(Terminated) : 进程正在从系统中撤销, 操作系统回收进程拥有的资源, 撤销PCB

状态转换

操作系统[系统学习二]

总结

操作系统[系统学习二]