From 1543c0d3f80c73ab6c43a65bbe52005c54fd6285 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=AD=E7=94=B5=E9=AC=BC=E5=85=88=E7=94=9F?= <525032143@qq.com> Date: Wed, 10 Nov 2021 19:32:48 +0800 Subject: [PATCH 1/2] =?UTF-8?q?Update=20=E6=93=8D=E4=BD=9C=E7=B3=BB?= =?UTF-8?q?=E7=BB=9F=E5=B8=B8=E8=A7=81=E9=9D=A2=E8=AF=95=E9=A2=98&?= =?UTF-8?q?=E7=9F=A5=E8=AF=86=E7=82=B9=E6=80=BB=E7=BB=93.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修改文本内容问题 --- .../操作系统常见面试题&知识点总结.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/cs-basics/operating-system/操作系统常见面试题&知识点总结.md b/docs/cs-basics/operating-system/操作系统常见面试题&知识点总结.md index d2db9fed..489470f6 100644 --- a/docs/cs-basics/operating-system/操作系统常见面试题&知识点总结.md +++ b/docs/cs-basics/operating-system/操作系统常见面试题&知识点总结.md @@ -109,7 +109,7 @@ tag: 1. **管道/匿名管道(Pipes)** :用于具有亲缘关系的父子进程间或者兄弟进程之间的通信。 1. **有名管道(Names Pipes)** : 匿名管道由于没有名字,只能用于亲缘关系的进程间通信。为了克服这个缺点,提出了有名管道。有名管道严格遵循**先进先出(first in first out)**。有名管道以磁盘文件的方式存在,可以实现本机任意两个进程通信。 1. **信号(Signal)** :信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生; -1. **消息队列(Message Queuing)** :消息队列是消息的链表,具有特定的格式,存放在内存中并由消息队列标识符标识。管道和消息队列的通信数据都是先进先出的原则。与管道(无名管道:只存在于内存中的文件;命名管道:存在于实际的磁盘介质或者文件系统)不同的是消息队列存放在内核中,只有在内核重启(即,操作系统重启)或者显示地删除一个消息队列时,该消息队列才会被真正的删除。消息队列可以实现消息的随机查询,消息不一定要以先进先出的次序读取,也可以按消息的类型读取.比 FIFO 更有优势。**消息队列克服了信号承载信息量少,管道只能承载无格式字 节流以及缓冲区大小受限等缺。** +1. **消息队列(Message Queuing)** :消息队列是消息的链表,具有特定的格式,存放在内存中并由消息队列标识符标识。管道和消息队列的通信数据都是先进先出的原则。与管道(无名管道:只存在于内存中的文件;命名管道:存在于实际的磁盘介质或者文件系统)不同的是消息队列存放在内核中,只有在内核重启(即,操作系统重启)或者显式地删除一个消息队列时,该消息队列才会被真正的删除。消息队列可以实现消息的随机查询,消息不一定要以先进先出的次序读取,也可以按消息的类型读取.比 FIFO 更有优势。**消息队列克服了信号承载信息量少,管道只能承载无格式字节流以及缓冲区大小受限等缺点。** 1. **信号量(Semaphores)** :信号量是一个计数器,用于多进程对共享数据的访问,信号量的意图在于进程间同步。这种通信方式主要用于解决与同步相关的问题并避免竞争条件。 1. **共享内存(Shared memory)** :使得多个进程可以访问同一块内存空间,不同进程可以及时看到对方进程中对共享内存中数据的更新。这种方式需要依靠某种同步操作,如互斥锁和信号量等。可以说这是最有用的进程间通信方式。 1. **套接字(Sockets)** : 此方法主要用于在客户端和服务器之间通过网络进行通信。套接字是支持 TCP/IP 的网络通信的基本操作单元,可以看做是不同主机之间的进程进行双向通信的端点,简单的说就是通信的两方的一种约定,用套接字中的相关函数来完成通信过程。 @@ -120,9 +120,9 @@ tag: 🙋 **我** :线程同步是两个或多个共享关键资源的线程的并发执行。应该同步线程以避免关键的资源使用冲突。操作系统一般有下面三种线程同步的方式: -1. **互斥量(Mutex)**:采用互斥对象机制,只有拥有互斥对象的线程才有访问公共资源的权限。因为互斥对象只有一个,所以可以保证公共资源不会被多个线程同时访问。比如 Java 中的 synchronized 关键词和各种 Lock 都是这种机制。 -1. **信号量(Semphares)** :它允许同一时刻多个线程访问同一资源,但是需要控制同一时刻访问此资源的最大线程数量 -1. **事件(Event)** :Wait/Notify:通过通知操作的方式来保持多线程同步,还可以方便的实现多线程优先级的比较操 +1. **互斥量(Mutex)** :采用互斥对象机制,只有拥有互斥对象的线程才有访问公共资源的权限。因为互斥对象只有一个,所以可以保证公共资源不会被多个线程同时访问。比如 Java 中的 synchronized 关键词和各种 Lock 都是这种机制。 +1. **信号量(Semphares)** :它允许同一时刻多个线程访问同一资源,但是需要控制同一时刻访问此资源的最大线程数量。 +1. **事件(Event)** :Wait/Notify:通过通知操作的方式来保持多线程同步,还可以方便地实现多线程优先级的比较操作。 ### 2.5 进程的调度算法 @@ -142,7 +142,7 @@ tag: 👨‍💻**面试官** :**你知道什么是死锁吗?** -🙋 **我** :多个进程可以竞争有限数量的资源。当一个进程申请资源时,如果这时没有可用资源,那么这个进程进入等待状态。有时,如果所申请的资源被其他等待进程占有,那么该等待进程有可能再也无法改变状态。这种情况成为**死锁**。 +🙋 **我** :多个进程可以竞争有限数量的资源。当一个进程申请资源时,如果这时没有可用资源,那么这个进程进入等待状态。有时,如果所申请的资源被其他等待进程占有,那么该等待进程有可能再也无法改变状态。这种情况称为**死锁**。 ### 2.7 死锁的四个条件 From c0cdd9f52a4cc32325fbeb43b2b4bacba3ea5683 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=AD=E7=94=B5=E9=AC=BC=E5=85=88=E7=94=9F?= <525032143@qq.com> Date: Thu, 11 Nov 2021 15:22:22 +0800 Subject: [PATCH 2/2] =?UTF-8?q?Update=20=E6=93=8D=E4=BD=9C=E7=B3=BB?= =?UTF-8?q?=E7=BB=9F=E5=B8=B8=E8=A7=81=E9=9D=A2=E8=AF=95=E9=A2=98&?= =?UTF-8?q?=E7=9F=A5=E8=AF=86=E7=82=B9=E6=80=BB=E7=BB=93.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修改文本 --- .../操作系统常见面试题&知识点总结.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/cs-basics/operating-system/操作系统常见面试题&知识点总结.md b/docs/cs-basics/operating-system/操作系统常见面试题&知识点总结.md index 489470f6..db158c68 100644 --- a/docs/cs-basics/operating-system/操作系统常见面试题&知识点总结.md +++ b/docs/cs-basics/operating-system/操作系统常见面试题&知识点总结.md @@ -220,7 +220,7 @@ tag: 🙋 **我** : 1. **共同点** : - - 分页机制和分段机制都是为了提高内存利用率,较少内存碎片。 + - 分页机制和分段机制都是为了提高内存利用率,减少内存碎片。 - 页和段都是离散存储的,所以两者都是离散分配内存的方式。但是,每个页和段中的内存是连续的。 2. **区别** : - 页的大小是固定的,由操作系统决定;而段的大小不固定,取决于我们当前运行的程序。