Linux概览
一:Linux学习路径
- 第一个坡:抛弃旧的思维习惯,熟练使用 Linux 命令行.《鸟哥的 Linux 私房菜》《Linux 系统管理技术手册》
- 第二个坡:通过系统调用或者 glibc,学会自己进行程序设计.《UNIX 环境高级编程》
- 了解 Linux 内核机制,反复研习重点突破.《深入理解 LINUX 内核》
- 第四坡:阅读 Linux 内核代码,聚焦核心逻辑和场景.《LINUX 内核源代码情景分析》
- 第五坡:实验定制化 Linux 组件,成为内核开发工程师.
- 最后一坡:面向真实场景的开发,实践开发.
二:内核体系结构
三:各系统模块简析
1.进程管理
创建进程的系统调用叫fork.中文叫"分支".创建进程fork.
在 Linux 里,要创建一个新的进程,需要一个老的进程调用 fork 来实现,其中老的进程叫作父进程,新的进程叫作子进程。
运行新二进制文件execve,等待子进程结束waitpid.
2.内存管理
放程序代码的这部分,称为代码段(Code Segment)
放进程运行中产生数据的这部分,称为数据段(Data Segment)。
3.文件管理
- 对于已经有的文件,可以使用open打开这个文件,close关闭这个文件;
- 对于没有的文件,可以使用creat创建文件;
- 打开文件以后,可以使用lseek跳到文件的某个位置;
- 可以对文件的内容进行读写,读的系统调用是read,写是write。
4.信号处理
发送信号kill,信号处理sigaction
- 在执行一个程序的时候,在键盘输入“CTRL+C”,这就是中断的信号,正在执行的命令就会中止退出;
- 如果非法访问内存,例如你跑到别人的会议室,可能会看到不该看的东西;
- 硬件故障,设备出了问题,当然要通知项目组;
- 用户进程通过kill函数,将一个用户信号发送给另一个进程。
5.进程间通信
信号量的机制Semaphore。
消息队列:创建队列msgget,发送消息msgsnd,接收消息msgrcv
共享内存:创建共享内存shmget,将共享内存映射到内存空间shmat.
信号量:抢占信号量sem_wait,释放信号量sem_post
6.网络通信
创建套接字socket 绑定端口bind 发起连接connect 接收连接accept 监听listen
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。