第一章
静态库动态库的区别
什么是库
库文件是计算机上的一类文件,可以简单的把库文件看成一种代码仓库,它提供给使用者一些可以直接 拿来用的变量、函数或类。
如何制作 静态动态库
静态库: GCC 进行链接时,会把静态库中代码打包到可执行程序中
动态库: GCC 进行链接时,动态库的代码不会被打包到可执行程序中
程序启动之后,动态库会被动态加载到内存中。
如何使用 (代码)
GDB多进程 多线程调试
虚拟地址空间是什么
什么是文件描述符
文件描述符是操作系统用于访问和管理文件的一个抽象概念。每个打开的文件、网络连接、管道、设备等,都对应一个唯一的文件描述符。文件描述符是一个整数,用于标识一个已经打开的文件或输入/输出资源。
在大多数操作系统中文件描述符通常是从0开始的非负整数。标准输入、标准输出和标准错误分别对应文件描述符0、1和2。
第二章
进程状态转换 有哪些状态 转换是如何的(比如就绪态可以到运行态,但是阻塞态不能直接到运行态)
进程状态分为三个基本状态,即就绪态,运行态,阻塞态。
进程的调度 自己找
进程通信的方式有哪些 知道大致的原理是什么
1)管道(Pipes):管道是一种单向通信方式,用于在父进程和子进程之间或者同一主机上的不同进程之间传递数据。它可以是匿名的,也可以是命名的。匿名管道,由于没有名字,只能用于亲缘关系的进程间通信
2)命名管道(Named Pipes):与匿名管道类似,但具有一个在文件系统中有名的路径,允许不相关的进程之间进行通信。
3)消息队列(Message Queues):消息队列允许一个进程向另一个进程发送消息,消息在队列中按顺序存储,并且接收方可以按需接收。
4)共享内存(Shared Memory):共享内存允许多个进程访问同一块内存区域,从而实现快速的数据交换。但需要注意同步问题,以避免竞态条件和数据一致性问题。
5)信号量(Semaphores):信号量是一种同步原语,用于管理对共享资源的访问。它可以用于实现进程间的互斥访问和同步操作。
6)套接字(Sockets):套接字允许在网络上的不同主机上的进程进行通信,是实现网络通信的基础。
7)文件(File):进程可以通过读写文件来进行通信,这种方式通常用于进程之间的间接通信,例如使用临时文件或者共享文件。
信号捕捉
SIGCHLD信号 是子进程结束之后或者状态发生改变 会给父进程发送这个信号
什么是守护进程 步骤是什么
第三章 多线程
线程 进程的区别是什么
最重要的是线程同步 要知道几种方式有哪些 互斥锁 读写锁 等等
生产者消费者模型是什么 基本流程是什么
第四章
网络模型
字节序
tcp通信 很重要
io多路复用 select poll epoll 很重要