|
16 | 16 |
|
17 | 17 | 面试官顶着蓬松的假发向我走来,只见他一手拿着厚重的 Thinkpad ,一手提着他那淡黄的长裙。 |
18 | 18 |
|
19 | | -<img src="http://wx4.sinaimg.cn/large/ceeb653ely1gd8wj5evc4j20i00n0dh0.jpg" height="300"></img> |
| 19 | +<img src="https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/2019-11/ceeb653ely1gd8wj5evc4j20i00n0dh0.jpg" height="300"></img> |
20 | 20 |
|
21 | 21 | #### 1.1 什么是操作系统? |
22 | 22 |
|
23 | 23 | 👨💻**面试官** : 先来个简单问题吧!**什么是操作系统?** |
24 | 24 |
|
25 | 25 | 🙋 **我** :我通过以下四点向您介绍一下什么是操作系统吧! |
26 | 26 |
|
27 | | -1. **操作系统(Operating System,简称 OS)是管理计算机硬件与软件资源的程序,是计算机系统的内核与基石;** |
28 | | -2. **操作系统本质上是运行在计算机上的软件程序 ;** |
29 | | -3. **操作系统为用户提供一个与系统交互的操作界面 ;** |
30 | | -4. **操作系统分内核与外壳(我们可以把外壳理解成围绕着内核的应用程序,而内核就是能操作硬件的程序)。** |
| 27 | +1. **操作系统(Operating System,简称 OS)是管理计算机硬件与软件资源的程序,是计算机的基石。** |
| 28 | +2. **操作系统本质上是一个运行在计算机上的软件程序 ,用于管理计算机硬件和软件资源。** 举例:运行在你电脑上的所有应用程序都通过操作系统来调用系统内存以及磁盘等等硬件。 |
| 29 | +3. **操作系统存在屏蔽了硬件层的复杂性。** 操作系统就像是硬件使用的负责人,统筹着各种相关事项。 |
| 30 | +4. **操作系统的内核(Kernel)是操作系统的核心部分,它负责系统的内存管理,硬件设备的管理,文件系统的管理以及应用程序的管理**。 内核是连接应用程序和硬件的桥梁,决定着系统的性能和稳定性。 |
31 | 31 |
|
32 | | -> 关于内核多插一嘴:内核负责管理系统的进程、内存、设备驱动程序、文件和网络系统等等,决定着系统的性能和稳定性。是连接应用程序和硬件的桥梁。 |
33 | | -> 内核就是操作系统背后黑盒的核心。 |
34 | | -
|
35 | | - |
| 32 | + |
36 | 33 |
|
37 | 34 | #### 1.2 系统调用 |
38 | 35 |
|
39 | 36 | 👨💻**面试官** :**什么是系统调用呢?** 能不能详细介绍一下。 |
40 | 37 |
|
41 | 38 | 🙋 **我** :介绍系统调用之前,我们先来了解一下用户态和系统态。 |
42 | 39 |
|
43 | | -<img src="https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/2019-11/006r3PQBjw1fbimb5c3srj30b40b40t9-20200404224750646.jpg" height="200" width="2"/> |
| 40 | + |
44 | 41 |
|
45 | 42 | 根据进程访问资源的特点,我们可以把进程在系统上的运行分为两个级别: |
46 | 43 |
|
|
69 | 66 |
|
70 | 67 | 🙋 **我:** 好的! 下图是 Java 内存区域,我们从 JVM 的角度来说一下线程和进程之间的关系吧! |
71 | 68 |
|
72 | | -> 如果你对 Java 内存区域 (运行时数据区) 这部分知识不太了解的话可以阅读一下这篇文章:[《可能是把 Java 内存区域讲的最清楚的一篇文章》](https://github.com/Snailclimb/JavaGuide/blob/master/docs/java/jvm/Java%E5%86%85%E5%AD%98%E5%8C%BA%E5%9F%9F.md) |
| 69 | +> 如果你对 Java 内存区域 (运行时数据区) 这部分知识不太了解的话可以阅读一下这篇文章:[《可能是把 Java 内存区域讲的最清楚的一篇文章》](https://snailclimb.gitee.io/javaguide/#/docs/java/jvm/Java内存区域) |
73 | 70 |
|
74 | 71 |  |
75 | 72 |
|
|
89 | 86 | - **阻塞状态(waiting)** :又称为等待状态,进程正在等待某一事件而暂停运行如等待某资源为可用或等待 IO 操作完成。即使处理器空闲,该进程也不能运行。 |
90 | 87 | - **结束状态(terminated)** :进程正在从系统中消失。可能是进程正常结束或其他原因中断退出运行。 |
91 | 88 |
|
| 89 | +> 订正:下图中 running 状态被 interrupt 向 ready 状态转换的箭头方向反了。 |
| 90 | +
|
92 | 91 |  |
93 | 92 |
|
94 | 93 | #### 2.3 进程间的通信方式 |
|
114 | 113 | 🙋 **我** :线程同步是两个或多个共享关键资源的线程的并发执行。应该同步线程以避免关键的资源使用冲突。操作系统一般有下面三种线程同步的方式: |
115 | 114 |
|
116 | 115 | 1. **互斥量(Mutex)**:采用互斥对象机制,只有拥有互斥对象的线程才有访问公共资源的权限。因为互斥对象只有一个,所以可以保证公共资源不会被多个线程同时访问。比如 Java 中的 synchronized 关键词和各种 Lock 都是这种机制。 |
117 | | -1. **信号量(Semaphores)** :它允许同一时刻多个线程访问同一资源,但是需要控制同一时刻访问此资源的最大线程数量 |
| 116 | +1. **信号量(Semphares)** :它允许同一时刻多个线程访问同一资源,但是需要控制同一时刻访问此资源的最大线程数量 |
118 | 117 | 1. **事件(Event)** :Wait/Notify:通过通知操作的方式来保持多线程同步,还可以方便的实现多线程优先级的比较操 |
119 | 118 |
|
120 | 119 | #### 2.5 进程的调度算法 |
|
168 | 167 |
|
169 | 168 | ##### 快表 |
170 | 169 |
|
171 | | -为了解决虚拟地址到物理地址的转换速度,操作系统在 **页表方案** 基础之上引入了 **快表** 来加速虚拟地址到物理地址的转换。我们可以把块表理解为一种特殊的高速缓冲存储器(Cache),其中的内容是页表的一部分或者全部内容。作为页表的 Cache,它的作用与页表相似,但是提高了访问速率。由于采用页表做地址转换,读写内存数据时 CPU 要访问两次主存。有了快表,有时只要访问一次高速缓冲存储器,一次主存,这样可加速查找并提高指令执行速度。 |
| 170 | +为了解决虚拟地址到物理地址的转换速度,操作系统在 **页表方案** 基础之上引入了 **快表** 来加速虚拟地址到物理地址的转换。我们可以把快表理解为一种特殊的高速缓冲存储器(Cache),其中的内容是页表的一部分或者全部内容。作为页表的 Cache,它的作用与页表相似,但是提高了访问速率。由于采用页表做地址转换,读写内存数据时 CPU 要访问两次主存。有了快表,有时只要访问一次高速缓冲存储器,一次主存,这样可加速查找并提高指令执行速度。 |
172 | 171 |
|
173 | 172 | 使用快表之后的地址转换流程是这样的: |
174 | 173 |
|
|
274 | 273 |
|
275 | 274 | #### 4.3 虚拟存储器 |
276 | 275 |
|
277 | | -👨💻**面试官** :都说了虚拟内存了。你再讲讲**虚拟存储器**把! |
| 276 | +> **勘误:虚拟存储器又叫做虚拟内存,都是 Virtual Memory 的翻译,属于同一个概念。** |
| 277 | +
|
| 278 | +👨💻**面试官** :~~都说了虚拟内存了。你再讲讲**虚拟存储器**把!~~ |
278 | 279 |
|
279 | 280 | 🙋 **我** : |
280 | 281 |
|
|
335 | 336 | - <https://www.studytonight.com/operating-system> |
336 | 337 | - <https://www.geeksforgeeks.org/interprocess-communication-methods/> |
337 | 338 | - <https://juejin.im/post/59f8691b51882534af254317> |
338 | | -- 王道考研操作系统知识点整理: https://wizardforcel.gitbooks.io/wangdaokaoyan-os/content/13.html |
| 339 | +- 王道考研操作系统知识点整理: https://wizardforcel.gitbooks.io/wangdaokaoyan-os/content/13.html |
0 commit comments