静态库:
-
以lib开头,文件名通常:libxxx.a;
-
静态库在编译时,会链接(拷贝一份)放到可执行程序;
-
因为要被复制到可执行文件,所以代码体积会增大。它不会共享。
-
若库被更新了程序需要重新编译。
共享库:
- 文件名通常libxx.so;在需要这个库时程序需要回到共享库区执行库中的代码。
- 库更新时只需要替换库文件而不用重新编译。
- 有可能会被多个程序调用。
进程三大状态:
- 就绪:程序已被分配资源,等待内核调用。
- 运行:进程被分配时间片,正在执行;
- 阻塞:进程资源用完,等待分配资源。
- 转换:进程得到时间片进入运行状态,时间片用完返回就绪态;若执行时某种资源不足,或者与其他进程争夺资源,进入阻塞态。等分配到资源进入就绪态。
创建一个新进程可以用Fork();
-
当一个进程被Fork(),此时Fork出来的子进程就得到了父进程的当前的一切;父子进程同时运行——并发。
-
并行:系统调用多个内核,同一时刻执行多个进程。
-
并发:系统只调用一个内核,在某个时间段内,多个进程交替执行。
-
僵尸进程:子进程先结束,父进程没有wait()子进程的退出码,此时子进程称为僵尸进程。
解决方法:在子进程结束时让父进程wait子进程的退出码;或者杀死父进程,让init进程接管子进程,再wait.
-
孤儿进程:父进程先结束,子进程称为孤儿进程;通常被init进程接管再wait ;
-
写时拷贝:当fork出子进程时,不会立即为它分配独立的资源,它共享父进程的资源;当父进程或者子进程对这段资源进行修改时,此时会将这段资源复制一份给子进程。
系统调用与库函数:
系统调用:系统通过调用某些接口函数来实现某个功能。
库函数:为了实现复杂全面的操作会将系统调用进行封装优化,再提供给用户。
作者:
hwaityd
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。