操作系统

270 阅读3分钟

1.什么是操作系统

  • 操作系统控制和管理整个计算机系统的硬件和软件,通过合理地调度计算机资源,给用户和软件提供接口和环境,操作系统是一种软件。
  • 操作系统的特征包括并发、共享、虚拟、异步
  • 提供的功能包括:内存管理、处理器管理、文件管理和设备管理

2.系统调用

  • 通过系统调用实现从用户态转变为内核态
  • 用户态是指运行用户程序的状态;内核态是指执行系统程序的状态;它们两者的区别是系统态可以访问系统所有资源,对系统的影响非常大
  • 系统调用按照功能可以分为内存管理、进程控制、进程通信、设备管理、文件管理

3.进程和线程

  • 线程是CPU分配的基本单位
  • 进程是除CPU之外其他资源分配的基本单位
  • 对于Java来说,启动虚拟机就启动了一个进程,进程内部可以运行多个线程
  • 线程共享进程的资源,也有部分自己私有的资源
  • 线程私有的:程序计数器、虚拟机栈、本地方法栈
  • 线程共享的:堆、方法区

4.进程状态的转换

  • 包括三个转换的状态:就绪态、阻塞态、运行态,和创建态、结束态共五种

  • 三态转换

    • 就绪态是指获得除CPU以外其他所有资源,运行态缺少CPU资源进入就绪态
    • 运行态是指运行状态,就绪态获得CPU后进入运行态
    • 阻塞态是指等待除CPU之外其它的资源,运行态缺少其它资源进入阻塞态,阻塞态获取到除CPU资源进入就绪态

5.进程通信

  • 进程之间的信息交换,低级通信方式如PV操作,高级通信方式有:

    • 共享存储:设置一段共享空间,两个进程通过对共享空间的读写操作进行通信,需要使用同步操作
    • 消息传递:以格式化的消息进行通信
    • 管道通信:特殊的消息传递,可以一边读一边写
    • 套接字:客户端和服务器之间通过网络来实现通信

6.进程同步

7.进程调度算法

  • 先来先服务算法(FCFS),顾名思义先进入调度队列的进程优先分配CPU资源
  • 短作业优先算法(SJF),顾名思义从就绪队列中选择预计执行时间最短的进程分配CPU资源
  • 优先级调度算法,选择优先级最高的进程分配CPU资源
  • 高响应比优先调度算法,计算出响应比,选择最高的进程分配资源。响应比计算是(等待时间+要求服务时间)/要求服务时间,意味着等待时间越久,响应比越高
  • 时间片轮转算法,以时间片为单位,轮流分配CPU资源
  • 多级反馈队列调度算法,结合了时间片轮转和优先级调度算法。设置多个就绪队列,分配不同的优先级,然后在高优先级队列中使用时间片轮转调度

8.死锁

  • 多个进程竞争资源导致出现一种僵局,没有外力改变,所有的进程都没办法向前推进

8.1 产生的条件

  • 共四个:互斥、不剥夺、请求并保持和循环等待
  • 互斥是指资源是互斥占有的,在某个时间点只能分配给一个进程
  • 不剥夺是指资源除非自己释放,否则会一直占有,其他进程不能剥夺
  • 请求并保持是指进程至少占有了一个资源,请求的新资源被其他进程占有,因此进入阻塞状态,但保持对原有资源的占有
  • 循环等待是指存在循环等待链,链中每个进程都占有一个资源,向上一个进程申请它占有的资源