操作系统基础知识
注:本文内容源于GitHub开源项目https://github.com/CyC2018/CS-Notes.
操作系统概述
基本特征
并发
- 并发是一段时间内可以运行多个程序
- 并行是同一时刻可以运行多个程序(并行需要硬件支持,如流水线或多处理器)
- 操作系统通过引入 进程和线程,使得程序能够并发的执行
共享
- 系统中的资源可以被多个并发进程使用
- 有两种共享方式:互斥共享和同时共享
- 互斥共享的资源称为 临界资源,例如打印机等.同一时间只允许一个进程访问,需要 同步机制 来实现对临界资源的访问
虚拟
- 把一个物理实体转换为多个逻辑实体
- 主要有两种:时分复用技术和空分复用技术
- 多进程在同一个处理器上并发执行使用时分复用技术,让每个进程轮流占有处理器,每个进程都有一个时间片.
- 虚拟内存使用空分复用技术,将 物理内存 抽象为地址空间,每个进程都有各自的地址空间.地址空间和物理内存使用页进行交换,地址空间的页并不需要全部在物理内存中,当使用到一个没有在物理内存的页时,执行 页面置换 算法,将该页置换到内存中
异步
进程不是一次执行完毕,而是走走停停,以不可知的速度向前推进.
基本功能
进程管理
1
进程控制 进程同步 进程通信 死锁处理 处理机调度等
内存管理
1
内存分配 地址映射 内存保护和共享 虚拟内存
文件管理
1
文件存储空间管理 目录管理 文件读写管理 权限管理
设备管理
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
由CPU执行指令以外的事件引起,如I/O完成中断,表示设备输入/输出处理已经完成.处理器能够发送下一个输入/输出请求.此外还有时钟中断.控制台中断等.
异常
1
由CPU执行指令的内部事件引起,如非法操作码,地址越界,算术溢出等.
陷入
1
在用户程序中使用系统调用.
进程管理
进程与线程
进程
- 操作系统 资源分配 的 基本单位
- PCB(Process Control Block),描述进程的基本信息和运行状态,所谓的创建进程和撤销进程,都是指对 PCB 操作.
线程
- 操作系统独立调度的基本单位
- 一个进程中可以可以有多个线程,线程之间共享进程资源
进程与线程区别
- 资源分配:进程是资源分配的基本单位,线程不拥有资源,但可以访问所属进程的资源
- 调度:线程是独立调度的基本单位,在同一 进程 中,线程的切换不会引起进程的切换.从一个进程中的线程切换到另一个进程中的线程时,会引起进程切换.
- 系统开销: 进程是资源分配的基本单位,所花的开销较大,线程切换则较小
- 通信:线程间可以通过直接读写同一进程中的数据进程通信,进程通信需要借助IPC(Interprocess communication).
1
2
3
4
5
6
7
8IPC是一组编程接口,让程序员能够协调不同的进程,使之能在一个操作系统里同时运行,并相互传递,交换消息.
Linux下进程间通信:
1.管道
2.信号
3.消息队列
4.共享内存
5.信号量(Semaphore)
6.套接字(Socket):一般的进程间的通信,可用于不同机器之间的进程通信.(分布式也用的是Socket通信).
进程状态的切换
- 就绪状态:等待被调度
- 运行状态:
- 阻塞状态:等待资源
进程调度算法
批处理系统
批处理系统没有太多的用户操作,在该系统中,调度算法目标是保证吞吐量和周转时间(从提交到终止的时间).
先来先服务
1
2按照请求的顺序进行调度
有利于长作业,不利于短作业短作业优先
1
按作业运行时间长短顺序排列
最短剩余时间优先
1
按估计剩余时间最短进行排序
交互式系统
交互式系统有大量的用户交互操作,在该系统中调度算法的目标是快速地进行响应
时间片轮转
优先级队列
- 多级反馈队列
实时系统
实时系统要求一个请求在一个确定时间内得到响应
分为硬实时和软实时:前者必须满足绝对的截止时间,后者可容忍一定的超时