Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
月凉、
JavaGuide
提交
1543c0d3
J
JavaGuide
项目概览
月凉、
/
JavaGuide
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
J
JavaGuide
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
1543c0d3
编写于
11月 10, 2021
作者:
HDU鬼先生
提交者:
GitHub
11月 10, 2021
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Update 操作系统常见面试题&知识点总结.md
修改文本内容问题
上级
63e8ee69
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
5 addition
and
5 deletion
+5
-5
docs/cs-basics/operating-system/操作系统常见面试题&知识点总结.md
docs/cs-basics/operating-system/操作系统常见面试题&知识点总结.md
+5
-5
未找到文件。
docs/cs-basics/operating-system/操作系统常见面试题&知识点总结.md
浏览文件 @
1543c0d3
...
...
@@ -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 死锁的四个条件
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录