Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion os/2_os_structure/linux_vs_windows.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ Windows 基本占领了电脑时代的市场,商业上取得了很大成就,
- 内核空间,这个内存空间只有内核程序可以访问;
- 用户空间,这个内存空间专门给应用程序使用;

用户空间的代码只能访问一个局部的内存空间,而内核空间的代码可以访问所有内存空间。因此,当程序使用用户空间时,我们常说该程序在**用户态**执行,而当程序使内核空间时,程序则在**内核态**执行。
用户空间的代码只能访问一个局部的内存空间,而内核空间的代码可以访问所有内存空间。因此,当程序使用用户空间时,我们常说该程序在**用户态**执行,而当程序使用内核空间时,程序则在**内核态**执行。


应用程序如果需要进入内核空间,就需要通过系统调用,下面来看看系统调用的过程:
Expand Down
2 changes: 1 addition & 1 deletion os/4_process/process_commu.md
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ int pipe(int fd[2])

我们可以得知,**对于匿名管道,它的通信范围是存在父子关系的进程**。因为管道没有实体,也就是没有管道文件,只能通过 fork 来复制父进程 fd 文件描述符,来达到通信的目的。

另外,**对于命名管道,它可以在不相关的进程间也能相互通信**。因为命令管道,提前创建了一个类型为管道的设备文件,在进程里只要使用这个设备文件,就可以相互通信。
另外,**对于命名管道,它可以在不相关的进程间也能相互通信**。因为命名管道,提前创建了一个类型为管道的设备文件,在进程里只要使用这个设备文件,就可以相互通信。

不管是匿名管道还是命名管道,进程写入的数据都是缓存在内核中,另一个进程读取数据时候自然也是从内核中获取,同时通信数据都遵循**先进先出**原则,不支持 lseek 之类的文件定位操作。

Expand Down