本人学习Linux系统编程与网络编程时的路线:
Linux系统编程
- Linux中用于文件IO的系统调用API
- Linux中的文件系统
- 进程及进程间的通信
- 多线程及线程间的同步与异步
Linux网络编程
- 基本的网络知识:TCP,UDP
- Socket相关API
- 多进程并发服务器模型
- 多线程并发服务器模型
- IO复用服务器模型
高并发服务器框架
- tinyHttpd
- Libevent
- Nginx
-----------------------------------------------------我叫分割线---------------------------------------------------------
1.每打开一个进程,都会在内核空间中创建一个PCB(struct task_struct),PCB中包含很多内容,其中有一个文件描述符表,文件描述符表记录着当前进程打开的所有文件。进程每打开或者创建一个文件都会在内核空间中生成一个file结构体(位于PCB之外的内核空间),该file结构体包含了文件标志flags、文件读写位置、指向文件位置的指针等文件信息。而文件描述符(file description,fd)所对应的file指针指向此file结构体。所以串联起来,fd是文件的唯一性标识,对于文件的操作就变成了对于fd的操作。
- 因为每打开一个文件都会在内核空间中生成一个file结构体,所以当前进程可打开的文件个数是有限制的,Linux下默认是1024个,也就是fd为0~1023。在关闭