一些概念
用户态和系统态
用户态运行的进程可以直接读取用户程序的数据
系统态运行的进程几乎可以访问计算机的任何资源
系统调用
程序一般是运行在用户态,如果需要调用操作系统的系统态级别的子功能(设备管理、文件管理、进程控制、进程通信、内存管理),需要系统调用。通过系统调用向操作系统提出服务请求,并由操作系统完成。
进程和线程
一个进程可以有多个线程,多个线程共享进程的堆和方法区资源,但是每个线程都有自己的程序计数器、虚拟机栈、本地方法栈。
进程有哪几种状态
- 创建
- 就绪:获得了除了处理器之外的一切所需资源,一旦得到处理器资源(处理器分配的时间片)即可运行
- 运行
- 阻塞:等待某一事件而暂停运行如等待某资源为可用或等待 IO 操作完成
- 结束
线程之间的同步
- 互斥量:只有互斥对象的线程才有访问公共资源的权限,因为互斥对象只有一个,所以可以保证公共资源不会被多个线程同时访问
- 信号量:允许同一时刻多个线程访问同一个资源,但是需要控制统一时刻访问此资源的最大线程数量
- 事件:wait、notify
进程调度算法
- 先到先服务
- 短作业优先
- 时间片轮转
- 多级反馈
- 优先级