《Linux网络编程》学习笔记(1)——Linux网络开发基础:Linux操作系统概述
前序
研究目标:学会、学好Linux下网络编程
研究对象:Linux网络原理及编程技术
研究方法:研习理论原理,实践应用技术方法
参考书目:《Linux网络编程》--宋敬彬,孙海滨等编著--清华大学出版社出版(2010)
本文及后文,均为学习《Linux网络编程》一书后的学习记录。整记以备。
先是一些铺垫,且看。
1、Linux发展历史
1991年,Linus Torvalds。
2、Linux发展要素
- UNIX操作系统
贝尔实验室,1969年,Ken.Thomson, B语言;1972年,Dennis Ritchie,C语言。
- Minix操作系统
荷兰,Andrew S.Tanenbaum,1987年。
- GNU计划
- POSIX标准
IEEE和ISO,Portable Operating System Interface for Computing Systems。
- Internet网络
3、Linux与UNIX的异同
4、OS类型选择和版本的选择
Linux内核编号形式:
书中参考: Debian Linux-2.6.18.3-686
5、Linux系统架构
Linux系统从应用角度来看,分为内核空间和用户空间两个部分。
<1> Linux内核的主要模块
Linux的内核主要由5个子系统组成:
- 进程调度
Linux下的3种调度策略:SCHED_OTHER(普通进程时间片轮转调度)、SCHED_FIFO(实时进程队列/先进先出调度)、SCHED_RR(实时进程时间片轮转调度)
Linux进程调度采用的是“有条件可剥夺”的调度方式。普通进程采用SCHED_OTHER方式调度,实时进程可以剥夺普通进程。如果普通进程在用户空间运行,则普通进程立即停止运行,将资源让给实时进程;如果普通进程运行在内核空间,需要等系统调用返回用户空间后方可剥夺资源。
- 内存管理
内存管理是多个进程间的内存共享策略。在Linux中 ,内存管理的主要概念是虚拟内存。
- 虚拟文件系统
- 网络接口
Linux支持多种网络接口和协议。网络接口分为网络协议和驱动程序,网络协议是一种网络传输的通讯标准,而网络驱动则是对硬件设备的驱动程序。
- 进程间通信
Linux下进程间通信方式主要有管道、信号、(信号量)、消息队列、共享内存和套接字。
<2> Linux的文件系统
根目录,用“/”代表。Linux通过“挂载”的方式把所有分区都放置在“根”下各个目录里。
6、GNU通用公共许可证——GPL
GPL,Richard Stallman。
GPL v1,1989年1月
GPL v2,1991年6月
GPL v3,2007年6月
7、Linux软件开发的可借鉴之处
集市模式:原型、改进、协作、沟通交流
Linus的一种观点:用聪明的数据结构和笨拙的代码的搭配方式要比相反的搭配方式更好,可以作为软件开发的一种基本的常识。
本章节概述完毕,后续之。
[注:] 截图来源于参考书目之中。
——脉清心爱
2017年12月4日 PM