From 504ed58c336fc261f6653a991a8052c139fe7d2f Mon Sep 17 00:00:00 2001 From: CyC2018 <1029579233@qq.com> Date: Wed, 21 Mar 2018 17:45:24 +0800 Subject: [PATCH] auto commit --- notes/Linux.md | 2 +- notes/计算机操作系统.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/notes/Linux.md b/notes/Linux.md index 59ebf61e..c592bf24 100644 --- a/notes/Linux.md +++ b/notes/Linux.md @@ -1204,7 +1204,7 @@ else 每次调用 select() 都需要将 fd_set \*readfds, fd_set \*writefds, fd_set \*exceptfds 链表内容全部从用户进程内存中复制到操作系统内核中,内核需要将所有 fd_set 遍历一遍,这个过程非常低效。 -每次调用 select() 都需要将 fd_set \*readfds, fd_set \*writefds, fd_set \*exceptfds 链表内容全部从用户进程内存中复制到 OS 内核中,内核需要将所有 fd_set 遍历一遍,这个过程非常低效。 +返回结果中内核并没有声明哪些 fd_set 已经准备好了,所以如果返回值大于 0 时,程序需要遍历所有的 fd_set 判断哪个 I/O 已经准备好。 在 Linux 中 select 最多支持 1024 个 fd_set 同时轮询,其中 1024 由 Linux 内核的 FD_SETSIZE 决定。如果需要打破该限制可以修改 FD_SETSIZE,然后重新编译内核。 diff --git a/notes/计算机操作系统.md b/notes/计算机操作系统.md index f3c0d1b8..5ac1d886 100644 --- a/notes/计算机操作系统.md +++ b/notes/计算机操作系统.md @@ -856,7 +856,7 @@ gcc -o hello hello.c ## 静态链接 -静态连接器一一组可重定向目标文件为输入,生成一个完全链接的可执行目标文件作为输出。链接器主要完成以下两个任务: +静态连接器以一组可重定向目标文件为输入,生成一个完全链接的可执行目标文件作为输出。链接器主要完成以下两个任务: 1. 符号解析:每个符号对应于一个函数、一个全局变量或一个静态变量,符号解析的目的是将每个符号引用于一个符号定义关联起来。 2. 重定位:编译器和汇编器生成从地址 0 开始的代码和数据节,链接器通过把每个符号定义与一个内存位置关联起来,从而重定位这些节,然后修改所有对这些符号的引用,使得它们指向这个内存位置。