02 | 操作系统相关知识

2019-03-29  本文已影响0人  fcbhank

知识点汇总

图1 操作系统知识点汇总

操作系统部分知识有助于对服务问题进行排查定位,主要考察了解和应用,在面试中所占比较小。

1. 进程与线程(♥♥♥)

1.1 进程与线程之间的区别与联系?
1.2 线程的状态

线程一般包含5种状态[1]创建、就绪、运行、阻塞和终止。有的会把线程状态分为6[2]初始、运行、阻塞、等待、超时等待和终止,这种的将原来5种状态中的就绪运行统称为运行,把原来阻塞细分为了阻塞、等待、超时等待三种。这样-1+2就相当于多增加了1种状态,这里还是采用经典的5种线程状态说法,可以用图1来表示5种线程状态之间的关系。

图1 线程状态转换
1.3 线程调度(调度算法)[4]

在分析各种调度算法前,先简要了解一下分时系统实时系统[5](典型的分时系统有UNIX和Linux,而对于windows,严格上说它的本质应该是多种集合的操作系统,它在运行过程中,根据不同的进程会有实时响应和分时响应,部分功能中,它也可以实现分布式操作。)。简单来说分时系统和实时系统都具备多路性(能为多个终端提供服务)和独立性(每个终端之间互不干扰),在及时性方面分时系统考虑的时间是在人可接受的范围内,而实时系统由于军事、工业、多媒体等特定业务的执行需要将时间控制在秒级、百毫秒级直至毫秒级甚至0.1毫秒;在交互性方面,分时系统具备该特性不必说,而实时信息处理系统具备的交互性也仅限于特定的服务程序;至于可靠性,实时系统此方面的要求要比分时系统高的多。

NOTE1:假设有三个待调度的队列Q1、Q2和Q3,优先级依次递减。进程在进入待调度的队列等待时,首先进入优先级最高的Q1等待。  
NOTE2:首先调度优先级高的队列中的进程。若高优先级中队列中已没有调度的进程,则调度次优先级队列中的进程。
NOTE3:对于同一个队列中的各个进程,按照时间片轮转法调度。比如Q1队列的时间片为N,那么Q1中的作业在经历了N个时间片后若还没有完成,则进入Q2队列等待,若Q2的时间片用完后作业还不能完成,一直进入下一级队列Q3,直至完成。  
NOTE4:在低优先级的队列中的进程在运行时,又有新作业达到最高优先级队列,那么在运行完这个时间片后,CPU马上分配给新到达的作业(抢占式)。

1.4 线程切换步骤[12]

多线程不一定就比单线程程序跑的快,因为多线程应用程序会带来额外的开销和竞争问题,可能会拖慢系统的执行速度。这些因素包括:对IO设备的竞争,对锁的竞争,以及CPU对线程执行上下文的频繁切换等。

1.4 Linux下的进程间通信(InterProcess Communication, IPC)

面试中间件研发时常考察,了解以下6种进程间通信的相关原理[13]

1.5 协程

(1)协程又称为“微线程”,是一种用户态的轻量级线程(协程的调度完全由用户控制)。协程拥有自己的寄存器上下文和栈,调度切换时直接操作栈而基本没有内核切换的开销,所以其切换的代价要比线程上下文切换小很多,另外它可以不加锁的访问全局变量。
(2)java的第三方协程框架,如Kilimquasar

2. Linux常用命令

3. 死锁

两个线程都在等待对方先完成,造成了程序的停滞,一般程序的死锁都是在程序运行时出现的。

4. 内存分页管理与Swap

Linux中关于swap、虚拟内存和page的区别

5. 任务队列与CPU Load

任务队列,消息队列和rpc的区别是什么?
CPU负载和 CPU使用率

6. 知识点扩展(了解)

6.1 内存屏障

内存屏障,也称内存栅栏,内存栅障,屏障指令等, 是一类同步屏障指令,是CPU或编译器在对内存随机访问的操作中的一个同步点,使得此点之前的所有读写操作都执行后才可以开始执行此点之后的操作。

6.2 指令乱序

(转)CPU乱序执行原理

6.3 CPU亲和性(affinity)

Linux中CPU亲和性(affinity)

6.4 Netfilter和iptables

netfilter/iptables 简介


  1. 李兴华. Java开发实战经典[M]. 北京: 清华大学出版社, 2009, 281-282.

  2. 潘建南. Java线程的6种状态及切换(透彻讲解)

  3. 积极解放. JAVA 线程状态及转化

  4. 超人. 线程调度算法分析

  5. ___Blue_H. 分时操作系统与实时操作系统

  6. Coding-lover. 进程和线程调度算法

  7. 诺贝尔爱情奖. Java线程的优先级

  8. 潜行的Q. java的线程优先级和守护线程

  9. FangZheng. 线程的优先级

  10. 强迫症Kobe. 为什么优先级高的线程并不一定先执行

  11. taxue505. 多级反馈队列调度算法

  12. 比特流. 多线程的代价及上下文切换

  13. 易霂. 6种Linux进程间的通信方式

上一篇下一篇

猜你喜欢

热点阅读